TI BLE5-Stack API Documentation  2.01.03.00
ECCROMCC26XX.h
Go to the documentation of this file.
1 /******************************************************************************
2 
3  @file ECCROMCC26XX.h
4 
5  @brief This file contains the interface to the ECC in ROM Driver.
6 
7  Group: WCS, BTS
8  $Target Device: DEVICES $
9 
10  ******************************************************************************
11  $License: BSD3 2016 $
12  ******************************************************************************
13  $Release Name: PACKAGE NAME $
14  $Release Date: PACKAGE RELEASE DATE $
15  *****************************************************************************/
16 
183 #ifndef ti_drivers_ECCROMCC26XX__include
184 #define ti_drivers_ECCROMCC26XX__include
185 
186 #ifdef __cplusplus
187 extern "C" {
188 #endif
189 
190 #include <stdint.h>
191 
202 /* Add ECCROMCC26XX_STATUS_* macros here */
203 #define ECCROMCC26XX_STATUS_SUCCESS 0
204 #define ECCROMCC26XX_STATUS_MALLOC_FAIL -1
205 #define ECCROMCC26XX_STATUS_ILLEGAL_PARAM -2
206 #define ECCROMCC26XX_STATUS_TIMEOUT -3
208 /* ECC status error codes from module */
209 #define ECCROMCC26XX_STATUS_MODULUS_EVEN 0xDC
210 #define ECCROMCC26XX_STATUS_MODULUS_LARGER_THAN_255_WORDS 0xD2
211 #define ECCROMCC26XX_STATUS_MODULUS_LENGTH_ZERO 0x08
212 #define ECCROMCC26XX_STATUS_MODULUS_MSW_IS_ZERO 0x30
213 #define ECCROMCC26XX_STATUS_SCALAR_TOO_LONG 0x35
214 #define ECCROMCC26XX_STATUS_SCALAR_LENGTH_ZERO 0x53
215 #define ECCROMCC26XX_STATUS_ORDER_TOO_LONG 0xC6
216 #define ECCROMCC26XX_STATUS_ORDER_LENGTH_ZERO 0x6C
217 #define ECCROMCC26XX_STATUS_X_COORD_TOO_LONG 0x3C
218 #define ECCROMCC26XX_STATUS_X_COORD_LENGTH_ZERO 0xC3
219 #define ECCROMCC26XX_STATUS_Y_COORD_TOO_LONG 0x65
220 #define ECCROMCC26XX_STATUS_Y_COORD_LENGTH_ZERO 0x56
221 #define ECCROMCC26XX_STATUS_A_COEF_TOO_LONG 0x5C
222 #define ECCROMCC26XX_STATUS_A_COEF_LENGTH_ZERO 0xC5
223 #define ECCROMCC26XX_STATUS_BAD_WINDOW_SIZE 0x66
224 #define ECCROMCC26XX_STATUS_SCALAR_MUL_OK 0x99
225 
226 #define ECCROMCC26XX_STATUS_ORDER_LARGER_THAN_255_WORDS 0x28
227 #define ECCROMCC26XX_STATUS_ORDER_EVEN 0x82
228 #define ECCROMCC26XX_STATUS_ORDER_MSW_IS_ZERO 0x23
229 #define ECCROMCC26XX_STATUS_ECCROMCC26XX_STATUS_KEY_TOO_LONG 0x25
230 #define ECCROMCC26XX_STATUS_ECCROMCC26XX_STATUS_KEY_LENGTH_ZERO 0x52
231 #define ECCROMCC26XX_STATUS_DIGEST_TOO_LONG 0x27
232 #define ECCROMCC26XX_STATUS_DIGEST_LENGTH_ZERO 0x72
233 #define ECCROMCC26XX_STATUS_ECDSA_SIGN_OK 0x32
234 #define ECCROMCC26XX_STATUS_ECDSA_INVALID_SIGNATURE 0x5A
235 #define ECCROMCC26XX_STATUS_ECDSA_VALID_SIGNATURE 0xA5
236 #define ECCROMCC26XX_STATUS_SIG_P1_TOO_LONG 0x11
237 #define ECCROMCC26XX_STATUS_SIG_P1_LENGTH_ZERO 0x12
238 #define ECCROMCC26XX_STATUS_SIG_P2_TOO_LONG 0x22
239 #define ECCROMCC26XX_STATUS_SIG_P2_LENGTH_ZERO 0x21
240 
241 #define ECCROMCC26XX_STATUS_ECDH_KEYGEN_OK ECCROMCC26XX_STATUS_SCALAR_MUL_OK
242 #define ECCROMCC26XX_STATUS_ECDH_COMMON_KEY_OK ECCROMCC26XX_STATUS_SCALAR_MUL_OK
243 
250 #define ECCROMCC26XX_NIST_P256_WORKZONE_LEN_IN_BYTES 684
251 
257 #define ECCROMCC26XX_NIST_P256_WORKZONE_SIGN_VERIFY_LEN_IN_BYTES 1100
258 
262 #define ECCROMCC26XX_NIST_P256_KEY_LEN_IN_BYTES 32
263 
273 #define ECCROMCC26XX_WORKZONE_LEN_IN_BYTES(len, win) (4 * ((13 * (len)) + 13 + (3 * (len) * (1 << ((win) - 2)))))
274 
282 {
283  uint8_t keyLen;
284  uint16_t workzoneLen;
285  uint8_t windowSize;
286  uint32_t *param_p;
287  uint32_t *param_r;
288  uint32_t *param_a;
289  uint32_t *param_b;
290  uint32_t *param_gx;
291  uint32_t *param_gy;
293 
303 typedef uint8_t *(*ECCROMCC26XX_MallocCB)(uint16_t len);
304 
314 typedef void (*ECCROMCC26XX_FreeCB)(uint8_t *pBuf);
315 
321 typedef struct ECCROMCC26XX_Params {
325  uint32_t timeout;
326  int8_t status;
328 
337 void ECCROMCC26XX_init(void);
338 
353 
375 int8_t ECCROMCC26XX_genKeys(uint8_t *privateKey, uint8_t *publicKeyX,
376  uint8_t *publicKeyY, ECCROMCC26XX_Params *params);
377 
405 int8_t ECCROMCC26XX_genDHKey(uint8_t *privateKey, uint8_t *publicKeyX,
406  uint8_t *publicKeyY, uint8_t *dHKeyX,
407  uint8_t *dHKeyY, ECCROMCC26XX_Params *params);
408 
411 #ifdef __cplusplus
412 }
413 #endif
414 
415 #endif /* ti_drivers_ECCROMCC26XX__include */
ECCROMCC26XX Parameters.
Definition: ECCROMCC26XX.h:321
uint32_t * param_gy
Definition: ECCROMCC26XX.h:291
void ECCROMCC26XX_init(void)
Initializes module&#39;s synchronization resources. Only needs to be called once, but safe to call multip...
int8_t status
Definition: ECCROMCC26XX.h:326
uint8_t windowSize
Definition: ECCROMCC26XX.h:285
ECCROMCC26XX_MallocCB malloc
Definition: ECCROMCC26XX.h:323
uint32_t * param_r
Definition: ECCROMCC26XX.h:287
uint32_t * param_a
Definition: ECCROMCC26XX.h:288
uint32_t * param_gx
Definition: ECCROMCC26XX.h:290
int8_t ECCROMCC26XX_genKeys(uint8_t *privateKey, uint8_t *publicKeyX, uint8_t *publicKeyY, ECCROMCC26XX_Params *params)
Generate Public Key X and Y Coordinates.
uint16_t workzoneLen
Definition: ECCROMCC26XX.h:284
ECCROMCC26XX_CurveParams curve
Definition: ECCROMCC26XX.h:322
uint32_t timeout
Definition: ECCROMCC26XX.h:325
struct ECCROMCC26XX_Params ECCROMCC26XX_Params
ECCROMCC26XX Parameters.
void ECCROMCC26XX_Params_init(ECCROMCC26XX_Params *params)
Function to initialize the ECCROMCC26XX_Params struct to its defaults. params should not be modified ...
ECCROMCC26XX_FreeCB free
Definition: ECCROMCC26XX.h:324
uint32_t len
Image length in bytes.
Definition: oad_image_header.h:607
void(* ECCROMCC26XX_FreeCB)(uint8_t *pBuf)
ECCROMCC26XX Free Callback.
Definition: ECCROMCC26XX.h:314
ECCROMCC26XX Curve Parameters.
Definition: ECCROMCC26XX.h:281
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.
uint32_t * param_b
Definition: ECCROMCC26XX.h:289
uint32_t * param_p
Definition: ECCROMCC26XX.h:286
uint8_t keyLen
Definition: ECCROMCC26XX.h:283
uint8_t *(* ECCROMCC26XX_MallocCB)(uint16_t len)
ECCROMCC26XX Malloc Callback.
Definition: ECCROMCC26XX.h:303
struct ECCROMCC26XX_CurveParams ECCROMCC26XX_CurveParams
ECCROMCC26XX Curve Parameters.
© Copyright 1995-2020, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale