From c1e7aba8796b0d511c31fdbf50d3ec9ed9da21c7 Mon Sep 17 00:00:00 2001
From: ENGO150 <v.smejkal06@gmail.com>
Date: Thu, 30 Jan 2025 20:07:19 +0100
Subject: [PATCH] defined why2_chat_ecc_verify_signature

one commit, 8 hours of going crazy together with AI
---
 src/chat/crypto.c | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/src/chat/crypto.c b/src/chat/crypto.c
index 8f394a4..b2a1b49 100644
--- a/src/chat/crypto.c
+++ b/src/chat/crypto.c
@@ -165,6 +165,30 @@ char *why2_chat_ecc_sign(char *message)
     return encoded_sig;
 }
 
+why2_bool why2_chat_ecc_verify_signature(char *message, char *signature, EVP_PKEY *key)
+{
+    //VARIABLES
+    size_t length;
+    char *decoded_signature = base64_decode(signature, &length); //DECODE SIGNATURE
+    why2_bool returning;
+
+    //INIT CONTEXT
+    EVP_MD_CTX* ctx = EVP_MD_CTX_new();
+
+    //INIT VERIFICATION CONTEXT
+    EVP_DigestVerifyInit(ctx, NULL, EVP_sha256(), NULL, key);
+
+    //VERIFY MESSAGE
+    EVP_DigestVerifyUpdate(ctx, message, strlen(message));
+    returning = EVP_DigestVerifyFinal(ctx, (unsigned char*) decoded_signature, length) == 1;
+
+    //DEALLOCATION
+    EVP_MD_CTX_free(ctx);
+    why2_deallocate(decoded_signature);
+
+    return returning;
+}
+
 void why2_chat_deallocate_keys(void)
 {
     //DEALLOCATE THE pkey