1e41f4b71Sopenharmony_ci# CryptoSymKeyApi 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci 4e41f4b71Sopenharmony_ci## Overview 5e41f4b71Sopenharmony_ci 6e41f4b71Sopenharmony_ciProvides APIs for symmetric key operations. 7e41f4b71Sopenharmony_ci 8e41f4b71Sopenharmony_ci**Since**: 12 9e41f4b71Sopenharmony_ci 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci## Summary 12e41f4b71Sopenharmony_ci 13e41f4b71Sopenharmony_ci 14e41f4b71Sopenharmony_ci### Files 15e41f4b71Sopenharmony_ci 16e41f4b71Sopenharmony_ci| Name | Description | 17e41f4b71Sopenharmony_ci| -------- | -------- | 18e41f4b71Sopenharmony_ci| [crypto_sym_key.h](crypto__sym__key_8h.md) | Defines APIs for symmetric key operations. | 19e41f4b71Sopenharmony_ci 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ci### Types 22e41f4b71Sopenharmony_ci 23e41f4b71Sopenharmony_ci| Name | Description | 24e41f4b71Sopenharmony_ci| -------- | -------- | 25e41f4b71Sopenharmony_ci| typedef struct [OH_CryptoSymKey](#oh_cryptosymkey) [OH_CryptoSymKey](#oh_cryptosymkey) | Defines a struct for a symmetric key. | 26e41f4b71Sopenharmony_ci| typedef struct [OH_CryptoSymKeyGenerator](#oh_cryptosymkeygenerator) [OH_CryptoSymKeyGenerator](#oh_cryptosymkeygenerator) | Defines a struct for a symmetric key generator. | 27e41f4b71Sopenharmony_ci 28e41f4b71Sopenharmony_ci 29e41f4b71Sopenharmony_ci### Functions 30e41f4b71Sopenharmony_ci 31e41f4b71Sopenharmony_ci| Name | Description | 32e41f4b71Sopenharmony_ci| -------- | -------- | 33e41f4b71Sopenharmony_ci| [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode) [OH_CryptoSymKeyGenerator_Create](#oh_cryptosymkeygenerator_create) (const char \*algoName, [OH_CryptoSymKeyGenerator](#oh_cryptosymkeygenerator) \*\*ctx) | Creates a symmetric key generator instance based on the given algorithm name. | 34e41f4b71Sopenharmony_ci| [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode) [OH_CryptoSymKeyGenerator_Generate](#oh_cryptosymkeygenerator_generate) ([OH_CryptoSymKeyGenerator](#oh_cryptosymkeygenerator) \*ctx, [OH_CryptoSymKey](#oh_cryptosymkey) \*\*keyCtx) | Randomly generates a symmetric key. | 35e41f4b71Sopenharmony_ci| [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode) [OH_CryptoSymKeyGenerator_Convert](#oh_cryptosymkeygenerator_convert) ([OH_CryptoSymKeyGenerator](#oh_cryptosymkeygenerator) \*ctx, const [Crypto_DataBlob](_crypto___data_blob.md) \*keyData, [OH_CryptoSymKey](#oh_cryptosymkey) \*\*keyCtx) | Converts binary data into a symmetric key. | 36e41f4b71Sopenharmony_ci| const char \* [OH_CryptoSymKeyGenerator_GetAlgoName](#oh_cryptosymkeygenerator_getalgoname) ([OH_CryptoSymKeyGenerator](#oh_cryptosymkeygenerator) \*ctx) | Obtains the algorithm of a symmetric key generator instance. | 37e41f4b71Sopenharmony_ci| void [OH_CryptoSymKeyGenerator_Destroy](#oh_cryptosymkeygenerator_destroy) ([OH_CryptoSymKeyGenerator](#oh_cryptosymkeygenerator) \*ctx) | Destroys a symmetric key generator instance. | 38e41f4b71Sopenharmony_ci| const char \* [OH_CryptoSymKey_GetAlgoName](#oh_cryptosymkey_getalgoname) ([OH_CryptoSymKey](#oh_cryptosymkey) \*keyCtx) | Obtains the algorithm of a symmetric key. | 39e41f4b71Sopenharmony_ci| [OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode) [OH_CryptoSymKey_GetKeyData](#oh_cryptosymkey_getkeydata) ([OH_CryptoSymKey](#oh_cryptosymkey) \*keyCtx, [Crypto_DataBlob](_crypto___data_blob.md) \*out) | Obtains symmetric key data from a key instance. | 40e41f4b71Sopenharmony_ci| void [OH_CryptoSymKey_Destroy](#oh_cryptosymkey_destroy) ([OH_CryptoSymKey](#oh_cryptosymkey) \*keyCtx) | Destroys a symmetric key instance. | 41e41f4b71Sopenharmony_ci 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci## Type Description 44e41f4b71Sopenharmony_ci 45e41f4b71Sopenharmony_ci 46e41f4b71Sopenharmony_ci### OH_CryptoSymKey 47e41f4b71Sopenharmony_ci 48e41f4b71Sopenharmony_ci``` 49e41f4b71Sopenharmony_citypedef struct OH_CryptoSymKeyOH_CryptoSymKey 50e41f4b71Sopenharmony_ci``` 51e41f4b71Sopenharmony_ci 52e41f4b71Sopenharmony_ci**Description** 53e41f4b71Sopenharmony_ci 54e41f4b71Sopenharmony_ciDefines a struct for a symmetric key. 55e41f4b71Sopenharmony_ci 56e41f4b71Sopenharmony_ci**Since**: 12 57e41f4b71Sopenharmony_ci 58e41f4b71Sopenharmony_ci 59e41f4b71Sopenharmony_ci### OH_CryptoSymKeyGenerator 60e41f4b71Sopenharmony_ci 61e41f4b71Sopenharmony_ci``` 62e41f4b71Sopenharmony_citypedef struct OH_CryptoSymKeyGeneratorOH_CryptoSymKeyGenerator 63e41f4b71Sopenharmony_ci``` 64e41f4b71Sopenharmony_ci 65e41f4b71Sopenharmony_ci**Description** 66e41f4b71Sopenharmony_ci 67e41f4b71Sopenharmony_ciDefines a struct for a symmetric key generator. 68e41f4b71Sopenharmony_ci 69e41f4b71Sopenharmony_ci**Since**: 12 70e41f4b71Sopenharmony_ci 71e41f4b71Sopenharmony_ci 72e41f4b71Sopenharmony_ci## Function Description 73e41f4b71Sopenharmony_ci 74e41f4b71Sopenharmony_ci 75e41f4b71Sopenharmony_ci### OH_CryptoSymKey_Destroy() 76e41f4b71Sopenharmony_ci 77e41f4b71Sopenharmony_ci``` 78e41f4b71Sopenharmony_civoid OH_CryptoSymKey_Destroy (OH_CryptoSymKey *keyCtx) 79e41f4b71Sopenharmony_ci``` 80e41f4b71Sopenharmony_ci 81e41f4b71Sopenharmony_ci**Description** 82e41f4b71Sopenharmony_ci 83e41f4b71Sopenharmony_ciDestroys a symmetric key instance. 84e41f4b71Sopenharmony_ci 85e41f4b71Sopenharmony_ci**Since**: 12 86e41f4b71Sopenharmony_ci 87e41f4b71Sopenharmony_ci**Parameters** 88e41f4b71Sopenharmony_ci 89e41f4b71Sopenharmony_ci| Name | Description | 90e41f4b71Sopenharmony_ci| -------- | -------- | 91e41f4b71Sopenharmony_ci| keyCtx | Pointer to the symmetric key instance to destroy. | 92e41f4b71Sopenharmony_ci 93e41f4b71Sopenharmony_ci 94e41f4b71Sopenharmony_ci### OH_CryptoSymKey_GetAlgoName() 95e41f4b71Sopenharmony_ci 96e41f4b71Sopenharmony_ci``` 97e41f4b71Sopenharmony_ciconst char* OH_CryptoSymKey_GetAlgoName (OH_CryptoSymKey *keyCtx) 98e41f4b71Sopenharmony_ci``` 99e41f4b71Sopenharmony_ci 100e41f4b71Sopenharmony_ci**Description** 101e41f4b71Sopenharmony_ci 102e41f4b71Sopenharmony_ciObtains the algorithm of a symmetric key. 103e41f4b71Sopenharmony_ci 104e41f4b71Sopenharmony_ci**Since**: 12 105e41f4b71Sopenharmony_ci 106e41f4b71Sopenharmony_ci**Parameters** 107e41f4b71Sopenharmony_ci 108e41f4b71Sopenharmony_ci| Name | Description | 109e41f4b71Sopenharmony_ci| -------- | -------- | 110e41f4b71Sopenharmony_ci| keyCtx | Pointer to the symmetric key instance. | 111e41f4b71Sopenharmony_ci 112e41f4b71Sopenharmony_ci**Returns** 113e41f4b71Sopenharmony_ci 114e41f4b71Sopenharmony_ciSymmetric key algorithm obtained. 115e41f4b71Sopenharmony_ci 116e41f4b71Sopenharmony_ci 117e41f4b71Sopenharmony_ci### OH_CryptoSymKey_GetKeyData() 118e41f4b71Sopenharmony_ci 119e41f4b71Sopenharmony_ci``` 120e41f4b71Sopenharmony_ciOH_Crypto_ErrCode OH_CryptoSymKey_GetKeyData (OH_CryptoSymKey *keyCtx, Crypto_DataBlob *out ) 121e41f4b71Sopenharmony_ci``` 122e41f4b71Sopenharmony_ci 123e41f4b71Sopenharmony_ci**Description** 124e41f4b71Sopenharmony_ci 125e41f4b71Sopenharmony_ciObtains symmetric key data from a key instance. 126e41f4b71Sopenharmony_ci 127e41f4b71Sopenharmony_ci**Since**: 12 128e41f4b71Sopenharmony_ci 129e41f4b71Sopenharmony_ci**Parameters** 130e41f4b71Sopenharmony_ci 131e41f4b71Sopenharmony_ci| Name | Description | 132e41f4b71Sopenharmony_ci| -------- | -------- | 133e41f4b71Sopenharmony_ci| keyCtx | Pointer to the symmetric key instance. | 134e41f4b71Sopenharmony_ci| out | Pointer to the data obtained. | 135e41f4b71Sopenharmony_ci 136e41f4b71Sopenharmony_ci**Returns** 137e41f4b71Sopenharmony_ci 138e41f4b71Sopenharmony_ci[OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode): 139e41f4b71Sopenharmony_ci 140e41f4b71Sopenharmony_ci**0**: The operation is successful. 141e41f4b71Sopenharmony_ci 142e41f4b71Sopenharmony_ci**401**: Invalid parameters are detected. 143e41f4b71Sopenharmony_ci 144e41f4b71Sopenharmony_ci**801**: The operation is not supported. 145e41f4b71Sopenharmony_ci 146e41f4b71Sopenharmony_ci**17620001**: A memory error occurred. 147e41f4b71Sopenharmony_ci 148e41f4b71Sopenharmony_ci**17630001**: Failed to call an API of a third-party algorithm library. 149e41f4b71Sopenharmony_ci 150e41f4b71Sopenharmony_ci 151e41f4b71Sopenharmony_ci### OH_CryptoSymKeyGenerator_Convert() 152e41f4b71Sopenharmony_ci 153e41f4b71Sopenharmony_ci``` 154e41f4b71Sopenharmony_ciOH_Crypto_ErrCode OH_CryptoSymKeyGenerator_Convert (OH_CryptoSymKeyGenerator *ctx, const Crypto_DataBlob *keyData, OH_CryptoSymKey **keyCtx ) 155e41f4b71Sopenharmony_ci``` 156e41f4b71Sopenharmony_ci 157e41f4b71Sopenharmony_ci**Description** 158e41f4b71Sopenharmony_ci 159e41f4b71Sopenharmony_ciConverts binary data into a symmetric key. 160e41f4b71Sopenharmony_ci 161e41f4b71Sopenharmony_ci**Since**: 12 162e41f4b71Sopenharmony_ci 163e41f4b71Sopenharmony_ci**Parameters** 164e41f4b71Sopenharmony_ci 165e41f4b71Sopenharmony_ci| Name | Description | 166e41f4b71Sopenharmony_ci| -------- | -------- | 167e41f4b71Sopenharmony_ci| ctx | Pointer to the symmetric key generator instance. | 168e41f4b71Sopenharmony_ci| keyData | Pointer to the data to convert. | 169e41f4b71Sopenharmony_ci| keyCtx | Pointer to the symmetric key obtained. | 170e41f4b71Sopenharmony_ci 171e41f4b71Sopenharmony_ci**Returns** 172e41f4b71Sopenharmony_ci 173e41f4b71Sopenharmony_ci[OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode): 174e41f4b71Sopenharmony_ci 175e41f4b71Sopenharmony_ci**0**: The operation is successful. 176e41f4b71Sopenharmony_ci 177e41f4b71Sopenharmony_ci**401**: Invalid parameters are detected. 178e41f4b71Sopenharmony_ci 179e41f4b71Sopenharmony_ci**801**: The operation is not supported. 180e41f4b71Sopenharmony_ci 181e41f4b71Sopenharmony_ci**17620001**: A memory error occurred. 182e41f4b71Sopenharmony_ci 183e41f4b71Sopenharmony_ci**17630001**: Failed to call an API of a third-party algorithm library. 184e41f4b71Sopenharmony_ci 185e41f4b71Sopenharmony_ci 186e41f4b71Sopenharmony_ci### OH_CryptoSymKeyGenerator_Create() 187e41f4b71Sopenharmony_ci 188e41f4b71Sopenharmony_ci``` 189e41f4b71Sopenharmony_ciOH_Crypto_ErrCode OH_CryptoSymKeyGenerator_Create (const char *algoName, OH_CryptoSymKeyGenerator **ctx ) 190e41f4b71Sopenharmony_ci``` 191e41f4b71Sopenharmony_ci 192e41f4b71Sopenharmony_ci**Description** 193e41f4b71Sopenharmony_ci 194e41f4b71Sopenharmony_ciCreates a symmetric key generator instance based on the given algorithm name. 195e41f4b71Sopenharmony_ci 196e41f4b71Sopenharmony_ci**Since**: 12 197e41f4b71Sopenharmony_ci 198e41f4b71Sopenharmony_ci**Parameters** 199e41f4b71Sopenharmony_ci 200e41f4b71Sopenharmony_ci| Name | Description | 201e41f4b71Sopenharmony_ci| -------- | -------- | 202e41f4b71Sopenharmony_ci| algoName | Pointer to the algorithm used to generate the symmetric key. For example, **'AES256'**. | 203e41f4b71Sopenharmony_ci| ctx | Double pointer to the symmetric key generator instance created. | 204e41f4b71Sopenharmony_ci 205e41f4b71Sopenharmony_ci**Returns** 206e41f4b71Sopenharmony_ci 207e41f4b71Sopenharmony_ci[OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode): 208e41f4b71Sopenharmony_ci 209e41f4b71Sopenharmony_ci**0**: The operation is successful. 210e41f4b71Sopenharmony_ci 211e41f4b71Sopenharmony_ci**401**: Invalid parameters are detected. 212e41f4b71Sopenharmony_ci 213e41f4b71Sopenharmony_ci**801**: The operation is not supported. 214e41f4b71Sopenharmony_ci 215e41f4b71Sopenharmony_ci**17620001**: A memory error occurred. 216e41f4b71Sopenharmony_ci 217e41f4b71Sopenharmony_ci**17630001**: Failed to call an API of a third-party algorithm library. 218e41f4b71Sopenharmony_ci 219e41f4b71Sopenharmony_ci 220e41f4b71Sopenharmony_ci### OH_CryptoSymKeyGenerator_Destroy() 221e41f4b71Sopenharmony_ci 222e41f4b71Sopenharmony_ci``` 223e41f4b71Sopenharmony_civoid OH_CryptoSymKeyGenerator_Destroy (OH_CryptoSymKeyGenerator *ctx) 224e41f4b71Sopenharmony_ci``` 225e41f4b71Sopenharmony_ci 226e41f4b71Sopenharmony_ci**Description** 227e41f4b71Sopenharmony_ci 228e41f4b71Sopenharmony_ciDestroys a symmetric key generator instance. 229e41f4b71Sopenharmony_ci 230e41f4b71Sopenharmony_ci**Since**: 12 231e41f4b71Sopenharmony_ci 232e41f4b71Sopenharmony_ci**Parameters** 233e41f4b71Sopenharmony_ci 234e41f4b71Sopenharmony_ci| Name | Description | 235e41f4b71Sopenharmony_ci| -------- | -------- | 236e41f4b71Sopenharmony_ci| ctx | Pointer to the symmetric key generator instance to destroy. | 237e41f4b71Sopenharmony_ci 238e41f4b71Sopenharmony_ci 239e41f4b71Sopenharmony_ci### OH_CryptoSymKeyGenerator_Generate() 240e41f4b71Sopenharmony_ci 241e41f4b71Sopenharmony_ci``` 242e41f4b71Sopenharmony_ciOH_Crypto_ErrCode OH_CryptoSymKeyGenerator_Generate (OH_CryptoSymKeyGenerator *ctx, OH_CryptoSymKey **keyCtx ) 243e41f4b71Sopenharmony_ci``` 244e41f4b71Sopenharmony_ci 245e41f4b71Sopenharmony_ci**Description** 246e41f4b71Sopenharmony_ci 247e41f4b71Sopenharmony_ciRandomly generates a symmetric key. 248e41f4b71Sopenharmony_ci 249e41f4b71Sopenharmony_ci**Since**: 12 250e41f4b71Sopenharmony_ci 251e41f4b71Sopenharmony_ci**Parameters** 252e41f4b71Sopenharmony_ci 253e41f4b71Sopenharmony_ci| Name | Description | 254e41f4b71Sopenharmony_ci| -------- | -------- | 255e41f4b71Sopenharmony_ci| ctx | Pointer to the symmetric key generator instance. | 256e41f4b71Sopenharmony_ci| keyCtx | Pointer to the symmetric key created. | 257e41f4b71Sopenharmony_ci 258e41f4b71Sopenharmony_ci**Returns** 259e41f4b71Sopenharmony_ci 260e41f4b71Sopenharmony_ci[OH_Crypto_ErrCode](_crypto_common_api.md#oh_crypto_errcode): 261e41f4b71Sopenharmony_ci 262e41f4b71Sopenharmony_ci**0**: The operation is successful. 263e41f4b71Sopenharmony_ci 264e41f4b71Sopenharmony_ci**401**: Invalid parameters are detected. 265e41f4b71Sopenharmony_ci 266e41f4b71Sopenharmony_ci**801**: The operation is not supported. 267e41f4b71Sopenharmony_ci 268e41f4b71Sopenharmony_ci**17620001**: A memory error occurred. 269e41f4b71Sopenharmony_ci 270e41f4b71Sopenharmony_ci**17630001**: Failed to call an API of a third-party algorithm library. 271e41f4b71Sopenharmony_ci 272e41f4b71Sopenharmony_ci 273e41f4b71Sopenharmony_ci### OH_CryptoSymKeyGenerator_GetAlgoName() 274e41f4b71Sopenharmony_ci 275e41f4b71Sopenharmony_ci``` 276e41f4b71Sopenharmony_ciconst char* OH_CryptoSymKeyGenerator_GetAlgoName (OH_CryptoSymKeyGenerator *ctx) 277e41f4b71Sopenharmony_ci``` 278e41f4b71Sopenharmony_ci 279e41f4b71Sopenharmony_ci**Description** 280e41f4b71Sopenharmony_ci 281e41f4b71Sopenharmony_ciObtains the algorithm of a symmetric key generator instance. 282e41f4b71Sopenharmony_ci 283e41f4b71Sopenharmony_ci**Since**: 12 284e41f4b71Sopenharmony_ci 285e41f4b71Sopenharmony_ci**Parameters** 286e41f4b71Sopenharmony_ci 287e41f4b71Sopenharmony_ci| Name | Description | 288e41f4b71Sopenharmony_ci| -------- | -------- | 289e41f4b71Sopenharmony_ci| ctx | Pointer to the symmetric key generator instance. | 290e41f4b71Sopenharmony_ci 291e41f4b71Sopenharmony_ci**Returns** 292e41f4b71Sopenharmony_ci 293e41f4b71Sopenharmony_ciSymmetric key algorithm obtained. 294