Go to the documentation of this file.
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);
crystate_t
Driver state machine possible states.
Type of a HMAC_SHA256 context.
USBOutEndpointState out
OUT EP0 state.
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.
Structure representing an CRY driver.
cryerror_t
Driver error codes.
cryerror_t cryLoadDESTransientKey(CRYDriver *cryp, size_t size, const uint8_t *keyp)
Initializes the DES transient key.
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.
crystate_t state
Driver state.
cryerror_t crySHA256Init(CRYDriver *cryp, SHA256Context *sha256ctxp)
Hash initialization using SHA256.
cryerror_t crySHA256Final(CRYDriver *cryp, SHA256Context *sha256ctxp, uint8_t *out)
Hash finalization using SHA256.
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.
cryerror_t crySHA512Final(CRYDriver *cryp, SHA512Context *sha512ctxp, uint8_t *out)
Hash finalization using SHA512.
Type of a SHA256 context.
cryerror_t crySHA512Init(CRYDriver *cryp, SHA512Context *sha512ctxp)
Hash initialization using SHA512.
cryerror_t crySHA1Init(CRYDriver *cryp, SHA1Context *sha1ctxp)
Hash initialization using SHA1.
cryerror_t cryEncryptDES(CRYDriver *cryp, crykey_t key_id, const uint8_t *in, uint8_t *out)
Encryption of a single block using (T)DES.
Driver configuration structure.
cryerror_t cryHMACSHA256Init(CRYDriver *cryp, HMACSHA256Context *hmacsha256ctxp)
Hash initialization using HMAC_SHA256.
cryerror_t cryLoadAESTransientKey(CRYDriver *cryp, size_t size, const uint8_t *keyp)
Initializes the AES transient key.
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.
cryerror_t crySHA1Update(CRYDriver *cryp, SHA1Context *sha1ctxp, size_t size, const uint8_t *in)
Hash update using SHA1.
cryerror_t cryLoadHMACTransientKey(CRYDriver *cryp, size_t size, const uint8_t *keyp)
Initializes the HMAC transient key.
void cryStop(CRYDriver *cryp)
Deactivates the cryptographic peripheral.
cryalgorithm_t
Type of an algorithm identifier.
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.
cryerror_t cryHMACSHA512Final(CRYDriver *cryp, HMACSHA512Context *hmacsha512ctxp, uint8_t *out)
Hash finalization using HMAC.
Type of a SHA512 context.
cryerror_t crySHA256Update(CRYDriver *cryp, SHA256Context *sha256ctxp, size_t size, const uint8_t *in)
Hash update using SHA256.
uint32_t crykey_t
CRY key identifier type.
size_t bitsize_t
Size, in bits, of a crypto field or message.
cryerror_t cryHMACSHA256Update(CRYDriver *cryp, HMACSHA256Context *hmacsha256ctxp, size_t size, const uint8_t *in)
Hash update using HMAC.
PLATFORM cryptographic subsystem low level driver header.
void cryInit(void)
Cryptographic Driver initialization.
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 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.
cryerror_t crySHA1Final(CRYDriver *cryp, SHA1Context *sha1ctxp, uint8_t *out)
Hash finalization using SHA1.
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.
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 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.
cryerror_t cryHMACSHA512Init(CRYDriver *cryp, HMACSHA512Context *hmacsha512ctxp)
Hash initialization using HMAC_SHA512.
const CRYConfig * config
Current configuration data.
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.
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 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 crySHA512Update(CRYDriver *cryp, SHA512Context *sha512ctxp, size_t size, const uint8_t *in)
Hash update using SHA512.
void cryStart(CRYDriver *cryp, const CRYConfig *config)
Configures and activates the cryptographic peripheral.
Type of a HMAC_SHA512 context.
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 cryHMACSHA512Update(CRYDriver *cryp, HMACSHA512Context *hmacsha512ctxp, size_t size, const uint8_t *in)
Hash update using HMAC.
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 cryHMACSHA256Final(CRYDriver *cryp, HMACSHA256Context *hmacsha256ctxp, uint8_t *out)
Hash finalization using HMAC.
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.
void cryObjectInit(CRYDriver *cryp)
Initializes the standard part of a CRYDriver structure.