#ifndef __ECP_DP_CURVE25519_H__ #define __ECP_DP_CURVE25519_H__ #include #include "mbedtls/entropy.h" #include "mbedtls/ctr_drbg.h" #include "mbedtls/sha256.h" #include "mbedtls/ecdh.h" #define ECDHE_PUBLIC_SIZE (128) #define SHA256_DIGEST_SIZE (32) #define TEST_EC_PRIVATE_KEY \ /*Private key of generated*/ #define TEST_EC_CERTIFICATE \ /*Client certificate issued by vendor*/ typedef enum { ECDH_CLIENT, ECDH_SERVER }ECDH_Endpoint_t; typedef struct { uint8_t pu8Public[ECDHE_PUBLIC_SIZE]; size_t szPublicLength; uint8_t pu8Signature[ECDHE_PUBLIC_SIZE]; size_t szSignatureLength; uint8_t pu8Secret[ECDHE_PUBLIC_SIZE]; size_t szSecretLength; uint8_t pu8SymmetricKey[SHA256_DIGEST_SIZE]; ECDH_Endpoint_t Endpoint; mbedtls_ecdh_context ECDH; mbedtls_entropy_context ENTROPY; mbedtls_ctr_drbg_context DRBG; }ECDHE_t; extern int32_t ECDHE_Init(ECDHE_t* ctx, ECDH_Endpoint_t Endpoint); extern int32_t ECDHE_WriteOwnPublic(ECDHE_t* ctx, uint8_t *pu8SigningKey, size_t szKeyLength); extern int32_t ECDHE_ReadPeerPublic(ECDHE_t* ctx, uint8_t *pu8PublicKey, size_t szLength, uint8_t* pu8Signature, size_t szSignatureLength, uint8_t* pu8VerificationCert, size_t szCertLength ); extern void ECDHE_SelfTest(void); #endif /*__ECP_DP_CURVE25519_H__*/