diff options
Diffstat (limited to 'include/drivers/st/stm32_pka.h')
-rw-r--r-- | include/drivers/st/stm32_pka.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/include/drivers/st/stm32_pka.h b/include/drivers/st/stm32_pka.h new file mode 100644 index 0000000..ad4690a --- /dev/null +++ b/include/drivers/st/stm32_pka.h @@ -0,0 +1,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 */ |