libopencm3
A free/libre/open-source firmware library for various ARM Cortex-M3 microcontrollers.
crypto_common_f24.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define CRYP   CRYP_BASE
 
#define CRYP_CR   MMIO32(CRYP_BASE + 0x00)
 
#define CRYP_SR   MMIO32(CRYP_BASE + 0x04)
 
#define CRYP_DIN   MMIO32(CRYP_BASE + 0x08)
 
#define CRYP_DOUT   MMIO32(CRYP_BASE + 0x0C)
 CRYP Data Output Register (CRYP_DOUT) More...
 
#define CRYP_DMACR   MMIO32(CRYP_BASE + 0x10)
 
#define CRYP_IMSCR   MMIO32(CRYP_BASE + 0x14)
 
#define CRYP_RISR   MMIO32(CRYP_BASE + 0x18)
 
#define CRYP_MISR   MMIO32(CRYP_BASE + 0x1C)
 
#define CRYP_KR(i)   MMIO64(CRYP_BASE + 0x20 + (i) * 8)
 
#define CRYP_IVR(i)   MMIO32(CRYP_BASE + 0x40 + (i) * 8)
 
#define CRYP_CR_ALGODIR   (1 << 2)
 
#define CRYP_CR_ALGOMODE_SHIFT   3
 
#define CRYP_CR_ALGOMODE   (7 << CRYP_CR_ALGOMODE_SHIFT)
 
#define CRYP_CR_ALGOMODE_TDES_ECB   (0 << CRYP_CR_ALGOMODE_SHIFT)
 
#define CRYP_CR_ALGOMODE_TDES_CBC   (1 << CRYP_CR_ALGOMODE_SHIFT)
 
#define CRYP_CR_ALGOMODE_DES_ECB   (2 << CRYP_CR_ALGOMODE_SHIFT)
 
#define CRYP_CR_ALGOMODE_DES_CBC   (3 << CRYP_CR_ALGOMODE_SHIFT)
 
#define CRYP_CR_ALGOMODE_AES_ECB   (4 << CRYP_CR_ALGOMODE_SHIFT)
 
#define CRYP_CR_ALGOMODE_AES_CBC   (5 << CRYP_CR_ALGOMODE_SHIFT)
 
#define CRYP_CR_ALGOMODE_AES_CTR   (6 << CRYP_CR_ALGOMODE_SHIFT)
 
#define CRYP_CR_ALGOMODE_AES_PREP   (7 << CRYP_CR_ALGOMODE_SHIFT)
 
#define CRYP_CR_DATATYPE_SHIFT   6
 
#define CRYP_CR_DATATYPE   (3 << CRYP_CR_DATATYPE_SHIFT)
 
#define CRYP_CR_DATATYPE_32   (0 << CRYP_CR_DATATYPE_SHIFT)
 
#define CRYP_CR_DATATYPE_16   (1 << CRYP_CR_DATATYPE_SHIFT)
 
#define CRYP_CR_DATATYPE_8   (2 << CRYP_CR_DATATYPE_SHIFT)
 
#define CRYP_CR_DATATYPE_BIT   (3 << CRYP_CR_DATATYPE_SHIFT)
 
#define CRYP_CR_KEYSIZE_SHIFT   8
 
#define CRYP_CR_KEYSIZE   (3 << CRYP_CR_KEYSIZE_SHIFT)
 
#define CRYP_CR_KEYSIZE_128   (0 << CRYP_CR_KEYSIZE_SHIFT)
 
#define CRYP_CR_KEYSIZE_192   (1 << CRYP_CR_KEYSIZE_SHIFT)
 
#define CRYP_CR_KEYSIZE_256   (2 << CRYP_CR_KEYSIZE_SHIFT)
 
#define CRYP_CR_FFLUSH   (1 << 14)
 
#define CRYP_CR_CRYPEN   (1 << 15)
 
#define CRYP_SR_IFEM   (1 << 0)
 
#define CRYP_SR_IFNF   (1 << 1)
 
#define CRYP_SR_OFNE   (1 << 2)
 
#define CRYP_SR_OFFU   (1 << 3)
 
#define CRYP_SR_BUSY   (1 << 4)
 
#define CRYP_DMACR_DIEN   (1 << 0)
 
#define CRYP_DMACR_DOEN   (1 << 1)
 
#define CRYP_IMSCR_INIM   (1 << 0)
 
#define CRYP_IMSCR_OUTIM   (1 << 1)
 
#define CRYP_RISR_INRIS   (1 << 0)
 
#define CRYP_RISR_OUTRIS   (1 << 0)
 
#define CRYP_MISR_INMIS   (1 << 0)
 
#define CRYP_MISR_OUTMIS   (1 << 0)
 

Enumerations

enum  crypto_mode {
  ENCRYPT_TDES_ECB = CRYP_CR_ALGOMODE_TDES_ECB , ENCRYPT_TDES_CBC = CRYP_CR_ALGOMODE_TDES_CBC , ENCRYPT_DES_ECB = CRYP_CR_ALGOMODE_DES_ECB , ENCRYPT_DES_CBC = CRYP_CR_ALGOMODE_DES_CBC ,
  ENCRYPT_AES_ECB = CRYP_CR_ALGOMODE_AES_ECB , ENCRYPT_AES_CBC = CRYP_CR_ALGOMODE_AES_CBC , ENCRYPT_AES_CTR = CRYP_CR_ALGOMODE_AES_CTR , DECRYPT_TDES_ECB = CRYP_CR_ALGOMODE_TDES_ECB | CRYP_CR_ALGODIR ,
  DECRYPT_TDES_CBC = CRYP_CR_ALGOMODE_TDES_CBC | CRYP_CR_ALGODIR , DECRYPT_DES_ECB = CRYP_CR_ALGOMODE_DES_ECB | CRYP_CR_ALGODIR , DECRYPT_DES_CBC = CRYP_CR_ALGOMODE_DES_CBC | CRYP_CR_ALGODIR , DECRYPT_AES_ECB = CRYP_CR_ALGOMODE_AES_ECB | CRYP_CR_ALGODIR ,
  DECRYPT_AES_CBC = CRYP_CR_ALGOMODE_AES_CBC | CRYP_CR_ALGODIR , DECRYPT_AES_CTR = CRYP_CR_ALGOMODE_AES_CTR
}
 
enum  crypto_keysize { CRYPTO_KEY_128BIT = 0 , CRYPTO_KEY_192BIT , CRYPTO_KEY_256BIT }
 
enum  crypto_datatype { CRYPTO_DATA_32BIT = 0 , CRYPTO_DATA_16BIT , CRYPTO_DATA_8BIT , CRYPTO_DATA_BIT }
 

Functions

void crypto_wait_busy (void)
 Wait, if the Controller is busy. More...
 
void crypto_set_key (enum crypto_keysize keysize, uint64_t key[])
 Set key value to the controller. More...
 
void crypto_set_iv (uint64_t iv[])
 Set Initialization Vector. More...
 
void crypto_set_datatype (enum crypto_datatype datatype)
 Set the order of the data to be crypted. More...
 
void crypto_set_algorithm (enum crypto_mode mode)
 Set the algorithm for Encryption/decryption. More...
 
void crypto_start (void)
 Enable the cryptographic controller and start processing. More...
 
void crypto_stop (void)
 Disable the cryptographic controller and stop processing. More...
 
uint32_t crypto_process_block (uint32_t *inp, uint32_t *outp, uint32_t length)
 Start of encryption or decryption on data buffers. More...