• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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