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