From bf583fd495c36e1e48d3f501588a1e28e75d5e83 Mon Sep 17 00:00:00 2001 From: ENGO150 Date: Sat, 1 Feb 2025 14:53:46 +0100 Subject: [PATCH] created calculate_ecdh_secret fn calculates shared secret (ECDH) --- src/chat/crypto.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/chat/crypto.c b/src/chat/crypto.c index dc85750..b8626f4 100644 --- a/src/chat/crypto.c +++ b/src/chat/crypto.c @@ -97,6 +97,23 @@ char *base64_decode(char *encoded_message, size_t *length) return decoded_message; } +void calculate_ecdh_secret(EVP_PKEY *pri, EVP_PKEY *pub, char **secret, size_t *len) +{ + EVP_PKEY_CTX *ctx = EVP_PKEY_CTX_new(pri, NULL); + EVP_PKEY_derive_init(ctx); //INIT DERIVE CONTEXT + + EVP_PKEY_derive_set_peer(ctx, pub); //CONFIG + + //ALLOCATE + EVP_PKEY_derive(ctx, NULL, len); //CALCULATE LENGTH + *secret = why2_malloc(*len); + + EVP_PKEY_derive(ctx, (unsigned char*) *secret, len); //GET SHARED SECRET + + //DEALLOCATION + EVP_PKEY_CTX_free(ctx); +} + //GLOBAL void why2_chat_init_keys(void) {