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