CC13xx Driver Library
rom_crypto.h File Reference

Data Structures

struct  SHA256_memory_t
 A SHA256_memory_t variable of this type must be allocated before running any SHA256 functions. More...
 

Macros

#define ECC_WINDOW_SIZE   3
 
#define ECC_PRIME_NIST256_CURVE
 
#define ECC_MODULUS_EVEN   0xDC
 
#define ECC_MODULUS_LARGER_THAN_255_WORDS   0xD2
 
#define ECC_MODULUS_LENGTH_ZERO   0x08
 
#define ECC_MODULUS_MSW_IS_ZERO   0x30
 
#define ECC_SCALAR_TOO_LONG   0x35
 
#define ECC_SCALAR_LENGTH_ZERO   0x53
 
#define ECC_ORDER_TOO_LONG   0xC6
 
#define ECC_ORDER_LENGTH_ZERO   0x6C
 
#define ECC_X_COORD_TOO_LONG   0x3C
 
#define ECC_X_COORD_LENGTH_ZERO   0xC3
 
#define ECC_Y_COORD_TOO_LONG   0x65
 
#define ECC_Y_COORD_LENGTH_ZERO   0x56
 
#define ECC_A_COEF_TOO_LONG   0x5C
 
#define ECC_A_COEF_LENGTH_ZERO   0xC5
 
#define ECC_BAD_WINDOW_SIZE   0x66
 
#define ECC_SCALAR_MUL_OK   0x99
 
#define ECC_ORDER_LARGER_THAN_255_WORDS   0x28
 
#define ECC_ORDER_EVEN   0x82
 
#define ECC_ORDER_MSW_IS_ZERO   0x23
 
#define ECC_ECC_KEY_TOO_LONG   0x25
 
#define ECC_ECC_KEY_LENGTH_ZERO   0x52
 
#define ECC_DIGEST_TOO_LONG   0x27
 
#define ECC_DIGEST_LENGTH_ZERO   0x72
 
#define ECC_ECDSA_SIGN_OK   0x32
 
#define ECC_ECDSA_INVALID_SIGNATURE   0x5A
 
#define ECC_ECDSA_VALID_SIGNATURE   0xA5
 
#define ECC_SIG_P1_TOO_LONG   0x11
 
#define ECC_SIG_P1_LENGTH_ZERO   0x12
 
#define ECC_SIG_P2_TOO_LONG   0x22
 
#define ECC_SIG_P2_LENGTH_ZERO   0x21
 
#define ECC_ECDSA_KEYGEN_OK   ECC_SCALAR_MUL_OK
 
#define ECC_ECDH_KEYGEN_OK   ECC_SCALAR_MUL_OK
 
#define ECC_ECDH_COMMON_KEY_OK   ECC_SCALAR_MUL_OK
 

Functions

void AES_ECB_EncryptData (uint8_t *text, uint16_t textLen, uint8_t *aesKey)
 Use a random 128 bit key to encrypt data with the AES. More...
 
void AES_ECB_DecryptData (uint8_t *text, uint16_t textLen, uint8_t *aesKey)
 Use a random 128 bit key to decrypt data with the AES. More...
 
int8_t AES_CCM_EncryptData (uint8_t encryptFlag, uint8_t MACLen, uint8_t *nonce, uint8_t *plainText, uint16_t textLen, uint8_t *addDataBuf, uint16_t addBufLen, uint8_t *aesKey, uint8_t *MAC, uint8_t ccmLVal)
 Authenticate and optionally encrypt message plainText. More...
 
int8_t AES_CCM_DecryptData (uint8_t decryptFlag, uint8_t MACLen, uint8_t *nonce, uint8_t *cipherText, uint16_t textLen, uint8_t *addDataBuf, uint16_t addBufLen, uint8_t *aesKey, uint8_t *MAC, uint8_t ccmLVal)
 Authenticate and optionally decrypt message cipherText. More...
 
uint8_t AES_CTR_EncryptData (uint8_t *plainText, uint16_t textLen, uint8_t *aesKey, uint8_t *nonce, uint8_t *initVector)
 Encrypt plaintext using the AES key, nonce and initialization vector. More...
 
uint8_t AES_CTR_DecryptData (uint8_t *cipherText, uint16_t textLen, uint8_t *aesKey, uint8_t *nonce, uint8_t *initVector)
 Decrypt ciphertext using the AES key, nonce and initialization vector. More...
 
void ECC_initialize (uint32_t *pWorkzone)
 Pass pointer to ECC memory allocation to ECC engine. More...
 
uint8_t ECC_generateKey (uint32_t *randString, uint32_t *privateKey, uint32_t *publicKey_x, uint32_t *publicKey_y)
 Generate a key. More...
 
uint8_t ECC_ECDSA_sign (uint32_t *secretKey, uint32_t *text, uint32_t *randString, uint32_t *sign1, uint32_t *sign2)
 Sign data. More...
 
uint8_t ECC_ECDSA_verify (uint32_t *publicKey_x, uint32_t *publicKey_y, uint32_t *text, uint32_t *sign1, uint32_t *sign2)
 Verify signature. More...
 
uint8_t ECC_ECDH_computeSharedSecret (uint32_t *privateKey, uint32_t *publicKey_x, uint32_t *publicKey_y, uint32_t *sharedSecret_x, uint32_t *sharedSecret_y)
 Compute the shared secret. More...
 
uint8_t SHA256_runFullAlgorithm (SHA256_memory_t *memory, uint8_t *pBufIn, uint32_t bufLen, uint8_t *pBufOut)
 Perform SHA256 on the input data. More...
 
uint8_t SHA256_initialize (SHA256_memory_t *workZone)
 Intializes the SHA256 engine. More...
 
uint8_t SHA256_execute (SHA256_memory_t *config, uint8_t *pBufIn, uint32_t bufLen)
 Perform SHA256. More...
 
uint8_t SHA256_output (SHA256_memory_t *memory, uint8_t *pBufOut)
 Complete the process by passing the modified data back. More...