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 {
113 
119 
125 
132 
138 
145 
151 
205 
254 
256 
268 typedef enum {
298 
307 typedef int_fast16_t (*EDDSACC26X2_stateMachineFxn) (EDDSA_Handle handle);
308 
315 typedef struct {
331  uint8_t intPriority;
334 
335 #define ED25519_LENGTH 32
336 
343 typedef struct {
344  uint8_t digestResult[SHA2_DIGEST_LENGTH_BYTES_512];
345  uint8_t digestResult2[SHA2_DIGEST_LENGTH_BYTES_512];
346  uint8_t publicKey[ED25519_LENGTH];
347  uint8_t secretScalar[ED25519_LENGTH];
348  uint8_t xResult[ED25519_LENGTH];
349  uint8_t yResult[ED25519_LENGTH];
350  uint8_t x_0;
352 
358 typedef struct {
359  /*
360  * Note that sha2Config must be the first member so that we can use the
361  * SHA2 callback in the EdDSA driver.
362  */
364  SHA2CC26X2_Object sha2Object;
367  bool isOpen;
370  int_fast16_t operationStatus;
376  EDDSACC26X2_FsmState fsmState;
377  EDDSACC26X2_FsmSubState fsmSubState;
379  uint32_t resultAddress;
380  uint32_t *scratchNumber1;
381  uint32_t *scratchNumber2;
384 
385 #ifdef __cplusplus
386 }
387 #endif
388 
389 #endif /* ti_drivers_eddsa_EDDSACC26X2__include */
Definition: EDDSACC26X2.h:134
Definition: EDDSACC26X2.h:279
EDDSA_OperationType operationType
Definition: EDDSACC26X2.h:372
Definition: EDDSACC26X2.h:273
Definition: EDDSACC26X2.h:244
Definition: SHA2.h:395
Definition: EDDSACC26X2.h:192
Definition: EDDSACC26X2.h:178
Definition: EDDSACC26X2.h:289
Definition: EDDSACC26X2.h:275
Definition: EDDSACC26X2.h:232
Definition: EDDSACC26X2.h:185
EDDSA_CallbackFxn callbackFxn
Definition: EDDSACC26X2.h:373
Definition: EDDSACC26X2.h:224
Definition: EDDSACC26X2.h:283
uint32_t semaphoreTimeout
Definition: EDDSACC26X2.h:378
Definition: EDDSACC26X2.h:251
Definition: EDDSACC26X2.h:274
Definition: EDDSACC26X2.h:187
Definition: EDDSACC26X2.h:225
Definition: EDDSACC26X2.h:177
bool operationCanceled
Definition: EDDSACC26X2.h:369
Definition: EDDSACC26X2.h:218
Definition: EDDSACC26X2.h:162
Definition: EDDSACC26X2.h:143
Definition: EDDSACC26X2.h:180
Definition: EDDSACC26X2.h:250
EDDSA Global configuration.
Definition: EDDSA.h:494
SHA2_Handle sha2Handle
Definition: EDDSACC26X2.h:366
EDDSACC26X2 Object.
Definition: EDDSACC26X2.h:358
Definition: EDDSACC26X2.h:196
Definition: EDDSACC26X2.h:202
Definition: EDDSACC26X2.h:228
Definition: EDDSACC26X2.h:123
Definition: EDDSACC26X2.h:181
Definition: EDDSACC26X2.h:252
Definition: EDDSACC26X2.h:296
Definition: EDDSACC26X2.h:237
Definition: EDDSACC26X2.h:207
Definition: EDDSACC26X2.h:190
int_fast16_t operationStatus
Definition: EDDSACC26X2.h:370
SHA2 Global configuration.
Definition: SHA2.h:429
Definition: EDDSACC26X2.h:169
SHA2CC26X2_Object sha2Object
Definition: EDDSACC26X2.h:364
Definition: EDDSACC26X2.h:230
Definition: EDDSACC26X2.h:241
Definition: EDDSACC26X2.h:166
EDDSACC26X2_FsmState
EDDSACC26X2 KeyGen, Sign, and Verify states.
Definition: EDDSACC26X2.h:111
Definition: EDDSACC26X2.h:152
Definition: EDDSACC26X2.h:214
bool isOpen
Definition: EDDSACC26X2.h:367
Definition: EDDSACC26X2.h:149
SHA2_Config sha2Config
Definition: EDDSACC26X2.h:363
uint32_t * scratchNumber2
Definition: EDDSACC26X2.h:381
TI Driver for Edwards Curve Digital Signature Algorithm.
Definition: EDDSACC26X2.h:137
Definition: EDDSACC26X2.h:269
Definition: EDDSACC26X2.h:290
Definition: EDDSACC26X2.h:215
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:683
Definition: EDDSACC26X2.h:233
Definition: EDDSACC26X2.h:234
uint8_t x_0
Definition: EDDSACC26X2.h:350
Definition: EDDSACC26X2.h:203
Definition: EDDSACC26X2.h:198
Definition: EDDSACC26X2.h:136
uint8_t sha2IntPriority
Definition: EDDSACC26X2.h:332
Definition: EDDSACC26X2.h:199
Definition: EDDSACC26X2.h:229
SHA2CC26X2_HWAttrs sha2HwAttrs
Definition: EDDSACC26X2.h:365
EDDSACC26X2_FsmState fsmState
Definition: EDDSACC26X2.h:376
Definition: EDDSACC26X2.h:155
Definition: EDDSACC26X2.h:135
uint32_t resultAddress
Definition: EDDSACC26X2.h:379
Definition: EDDSACC26X2.h:216
Definition: EDDSACC26X2.h:201
Definition: EDDSACC26X2.h:120
Definition: EDDSACC26X2.h:148
Definition: EDDSACC26X2.h:194
Definition: EDDSACC26X2.h:236
Definition: EDDSACC26X2.h:200
Definition: EDDSACC26X2.h:176
Definition: EDDSACC26X2.h:281
Definition: EDDSACC26X2.h:146
uint8_t intPriority
PKA Peripheral&#39;s interrupt priority.
Definition: EDDSACC26X2.h:331
Definition: EDDSACC26X2.h:204
EDDSACC26X2_stateMachineFxn fsmFxn
Definition: EDDSACC26X2.h:374
EDDSACC26X2 Hardware Attributes.
Definition: EDDSACC26X2.h:315
Definition: EDDSACC26X2.h:121
EDDSACC26X2_Workspace EDDSACC26X2_GlobalWorkspace
Definition: EDDSACC26X2.h:382
Definition: EDDSACC26X2.h:175
Definition: EDDSACC26X2.h:193
Definition: EDDSACC26X2.h:206
Definition: EDDSACC26X2.h:277
Definition: EDDSACC26X2.h:295
Definition: EDDSACC26X2.h:131
Hardware-specific configuration attributes.
Definition: SHA2CC26X2.h:75
Definition: EDDSACC26X2.h:223
Definition: EDDSACC26X2.h:240
bool operationInProgress
Definition: EDDSACC26X2.h:368
Definition: EDDSACC26X2.h:174
Definition: EDDSACC26X2.h:172
Definition: EDDSACC26X2.h:195
Definition: EDDSACC26X2.h:150
EDDSA_ReturnBehavior
The way in which EDDSA function calls return after performing an encryption + authentication or decry...
Definition: EDDSA.h:529
Definition: EDDSACC26X2.h:124
Definition: EDDSACC26X2.h:188
Definition: EDDSACC26X2.h:163
Definition: EDDSACC26X2.h:285
Definition: EDDSACC26X2.h:154
Definition: EDDSACC26X2.h:157
Definition: EDDSACC26X2.h:182
EDDSACC26X2_FsmSubState fsmSubState
Definition: EDDSACC26X2.h:377
SHA2 driver header.
Definition: EDDSACC26X2.h:144
Definition: EDDSACC26X2.h:212
SHA2 driver implementation for the CC26X2 family.
Definition: EDDSACC26X2.h:167
EDDSACC26X2_FsmSubState
EDDSACC26X2 Weierstrass to Edwards states.
Definition: EDDSACC26X2.h:268
EDDSA_OperationType
Enum for the operation types supported by the driver.
Definition: EDDSA.h:658
Definition: EDDSACC26X2.h:164
Definition: EDDSACC26X2.h:242
EDDSA_Operation operation
Definition: EDDSACC26X2.h:371
uint32_t * scratchNumber1
Definition: EDDSACC26X2.h:380
EDDSA_ReturnBehavior returnBehavior
Definition: EDDSACC26X2.h:375
Definition: EDDSACC26X2.h:130
Definition: EDDSACC26X2.h:271
Definition: EDDSACC26X2.h:161
#define ED25519_LENGTH
Definition: EDDSACC26X2.h:335
Definition: EDDSACC26X2.h:184
Definition: EDDSACC26X2.h:126
Definition: EDDSACC26X2.h:253
Definition: EDDSACC26X2.h:160
Definition: EDDSACC26X2.h:133
Definition: EDDSACC26X2.h:171
Definition: EDDSACC26X2.h:168
Definition: EDDSACC26X2.h:173
Union containing pointers to all supported operation structs.
Definition: EDDSA.h:646
Definition: EDDSACC26X2.h:122
EDDSACC26X2 Workspace.
Definition: EDDSACC26X2.h:343
Definition: EDDSACC26X2.h:186
Definition: EDDSACC26X2.h:170
Definition: EDDSACC26X2.h:222
int_fast16_t(* EDDSACC26X2_stateMachineFxn)(EDDSA_Handle handle)
EDDSACC26X2 state machine function prototype.
Definition: EDDSACC26X2.h:307
Definition: EDDSACC26X2.h:112
Definition: EDDSACC26X2.h:147
Definition: EDDSACC26X2.h:156
Definition: EDDSACC26X2.h:197
© Copyright 1995-2021, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale