1ffeec8baSJoachim Foerster /* SPDX-License-Identifier: BSD-2-Clause */ 2ffeec8baSJoachim Foerster /* 3ffeec8baSJoachim Foerster * Copyright (C) 2023 ProvenRun S.A.S 4ffeec8baSJoachim Foerster */ 5ffeec8baSJoachim Foerster 6ffeec8baSJoachim Foerster #ifndef ECC_H 7ffeec8baSJoachim Foerster #define ECC_H 8ffeec8baSJoachim Foerster 9ffeec8baSJoachim Foerster #include <crypto/crypto.h> 10ffeec8baSJoachim Foerster #include <stdint.h> 11ffeec8baSJoachim Foerster #include <stddef.h> 12ffeec8baSJoachim Foerster #include <tee_api_types.h> 13ffeec8baSJoachim Foerster 14ffeec8baSJoachim Foerster TEE_Result versal_ecc_verify(uint32_t algo, struct ecc_public_key *key, 15ffeec8baSJoachim Foerster const uint8_t *msg, size_t msg_len, 16ffeec8baSJoachim Foerster const uint8_t *sig, size_t sig_len); 17ffeec8baSJoachim Foerster TEE_Result versal_ecc_sign(uint32_t algo, struct ecc_keypair *key, 18ffeec8baSJoachim Foerster const uint8_t *msg, size_t msg_len, 19ffeec8baSJoachim Foerster uint8_t *sig, size_t *sig_len); 20*684b77deSJoachim Foerster #ifdef CFG_VERSAL_PKI 21*684b77deSJoachim Foerster TEE_Result versal_ecc_sign_ephemeral(uint32_t algo, size_t bytes, 22*684b77deSJoachim Foerster struct ecc_keypair *key, 23*684b77deSJoachim Foerster struct ecc_keypair *ephemeral, 24*684b77deSJoachim Foerster const uint8_t *msg, size_t msg_len, 25*684b77deSJoachim Foerster uint8_t *sig, size_t *sig_len); 26*684b77deSJoachim Foerster #endif 27ffeec8baSJoachim Foerster 28ffeec8baSJoachim Foerster TEE_Result versal_ecc_gen_keypair(struct ecc_keypair *s); 29*684b77deSJoachim Foerster #ifdef CFG_VERSAL_PKI_PWCT 30*684b77deSJoachim Foerster TEE_Result versal_ecc_keypair_pwct(struct ecc_keypair *s); 31*684b77deSJoachim Foerster #endif 32ffeec8baSJoachim Foerster 33ffeec8baSJoachim Foerster TEE_Result versal_ecc_hw_init(void); 34ffeec8baSJoachim Foerster TEE_Result versal_ecc_kat_test(void); 35ffeec8baSJoachim Foerster 36ffeec8baSJoachim Foerster #endif 37