From bf354372ff3b3a1eeb7250ede7ef0699de66e3d2 Mon Sep 17 00:00:00 2001 From: ENGO150 Date: Sat, 1 Feb 2025 13:03:03 +0100 Subject: [PATCH] created why2_chat_ecc_deserialize_public_key fn --- include/chat/crypto.h | 1 + src/chat/crypto.c | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/include/chat/crypto.h b/include/chat/crypto.h index 0230b39..8f62225 100644 --- a/include/chat/crypto.h +++ b/include/chat/crypto.h @@ -44,6 +44,7 @@ char *why2_chat_ecc_sign(char *message); //SIGN message WITH ECC KEY why2_bool why2_chat_ecc_verify_signature(char *message, char *signature, EVP_PKEY *key); char *why2_chat_ecc_serialize_public_key(); //GET PUBLIC ECC KEY IN BASE64 +EVP_PKEY* why2_chat_ecc_deserialize_public_key(char *pubkey); //GET EVP_PKEY FROM BASE64 PUBLIC ECC KEY char *why2_sha256(char *input); //HASH input USING SHA256 AND RETURN IN STRING diff --git a/src/chat/crypto.c b/src/chat/crypto.c index b14871f..76a8734 100644 --- a/src/chat/crypto.c +++ b/src/chat/crypto.c @@ -223,6 +223,24 @@ char *why2_chat_ecc_serialize_public_key() return base64_encoded; } +//TODO: Remove PEM +EVP_PKEY* why2_chat_ecc_deserialize_public_key(char *pubkey) +{ + //VARIABLES + BIO *bio; + EVP_PKEY *key; + char *base64_decoded = base64_decode(pubkey, NULL); + + //EXTRACT KEY + bio = BIO_new_mem_buf(base64_decoded, -1); + key = PEM_read_bio_PUBKEY(bio, NULL, NULL, NULL); + + //DEALLOCATION + BIO_free(bio); + + return key; +} + void why2_chat_deallocate_keys(void) { //DEALLOCATE THE pkey