# BouncyCastle.SM2 库模块帮助文档

[🅰 范例代码](https://www.aardio.com/zh-cn/docs/examples/Text/Crypt/sm2.html) [📄 BouncyCastle 用户手册 aardio 版）](https://www.aardio.com/zh-cn/docs/library-guide/ext/BouncyCastle/)

## BouncyCastle.SM2 成员列表 <a id="BouncyCastle.SM2" href="#BouncyCastle.SM2">&#x23;</a>

国密算法扩展库。  

相关库: crypt.sm4

### BouncyCastle.SM2.addPublicKeyPrefix <a id="BouncyCastle.SM2.addPublicKeyPrefix" href="#BouncyCastle.SM2.addPublicKeyPrefix">&#x23;</a>
添加公钥的 04 前缀

### BouncyCastle.SM2.addPublicKeyPrefix(publicKey) <a id="BouncyCastle.SM2.addPublicKeyPrefix" href="#BouncyCastle.SM2.addPublicKeyPrefix">&#x23;</a>
- 参数 @publicKey 指定公钥（buffer）  
返回处理后的公钥（buffer 类型）

### BouncyCastle.SM2.convertC1C2C3ToC1C3C2 <a id="BouncyCastle.SM2.convertC1C2C3ToC1C3C2" href="#BouncyCastle.SM2.convertC1C2C3ToC1C3C2">&#x23;</a>
转换密文格式：C1C2C3 转 C1C3C2

### BouncyCastle.SM2.convertC1C2C3ToC1C3C2(cipherText) <a id="BouncyCastle.SM2.convertC1C2C3ToC1C3C2" href="#BouncyCastle.SM2.convertC1C2C3ToC1C3C2">&#x23;</a>
- 参数 @cipherText 指定密文（buffer）  
返回转换后的密文（buffer 类型）

### BouncyCastle.SM2.convertC1C3C2ToC1C2C3 <a id="BouncyCastle.SM2.convertC1C3C2ToC1C2C3" href="#BouncyCastle.SM2.convertC1C3C2ToC1C2C3">&#x23;</a>
转换密文格式：C1C3C2 转 C1C2C3

### BouncyCastle.SM2.convertC1C3C2ToC1C2C3(cipherText) <a id="BouncyCastle.SM2.convertC1C3C2ToC1C2C3" href="#BouncyCastle.SM2.convertC1C3C2ToC1C2C3">&#x23;</a>
- 参数 @cipherText 指定密文（buffer）  
返回转换后的密文（buffer 类型）

### BouncyCastle.SM2.decrypt <a id="BouncyCastle.SM2.decrypt" href="#BouncyCastle.SM2.decrypt">&#x23;</a>
SM2 解密

### BouncyCastle.SM2.decrypt(encryptedData,privateKey,mode) <a id="BouncyCastle.SM2.decrypt" href="#BouncyCastle.SM2.decrypt">&#x23;</a>
- 参数 @encryptedData 指定加密数据（buffer）\- 参数 @privateKey 指定私钥（buffer）\- 参数 @mode 可选指定为 "C1C2C3"，默认为 "C1C3C2"   
返回解密后的数据（buffer 类型）

### BouncyCastle.SM2.encrypt <a id="BouncyCastle.SM2.encrypt" href="#BouncyCastle.SM2.encrypt">&#x23;</a>
SM2 加密

### BouncyCastle.SM2.encrypt(data,publicKey,mode) <a id="BouncyCastle.SM2.encrypt" href="#BouncyCastle.SM2.encrypt">&#x23;</a>
- 参数 @data 指定字符串或 buffer \- 参数 @publicKey 指定公钥（ buffer ）\- 参数 @mode 可选指定为  "C1C2C3"，默认为 "C1C3C2" \n返回解密后的数据（buffer 类型）

### BouncyCastle.SM2.generateKeyPair() <a id="BouncyCastle.SM2.generateKeyPair" href="#BouncyCastle.SM2.generateKeyPair">&#x23;</a>
生成 SM2 密钥对。  
返回两个值（buffer 类型）：公钥，私钥。

### BouncyCastle.SM2.sign <a id="BouncyCastle.SM2.sign" href="#BouncyCastle.SM2.sign">&#x23;</a>
SM2 签名

### BouncyCastle.SM2.sign(data,privateKey,userId) <a id="BouncyCastle.SM2.sign" href="#BouncyCastle.SM2.sign">&#x23;</a>
- 参数 @data 指定字符串或 buffer \- 参数 @privateKey 指定私钥（buffer）\- 参数 @userId 可选指定用户ID（buffer）  
返回签名数据（buffer 类型）

### BouncyCastle.SM2.signatureAsn1ToPlain <a id="BouncyCastle.SM2.signatureAsn1ToPlain" href="#BouncyCastle.SM2.signatureAsn1ToPlain">&#x23;</a>
ASN.1 DER 签名转换为平面字节数组（R+S）

### BouncyCastle.SM2.signatureAsn1ToPlain(signDer) <a id="BouncyCastle.SM2.signatureAsn1ToPlain" href="#BouncyCastle.SM2.signatureAsn1ToPlain">&#x23;</a>
- 参数 @signDer 指定 DER 格式签名（buffer）  
返回平面格式签名（buffer 类型）

### BouncyCastle.SM2.signaturePlainToAsn1 <a id="BouncyCastle.SM2.signaturePlainToAsn1" href="#BouncyCastle.SM2.signaturePlainToAsn1">&#x23;</a>
平面字节数组（R+S）转换为 ASN.1 DER 签名

### BouncyCastle.SM2.signaturePlainToAsn1(sign) <a id="BouncyCastle.SM2.signaturePlainToAsn1" href="#BouncyCastle.SM2.signaturePlainToAsn1">&#x23;</a>
- 参数 @sign 指定平面格式签名（buffer）  
返回 DER 格式签名（buffer 类型）

### BouncyCastle.SM2.stripPublicKeyPrefix <a id="BouncyCastle.SM2.stripPublicKeyPrefix" href="#BouncyCastle.SM2.stripPublicKeyPrefix">&#x23;</a>
移除公钥的 04 前缀

### BouncyCastle.SM2.stripPublicKeyPrefix(publicKey) <a id="BouncyCastle.SM2.stripPublicKeyPrefix" href="#BouncyCastle.SM2.stripPublicKeyPrefix">&#x23;</a>
- 参数 @publicKey 指定公钥（buffer）  
返回处理后的公钥（buffer 类型）

### BouncyCastle.SM2.verify <a id="BouncyCastle.SM2.verify" href="#BouncyCastle.SM2.verify">&#x23;</a>
SM2 验签

### BouncyCastle.SM2.verify(data,signature,publicKey,userId) <a id="BouncyCastle.SM2.verify" href="#BouncyCastle.SM2.verify">&#x23;</a>
- 参数 @data 指定字符串或 buffer \- 参数 @signature 指定签名数据（buffer）\- 参数 @publicKey 指定公钥（buffer）\- 参数 @userId 可选指定用户ID（buffer）  
返回布尔值，表示验证是否通过
