TI BLE5-Stack API Documentation  1.01.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_STATUS_A_COEF_LENGTH_ZERO   0xC5
 A coefficient length zero.
 
#define ECCROMCC26XX_STATUS_A_COEF_TOO_LONG   0x5C
 A coefficient too long.
 
#define ECCROMCC26XX_STATUS_BAD_WINDOW_SIZE   0x66
 Bad window size.
 
#define ECCROMCC26XX_STATUS_DIGEST_LENGTH_ZERO   0x72
 Digest length zero.
 
#define ECCROMCC26XX_STATUS_DIGEST_TOO_LONG   0x27
 Digest too long.
 
#define ECCROMCC26XX_STATUS_ECCROMCC26XX_STATUS_KEY_LENGTH_ZERO   0x52
 Status key length zero.
 
#define ECCROMCC26XX_STATUS_ECCROMCC26XX_STATUS_KEY_TOO_LONG   0x25
 Status key too long.
 
#define ECCROMCC26XX_STATUS_ECDH_COMMON_KEY_OK   ECCROMCC26XX_STATUS_SCALAR_MUL_OK
 scalar mul OK
 
#define ECCROMCC26XX_STATUS_ECDH_KEYGEN_OK   ECCROMCC26XX_STATUS_SCALAR_MUL_OK
 status scalar mul OK
 
#define ECCROMCC26XX_STATUS_ECDSA_INVALID_SIGNATURE   0x5A
 ECDSA invalid signature.
 
#define ECCROMCC26XX_STATUS_ECDSA_SIGN_OK   0x32
 ECDSA sign OK.
 
#define ECCROMCC26XX_STATUS_ECDSA_VALID_SIGNATURE   0xA5
 ECDSA valid signature.
 
#define ECCROMCC26XX_STATUS_ILLEGAL_PARAM   -2
 
#define ECCROMCC26XX_STATUS_MALLOC_FAIL   -1
 
#define ECCROMCC26XX_STATUS_MODULUS_EVEN   0xDC
 Modulus Event.
 
#define ECCROMCC26XX_STATUS_MODULUS_LARGER_THAN_255_WORDS   0xD2
 Modulus Larger than 255 words.
 
#define ECCROMCC26XX_STATUS_MODULUS_LENGTH_ZERO   0x08
 Modulus length zero.
 
#define ECCROMCC26XX_STATUS_MODULUS_MSW_IS_ZERO   0x30
 Modulus MSW is zero.
 
#define ECCROMCC26XX_STATUS_ORDER_EVEN   0x82
 Order even.
 
#define ECCROMCC26XX_STATUS_ORDER_LARGER_THAN_255_WORDS   0x28
 Order larger than 255 words.
 
#define ECCROMCC26XX_STATUS_ORDER_LENGTH_ZERO   0x6C
 Order length zero.
 
#define ECCROMCC26XX_STATUS_ORDER_MSW_IS_ZERO   0x23
 Order MSW is zero.
 
#define ECCROMCC26XX_STATUS_ORDER_TOO_LONG   0xC6
 Order too long.
 
#define ECCROMCC26XX_STATUS_SCALAR_LENGTH_ZERO   0x53
 Scalar length zero.
 
#define ECCROMCC26XX_STATUS_SCALAR_MUL_OK   0x99
 Scalar mul ok.
 
#define ECCROMCC26XX_STATUS_SCALAR_TOO_LONG   0x35
 Scalar too long.
 
#define ECCROMCC26XX_STATUS_SIG_P1_LENGTH_ZERO   0x12
 SIG P1 length zero.
 
#define ECCROMCC26XX_STATUS_SIG_P1_TOO_LONG   0x11
 SIG P1 too long.
 
#define ECCROMCC26XX_STATUS_SIG_P2_LENGTH_ZERO   0x21
 SIG P2 length zero.
 
#define ECCROMCC26XX_STATUS_SIG_P2_TOO_LONG   0x22
 SIG P2 too long.
 
#define ECCROMCC26XX_STATUS_SUCCESS   0
 
#define ECCROMCC26XX_STATUS_TIMEOUT   -3
 
#define ECCROMCC26XX_STATUS_X_COORD_LENGTH_ZERO   0xC3
 X Coordinate length zero.
 
#define ECCROMCC26XX_STATUS_X_COORD_TOO_LONG   0x3C
 X Coordinate too long.
 
#define ECCROMCC26XX_STATUS_Y_COORD_LENGTH_ZERO   0x56
 Y coordinate length zero.
 
#define ECCROMCC26XX_STATUS_Y_COORD_TOO_LONG   0x65
 Y Coordinate too long.
 
#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...
 
Copyright 2018, Texas Instruments Incorporated