SmartSnippets DA1459x SDK
crypto_ecc_provider_function_map.h
Go to the documentation of this file.
1 
48 #ifndef SDK_CRYPTO_INCLUDE_CRYPTO_ECC_PROVIDER_FUNCTION_MAP_H_
49 #define SDK_CRYPTO_INCLUDE_CRYPTO_ECC_PROVIDER_FUNCTION_MAP_H_
50 
51 /*
52  * This set of definitions maps curve init and prototype functions depending on ecc params
53  */
54 
55 /* SECP160R1 */
56 #if dg_USE_CURVE_SECP160R1
57  #if dg_USE_UECC_LIB
58  #define CURVE_SECP160R1_UECC_LIB_INIT curve_init_secp160r1
59  #define CURVE_SECP160R1_UECC_LIB_COMPUTE_PUBLIC compute_public_key_uecc
60  #define CURVE_SECP160R1_UECC_LIB_COMPUTE_PRIVATE compute_private_key_uecc
61  #define CURVE_SECP160R1_UECC_LIB_COMPUTE_SHARED compute_shared_secret_uecc
62  #else
63  #define CURVE_SECP160R1_UECC_LIB_INIT ecc_lib_provider_error_handler
64  #define CURVE_SECP160R1_UECC_LIB_COMPUTE_PUBLIC ecc_lib_provider_error_handler
65  #define CURVE_SECP160R1_UECC_LIB_COMPUTE_PRIVATE ecc_lib_provider_error_handler
66  #define CURVE_SECP160R1_UECC_LIB_COMPUTE_SHARED ecc_lib_provider_error_handler
67  #endif
68 
69 #else
70  #define CURVE_SECP160R1_UECC_LIB_INIT ecc_lib_provider_error_handler
71  #define CURVE_SECP160R1_UECC_LIB_COMPUTE_PUBLIC ecc_lib_provider_error_handler
72  #define CURVE_SECP160R1_UECC_LIB_COMPUTE_PRIVATE ecc_lib_provider_error_handler
73  #define CURVE_SECP160R1_UECC_LIB_COMPUTE_SHARED ecc_lib_provider_error_handler
74 #endif
75 
76 /* SECP192R1 */
77 #if dg_USE_CURVE_SECP192R1
78  #if dg_USE_HW_ECC
79  #define CURVE_SECP192R1_HW_ECC_LIB_INIT curve_init_secp192r1
80  #define CURVE_SECP192R1_HW_ECC_LIB_COMPUTE_PUBLIC compute_public_key_hw
81  #define CURVE_SECP192R1_HW_ECC_LIB_COMPUTE_PRIVATE compute_private_key_hw
82  #define CURVE_SECP192R1_HW_ECC_LIB_COMPUTE_SHARED compute_shared_secret_hw
83  #else
84  #define CURVE_SECP192R1_HW_ECC_LIB_INIT ecc_lib_provider_error_handler
85  #define CURVE_SECP192R1_HW_ECC_LIB_COMPUTE_PUBLIC ecc_lib_provider_error_handler
86  #define CURVE_SECP192R1_HW_ECC_LIB_COMPUTE_PRIVATE ecc_lib_provider_error_handler
87  #define CURVE_SECP192R1_HW_ECC_LIB_COMPUTE_SHARED ecc_lib_provider_error_handler
88  #endif
89 
90  #if dg_USE_UECC_LIB
91  #define CURVE_SECP192R1_UECC_LIB_INIT curve_init_secp192r1
92  #define CURVE_SECP192R1_UECC_LIB_COMPUTE_PUBLIC compute_public_key_uecc
93  #define CURVE_SECP192R1_UECC_LIB_COMPUTE_PRIVATE compute_private_key_uecc
94  #define CURVE_SECP192R1_UECC_LIB_COMPUTE_SHARED compute_shared_secret_uecc
95  #else
96  #define CURVE_SECP192R1_UECC_LIB_INIT ecc_lib_provider_error_handler
97  #define CURVE_SECP192R1_UECC_LIB_COMPUTE_PUBLIC ecc_lib_provider_error_handler
98  #define CURVE_SECP192R1_UECC_LIB_COMPUTE_PRIVATE ecc_lib_provider_error_handler
99  #define CURVE_SECP192R1_UECC_LIB_COMPUTE_SHARED ecc_lib_provider_error_handler
100  #endif
101 
102 #else
103  #define CURVE_SECP192R1_HW_ECC_LIB_INIT ecc_lib_provider_error_handler
104  #define CURVE_SECP192R1_HW_ECC_LIB_COMPUTE_PUBLIC ecc_lib_provider_error_handler
105  #define CURVE_SECP192R1_HW_ECC_LIB_COMPUTE_PRIVATE ecc_lib_provider_error_handler
106  #define CURVE_SECP192R1_HW_ECC_LIB_COMPUTE_SHARED ecc_lib_provider_error_handler
107  #define CURVE_SECP192R1_UECC_LIB_INIT ecc_lib_provider_error_handler
108  #define CURVE_SECP192R1_UECC_LIB_COMPUTE_PUBLIC ecc_lib_provider_error_handler
109  #define CURVE_SECP192R1_UECC_LIB_COMPUTE_PRIVATE ecc_lib_provider_error_handler
110  #define CURVE_SECP192R1_UECC_LIB_COMPUTE_SHARED ecc_lib_provider_error_handler
111 #endif
112 
113 /* SECP224R1 */
114 #if dg_USE_CURVE_SECP224R1
115  #if dg_USE_HW_ECC
116  #define CURVE_SECP224R1_HW_ECC_LIB_INIT curve_init_secp224r1
117  #define CURVE_SECP224R1_HW_ECC_LIB_COMPUTE_PUBLIC compute_public_key_hw
118  #define CURVE_SECP224R1_HW_ECC_LIB_COMPUTE_PRIVATE compute_private_key_hw
119  #define CURVE_SECP224R1_HW_ECC_LIB_COMPUTE_SHARED compute_shared_secret_hw
120  #else
121  #define CURVE_SECP224R1_HW_ECC_LIB_INIT ecc_lib_provider_error_handler
122  #define CURVE_SECP224R1_HW_ECC_LIB_COMPUTE_PUBLIC ecc_lib_provider_error_handler
123  #define CURVE_SECP224R1_HW_ECC_LIB_COMPUTE_PRIVATE ecc_lib_provider_error_handler
124  #define CURVE_SECP224R1_HW_ECC_LIB_COMPUTE_SHARED ecc_lib_provider_error_handler
125  #endif
126 
127  #if dg_USE_UECC_LIB
128  #define CURVE_SECP224R1_UECC_LIB_INIT curve_init_secp224r1
129  #define CURVE_SECP224R1_UECC_LIB_COMPUTE_PUBLIC compute_public_key_uecc
130  #define CURVE_SECP224R1_UECC_LIB_COMPUTE_PRIVATE compute_private_key_uecc
131  #define CURVE_SECP224R1_UECC_LIB_COMPUTE_SHARED compute_shared_secret_uecc
132  #else
133  #define CURVE_SECP224R1_UECC_LIB_INIT ecc_lib_provider_error_handler
134  #define CURVE_SECP224R1_UECC_LIB_COMPUTE_PUBLIC ecc_lib_provider_error_handler
135  #define CURVE_SECP224R1_UECC_LIB_COMPUTE_PRIVATE ecc_lib_provider_error_handler
136  #define CURVE_SECP224R1_UECC_LIB_COMPUTE_SHARED ecc_lib_provider_error_handler
137  #endif
138 
139 #else
140  #define CURVE_SECP224R1_HW_ECC_LIB_INIT ecc_lib_provider_error_handler
141  #define CURVE_SECP224R1_HW_ECC_LIB_COMPUTE_PUBLIC ecc_lib_provider_error_handler
142  #define CURVE_SECP224R1_HW_ECC_LIB_COMPUTE_PRIVATE ecc_lib_provider_error_handler
143  #define CURVE_SECP224R1_HW_ECC_LIB_COMPUTE_SHARED ecc_lib_provider_error_handler
144  #define CURVE_SECP224R1_UECC_LIB_INIT ecc_lib_provider_error_handler
145  #define CURVE_SECP224R1_UECC_LIB_COMPUTE_PUBLIC ecc_lib_provider_error_handler
146  #define CURVE_SECP224R1_UECC_LIB_COMPUTE_PRIVATE ecc_lib_provider_error_handler
147  #define CURVE_SECP224R1_UECC_LIB_COMPUTE_SHARED ecc_lib_provider_error_handler
148 #endif
149 
150 /* SECP256R1 */
151 #if dg_USE_CURVE_SECP256R1
152  #if dg_USE_HW_ECC
153  #define CURVE_SECP256R1_HW_ECC_LIB_INIT curve_init_secp256r1
154  #define CURVE_SECP256R1_HW_ECC_LIB_COMPUTE_PUBLIC compute_public_key_hw
155  #define CURVE_SECP256R1_HW_ECC_LIB_COMPUTE_PRIVATE compute_private_key_hw
156  #define CURVE_SECP256R1_HW_ECC_LIB_COMPUTE_SHARED compute_shared_secret_hw
157  #else
158  #define CURVE_SECP256R1_HW_ECC_LIB_INIT ecc_lib_provider_error_handler
159  #define CURVE_SECP256R1_HW_ECC_LIB_COMPUTE_PUBLIC ecc_lib_provider_error_handler
160  #define CURVE_SECP256R1_HW_ECC_LIB_COMPUTE_PRIVATE ecc_lib_provider_error_handler
161  #define CURVE_SECP256R1_HW_ECC_LIB_COMPUTE_SHARED ecc_lib_provider_error_handler
162  #endif
163 
164  #if dg_USE_UECC_LIB
165  #define CURVE_SECP256R1_UECC_LIB_INIT curve_init_secp256r1
166  #define CURVE_SECP256R1_UECC_LIB_COMPUTE_PUBLIC compute_public_key_uecc
167  #define CURVE_SECP256R1_UECC_LIB_COMPUTE_PRIVATE compute_private_key_uecc
168  #define CURVE_SECP256R1_UECC_LIB_COMPUTE_SHARED compute_shared_secret_uecc
169  #else
170  #define CURVE_SECP256R1_UECC_LIB_INIT ecc_lib_provider_error_handler
171  #define CURVE_SECP256R1_UECC_LIB_COMPUTE_PUBLIC ecc_lib_provider_error_handler
172  #define CURVE_SECP256R1_UECC_LIB_COMPUTE_PRIVATE ecc_lib_provider_error_handler
173  #define CURVE_SECP256R1_UECC_LIB_COMPUTE_SHARED ecc_lib_provider_error_handler
174  #endif
175 
176 #else
177  #define CURVE_SECP256R1_HW_ECC_LIB_INIT ecc_lib_provider_error_handler
178  #define CURVE_SECP256R1_HW_ECC_LIB_COMPUTE_PUBLIC ecc_lib_provider_error_handler
179  #define CURVE_SECP256R1_HW_ECC_LIB_COMPUTE_PRIVATE ecc_lib_provider_error_handler
180  #define CURVE_SECP256R1_HW_ECC_LIB_COMPUTE_SHARED ecc_lib_provider_error_handler
181  #define CURVE_SECP256R1_UECC_LIB_INIT ecc_lib_provider_error_handler
182  #define CURVE_SECP256R1_UECC_LIB_COMPUTE_PUBLIC ecc_lib_provider_error_handler
183  #define CURVE_SECP256R1_UECC_LIB_COMPUTE_PRIVATE ecc_lib_provider_error_handler
184  #define CURVE_SECP256R1_UECC_LIB_COMPUTE_SHARED ecc_lib_provider_error_handler
185 #endif
186 
187 /* SECP256K1 */
188 #if dg_USE_CURVE_SECP256K1
189  #if dg_USE_UECC_LIB
190  #define CURVE_SECP256K1_UECC_LIB_INIT curve_init_secp256k1
191  #define CURVE_SECP256K1_UECC_LIB_COMPUTE_PUBLIC compute_public_key_uecc
192  #define CURVE_SECP256K1_UECC_LIB_COMPUTE_PRIVATE compute_private_key_uecc
193  #define CURVE_SECP256K1_UECC_LIB_COMPUTE_SHARED compute_shared_secret_uecc
194  #else
195  #define CURVE_SECP256K1_UECC_LIB_INIT ecc_lib_provider_error_handler
196  #define CURVE_SECP256K1_UECC_LIB_COMPUTE_PUBLIC ecc_lib_provider_error_handler
197  #define CURVE_SECP256K1_UECC_LIB_COMPUTE_PRIVATE ecc_lib_provider_error_handler
198  #define CURVE_SECP256K1_UECC_LIB_COMPUTE_SHARED ecc_lib_provider_error_handler
199  #endif
200 
201 #else
202  #define CURVE_SECP256K1_HW_ECC_LIB_INIT ecc_lib_provider_error_handler
203  #define CURVE_SECP256K1_HW_ECC_LIB_COMPUTE_PUBLIC ecc_lib_provider_error_handler
204  #define CURVE_SECP256K1_HW_ECC_LIB_COMPUTE_PRIVATE ecc_lib_provider_error_handler
205  #define CURVE_SECP256K1_HW_ECC_LIB_COMPUTE_SHARED ecc_lib_provider_error_handler
206  #define CURVE_SECP256K1_UECC_LIB_INIT ecc_lib_provider_error_handler
207  #define CURVE_SECP256K1_UECC_LIB_COMPUTE_PUBLIC ecc_lib_provider_error_handler
208  #define CURVE_SECP256K1_UECC_LIB_COMPUTE_PRIVATE ecc_lib_provider_error_handler
209  #define CURVE_SECP256K1_UECC_LIB_COMPUTE_SHARED ecc_lib_provider_error_handler
210 #endif
211 
212 /* CURVE25519 */
213 #if dg_USE_CURVE_25519
214  #if dg_USE_HW_ECC
215  #define CURVE_25519_HW_ECC_LIB_INIT curve_init_25519
216  #define CURVE_25519_HW_ECC_LIB_COMPUTE_PUBLIC compute_public_key_25519_hw
217  #define CURVE_25519_HW_ECC_LIB_COMPUTE_PRIVATE compute_private_key_25519
218  #define CURVE_25519_HW_ECC_LIB_COMPUTE_SHARED compute_shared_secret_25519_hw
219  #else
220  #define CURVE_25519_HW_ECC_LIB_INIT ecc_lib_provider_error_handler
221  #define CURVE_25519_HW_ECC_LIB_COMPUTE_PUBLIC ecc_lib_provider_error_handler
222  #define CURVE_25519_HW_ECC_LIB_COMPUTE_PRIVATE ecc_lib_provider_error_handler
223  #define CURVE_25519_HW_ECC_LIB_COMPUTE_SHARED ecc_lib_provider_error_handler
224  #endif
225 
226  #if dg_USE_SODIUM_LIB
227  #define CURVE_25519_SODIUM_LIB_INIT curve_init_25519
228  #define CURVE_25519_SODIUM_LIB_COMPUTE_PUBLIC compute_public_key_25519_sodium
229  #define CURVE_25519_SODIUM_LIB_COMPUTE_PRIVATE compute_private_key_25519
230  #define CURVE_25519_SODIUM_LIB_COMPUTE_SHARED compute_shared_secret_25519_sodium
231  #else
232  #define CURVE_25519_SODIUM_LIB_INIT ecc_lib_provider_error_handler
233  #define CURVE_25519_SODIUM_LIB_COMPUTE_PUBLIC ecc_lib_provider_error_handler
234  #define CURVE_25519_SODIUM_LIB_COMPUTE_PRIVATE ecc_lib_provider_error_handler
235  #define CURVE_25519_SODIUM_LIB_COMPUTE_SHARED ecc_lib_provider_error_handler
236  #endif
237 
238 #else
239  #define CURVE_25519_HW_ECC_LIB_INIT ecc_lib_provider_error_handler
240  #define CURVE_25519_HW_ECC_LIB_COMPUTE_PUBLIC ecc_lib_provider_error_handler
241  #define CURVE_25519_HW_ECC_LIB_COMPUTE_PRIVATE ecc_lib_provider_error_handler
242  #define CURVE_25519_HW_ECC_LIB_COMPUTE_SHARED ecc_lib_provider_error_handler
243  #define CURVE_25519_SODIUM_LIB_INIT ecc_lib_provider_error_handler
244  #define CURVE_25519_SODIUM_LIB_COMPUTE_PUBLIC ecc_lib_provider_error_handler
245  #define CURVE_25519_SODIUM_LIB_COMPUTE_PRIVATE ecc_lib_provider_error_handler
246  #define CURVE_25519_SODIUM_LIB_COMPUTE_SHARED ecc_lib_provider_error_handler
247 #endif
248 
249 
250 
251 
252 
253 /*
254  * This set of definitions is used to formulate the default library providers for each
255  * curve and properly map functions implementing ecc primitives.
256  */
257 #define CURVE_SECP160R1_DEFAULT_INIT CURVE_SECP160R1_UECC_LIB_INIT
258 #define CURVE_SECP160R1_DEFAULT_COMPUTE_PRIVATE CURVE_SECP160R1_UECC_LIB_COMPUTE_PRIVATE
259 #define CURVE_SECP160R1_DEFAULT_COMPUTE_PUBLIC CURVE_SECP160R1_UECC_LIB_COMPUTE_PUBLIC
260 #define CURVE_SECP160R1_DEFAULT_COMPUTE_SHARED CURVE_SECP160R1_UECC_LIB_COMPUTE_SHARED
261 
262 #if (CURVE_SECP192R1_DEFAULT_LIB_PROVIDER == HW_ECC_ID)
263  #define CURVE_SECP192R1_DEFAULT_INIT CURVE_SECP192R1_HW_ECC_LIB_INIT
264  #define CURVE_SECP192R1_DEFAULT_COMPUTE_PRIVATE CURVE_SECP192R1_HW_ECC_LIB_COMPUTE_PRIVATE
265  #define CURVE_SECP192R1_DEFAULT_COMPUTE_PUBLIC CURVE_SECP192R1_HW_ECC_LIB_COMPUTE_PUBLIC
266  #define CURVE_SECP192R1_DEFAULT_COMPUTE_SHARED CURVE_SECP192R1_HW_ECC_LIB_COMPUTE_SHARED
267 #elif (CURVE_SECP192R1_DEFAULT_LIB_PROVIDER == UECC_LIB_ID)
268  #define CURVE_SECP192R1_DEFAULT_INIT CURVE_SECP192R1_UECC_LIB_INIT
269  #define CURVE_SECP192R1_DEFAULT_COMPUTE_PRIVATE CURVE_SECP192R1_UECC_LIB_COMPUTE_PRIVATE
270  #define CURVE_SECP192R1_DEFAULT_COMPUTE_PUBLIC CURVE_SECP192R1_UECC_LIB_COMPUTE_PUBLIC
271  #define CURVE_SECP192R1_DEFAULT_COMPUTE_SHARED CURVE_SECP192R1_UECC_LIB_COMPUTE_SHARED
272 #else
273  #error "Requested lib provider either not valid or not currently supported."
274 #endif
275 
276 
277 #if (CURVE_SECP224R1_DEFAULT_LIB_PROVIDER == HW_ECC_ID)
278  #define CURVE_SECP224R1_DEFAULT_INIT CURVE_SECP224R1_HW_ECC_LIB_INIT
279  #define CURVE_SECP224R1_DEFAULT_COMPUTE_PRIVATE CURVE_SECP224R1_HW_ECC_LIB_COMPUTE_PRIVATE
280  #define CURVE_SECP224R1_DEFAULT_COMPUTE_PUBLIC CURVE_SECP224R1_HW_ECC_LIB_COMPUTE_PUBLIC
281  #define CURVE_SECP224R1_DEFAULT_COMPUTE_SHARED CURVE_SECP224R1_HW_ECC_LIB_COMPUTE_SHARED
282 #elif (CURVE_SECP224R1_DEFAULT_LIB_PROVIDER == UECC_LIB_ID)
283  #define CURVE_SECP224R1_DEFAULT_INIT CURVE_SECP224R1_UECC_LIB_INIT
284  #define CURVE_SECP224R1_DEFAULT_COMPUTE_PRIVATE CURVE_SECP224R1_UECC_LIB_COMPUTE_PRIVATE
285  #define CURVE_SECP224R1_DEFAULT_COMPUTE_PUBLIC CURVE_SECP224R1_UECC_LIB_COMPUTE_PUBLIC
286  #define CURVE_SECP224R1_DEFAULT_COMPUTE_SHARED CURVE_SECP224R1_UECC_LIB_COMPUTE_SHARED
287 #else
288  #error "Requested lib provider either not valid or not currently supported."
289 #endif
290 
291 
292 #if (CURVE_SECP256R1_DEFAULT_LIB_PROVIDER == HW_ECC_ID)
293  #define CURVE_SECP256R1_DEFAULT_INIT CURVE_SECP256R1_HW_ECC_LIB_INIT
294  #define CURVE_SECP256R1_DEFAULT_COMPUTE_PRIVATE CURVE_SECP256R1_HW_ECC_LIB_COMPUTE_PRIVATE
295  #define CURVE_SECP256R1_DEFAULT_COMPUTE_PUBLIC CURVE_SECP256R1_HW_ECC_LIB_COMPUTE_PUBLIC
296  #define CURVE_SECP256R1_DEFAULT_COMPUTE_SHARED CURVE_SECP256R1_HW_ECC_LIB_COMPUTE_SHARED
297 #elif (CURVE_SECP256R1_DEFAULT_LIB_PROVIDER == UECC_LIB_ID)
298  #define CURVE_SECP256R1_DEFAULT_INIT CURVE_SECP256R1_UECC_LIB_INIT
299  #define CURVE_SECP256R1_DEFAULT_COMPUTE_PRIVATE CURVE_SECP256R1_UECC_LIB_COMPUTE_PRIVATE
300  #define CURVE_SECP256R1_DEFAULT_COMPUTE_PUBLIC CURVE_SECP256R1_UECC_LIB_COMPUTE_PUBLIC
301  #define CURVE_SECP256R1_DEFAULT_COMPUTE_SHARED CURVE_SECP256R1_UECC_LIB_COMPUTE_SHARED
302 #else
303  #error "Requested lib provider either not valid or not currently supported."
304 #endif
305 
306 
307 #define CURVE_SECP256K1_DEFAULT_INIT CURVE_SECP256K1_UECC_LIB_INIT
308 #define CURVE_SECP256K1_DEFAULT_COMPUTE_PRIVATE CURVE_SECP256K1_UECC_LIB_COMPUTE_PRIVATE
309 #define CURVE_SECP256K1_DEFAULT_COMPUTE_PUBLIC CURVE_SECP256K1_UECC_LIB_COMPUTE_PUBLIC
310 #define CURVE_SECP256K1_DEFAULT_COMPUTE_SHARED CURVE_SECP256K1_UECC_LIB_COMPUTE_SHARED
311 
312 
313 #if (CURVE_25519_DEFAULT_LIB_PROVIDER == HW_ECC_ID)
314  #define CURVE_25519_DEFAULT_INIT CURVE_25519_HW_ECC_LIB_INIT
315  #define CURVE_25519_DEFAULT_COMPUTE_PRIVATE CURVE_25519_HW_ECC_LIB_COMPUTE_PRIVATE
316  #define CURVE_25519_DEFAULT_COMPUTE_PUBLIC CURVE_25519_HW_ECC_LIB_COMPUTE_PUBLIC
317  #define CURVE_25519_DEFAULT_COMPUTE_SHARED CURVE_25519_HW_ECC_LIB_COMPUTE_SHARED
318 #elif (CURVE_25519_DEFAULT_LIB_PROVIDER == SODIUM_LIB_ID)
319  #define CURVE_25519_DEFAULT_INIT CURVE_25519_SODIUM_LIB_INIT
320  #define CURVE_25519_DEFAULT_COMPUTE_PRIVATE CURVE_25519_SODIUM_LIB_COMPUTE_PRIVATE
321  #define CURVE_25519_DEFAULT_COMPUTE_PUBLIC CURVE_25519_SODIUM_LIB_COMPUTE_PUBLIC
322  #define CURVE_25519_DEFAULT_COMPUTE_SHARED CURVE_25519_SODIUM_LIB_COMPUTE_SHARED
323 #else
324  #error "Requested lib provider either not valid or not currently supported."
325 #endif
326 
327 
328 #endif /* SDK_CRYPTO_INCLUDE_CRYPTO_ECC_PROVIDER_FUNCTION_MAP_H_ */
329