#include <armv7-r/cache.h>
#include <sdrv_crypto_utility.h>
#include <stdint.h>
#include "sdrv_crypto_mailbox_soc_otp_key.h"
Go to the source code of this file.
- Copyright
- Copyright (c) 2021 Semidrive Semiconductor. All rights reserved.
◆ BASIC_MGMT_CMD_BASE
| #define BASIC_MGMT_CMD_BASE (0x00) |
◆ CMD_BASIC_MAC_BUFF_LEN
| #define CMD_BASIC_MAC_BUFF_LEN 32 |
◆ CMD_BASIC_TWO_KEY_MAC_BUFF_LEN
| #define CMD_BASIC_TWO_KEY_MAC_BUFF_LEN 64 |
◆ ECCP_CMD_BASE
| #define ECCP_CMD_BASE (0x70) |
◆ ECCP_GENERATE_KEY
◆ ECCP_POINT_ADDITION
◆ ECCP_POINT_DOUBLING
◆ ECCP_POINT_MULTIPLICATION
◆ ECCP_POINT_VERIFY
◆ ECDH_EXCHANGE_KEY
◆ ECDSA_GENERATE_SIGNATURE
◆ ECDSA_VERIFY_SIGNATURE
◆ GENERATE_AUTH_MAC
◆ GENERATE_KEY
◆ GENERATE_MAC
◆ GENERATE_RAND
◆ GET_DEVICE_INFO
◆ GET_DEVICE_STATUS
◆ HASH_CALC
◆ HASH_CMD_BASE
| #define HASH_CMD_BASE (0xA0) |
◆ KEYID_0
◆ KEYID_1
◆ KEYID_2
◆ KEYID_3
◆ KEYID_4
◆ KEYID_5
◆ KEYID_6
◆ KEYID_7
◆ KEYID_8
◆ KEYID_9
◆ KEYID_HALF_MASK
| #define KEYID_HALF_MASK (0x8000) |
◆ KEYID_MAX
◆ MAC_CMD_BASE
| #define MAC_CMD_BASE (0x10) |
◆ RETRY_COUNT
◆ ROM_FIRMWARE_ADDR
| #define ROM_FIRMWARE_ADDR (0x000) |
◆ ROM_VENDER_SM2_PUBKEY_ADDR
| #define ROM_VENDER_SM2_PUBKEY_ADDR (0x000) |
◆ RSA_CMD_BASE
| #define RSA_CMD_BASE (0x80) |
◆ RSA_CRT_DECRYPT
◆ RSA_CRT_GENERATE_SIGNATURE
◆ RSA_DECRYPT
◆ RSA_ENCRYPT
◆ RSA_GENERATE_CRT_KEY
◆ RSA_GENERATE_KEY
◆ RSA_GENERATE_PRIME
◆ RSA_GENERATE_SIGNATURE
◆ RSA_VERIFY_SIGNATURE
◆ SEIP_DISABLE
◆ SEIP_JUMP
◆ SELF_DESTROY
◆ SENSOR_CLK_CFG
◆ SKE_AEAD_DECRYPT_GCM
◆ SKE_AEAD_ENCRYPT_GCM
◆ SKE_CMD_BASE
| #define SKE_CMD_BASE (0x20) |
◆ SKE_DECRYPT
◆ SKE_ENCRYPT
◆ SKE_MAX_KEY_IDX
| #define SKE_MAX_KEY_IDX (9) |
◆ SM2_CMD_BASE
| #define SM2_CMD_BASE (0x40) |
◆ SM2_DECRYPT
◆ SM2_ENCRYPT
◆ SM2_EXCHANGE_KEY
◆ SM2_GENERATE_KEY
◆ SM2_GENERATE_SIGNATURE
◆ SM2_GET_E
◆ SM2_GET_PUB_KEY
◆ SM2_GET_Z
◆ SM2_VERIFY_SIGNATURE
◆ SM9_CMD_BASE
| #define SM9_CMD_BASE (0x50) |
◆ SM9_DECRYPT
◆ SM9_ENC_GENERATE_MASTER_KEY
◆ SM9_ENC_GENERATE_USER_PRIVATE_KEY
| #define SM9_ENC_GENERATE_USER_PRIVATE_KEY (SM9_CMD_BASE + 6) |
◆ SM9_ENCRYPT
◆ SM9_EXCHANGE_KEY
◆ SM9_EXCKEY_GENERATE_MASTER_KEY
◆ SM9_EXCKEY_GENERATE_USER_PRIVATE_KEY
| #define SM9_EXCKEY_GENERATE_USER_PRIVATE_KEY (SM9_CMD_BASE + 12) |
◆ SM9_EXCKEY_GENERATE_USER_TMP_KEY
| #define SM9_EXCKEY_GENERATE_USER_TMP_KEY (SM9_CMD_BASE + 13) |
◆ SM9_GENERATE_SIGNATURE
◆ SM9_SIGN_GENERATE_MASTER_KEY
◆ SM9_SIGN_GENERATE_USER_PRIVATE_KEY
| #define SM9_SIGN_GENERATE_USER_PRIVATE_KEY (SM9_CMD_BASE + 2) |
◆ SM9_UNWRAP_KEY
◆ SM9_VERIFY_SIGNATURE
◆ SM9_WRAP_KEY
◆ VERIFY_MAC
◆ anonymous enum
CRYPTO algo type.
| Enumerator |
|---|
| HASH_ALG_SM3 | |
| HASH_ALG_SHA256 | |
| HASH_ALG_SHA384 | |
| HASH_ALG_SHA512 | |
| HASH_ALG_SHA224 | |
| HASH_ALG_SHA512_224 | |
| HASH_ALG_SHA512_256 | |
| HMAC_ALG_SM3 | |
| HMAC_ALG_SHA256 | |
| HMAC_ALG_SHA384 | |
| HMAC_ALG_SHA512 | |
| HMAC_ALG_SHA224 | |
| HMAC_ALG_SHA512_224 | |
| HMAC_ALG_SHA512_256 | |
| CBC_MAC_SKE_ALG_DES | |
| CBC_MAC_SKE_ALG_TDES_128 | |
| CBC_MAC_SKE_ALG_TDES_192 | |
| CBC_MAC_SKE_ALG_AES_128 | |
| CBC_MAC_SKE_ALG_AES_192 | |
| CBC_MAC_SKE_ALG_AES_256 | |
| CBC_MAC_SKE_ALG_SM4 | |
| CMAC_SKE_ALG_AES_128 | |
| CMAC_SKE_ALG_AES_192 | |
| CMAC_SKE_ALG_AES_256 | |
| CMAC_SKE_ALG_SM4 | |
| SKE_ALG_DES_ECB | |
| SKE_ALG_DES_CBC | |
| SKE_ALG_DES_CFB | |
| SKE_ALG_DES_OFB | |
| SKE_ALG_DES_CTR | |
| SKE_ALG_TDES_128_ECB | |
| SKE_ALG_TDES_128_CBC | |
| SKE_ALG_TDES_128_CFB | |
| SKE_ALG_TDES_128_OFB | |
| SKE_ALG_TDES_128_CTR | |
| SKE_ALG_TDES_192_ECB | |
| SKE_ALG_TDES_192_CBC | |
| SKE_ALG_TDES_192_CFB | |
| SKE_ALG_TDES_192_OFB | |
| SKE_ALG_TDES_192_CTR | |
| SKE_ALG_AES_128_ECB | |
| SKE_ALG_AES_128_CBC | |
| SKE_ALG_AES_128_CFB | |
| SKE_ALG_AES_128_OFB | |
| SKE_ALG_AES_128_CTR | |
| SKE_ALG_AES_128_XTS | |
| SKE_ALG_AES_128_GCM | |
| SKE_ALG_AES_192_ECB | |
| SKE_ALG_AES_192_CBC | |
| SKE_ALG_AES_192_CFB | |
| SKE_ALG_AES_192_OFB | |
| SKE_ALG_AES_192_CTR | |
| SKE_ALG_AES_192_XTS | |
| SKE_ALG_AES_192_GCM | |
| SKE_ALG_AES_256_ECB | |
| SKE_ALG_AES_256_CBC | |
| SKE_ALG_AES_256_CFB | |
| SKE_ALG_AES_256_OFB | |
| SKE_ALG_AES_256_CTR | |
| SKE_ALG_AES_256_XTS | |
| SKE_ALG_AES_256_GCM | |
| SKE_ALG_SM4_ECB | |
| SKE_ALG_SM4_CBC | |
| SKE_ALG_SM4_CFB | |
| SKE_ALG_SM4_OFB | |
| SKE_ALG_SM4_CTR | |
| SKE_ALG_SM4_XTS | |
| SKE_ALG_SM4_GCM | |
| PKE_ALG_SM2 | |
| PKE_ALG_RSA | |
| PKE_ALG_ECC | |
◆ cmd_key_type_e
CRYPTO key type.
| Enumerator |
|---|
| CMD_KEY_INTERNAL | |
| CMD_KEY_EXTERNAL_PLAINTEXT | |
| CMD_KEY_EXTERNAL_CIPHERTEXT | |
| CMD_KEY_MAX | |
◆ Crypto_HsmInitReturnType
CRYPTO init return type.
| Enumerator |
|---|
| CRYPTO_HSM_INIT_OK | hsm init success
|
| CRYPTO_HSM_INIT_RESET_FAIL | hsm reset fail,check power
|
| CRYPTO_HSM_INIT_BOOT_TIMEOUT | hsm boot timeout, check HSM reg mem region type
|
| CRYPTO_HSM_INIT_BOOT_FAIL | hsm boot fail, check clk&reset
|
| CRYPTO_HSM_INIT_PRODUCT_ERROR | hsm product flag error ,check fuse
|
| CRYPTO_HSM_INIT_TYPE_MAX | HSM init return type max
|
◆ ERR_CODE
| Enumerator |
|---|
| SEIP_SUCCESS | |
| SEIP_ERROR | |
| SEIP_FW_VER_SUCCESS | |
| SEIP_FW_VER_ERROR | |
| SEIP_SKE_ALARM | |
| SEIP_ERROR_NOT_ALIGNED_BY_WORD | |
| SEIP_ERROR_MODE_INVALID | |
| SEIP_ERROR_VALUE_INVALID | |
| SEIP_ERROR_LENGTH_INVALID | |
| SEIP_ERROR_KEK_ENCRYPT_FAIL | |
| SEIP_ERROR_KEK_DECRYPT_FAIL | |
| SEIP_ERROR_KEYID0_FAIL | |
| SEIP_ERROR_KEYID1_FAIL | |
| SEIP_ERROR_KEYID2_FAIL | |
| SEIP_ERROR_KEYID3_FAIL | |
| SEIP_ERROR_KEYID_ZERO | |
| SEIP_ERROR_KEYID_INVALID | |
| SEIP_ERROR_KEYID_INVALID2 | |
| SEIP_ERROR_AUTH_KEY_FAIL | |
| SEIP_ERROR_SKE_FAIL | |
| SEIP_ERROR_SKE_ALG_INVALID | |
| SEIP_ERROR_SKE_SET_SEED_FAIL | |
| SEIP_ERROR_TRNG_FAIL | |
| SEIP_ERROR_BOOTMODE_FAIL | |
| SEIP_ERROR_COMPARE_FAIL | |
| SEIP_ERROR_COMPARE_FAIL2 | |
| SEIP_ERROR_COMPARE_FAIL3 | |
| SEIP_ERROR_HASH_ALG_INVALID | |
| SEIP_ERROR_HASH_FAIL | |
| SEIP_ERROR_HMAC_FAIL | |
| SEIP_ERROR_ECC_CURVE_INVALID | |
| SEIP_ERROR_ECC_PD_FAIL | |
| SEIP_ERROR_ECC_PA_FAIL | |
| SEIP_ERROR_ECC_PM_FAIL | |
| SEIP_ERROR_ECC_GET_KEY_FAIL | |
| SEIP_ERROR_ECDSA_SIGN_FAIL | |
| SEIP_ERROR_ECDSA_VERIFY_FAIL | |
| SEIP_ERROR_GET_PRIME_FAIL | |
| SEIP_ERROR_RSA_GET_KEY_FAIL | |
| SEIP_ERROR_RSA_FAIL | |
| SEIP_ERROR_SM2_GET_KEY_FAIL | |
| SEIP_ERROR_SM2_SIGN_FAIL | |
| SEIP_ERROR_SM2_VERIFY_FAIL | |
| SEIP_ERROR_SM2_ENCRYPT_FAIL | |
| SEIP_ERROR_SM2_DECRYPT_FAIL | |
| SEIP_ERROR_SM2_EXCHANGE_FAIL | |
| SEIP_ERROR_SM9_FAIL | |
◆ cmd_get_hash_block_bytes()
| uint32_t cmd_get_hash_block_bytes |
( |
uint8_t |
crypto_alg_mode_choice | ) |
|
get HASH block bytes.
This function is used to get block bytes of HASH type.
- Parameters
-
| [in] | HASH | algorithm mode type. |
- Returns
- block bytes of HASH algorithm type.
◆ cmd_get_hash_digest_bytes()
| uint32_t cmd_get_hash_digest_bytes |
( |
uint8_t |
crypto_alg_mode_choice | ) |
|
get HASH digest bytes.
This function is used to get digest bytes of HASH type.
- Parameters
-
| [in] | HASH | algorithm mode type. |
- Returns
- digest bytes of HASH algorithm type.
◆ cmd_get_ske_block_bytes()
| uint32_t cmd_get_ske_block_bytes |
( |
uint8_t |
crypto_alg_mode_choice | ) |
|
get block bytes of SKE algorithm type.
This function is used to get block bytes of SKE algorithm type.
- Parameters
-
- Returns
- block bytes of SKE algorithm type.
◆ cmd_get_ske_key_bytes()
| uint32_t cmd_get_ske_key_bytes |
( |
uint8_t |
crypto_alg_mode_choice | ) |
|
get key bytes of SKE algorithm type.
This function is used to get key bytes of SKE algorithm type.
- Parameters
-
- Returns
- key bytes of SKE algorithm type.
◆ get_big_endian_2byte()
| uint16_t get_big_endian_2byte |
( |
void * |
addr | ) |
|
get 2 bytes big-endian data.
This function is used to convert 2 bytes of little-endian data into big-endian data.
- Parameters
-
| [in] | addr | address of 2 byte little-endian data. |
- Returns
- 2 byte big-endian data.
◆ get_big_endian_4byte()
| uint32_t get_big_endian_4byte |
( |
void * |
addr | ) |
|
get 4 bytes big-endian data.
This function is used to convert 4 bytes of little-endian data into big-endian data.
- Parameters
-
| [in] | addr | address of 4 bytes little-endian data. |
- Returns
- 4 bytes big-endian data.
◆ get_real_pointer()
| void * get_real_pointer |
( |
uint8_t |
buf[4] | ) |
|
get the real pointer address.
This function is used to convert 4 bytes of big-endian address into little-endian address.
- Parameters
-
| [in] | buf | buff to store big-endian address. |
- Returns
- little-endian address.
◆ read_sec_stroge_reg()
| uint32_t read_sec_stroge_reg |
( |
paddr_t |
base, |
|
|
uint32_t |
offset |
|
) |
| |
read secure stroge registers.
This function is used to read secure stroge registers with dynamic clock.
- Parameters
-
| [in] | base | address of secure stroge |
| [in] | offset | expected to be read |
- Returns
- read value.
◆ send_cmd_and_wait_response()
| uint32_t send_cmd_and_wait_response |
( |
uint32_t |
cmd[8] | ) |
|
Sdrv CRYPTO send cmd.
This function is used to send cmd and wait response.
- Parameters
-
| [in] | cmd | the cmd buff to be send. |
- Returns
- The result of cmd exesution.
◆ set_big_endian_2byte()
| void set_big_endian_2byte |
( |
uint8_t * |
addr, |
|
|
uint16_t |
data |
|
) |
| |
set 2 bytes big-endian data.
This function is used to convert 2 bytes of little-endian data into big-endian data.
- Parameters
-
| [in] | data | data to be convert. |
| [out] | addr | destination address. |
◆ set_big_endian_2byte_back()
| void set_big_endian_2byte_back |
( |
uint8_t * |
addr, |
|
|
uint16_t |
data |
|
) |
| |
backup 2 bytes data.
This function is used to backup data.
- Parameters
-
| [in] | data | data to be backed up. |
| [out] | addr | destination address. |
◆ set_big_endian_4byte()
| void set_big_endian_4byte |
( |
uint8_t * |
addr, |
|
|
uint32_t |
data |
|
) |
| |
set 4 bytes big-endian data.
This function is used to convert 4 bytes of little-endian data into big-endian data.
- Parameters
-
| [in] | data | data to be convert. |
| [out] | addr | destination address. |
◆ set_big_endian_4byte_back()
| void set_big_endian_4byte_back |
( |
uint8_t * |
addr, |
|
|
uint32_t |
data |
|
) |
| |
backup 4 bytes data.
This function is used to backup data.
- Parameters
-
| [in] | data | data to be backed up. |
| [out] | addr | destination address. |
◆ write_sec_stroge_reg()
| void write_sec_stroge_reg |
( |
paddr_t |
base, |
|
|
uint32_t |
offset, |
|
|
uint32_t |
data |
|
) |
| |
write secure stroge registers.
This function is used to write secure stroge registers with dynamic clock.
- Parameters
-
| [in] | base | address of secure stroge |
| [in] | offset | expected to be write |
| [in] | data | |