28 #if (HAL_USE_CRY == TRUE) || defined(__DOXYGEN__) 45 #if !defined(HAL_CRY_USE_FALLBACK) || defined(__DOXYGEN__) 46 #define HAL_CRY_USE_FALLBACK FALSE 53 #if !defined(HAL_CRY_ENFORCE_FALLBACK) || defined(__DOXYGEN__) 54 #define HAL_CRY_ENFORCE_FALLBACK FALSE 61 #if HAL_CRY_ENFORCE_FALLBACK == TRUE 62 #undef HAL_CRY_USE_FALLBACK 63 #define HAL_CRY_USE_FALLBACK TRUE 110 #if HAL_CRY_ENFORCE_FALLBACK == FALSE 114 #if !defined(CRY_LLD_SUPPORTS_AES) || \ 115 !defined(CRY_LLD_SUPPORTS_AES_ECB) || \ 116 !defined(CRY_LLD_SUPPORTS_AES_CBC) || \ 117 !defined(CRY_LLD_SUPPORTS_AES_CFB) || \ 118 !defined(CRY_LLD_SUPPORTS_AES_CTR) || \ 119 !defined(CRY_LLD_SUPPORTS_AES_GCM) || \ 120 !defined(CRY_LLD_SUPPORTS_DES) || \ 121 !defined(CRY_LLD_SUPPORTS_DES_ECB) || \ 122 !defined(CRY_LLD_SUPPORTS_DES_CBC) || \ 123 !defined(CRY_LLD_SUPPORTS_SHA1) || \ 124 !defined(CRY_LLD_SUPPORTS_SHA256) || \ 125 !defined(CRY_LLD_SUPPORTS_SHA512) || \ 126 !defined(CRY_LLD_SUPPORTS_HMAC_SHA256) || \ 127 !defined(CRY_LLD_SUPPORTS_HMAC_SHA512) 128 #error "CRYPTO LLD does not export the required switches" 134 #define CRY_LLD_SUPPORTS_AES FALSE 135 #define CRY_LLD_SUPPORTS_AES_ECB FALSE 136 #define CRY_LLD_SUPPORTS_AES_CBC FALSE 137 #define CRY_LLD_SUPPORTS_AES_CFB FALSE 138 #define CRY_LLD_SUPPORTS_AES_CTR FALSE 139 #define CRY_LLD_SUPPORTS_AES_GCM FALSE 140 #define CRY_LLD_SUPPORTS_DES FALSE 141 #define CRY_LLD_SUPPORTS_DES_ECB FALSE 142 #define CRY_LLD_SUPPORTS_DES_CBC FALSE 143 #define CRY_LLD_SUPPORTS_SHA1 FALSE 144 #define CRY_LLD_SUPPORTS_SHA256 FALSE 145 #define CRY_LLD_SUPPORTS_SHA512 FALSE 146 #define CRY_LLD_SUPPORTS_HMAC_SHA256 FALSE 147 #define CRY_LLD_SUPPORTS_HMAC_SHA512 FALSE 164 #if HAL_CRY_USE_FALLBACK == TRUE 165 #include "hal_crypto_fallback.h" 168 #if (HAL_CRY_USE_FALLBACK == FALSE) && (CRY_LLD_SUPPORTS_SHA1 == FALSE) 176 #if (HAL_CRY_USE_FALLBACK == FALSE) && (CRY_LLD_SUPPORTS_SHA256 == FALSE) 184 #if (HAL_CRY_USE_FALLBACK == FALSE) && (CRY_LLD_SUPPORTS_SHA512 == FALSE) 192 #if (HAL_CRY_USE_FALLBACK == FALSE) && (CRY_LLD_SUPPORTS_HMAC_SHA256 == FALSE) 200 #if (HAL_CRY_USE_FALLBACK == FALSE) && (CRY_LLD_SUPPORTS_HMAC_SHA512 == FALSE) 231 const uint8_t *keyp);
289 const uint8_t *auth_in,
291 const uint8_t *text_in,
299 const uint8_t *auth_in,
301 const uint8_t *text_in,
305 const uint8_t *tag_in);
308 const uint8_t *keyp);
341 size_t size,
const uint8_t *in);
346 size_t size,
const uint8_t *in);
351 size_t size,
const uint8_t *in);
356 const uint8_t *keyp);
cryerror_t cryLoadAESTransientKey(CRYDriver *cryp, size_t size, const uint8_t *keyp)
Initializes the AES transient key.
cryerror_t crySHA1Final(CRYDriver *cryp, SHA1Context *sha1ctxp, uint8_t *out)
Hash finalization using SHA1.
void cryInit(void)
Cryptographic Driver initialization.
cryerror_t crySHA256Init(CRYDriver *cryp, SHA256Context *sha256ctxp)
Hash initialization using SHA256.
cryerror_t crySHA1Update(CRYDriver *cryp, SHA1Context *sha1ctxp, size_t size, const uint8_t *in)
Hash update using SHA1.
void cryStart(CRYDriver *cryp, const CRYConfig *config)
Configures and activates the cryptographic peripheral.
cryerror_t cryEncryptAES_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 cryDecryptDES(CRYDriver *cryp, crykey_t key_id, const uint8_t *in, uint8_t *out)
Decryption of a single block using (T)DES.
cryerror_t cryDecryptAES_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.
Type of a SHA512 context.
cryerror_t cryLoadHMACTransientKey(CRYDriver *cryp, size_t size, const uint8_t *keyp)
Initializes the HMAC transient key.
PLATFORM cryptographic subsystem low level driver header.
cryerror_t cryDecryptAES_ECB(CRYDriver *cryp, crykey_t key_id, size_t size, const uint8_t *in, uint8_t *out)
Decryption operation using AES-ECB.
Structure representing an CRY driver.
cryerror_t cryHMACSHA256Init(CRYDriver *cryp, HMACSHA256Context *hmacsha256ctxp)
Hash initialization using HMAC_SHA256.
cryerror_t cryEncryptDES(CRYDriver *cryp, crykey_t key_id, const uint8_t *in, uint8_t *out)
Encryption of a single block using (T)DES.
cryerror_t cryDecryptDES_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.
void cryStop(CRYDriver *cryp)
Deactivates the cryptographic peripheral.
size_t bitsize_t
Size, in bits, of a crypto field or message.
cryerror_t cryDecryptDES_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 crySHA1Init(CRYDriver *cryp, SHA1Context *sha1ctxp)
Hash initialization using SHA1.
cryerror_t
Driver error codes.
cryerror_t cryHMACSHA512Update(CRYDriver *cryp, HMACSHA512Context *hmacsha512ctxp, size_t size, const uint8_t *in)
Hash update using HMAC.
Driver configuration structure.
Type of a HMAC_SHA512 context.
cryerror_t cryHMACSHA256Final(CRYDriver *cryp, HMACSHA256Context *hmacsha256ctxp, uint8_t *out)
Hash finalization using HMAC.
cryerror_t cryDecryptAES_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.
cryerror_t cryHMACSHA512Final(CRYDriver *cryp, HMACSHA512Context *hmacsha512ctxp, uint8_t *out)
Hash finalization using HMAC.
cryerror_t cryEncryptAES_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 crySHA256Update(CRYDriver *cryp, SHA256Context *sha256ctxp, size_t size, const uint8_t *in)
Hash update using SHA256.
Type of a HMAC_SHA256 context.
cryerror_t cryHMACSHA256Update(CRYDriver *cryp, HMACSHA256Context *hmacsha256ctxp, size_t size, const uint8_t *in)
Hash update using HMAC.
uint32_t crykey_t
CRY key identifier type.
cryerror_t crySHA512Init(CRYDriver *cryp, SHA512Context *sha512ctxp)
Hash initialization using SHA512.
cryerror_t crySHA256Final(CRYDriver *cryp, SHA256Context *sha256ctxp, uint8_t *out)
Hash finalization using SHA256.
cryerror_t cryHMACSHA512Init(CRYDriver *cryp, HMACSHA512Context *hmacsha512ctxp)
Hash initialization using HMAC_SHA512.
cryerror_t cryDecryptAES_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 crySHA512Final(CRYDriver *cryp, SHA512Context *sha512ctxp, uint8_t *out)
Hash finalization using SHA512.
cryalgorithm_t
Type of an algorithm identifier.
cryerror_t cryEncryptAES_ECB(CRYDriver *cryp, crykey_t key_id, size_t size, const uint8_t *in, uint8_t *out)
Encryption operation using AES-ECB.
cryerror_t cryEncryptAES_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.
crystate_t
Driver state machine possible states.
USBInEndpointState in
IN EP0 state.
cryerror_t cryDecryptAES_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.
cryerror_t crySHA512Update(CRYDriver *cryp, SHA512Context *sha512ctxp, size_t size, const uint8_t *in)
Hash update using SHA512.
USBOutEndpointState out
OUT EP0 state.
Type of a SHA256 context.
cryerror_t cryEncryptDES_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 cryLoadDESTransientKey(CRYDriver *cryp, size_t size, const uint8_t *keyp)
Initializes the DES transient key.
cryerror_t cryEncryptAES_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.
const CRYConfig * config
Current configuration data.
cryerror_t cryEncryptAES(CRYDriver *cryp, crykey_t key_id, const uint8_t *in, uint8_t *out)
Encryption of a single block using AES.
cryerror_t cryDecryptAES(CRYDriver *cryp, crykey_t key_id, const uint8_t *in, uint8_t *out)
Decryption of a single block using AES.
void cryObjectInit(CRYDriver *cryp)
Initializes the standard part of a CRYDriver structure.
cryerror_t cryEncryptDES_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.