1# crypto_asym_cipher.h 2 3<!--Kit: Crypto Architecture Kit--> 4<!--Subsystem: Security--> 5<!--Owner: @zxz--3--> 6<!--Designer: @lanming--> 7<!--Tester: @PAFT--> 8<!--Adviser: @zengyawen--> 9 10## 概述 11 12定义非对称密钥加密API。 13 14**引用文件:** <CryptoArchitectureKit/crypto_asym_cipher.h> 15 16**库:** libohcrypto.so 17 18**系统能力:** SystemCapability.Security.CryptoFramework 19 20**起始版本:** 20 21 22**相关模块:** [CryptoAsymCipherApi](capi-cryptoasymcipherapi.md) 23 24## 汇总 25 26### 结构体 27 28| 名称 | typedef关键字 | 描述 | 29| -- | -- | -- | 30| [OH_CryptoAsymCipher](capi-cryptoasymcipherapi-oh-cryptoasymcipher.md) | OH_CryptoAsymCipher | 定义非对称加密结构。 | 31| [OH_CryptoSm2CiphertextSpec](capi-cryptoasymcipherapi-oh-cryptosm2ciphertextspec.md) | OH_CryptoSm2CiphertextSpec | 定义SM2密文规格结构。 | 32 33### 枚举 34 35| 名称 | typedef关键字 | 描述 | 36| -- | -- | -- | 37| [CryptoSm2CiphertextSpec_item](#cryptosm2ciphertextspec_item) | CryptoSm2CiphertextSpec_item | 定义SM2密文规格项类型。 | 38 39### 函数 40 41| 名称 | 描述 | 42| -- | -- | 43| [OH_Crypto_ErrCode OH_CryptoAsymCipher_Create(const char *algoName, OH_CryptoAsymCipher **ctx)](#oh_cryptoasymcipher_create) | 根据给定的算法名称创建非对称加密。 | 44| [OH_Crypto_ErrCode OH_CryptoAsymCipher_Init(OH_CryptoAsymCipher *ctx, Crypto_CipherMode mode, OH_CryptoKeyPair *key)](#oh_cryptoasymcipher_init) | 初始化非对称加密。 | 45| [OH_Crypto_ErrCode OH_CryptoAsymCipher_Final(OH_CryptoAsymCipher *ctx, const Crypto_DataBlob *in, Crypto_DataBlob *out)](#oh_cryptoasymcipher_final) | 完成非对称加密。 | 46| [void OH_CryptoAsymCipher_Destroy(OH_CryptoAsymCipher *ctx)](#oh_cryptoasymcipher_destroy) | 销毁非对称加密上下文。 | 47| [OH_Crypto_ErrCode OH_CryptoSm2CiphertextSpec_Create(Crypto_DataBlob *sm2Ciphertext, OH_CryptoSm2CiphertextSpec **spec)](#oh_cryptosm2ciphertextspec_create) | 创建SM2密文规格。 | 48| [OH_Crypto_ErrCode OH_CryptoSm2CiphertextSpec_GetItem(OH_CryptoSm2CiphertextSpec *spec, CryptoSm2CiphertextSpec_item item, Crypto_DataBlob *out)](#oh_cryptosm2ciphertextspec_getitem) | 获取SM2密文规格中的指定项。 | 49| [OH_Crypto_ErrCode OH_CryptoSm2CiphertextSpec_SetItem(OH_CryptoSm2CiphertextSpec *spec, CryptoSm2CiphertextSpec_item item, Crypto_DataBlob *in)](#oh_cryptosm2ciphertextspec_setitem) | 设置SM2密文规格中的指定项。 | 50| [OH_Crypto_ErrCode OH_CryptoSm2CiphertextSpec_Encode(OH_CryptoSm2CiphertextSpec *spec, Crypto_DataBlob *out)](#oh_cryptosm2ciphertextspec_encode) | 将SM2密文规格编码为DER格式密文。 | 51| [void OH_CryptoSm2CiphertextSpec_Destroy(OH_CryptoSm2CiphertextSpec *spec)](#oh_cryptosm2ciphertextspec_destroy) | 销毁SM2密文规格。 | 52 53## 枚举类型说明 54 55### CryptoSm2CiphertextSpec_item 56 57``` 58enum CryptoSm2CiphertextSpec_item 59``` 60 61**描述** 62 63定义SM2密文规格项类型。 64 65**起始版本:** 20 66 67| 枚举项 | 描述 | 68| -- | -- | 69| CRYPTO_SM2_CIPHERTEXT_C1_X = 0 | 公钥x,也称为C1x。 | 70| CRYPTO_SM2_CIPHERTEXT_C1_Y = 1 | 公钥y,也称为C1y。 | 71| CRYPTO_SM2_CIPHERTEXT_C2 = 2 | 哈希值,也称为C2。 | 72| CRYPTO_SM2_CIPHERTEXT_C3 = 3 | 密文数据,也称为C3。 | 73 74 75## 函数说明 76 77### OH_CryptoAsymCipher_Create() 78 79``` 80OH_Crypto_ErrCode OH_CryptoAsymCipher_Create(const char *algoName, OH_CryptoAsymCipher **ctx) 81``` 82 83**描述** 84 85根据给定的算法名称创建非对称加密。 86 87**起始版本:** 20 88 89 90**参数:** 91 92| 参数项 | 描述 | 93| -- | -- | 94| const char *algoName | 用于生成加密的算法名称。<br>例如"RSA\|PKCS1_OAEP\|SHA384\|MGF1_SHA384", "SM2\|SM3"。 | 95| [OH_CryptoAsymCipher](capi-cryptoasymcipherapi-oh-cryptoasymcipher.md) **ctx | 指向非对称加密上下文的指针。 | 96 97**返回:** 98 99| 类型 | 说明 | 100| -- | -- | 101| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br> CRYPTO_NOT_SUPPORTED:操作不支持。<br> CRYPTO_MEMORY_ERROR:内存错误。<br> CRYPTO_PARAMETER_CHECK_FAILED:参数检查失败。<br> CRYPTO_OPERTION_ERROR:调用三方算法库API出错。 | 102 103### OH_CryptoAsymCipher_Init() 104 105``` 106OH_Crypto_ErrCode OH_CryptoAsymCipher_Init(OH_CryptoAsymCipher *ctx, Crypto_CipherMode mode, OH_CryptoKeyPair *key) 107``` 108 109**描述** 110 111初始化非对称加密。 112 113**起始版本:** 20 114 115 116**参数:** 117 118| 参数项 | 描述 | 119| -- | -- | 120| [OH_CryptoAsymCipher](capi-cryptoasymcipherapi-oh-cryptoasymcipher.md) *ctx | 非对称加密上下文。 | 121| [Crypto_CipherMode](capi-crypto-common-h.md#crypto_ciphermode) mode | 加密模式是加密还是解密。 | 122| [OH_CryptoKeyPair](capi-cryptoasymkeyapi-oh-cryptokeypair.md) *key | 非对称密钥。 | 123 124**返回:** 125 126| 类型 | 说明 | 127| -- | -- | 128| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br> CRYPTO_NOT_SUPPORTED:操作不支持。<br> CRYPTO_MEMORY_ERROR:内存错误。<br> CRYPTO_PARAMETER_CHECK_FAILED:参数检查失败。<br> CRYPTO_OPERTION_ERROR:调用三方算法库API出错。 | 129 130**参考:** 131 132[OH_CryptoAsymCipher_Final](#oh_cryptoasymcipher_final) 133 134 135### OH_CryptoAsymCipher_Final() 136 137``` 138OH_Crypto_ErrCode OH_CryptoAsymCipher_Final(OH_CryptoAsymCipher *ctx, const Crypto_DataBlob *in,Crypto_DataBlob *out) 139``` 140 141**描述** 142 143完成非对称加密。 144 145**起始版本:** 20 146 147 148**参数:** 149 150| 参数项 | 描述 | 151| -- | -- | 152| [OH_CryptoAsymCipher](capi-cryptoasymcipherapi-oh-cryptoasymcipher.md) *ctx | 非对称加密上下文。 | 153| [const Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *in | 要加密或解密的数据。 | 154| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *out | 最终加密或解密的数据。 | 155 156**返回:** 157 158| 类型 | 说明 | 159| -- | -- | 160| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br> CRYPTO_NOT_SUPPORTED:操作不支持。<br> CRYPTO_MEMORY_ERROR:内存错误。<br> CRYPTO_PARAMETER_CHECK_FAILED:参数检查失败。<br> CRYPTO_OPERTION_ERROR:调用三方算法库API出错。 | 161 162**参考:** 163 164[OH_CryptoAsymCipher_Init](#oh_cryptoasymcipher_init) 165 166 167### OH_CryptoAsymCipher_Destroy() 168 169``` 170void OH_CryptoAsymCipher_Destroy(OH_CryptoAsymCipher *ctx) 171``` 172 173**描述** 174 175销毁非对称加密上下文。 176 177**参数:** 178 179| 参数项 | 描述 | 180| -- | -- | 181| [OH_CryptoAsymCipher](capi-cryptoasymcipherapi-oh-cryptoasymcipher.md) *ctx | 非对称加密上下文。 | 182 183### OH_CryptoSm2CiphertextSpec_Create() 184 185``` 186OH_Crypto_ErrCode OH_CryptoSm2CiphertextSpec_Create(Crypto_DataBlob *sm2Ciphertext, OH_CryptoSm2CiphertextSpec **spec) 187``` 188 189**描述** 190 191创建SM2密文规格。 192 193**起始版本:** 20 194 195 196**参数:** 197 198| 参数项 | 描述 | 199| -- | -- | 200| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *sm2Ciphertext | SM2密文DER格式数据,如果为NULL则创建空的SM2密文规格。 | 201| [OH_CryptoSm2CiphertextSpec](capi-cryptoasymcipherapi-oh-cryptosm2ciphertextspec.md) **spec | 输出的SM2密文规格。 | 202 203**返回:** 204 205| 类型 | 说明 | 206| -- | -- | 207| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br> CRYPTO_NOT_SUPPORTED:操作不支持。<br> CRYPTO_MEMORY_ERROR:内存错误。<br> CRYPTO_PARAMETER_CHECK_FAILED:参数检查失败。<br> CRYPTO_OPERTION_ERROR:调用三方算法库API出错。 | 208 209### OH_CryptoSm2CiphertextSpec_GetItem() 210 211``` 212OH_Crypto_ErrCode OH_CryptoSm2CiphertextSpec_GetItem(OH_CryptoSm2CiphertextSpec *spec,CryptoSm2CiphertextSpec_item item, Crypto_DataBlob *out) 213``` 214 215**描述** 216 217获取SM2密文规格中的指定项。 218 219**起始版本:** 20 220 221 222**参数:** 223 224| 参数项 | 描述 | 225| -- | -- | 226| [OH_CryptoSm2CiphertextSpec](capi-cryptoasymcipherapi-oh-cryptosm2ciphertextspec.md) *spec | SM2密文规格。 | 227| [CryptoSm2CiphertextSpec_item](#cryptosm2ciphertextspec_item) item | SM2密文规格项。 | 228| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *out | 输出数据。 | 229 230**返回:** 231 232| 类型 | 说明 | 233| -- | -- | 234| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br> CRYPTO_NOT_SUPPORTED:操作不支持。<br> CRYPTO_MEMORY_ERROR:内存错误。<br> CRYPTO_PARAMETER_CHECK_FAILED:参数检查失败。<br> CRYPTO_OPERTION_ERROR:调用三方算法库API出错。 | 235 236### OH_CryptoSm2CiphertextSpec_SetItem() 237 238``` 239OH_Crypto_ErrCode OH_CryptoSm2CiphertextSpec_SetItem(OH_CryptoSm2CiphertextSpec *spec,CryptoSm2CiphertextSpec_item item, Crypto_DataBlob *in) 240``` 241 242**描述** 243 244设置SM2密文规格中的指定项。 245 246**起始版本:** 20 247 248 249**参数:** 250 251| 参数项 | 描述 | 252| -- | -- | 253| [OH_CryptoSm2CiphertextSpec](capi-cryptoasymcipherapi-oh-cryptosm2ciphertextspec.md) *spec | SM2密文规格。 | 254| [CryptoSm2CiphertextSpec_item](#cryptosm2ciphertextspec_item) item | SM2密文规格项。 | 255| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *in | 输入数据。 | 256 257**返回:** 258 259| 类型 | 说明 | 260| -- | -- | 261| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br> CRYPTO_NOT_SUPPORTED:操作不支持。<br> CRYPTO_MEMORY_ERROR:内存错误。<br> CRYPTO_PARAMETER_CHECK_FAILED:参数检查失败。<br> CRYPTO_OPERTION_ERROR:调用三方算法库API出错。 | 262 263### OH_CryptoSm2CiphertextSpec_Encode() 264 265``` 266OH_Crypto_ErrCode OH_CryptoSm2CiphertextSpec_Encode(OH_CryptoSm2CiphertextSpec *spec, Crypto_DataBlob *out) 267``` 268 269**描述** 270 271将SM2密文规格编码为DER格式密文。 272 273**起始版本:** 20 274 275 276**参数:** 277 278| 参数项 | 描述 | 279| -- | -- | 280| [OH_CryptoSm2CiphertextSpec](capi-cryptoasymcipherapi-oh-cryptosm2ciphertextspec.md) *spec | SM2密文规格。 | 281| [Crypto_DataBlob](capi-cryptocommonapi-crypto-datablob.md) *out | 输出数据。 | 282 283**返回:** 284 285| 类型 | 说明 | 286| -- | -- | 287| [OH_Crypto_ErrCode](capi-crypto-common-h.md#oh_crypto_errcode) | CRYPTO_SUCCESS:操作成功。<br> CRYPTO_NOT_SUPPORTED:操作不支持。<br> CRYPTO_MEMORY_ERROR:内存错误。<br> CRYPTO_PARAMETER_CHECK_FAILED:参数检查失败。<br> CRYPTO_OPERTION_ERROR:调用三方算法库API出错。 | 288 289### OH_CryptoSm2CiphertextSpec_Destroy() 290 291``` 292void OH_CryptoSm2CiphertextSpec_Destroy(OH_CryptoSm2CiphertextSpec *spec) 293``` 294 295**描述** 296 297销毁SM2密文规格。 298 299**起始版本:** 20 300 301 302**参数:** 303 304| 参数项 | 描述 | 305| -- | -- | 306| [OH_CryptoSm2CiphertextSpec](capi-cryptoasymcipherapi-oh-cryptosm2ciphertextspec.md) *spec | SM2密文规格。 | 307 308 309