25 #ifndef HAL_CRYPTO_LLD_H 26 #define HAL_CRYPTO_LLD_H 28 #if (HAL_USE_CRY == TRUE) || defined(__DOXYGEN__) 38 #define CRY_LLD_SUPPORTS_AES TRUE 39 #define CRY_LLD_SUPPORTS_AES_ECB TRUE 40 #define CRY_LLD_SUPPORTS_AES_CBC TRUE 41 #define CRY_LLD_SUPPORTS_AES_CFB TRUE 42 #define CRY_LLD_SUPPORTS_AES_CTR TRUE 43 #define CRY_LLD_SUPPORTS_AES_GCM TRUE 44 #define CRY_LLD_SUPPORTS_DES TRUE 45 #define CRY_LLD_SUPPORTS_DES_ECB TRUE 46 #define CRY_LLD_SUPPORTS_DES_CBC TRUE 47 #define CRY_LLD_SUPPORTS_SHA1 TRUE 48 #define CRY_LLD_SUPPORTS_SHA256 TRUE 49 #define CRY_LLD_SUPPORTS_SHA512 TRUE 50 #define CRY_LLD_SUPPORTS_HMAC_SHA256 TRUE 51 #define CRY_LLD_SUPPORTS_HMAC_SHA512 TRUE 67 #if !defined(PLATFORM_CRY_USE_CRY1) || defined(__DOXYGEN__) 68 #define PLATFORM_CRY_USE_CRY1 FALSE 110 #if defined(CRY_DRIVER_EXT_FIELDS) 111 CRY_DRIVER_EXT_FIELDS
116 #if (CRY_LLD_SUPPORTS_SHA1 == TRUE) || defined(__DOXYGEN__) 125 #if (CRY_LLD_SUPPORTS_SHA256 == TRUE) || defined(__DOXYGEN__) 134 #if (CRY_LLD_SUPPORTS_SHA512 == TRUE) || defined(__DOXYGEN__) 143 #if (CRY_LLD_SUPPORTS_HMAC_SHA256 == TRUE) || defined(__DOXYGEN__) 152 #if (CRY_LLD_SUPPORTS_HMAC_SHA512 == TRUE) || defined(__DOXYGEN__) 169 #if (PLATFORM_CRY_USE_CRY1 == TRUE) && !defined(__DOXYGEN__) 179 #if (CRY_LLD_SUPPORTS_AES == TRUE) || \ 180 (CRY_LLD_SUPPORTS_AES_ECB == TRUE) || \ 181 (CRY_LLD_SUPPORTS_AES_CBC == TRUE) || \ 182 (CRY_LLD_SUPPORTS_AES_CFB == TRUE) || \ 183 (CRY_LLD_SUPPORTS_AES_CTR == TRUE) || \ 184 (CRY_LLD_SUPPORTS_AES_GCM == TRUE) || \ 188 const uint8_t *keyp);
190 #if (CRY_LLD_SUPPORTS_AES == TRUE) || defined(__DOXYGEN__) 200 #if (CRY_LLD_SUPPORTS_AES_ECB == TRUE) || defined(__DOXYGEN__) 212 #if (CRY_LLD_SUPPORTS_AES_CBC == TRUE) || defined(__DOXYGEN__) 226 #if (CRY_LLD_SUPPORTS_AES_CFB == TRUE) || defined(__DOXYGEN__) 240 #if (CRY_LLD_SUPPORTS_AES_CTR == TRUE) || defined(__DOXYGEN__) 254 #if (CRY_LLD_SUPPORTS_AES_GCM == TRUE) || defined(__DOXYGEN__) 258 const uint8_t *auth_in,
260 const uint8_t *text_in,
268 const uint8_t *auth_in,
270 const uint8_t *text_in,
274 const uint8_t *tag_in);
276 #if (CRY_LLD_SUPPORTS_DES == TRUE) || \ 277 (CRY_LLD_SUPPORTS_DES_ECB == TRUE) || \ 278 (CRY_LLD_SUPPORTS_DES_CBC == TRUE) || \ 282 const uint8_t *keyp);
284 #if (CRY_LLD_SUPPORTS_DES == TRUE) || defined(__DOXYGEN__) 294 #if (CRY_LLD_SUPPORTS_DES_ECB == TRUE) || defined(__DOXYGEN__) 306 #if (CRY_LLD_SUPPORTS_DES_CBC == TRUE) || defined(__DOXYGEN__) 320 #if (CRY_LLD_SUPPORTS_SHA1 == TRUE) || defined(__DOXYGEN__) 323 size_t size,
const uint8_t *in);
327 #if (CRY_LLD_SUPPORTS_SHA256 == TRUE) || defined(__DOXYGEN__) 330 size_t size,
const uint8_t *in);
334 #if (CRY_LLD_SUPPORTS_SHA512 == TRUE) || defined(__DOXYGEN__) 337 size_t size,
const uint8_t *in);
341 #if (CRY_LLD_SUPPORTS_HMAC_SHA256 == TRUE) || \ 342 (CRY_LLD_SUPPORTS_HMAC_SHA512 == TRUE) || \ 346 const uint8_t *keyp);
348 #if (CRY_LLD_SUPPORTS_HMAC_SHA256 == TRUE) || defined(__DOXYGEN__) 353 size_t size,
const uint8_t *in);
358 #if (CRY_LLD_SUPPORTS_HMAC_SHA512 == TRUE) || defined(__DOXYGEN__) 363 size_t size,
const uint8_t *in);
cryerror_t cry_lld_SHA1_init(CRYDriver *cryp, SHA1Context *sha1ctxp)
Hash initialization using SHA1.
cryerror_t cry_lld_encrypt_AES_GCM(CRYDriver *cryp, crykey_t key_id, size_t auth_size, const uint8_t *auth_in, size_t text_size, const uint8_t *text_in, uint8_t *text_out, const uint8_t *iv, size_t tag_size, uint8_t *tag_out)
Encryption operation using AES-GCM.
cryerror_t cry_lld_decrypt_AES_CFB(CRYDriver *cryp, crykey_t key_id, size_t size, const uint8_t *in, uint8_t *out, const uint8_t *iv)
Decryption operation using AES-CFB.
cryerror_t cry_lld_encrypt_AES_CBC(CRYDriver *cryp, crykey_t key_id, size_t size, const uint8_t *in, uint8_t *out, const uint8_t *iv)
Encryption operation using AES-CBC.
cryerror_t cry_lld_SHA1_final(CRYDriver *cryp, SHA1Context *sha1ctxp, uint8_t *out)
Hash finalization using SHA1.
cryerror_t cry_lld_SHA1_update(CRYDriver *cryp, SHA1Context *sha1ctxp, size_t size, const uint8_t *in)
Hash update using SHA1.
Type of a SHA512 context.
cryerror_t cry_lld_decrypt_DES_ECB(CRYDriver *cryp, crykey_t key_id, size_t size, const uint8_t *in, uint8_t *out)
Decryption operation using (T)DES-ECB.
cryerror_t cry_lld_HMACSHA256_init(CRYDriver *cryp, HMACSHA256Context *hmacsha256ctxp)
Hash initialization using HMAC_SHA256.
Structure representing an CRY driver.
cryerror_t cry_lld_des_loadkey(CRYDriver *cryp, size_t size, const uint8_t *keyp)
Initializes the DES transient key.
cryerror_t cry_lld_encrypt_DES_CBC(CRYDriver *cryp, crykey_t key_id, size_t size, const uint8_t *in, uint8_t *out, const uint8_t *iv)
Encryption operation using (T)DES-CBC.
void cry_lld_stop(CRYDriver *cryp)
Deactivates the crypto peripheral.
cryerror_t cry_lld_encrypt_AES_CFB(CRYDriver *cryp, crykey_t key_id, size_t size, const uint8_t *in, uint8_t *out, const uint8_t *iv)
Encryption operation using AES-CFB.
cryerror_t
Driver error codes.
cryerror_t cry_lld_decrypt_AES_ECB(CRYDriver *cryp, crykey_t key_id, size_t size, const uint8_t *in, uint8_t *out)
Decryption operation using AES-ECB.
cryerror_t cry_lld_HMACSHA512_update(CRYDriver *cryp, HMACSHA512Context *hmacsha512ctxp, size_t size, const uint8_t *in)
Hash update using HMAC.
Driver configuration structure.
Type of a HMAC_SHA512 context.
Type of a HMAC_SHA256 context.
cryerror_t cry_lld_decrypt_AES_GCM(CRYDriver *cryp, crykey_t key_id, size_t auth_size, const uint8_t *auth_in, size_t text_size, const uint8_t *text_in, uint8_t *text_out, const uint8_t *iv, size_t tag_size, const uint8_t *tag_in)
Decryption operation using AES-GCM.
void cry_lld_start(CRYDriver *cryp)
Configures and activates the crypto peripheral.
uint32_t crykey_t
CRY key identifier type.
cryerror_t cry_lld_decrypt_AES(CRYDriver *cryp, crykey_t key_id, const uint8_t *in, uint8_t *out)
Decryption of a single block using AES.
cryerror_t cry_lld_SHA512_init(CRYDriver *cryp, SHA512Context *sha512ctxp)
Hash initialization using SHA512.
void cry_lld_init(void)
Low level crypto driver initialization.
cryerror_t cry_lld_SHA512_final(CRYDriver *cryp, SHA512Context *sha512ctxp, uint8_t *out)
Hash finalization using SHA512.
cryerror_t cry_lld_decrypt_AES_CTR(CRYDriver *cryp, crykey_t key_id, size_t size, const uint8_t *in, uint8_t *out, const uint8_t *iv)
Decryption operation using AES-CTR.
cryerror_t cry_lld_HMACSHA256_final(CRYDriver *cryp, HMACSHA256Context *hmacsha256ctxp, uint8_t *out)
Hash finalization using HMAC.
cryerror_t cry_lld_HMACSHA256_update(CRYDriver *cryp, HMACSHA256Context *hmacsha256ctxp, size_t size, const uint8_t *in)
Hash update using HMAC.
cryerror_t cry_lld_hmac_loadkey(CRYDriver *cryp, size_t size, const uint8_t *keyp)
Initializes the HMAC transient key.
cryerror_t cry_lld_encrypt_AES_ECB(CRYDriver *cryp, crykey_t key_id, size_t size, const uint8_t *in, uint8_t *out)
Encryption operation using AES-ECB.
CRYDriver CRYD1
CRY1 driver identifier.
cryerror_t cry_lld_decrypt_DES_CBC(CRYDriver *cryp, crykey_t key_id, size_t size, const uint8_t *in, uint8_t *out, const uint8_t *iv)
Decryption operation using (T)DES-CBC.
cryerror_t cry_lld_encrypt_DES_ECB(CRYDriver *cryp, crykey_t key_id, size_t size, const uint8_t *in, uint8_t *out)
Encryption operation using (T)DES-ECB.
cryerror_t cry_lld_decrypt_DES(CRYDriver *cryp, crykey_t key_id, const uint8_t *in, uint8_t *out)
Decryption of a single block using (T)DES.
cryerror_t cry_lld_HMACSHA512_final(CRYDriver *cryp, HMACSHA512Context *hmacsha512ctxp, uint8_t *out)
Hash finalization using HMAC.
cryerror_t cry_lld_encrypt_AES(CRYDriver *cryp, crykey_t key_id, const uint8_t *in, uint8_t *out)
Encryption of a single block using AES.
crystate_t
Driver state machine possible states.
cryerror_t cry_lld_SHA512_update(CRYDriver *cryp, SHA512Context *sha512ctxp, size_t size, const uint8_t *in)
Hash update using SHA512.
USBInEndpointState in
IN EP0 state.
cryerror_t cry_lld_SHA256_init(CRYDriver *cryp, SHA256Context *sha256ctxp)
Hash initialization using SHA256.
cryerror_t cry_lld_decrypt_AES_CBC(CRYDriver *cryp, crykey_t key_id, size_t size, const uint8_t *in, uint8_t *out, const uint8_t *iv)
Decryption operation using AES-CBC.
crystate_t state
Driver state.
USBOutEndpointState out
OUT EP0 state.
cryerror_t cry_lld_encrypt_DES(CRYDriver *cryp, crykey_t key_id, const uint8_t *in, uint8_t *out)
Encryption of a single block using (T)DES.
cryerror_t cry_lld_HMACSHA512_init(CRYDriver *cryp, HMACSHA512Context *hmacsha512ctxp)
Hash initialization using HMAC_SHA512.
cryerror_t cry_lld_SHA256_update(CRYDriver *cryp, SHA256Context *sha256ctxp, size_t size, const uint8_t *in)
Hash update using SHA256.
Type of a SHA256 context.
cryerror_t cry_lld_SHA256_final(CRYDriver *cryp, SHA256Context *sha256ctxp, uint8_t *out)
Hash finalization using SHA256.
const CRYConfig * config
Current configuration data.
cryerror_t cry_lld_encrypt_AES_CTR(CRYDriver *cryp, crykey_t key_id, size_t size, const uint8_t *in, uint8_t *out, const uint8_t *iv)
Encryption operation using AES-CTR.
cryerror_t cry_lld_aes_loadkey(CRYDriver *cryp, size_t size, const uint8_t *keyp)
Initializes the AES transient key.