ChibiOS/HAL  6.1.0
hal_crypto_lld.h File Reference

PLATFORM cryptographic subsystem low level driver header. More...

Go to the source code of this file.

Data Structures

struct  CRYConfig
 Driver configuration structure. More...
 
struct  CRYDriver
 Structure representing an CRY driver. More...
 
struct  SHA1Context
 Type of a SHA1 context. More...
 
struct  SHA256Context
 Type of a SHA256 context. More...
 
struct  SHA512Context
 Type of a SHA512 context. More...
 

Macros

Driver capability switches
#define CRY_LLD_SUPPORTS_AES   TRUE
 
#define CRY_LLD_SUPPORTS_AES_ECB   TRUE
 
#define CRY_LLD_SUPPORTS_AES_CBC   TRUE
 
#define CRY_LLD_SUPPORTS_AES_CFB   TRUE
 
#define CRY_LLD_SUPPORTS_AES_CTR   TRUE
 
#define CRY_LLD_SUPPORTS_AES_GCM   TRUE
 
#define CRY_LLD_SUPPORTS_DES   TRUE
 
#define CRY_LLD_SUPPORTS_DES_ECB   TRUE
 
#define CRY_LLD_SUPPORTS_DES_CBC   TRUE
 
#define CRY_LLD_SUPPORTS_SHA1   TRUE
 
#define CRY_LLD_SUPPORTS_SHA256   TRUE
 
#define CRY_LLD_SUPPORTS_SHA512   TRUE
 
#define CRY_LLD_SUPPORTS_TRNG   TRUE
 
PLATFORM configuration options
#define PLATFORM_CRY_USE_CRY1   FALSE
 CRY1 driver enable switch. More...
 

Typedefs

typedef uint32_t crykey_t
 CRY key identifier type. More...
 
typedef struct CRYDriver CRYDriver
 Type of a structure representing an CRY driver. More...
 

Functions

void cry_lld_init (void)
 Low level crypto driver initialization. More...
 
void cry_lld_start (CRYDriver *cryp)
 Configures and activates the crypto peripheral. More...
 
void cry_lld_stop (CRYDriver *cryp)
 Deactivates the crypto peripheral. More...
 
cryerror_t cry_lld_loadkey (CRYDriver *cryp, cryalgorithm_t algorithm, size_t size, const uint8_t *keyp)
 Initializes the transient key for a specific algorithm. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
cryerror_t cry_lld_encrypt_AES_GCM (CRYDriver *cryp, crykey_t key_id, size_t size, const uint8_t *in, uint8_t *out, const uint8_t *iv, size_t aadsize, const uint8_t *aad, uint8_t *authtag)
 Encryption operation using AES-GCM. More...
 
cryerror_t cry_lld_decrypt_AES_GCM (CRYDriver *cryp, crykey_t key_id, size_t size, const uint8_t *in, uint8_t *out, const uint8_t *iv, size_t aadsize, const uint8_t *aad, uint8_t *authtag)
 Decryption operation using AES-GCM. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
cryerror_t cry_lld_SHA1_init (CRYDriver *cryp, SHA1Context *sha1ctxp)
 Hash initialization using SHA1. More...
 
cryerror_t cry_lld_SHA1_update (CRYDriver *cryp, SHA1Context *sha1ctxp, size_t size, const uint8_t *in)
 Hash update using SHA1. More...
 
cryerror_t cry_lld_SHA1_final (CRYDriver *cryp, SHA1Context *sha1ctxp, uint8_t *out)
 Hash finalization using SHA1. More...
 
cryerror_t cry_lld_SHA256_init (CRYDriver *cryp, SHA256Context *sha256ctxp)
 Hash initialization using SHA256. More...
 
cryerror_t cry_lld_SHA256_update (CRYDriver *cryp, SHA256Context *sha256ctxp, size_t size, const uint8_t *in)
 Hash update using SHA256. More...
 
cryerror_t cry_lld_SHA256_final (CRYDriver *cryp, SHA256Context *sha256ctxp, uint8_t *out)
 Hash finalization using SHA256. More...
 
cryerror_t cry_lld_SHA512_init (CRYDriver *cryp, SHA512Context *sha512ctxp)
 Hash initialization using SHA512. More...
 
cryerror_t cry_lld_SHA512_update (CRYDriver *cryp, SHA512Context *sha512ctxp, size_t size, const uint8_t *in)
 Hash update using SHA512. More...
 
cryerror_t cry_lld_SHA512_final (CRYDriver *cryp, SHA512Context *sha512ctxp, uint8_t *out)
 Hash finalization using SHA512. More...
 
cryerror_t cry_lld_TRNG (CRYDriver *cryp, uint8_t *out)
 True random numbers generator. More...
 

Detailed Description

PLATFORM cryptographic subsystem low level driver header.

Definition in file hal_crypto_lld.h.