# crypt.csr 库模块帮助文档

## crypt 成员列表 <a id="crypt" href="#crypt">&#x23;</a>

### crypt.csr <a id="crypt.csr" href="#crypt.csr">&#x23;</a>
用于创建证书签名请求，此对象继承自 crypt.rsa。

### crypt.csr() <a id="crypt.csr" href="#crypt.csr">&#x23;</a>
[返回对象:cryptCsrObject](#cryptCsrObject)

### crypt.csr(rsaKey) <a id="crypt.csr" href="#crypt.csr">&#x23;</a>
创建证书签名请求对象。  
参数 @rsaKey 必须指定 crypt.rsa 对象。  
crypt.rsa 构造参数 @flags 必须指定为 8/*_CRYPT_NEWKEYSET*/   
才能支持此对象默认使用的 SHA256 哈希算法。  

@rsaKey 必须导入或创建密钥。

## cryptCsrObject 成员列表 <a id="cryptCsrObject" href="#cryptCsrObject">&#x23;</a>

### cryptCsrObject.createDer <a id="cryptCsrObject.createDer" href="#cryptCsrObject.createDer">&#x23;</a>
生成 CSR （DER 格式二进制数据）。  
成功返回值为 buffer 类型，失败返回 null, 错误信息,错误代码

### cryptCsrObject.createDer(subjectName, hashAlg) <a id="cryptCsrObject.createDer" href="#cryptCsrObject.createDer">&#x23;</a>
参数 @subjectName 指定主题名称，例如 "CN=域名"。  
参数 @hashAlg 指定哈希算法，应保持默认值 "sha256"，不要修改。  
成功返回 buffer，失败返回 null, 错误信息。  
!cryptCsr.rsaKey =   
[返回对象:cryptRsaObject](#cryptRsaObject)

### cryptCsrObject.delete() <a id="cryptCsrObject.delete" href="#cryptCsrObject.delete">&#x23;</a>
释放并且删除密钥容器。

### cryptCsrObject.exportKey(导出密钥类型,选项,加密密钥句柄) <a id="cryptCsrObject.exportKey" href="#cryptCsrObject.exportKey">&#x23;</a>
导出密钥,除参数一以外其他参数可选  
参数1为密钥类型,参数三为导出密钥可为空

### cryptCsrObject.exportPlainTextKey(选项,加密密钥句柄) <a id="cryptCsrObject.exportPlainTextKey" href="#cryptCsrObject.exportPlainTextKey">&#x23;</a>
导出文本密钥,参数可选

### cryptCsrObject.exportPrivateKey(选项,加密密钥句柄) <a id="cryptCsrObject.exportPrivateKey" href="#cryptCsrObject.exportPrivateKey">&#x23;</a>
导出私钥,参数可选

### cryptCsrObject.exportPrivateKeyPkcs1Raw() <a id="cryptCsrObject.exportPrivateKeyPkcs1Raw" href="#cryptCsrObject.exportPrivateKeyPkcs1Raw">&#x23;</a>
导出 PKCS#1 格式私钥,  
返回值为buffer类型

### cryptCsrObject.exportPrivateKeyPkcs1RawToPem() <a id="cryptCsrObject.exportPrivateKeyPkcs1RawToPem" href="#cryptCsrObject.exportPrivateKeyPkcs1RawToPem">&#x23;</a>
导出 PKCS#1 格式私钥（PEM）,  
返回值为string类型

### cryptCsrObject.exportPrivateKeyPkcs8() <a id="cryptCsrObject.exportPrivateKeyPkcs8" href="#cryptCsrObject.exportPrivateKeyPkcs8">&#x23;</a>
导出通用的 PKCS#8 格式私钥,  
可选用参数@1指定密钥类型为 _AT_SIGNATURE 或 _AT_KEYEXCHANGE,  
建议不指定参数自动获取默认设置

### cryptCsrObject.exportPrivateKeyPkcs8ToPem() <a id="cryptCsrObject.exportPrivateKeyPkcs8ToPem" href="#cryptCsrObject.exportPrivateKeyPkcs8ToPem">&#x23;</a>
导出通用的 PKCS#8 格式私钥（PEM）,  
可选用参数@1指定密钥类型为 _AT_SIGNATURE 或 _AT_KEYEXCHANGE,  
建议不指定参数自动获取默认设置

### cryptCsrObject.exportPublicKey(选项,加密密钥句柄) <a id="cryptCsrObject.exportPublicKey" href="#cryptCsrObject.exportPublicKey">&#x23;</a>
导出公钥,参数可选

### cryptCsrObject.exportPublicKeyPkcs1Raw() <a id="cryptCsrObject.exportPublicKeyPkcs1Raw" href="#cryptCsrObject.exportPublicKeyPkcs1Raw">&#x23;</a>
导出 PKCS#1 格式公钥,  
返回值为buffer类型

### cryptCsrObject.exportPublicKeyPkcs1RawToPem() <a id="cryptCsrObject.exportPublicKeyPkcs1RawToPem" href="#cryptCsrObject.exportPublicKeyPkcs1RawToPem">&#x23;</a>
导出 PKCS#1 格式公钥（PEM）,  
返回值为string类型

### cryptCsrObject.exportPublicKeyX509() <a id="cryptCsrObject.exportPublicKeyX509" href="#cryptCsrObject.exportPublicKeyX509">&#x23;</a>
导出通用的 SPKI（Subject Public Key Info）格式公钥,  
可选用参数@1指定密钥类型为 _AT_SIGNATURE 或 _AT_KEYEXCHANGE,  
建议不指定参数自动获取默认设置,  
返回值为buffer类型

### cryptCsrObject.exportPublicKeyX509ToPem() <a id="cryptCsrObject.exportPublicKeyX509ToPem" href="#cryptCsrObject.exportPublicKeyX509ToPem">&#x23;</a>
导出通用的 SPKI（Subject Public Key Info）格式公钥（PEM）,  
可选用参数@1指定密钥类型为 _AT_SIGNATURE 或 _AT_KEYEXCHANGE,  
建议不指定参数自动获取默认设置,  
返回值为string类型

### cryptCsrObject.genKey(algid,flags,size) <a id="cryptCsrObject.genKey" href="#cryptCsrObject.genKey">&#x23;</a>
产生一个随机的会话密钥或者公/私钥对,  
所有参数可选,algid指定算法,flags指定选项,size指定密钥长度

### cryptCsrObject.genSignatureKey(size,flags) <a id="cryptCsrObject.genSignatureKey" href="#cryptCsrObject.genSignatureKey">&#x23;</a>
创建用于签名算法的公/私钥对,  
@size 指定密钥长度,以二进制位为单位,省略此参数则默认为 2048,  
@flags 指定选项,一般不必指定

### cryptCsrObject.importKey(密钥,选项,公钥句柄) <a id="cryptCsrObject.importKey" href="#cryptCsrObject.importKey">&#x23;</a>
导入密钥,  
密钥可以是结构体或字符串格式,  
参数2可选,参数3可选  
成功返回true,失败返回null,错误信息

### cryptCsrObject.importPemKey() <a id="cryptCsrObject.importPemKey" href="#cryptCsrObject.importPemKey">&#x23;</a>
参数 @1 使用字符串指定 PEM 格式密钥。  
如果导入成功返回 PEM 格式头

### cryptCsrObject.importPemKeyFile() <a id="cryptCsrObject.importPemKeyFile" href="#cryptCsrObject.importPemKeyFile">&#x23;</a>
参数 @1 使用字符串指定 PEM 格式密钥文件。  
如果导入成功返回 PEM 格式头

### cryptCsrObject.importPrivateKeyPkcs1Raw() <a id="cryptCsrObject.importPrivateKeyPkcs1Raw" href="#cryptCsrObject.importPrivateKeyPkcs1Raw">&#x23;</a>
导入 PKCS#1 格式私钥,  
参数@1为string或buffer类型私钥

### cryptCsrObject.importPrivateKeyPkcs1RawFromPem() <a id="cryptCsrObject.importPrivateKeyPkcs1RawFromPem" href="#cryptCsrObject.importPrivateKeyPkcs1RawFromPem">&#x23;</a>
导入 PKCS#1 格式私钥（PEM）,  
参数@1为string或buffer类型私钥

### cryptCsrObject.importPrivateKeyPkcs8() <a id="cryptCsrObject.importPrivateKeyPkcs8" href="#cryptCsrObject.importPrivateKeyPkcs8">&#x23;</a>
导入通用的 PKCS#8 格式私钥,  
参数@1为string或buffer类型私钥

### cryptCsrObject.importPrivateKeyPkcs8FromPem() <a id="cryptCsrObject.importPrivateKeyPkcs8FromPem" href="#cryptCsrObject.importPrivateKeyPkcs8FromPem">&#x23;</a>
导入通用的 PKCS#8 格式私钥（PEM）,  
参数@1为string或buffer类型私钥

### cryptCsrObject.importPublicKeyPkcs1Raw() <a id="cryptCsrObject.importPublicKeyPkcs1Raw" href="#cryptCsrObject.importPublicKeyPkcs1Raw">&#x23;</a>
导入 PKCS#1 格式公钥,  
参数@1为string或buffer类型私钥

### cryptCsrObject.importPublicKeyPkcs1RawFromPem() <a id="cryptCsrObject.importPublicKeyPkcs1RawFromPem" href="#cryptCsrObject.importPublicKeyPkcs1RawFromPem">&#x23;</a>
导入 PKCS#1 格式公钥（PEM）,  
参数@1为string或buffer类型私钥

### cryptCsrObject.importPublicKeyX509() <a id="cryptCsrObject.importPublicKeyX509" href="#cryptCsrObject.importPublicKeyX509">&#x23;</a>
导入通用的 SPKI（Subject Public Key Info）格式公钥,  
参数@1为string或buffer类型公钥数据

### cryptCsrObject.importPublicKeyX509FromPem() <a id="cryptCsrObject.importPublicKeyX509FromPem" href="#cryptCsrObject.importPublicKeyX509FromPem">&#x23;</a>
导入通用的 SPKI（Subject Public Key Info）格式公钥（PEM）,  
参数@1为string或buffer类型公钥数据
