1 /*
2  * Copyright (c) 2022, STMicroelectronics - All Rights Reserved
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef STM32_PKA_H
8 #define STM32_PKA_H
9 
10 #include <stdint.h>
11 
12 #if !PKA_USE_NIST_P256 && !PKA_USE_BRAINPOOL_P256R1 && !PKA_USE_BRAINPOOL_P256T1 && \
13 	!PKA_USE_NIST_P521
14 #error "At least one ECDSA curve needs to be selected"
15 #endif
16 
17 enum stm32_pka_ecdsa_curve_id {
18 #if PKA_USE_NIST_P256
19 	PKA_NIST_P256,
20 #endif
21 #if PKA_USE_BRAINPOOL_P256R1
22 	PKA_BRAINPOOL_P256R1,
23 #endif
24 #if PKA_USE_BRAINPOOL_P256T1
25 	PKA_BRAINPOOL_P256T1,
26 #endif
27 #if PKA_USE_NIST_P521
28 	PKA_NIST_P521,
29 #endif
30 };
31 
32 struct stm32_pka_platdata {
33 	uintptr_t base;
34 	unsigned long clock_id;
35 	unsigned int reset_id;
36 };
37 
38 int stm32_pka_init(void);
39 int stm32_pka_ecdsa_verif(void *hash, unsigned int hash_size,
40 			  void *sig_r_ptr, unsigned int sig_r_size,
41 			  void *sig_s_ptr, unsigned int sig_s_size,
42 			  void *pk_x_ptr, unsigned int pk_x_size,
43 			  void *pk_y_ptr, unsigned int pk_y_size,
44 			  enum stm32_pka_ecdsa_curve_id cid);
45 
46 #endif /* STM32_PKA_H */
47