TI BLE-Stack for Bluetooth API Documentation  3.03.01.00
Data Structures | Macros | Typedefs | Functions
ECCROMCC26XX.h File Reference

Detailed Description

ECC ROM driver implementation for a CC26XX device.

Go to the source code of this file.

Data Structures

struct  ECCROMCC26XX_CurveParams
 ECCROMCC26XX Curve Parameters. More...
 
struct  ECCROMCC26XX_Params
 ECCROMCC26XX Parameters. More...
 

Macros

#define ECCROMCC26XX_NIST_P256_KEY_LEN_IN_BYTES   32
 
#define ECCROMCC26XX_NIST_P256_WORKZONE_LEN_IN_BYTES   684
 
#define ECCROMCC26XX_NIST_P256_WORKZONE_SIGN_VERIFY_LEN_IN_BYTES   1100
 
#define ECCROMCC26XX_STATUS_A_COEF_LENGTH_ZERO   0xC5
 
#define ECCROMCC26XX_STATUS_A_COEF_TOO_LONG   0x5C
 
#define ECCROMCC26XX_STATUS_BAD_WINDOW_SIZE   0x66
 
#define ECCROMCC26XX_STATUS_DIGEST_LENGTH_ZERO   0x72
 
#define ECCROMCC26XX_STATUS_DIGEST_TOO_LONG   0x27
 
#define ECCROMCC26XX_STATUS_ECCROMCC26XX_STATUS_KEY_LENGTH_ZERO   0x52
 
#define ECCROMCC26XX_STATUS_ECCROMCC26XX_STATUS_KEY_TOO_LONG   0x25
 
#define ECCROMCC26XX_STATUS_ECDH_COMMON_KEY_OK   ECCROMCC26XX_STATUS_SCALAR_MUL_OK
 
#define ECCROMCC26XX_STATUS_ECDH_KEYGEN_OK   ECCROMCC26XX_STATUS_SCALAR_MUL_OK
 
#define ECCROMCC26XX_STATUS_ECDH_PT_CHECK_FAIL   0x5
 
#define ECCROMCC26XX_STATUS_ECDH_X_LARGER_THAN_PRIME   0x3
 
#define ECCROMCC26XX_STATUS_ECDH_X_ZERO   0x1
 
#define ECCROMCC26XX_STATUS_ECDH_Y_LARGER_THAN_PRIME   0x4
 
#define ECCROMCC26XX_STATUS_ECDH_Y_ZERO   0x2
 
#define ECCROMCC26XX_STATUS_ECDSA_INVALID_SIGNATURE   0x5A
 
#define ECCROMCC26XX_STATUS_ECDSA_SIGN_OK   0x32
 
#define ECCROMCC26XX_STATUS_ECDSA_VALID_SIGNATURE   0xA5
 
#define ECCROMCC26XX_STATUS_ILLEGAL_PARAM   -2
 
#define ECCROMCC26XX_STATUS_MALLOC_FAIL   -1
 
#define ECCROMCC26XX_STATUS_MODULUS_EVEN   0xDC
 
#define ECCROMCC26XX_STATUS_MODULUS_LARGER_THAN_255_WORDS   0xD2
 
#define ECCROMCC26XX_STATUS_MODULUS_LENGTH_ZERO   0x08
 
#define ECCROMCC26XX_STATUS_MODULUS_MSW_IS_ZERO   0x30
 
#define ECCROMCC26XX_STATUS_ORDER_EVEN   0x82
 
#define ECCROMCC26XX_STATUS_ORDER_LARGER_THAN_255_WORDS   0x28
 
#define ECCROMCC26XX_STATUS_ORDER_LENGTH_ZERO   0x6C
 
#define ECCROMCC26XX_STATUS_ORDER_MSW_IS_ZERO   0x23
 
#define ECCROMCC26XX_STATUS_ORDER_TOO_LONG   0xC6
 
#define ECCROMCC26XX_STATUS_SCALAR_LENGTH_ZERO   0x53
 
#define ECCROMCC26XX_STATUS_SCALAR_MUL_OK   0x99
 
#define ECCROMCC26XX_STATUS_SCALAR_TOO_LONG   0x35
 
#define ECCROMCC26XX_STATUS_SIG_P1_LENGTH_ZERO   0x12
 
#define ECCROMCC26XX_STATUS_SIG_P1_TOO_LONG   0x11
 
#define ECCROMCC26XX_STATUS_SIG_P2_LENGTH_ZERO   0x21
 
#define ECCROMCC26XX_STATUS_SIG_P2_TOO_LONG   0x22
 
#define ECCROMCC26XX_STATUS_SUCCESS   0
 
#define ECCROMCC26XX_STATUS_TIMEOUT   -3
 
#define ECCROMCC26XX_STATUS_X_COORD_LENGTH_ZERO   0xC3
 
#define ECCROMCC26XX_STATUS_X_COORD_TOO_LONG   0x3C
 
#define ECCROMCC26XX_STATUS_Y_COORD_LENGTH_ZERO   0x56
 
#define ECCROMCC26XX_STATUS_Y_COORD_TOO_LONG   0x65
 
#define ECCROMCC26XX_WORKZONE_LEN_IN_BYTES(len, win)   (4 * ((13 * (len)) + 13 + (3 * (len) * (1 << ((win) - 2)))))
 Compute ECC workzone length in bytes for a generic key length and window size. More...
 

Typedefs

typedef struct ECCROMCC26XX_CurveParams ECCROMCC26XX_CurveParams
 ECCROMCC26XX Curve Parameters. More...
 
typedef void(* ECCROMCC26XX_FreeCB) (uint8_t *pBuf)
 ECCROMCC26XX Free Callback. More...
 
typedef uint8_t *(* ECCROMCC26XX_MallocCB) (uint16_t len)
 ECCROMCC26XX Malloc Callback. More...
 
typedef struct ECCROMCC26XX_Params ECCROMCC26XX_Params
 ECCROMCC26XX Parameters. More...
 

Functions

int8_t ECCROMCC26XX_genDHKey (uint8_t *privateKey, uint8_t *publicKeyX, uint8_t *publicKeyY, uint8_t *dHKeyX, uint8_t *dHKeyY, ECCROMCC26XX_Params *params)
 Generate Diffie-Hellman Shared Secret Key X and Y Coordinates. More...
 
int8_t ECCROMCC26XX_genKeys (uint8_t *privateKey, uint8_t *publicKeyX, uint8_t *publicKeyY, ECCROMCC26XX_Params *params)
 Generate Public Key X and Y Coordinates. More...
 
void ECCROMCC26XX_init (void)
 Initializes module's synchronization resources. Only needs to be called once, but safe to call multiple times. More...
 
void ECCROMCC26XX_Params_init (ECCROMCC26XX_Params *params)
 Function to initialize the ECCROMCC26XX_Params struct to its defaults. params should not be modified until after this function is called. Default parameters use the NIST P-256 curve, timeout is set to wait indefinitely, malloc and free are NULL and status is set to ECCROMCC26XX_STATUS_SUCCESS. A client may call this function with the same params instance any number of times. More...
 
int8_t ECCROMCC26XX_signHash (uint8_t *privateKey, const uint8_t *hash, uint32_t hashLen, uint8_t *sign1, uint8_t *sign2, ECCROMCC26XX_Params *params)
 Compute the signature of a previously hashed message. More...
 
© Copyright 1995-2019, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale