EDDSACC26X2.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2020-2021, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
84 #ifndef ti_drivers_eddsa_EDDSACC26X2__include
85 #define ti_drivers_eddsa_EDDSACC26X2__include
86 
87 #include <ti/drivers/EDDSA.h>
88 #include <ti/drivers/SHA2.h>
90 
91 #ifdef __cplusplus
92 extern "C" {
93 #endif
94 
95 /* Exit the SWI and wait until an HWI call posts the SWI again */
96 #define EDDSACC26X2_STATUS_FSM_RUN_PKA_OP EDDSA_STATUS_RESERVED - 0
97 /* Execute the next FSM state immediately without waiting for the next HWI */
98 #define EDDSACC26X2_STATUS_FSM_RUN_FSM EDDSA_STATUS_RESERVED - 1
99 /* PKA operation started correctly (needed for subFSM functionality) */
100 #define EDDSACC26X2_PKA_OPERATION_STARTED (0xFFFFFFFFUL)
101 
111 typedef enum
112 {
114 
120 
126 
133 
139 
146 
152 
206 
255 
257 
269 typedef enum
270 {
300 
309 typedef int_fast16_t (*EDDSACC26X2_stateMachineFxn)(EDDSA_Handle handle);
310 
317 typedef struct
318 {
334  uint8_t intPriority;
337 
338 #define ED25519_LENGTH 32
339 
346 typedef struct
347 {
348  uint8_t digestResult[SHA2_DIGEST_LENGTH_BYTES_512];
349  uint8_t digestResult2[SHA2_DIGEST_LENGTH_BYTES_512];
350  uint8_t publicKey[ED25519_LENGTH];
351  uint8_t secretScalar[ED25519_LENGTH];
352  uint8_t xResult[ED25519_LENGTH];
353  uint8_t yResult[ED25519_LENGTH];
354  uint8_t x_0;
356 
362 typedef struct
363 {
364  /*
365  * Note that sha2Config must be the first member so that we can use the
366  * SHA2 callback in the EdDSA driver.
367  */
369  SHA2CC26X2_Object sha2Object;
372  bool isOpen;
375  int_fast16_t operationStatus;
381  EDDSACC26X2_FsmState fsmState;
382  EDDSACC26X2_FsmSubState fsmSubState;
384  uint32_t resultAddress;
385  uint32_t *scratchNumber1;
386  uint32_t *scratchNumber2;
389 
390 #ifdef __cplusplus
391 }
392 #endif
393 
394 #endif /* ti_drivers_eddsa_EDDSACC26X2__include */
Definition: EDDSACC26X2.h:135
Definition: EDDSACC26X2.h:281
EDDSA_OperationType operationType
Definition: EDDSACC26X2.h:377
Definition: EDDSACC26X2.h:275
Definition: EDDSACC26X2.h:245
Definition: SHA2.h:411
Definition: EDDSACC26X2.h:193
Definition: EDDSACC26X2.h:179
Definition: EDDSACC26X2.h:291
Definition: EDDSACC26X2.h:277
Definition: EDDSACC26X2.h:233
Definition: EDDSACC26X2.h:186
EDDSA_CallbackFxn callbackFxn
Definition: EDDSACC26X2.h:378
Definition: EDDSACC26X2.h:225
Definition: EDDSACC26X2.h:285
uint32_t semaphoreTimeout
Definition: EDDSACC26X2.h:383
Definition: EDDSACC26X2.h:252
Definition: EDDSACC26X2.h:276
Definition: EDDSACC26X2.h:188
Definition: EDDSACC26X2.h:226
Definition: EDDSACC26X2.h:178
bool operationCanceled
Definition: EDDSACC26X2.h:374
Definition: EDDSACC26X2.h:219
Definition: EDDSACC26X2.h:163
Definition: EDDSACC26X2.h:144
Definition: EDDSACC26X2.h:181
Definition: EDDSACC26X2.h:251
EDDSA Global configuration.
Definition: EDDSA.h:494
SHA2_Handle sha2Handle
Definition: EDDSACC26X2.h:371
EDDSACC26X2 Object.
Definition: EDDSACC26X2.h:362
Definition: EDDSACC26X2.h:197
Definition: EDDSACC26X2.h:203
Definition: EDDSACC26X2.h:229
Definition: EDDSACC26X2.h:124
Definition: EDDSACC26X2.h:182
Definition: EDDSACC26X2.h:253
Definition: EDDSACC26X2.h:298
Definition: EDDSACC26X2.h:238
Definition: EDDSACC26X2.h:208
Definition: EDDSACC26X2.h:191
int_fast16_t operationStatus
Definition: EDDSACC26X2.h:375
SHA2 Global configuration.
Definition: SHA2.h:446
Definition: EDDSACC26X2.h:170
SHA2CC26X2_Object sha2Object
Definition: EDDSACC26X2.h:369
Definition: EDDSACC26X2.h:231
Definition: EDDSACC26X2.h:242
Definition: EDDSACC26X2.h:167
EDDSACC26X2_FsmState
EDDSACC26X2 KeyGen, Sign, and Verify states.
Definition: EDDSACC26X2.h:111
Definition: EDDSACC26X2.h:153
Definition: EDDSACC26X2.h:215
bool isOpen
Definition: EDDSACC26X2.h:372
Definition: EDDSACC26X2.h:150
SHA2_Config sha2Config
Definition: EDDSACC26X2.h:368
uint32_t * scratchNumber2
Definition: EDDSACC26X2.h:386
TI Driver for Edwards Curve Digital Signature Algorithm.
Definition: EDDSACC26X2.h:138
Definition: EDDSACC26X2.h:271
Definition: EDDSACC26X2.h:292
Definition: EDDSACC26X2.h:216
void(* EDDSA_CallbackFxn)(EDDSA_Handle handle, int_fast16_t returnStatus, EDDSA_Operation operation, EDDSA_OperationType operationType)
The definition of a callback function used by the EDDSA driver when used in EDDSA_RETURN_BEHAVIOR_CAL...
Definition: EDDSA.h:690
Definition: EDDSACC26X2.h:234
Definition: EDDSACC26X2.h:235
uint8_t x_0
Definition: EDDSACC26X2.h:354
Definition: EDDSACC26X2.h:204
Definition: EDDSACC26X2.h:199
Definition: EDDSACC26X2.h:137
uint8_t sha2IntPriority
Definition: EDDSACC26X2.h:335
Definition: EDDSACC26X2.h:200
Definition: EDDSACC26X2.h:230
SHA2CC26X2_HWAttrs sha2HwAttrs
Definition: EDDSACC26X2.h:370
EDDSACC26X2_FsmState fsmState
Definition: EDDSACC26X2.h:381
Definition: EDDSACC26X2.h:156
Definition: EDDSACC26X2.h:136
uint32_t resultAddress
Definition: EDDSACC26X2.h:384
Definition: EDDSACC26X2.h:217
Definition: EDDSACC26X2.h:202
Definition: EDDSACC26X2.h:121
Definition: EDDSACC26X2.h:149
Definition: EDDSACC26X2.h:195
Definition: EDDSACC26X2.h:237
Definition: EDDSACC26X2.h:201
Definition: EDDSACC26X2.h:177
Definition: EDDSACC26X2.h:283
Definition: EDDSACC26X2.h:147
uint8_t intPriority
PKA Peripheral&#39;s interrupt priority.
Definition: EDDSACC26X2.h:334
Definition: EDDSACC26X2.h:205
EDDSACC26X2_stateMachineFxn fsmFxn
Definition: EDDSACC26X2.h:379
EDDSACC26X2 Hardware Attributes.
Definition: EDDSACC26X2.h:317
Definition: EDDSACC26X2.h:122
EDDSACC26X2_Workspace EDDSACC26X2_GlobalWorkspace
Definition: EDDSACC26X2.h:387
Definition: EDDSACC26X2.h:176
Definition: EDDSACC26X2.h:194
Definition: EDDSACC26X2.h:207
Definition: EDDSACC26X2.h:279
Definition: EDDSACC26X2.h:297
Definition: EDDSACC26X2.h:132
Hardware-specific configuration attributes.
Definition: SHA2CC26X2.h:74
Definition: EDDSACC26X2.h:224
Definition: EDDSACC26X2.h:241
bool operationInProgress
Definition: EDDSACC26X2.h:373
Definition: EDDSACC26X2.h:175
Definition: EDDSACC26X2.h:173
Definition: EDDSACC26X2.h:196
Definition: EDDSACC26X2.h:151
EDDSA_ReturnBehavior
The way in which EDDSA function calls return after performing an encryption + authentication or decry...
Definition: EDDSA.h:530
Definition: EDDSACC26X2.h:125
Definition: EDDSACC26X2.h:189
Definition: EDDSACC26X2.h:164
Definition: EDDSACC26X2.h:287
Definition: EDDSACC26X2.h:155
Definition: EDDSACC26X2.h:158
Definition: EDDSACC26X2.h:183
EDDSACC26X2_FsmSubState fsmSubState
Definition: EDDSACC26X2.h:382
SHA2 driver header.
Definition: EDDSACC26X2.h:145
Definition: EDDSACC26X2.h:213
SHA2 driver implementation for the CC26X2 family.
Definition: EDDSACC26X2.h:168
EDDSACC26X2_FsmSubState
EDDSACC26X2 Weierstrass to Edwards states.
Definition: EDDSACC26X2.h:269
EDDSA_OperationType
Enum for the operation types supported by the driver.
Definition: EDDSA.h:664
Definition: EDDSACC26X2.h:165
Definition: EDDSACC26X2.h:243
EDDSA_Operation operation
Definition: EDDSACC26X2.h:376
uint32_t * scratchNumber1
Definition: EDDSACC26X2.h:385
EDDSA_ReturnBehavior returnBehavior
Definition: EDDSACC26X2.h:380
Definition: EDDSACC26X2.h:131
Definition: EDDSACC26X2.h:273
Definition: EDDSACC26X2.h:162
#define ED25519_LENGTH
Definition: EDDSACC26X2.h:338
Definition: EDDSACC26X2.h:185
Definition: EDDSACC26X2.h:127
Definition: EDDSACC26X2.h:254
Definition: EDDSACC26X2.h:161
Definition: EDDSACC26X2.h:134
Definition: EDDSACC26X2.h:172
Definition: EDDSACC26X2.h:169
Definition: EDDSACC26X2.h:174
Union containing pointers to all supported operation structs.
Definition: EDDSA.h:651
Definition: EDDSACC26X2.h:123
EDDSACC26X2 Workspace.
Definition: EDDSACC26X2.h:346
Definition: EDDSACC26X2.h:187
Definition: EDDSACC26X2.h:171
Definition: EDDSACC26X2.h:223
int_fast16_t(* EDDSACC26X2_stateMachineFxn)(EDDSA_Handle handle)
EDDSACC26X2 state machine function prototype.
Definition: EDDSACC26X2.h:309
Definition: EDDSACC26X2.h:113
Definition: EDDSACC26X2.h:148
Definition: EDDSACC26X2.h:157
Definition: EDDSACC26X2.h:198
© Copyright 1995-2022, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale