From 685b8e446e8dfa337ba007eae9477c80edc8fa5e Mon Sep 17 00:00:00 2001
From: ENGO150 <v.smejkal06@gmail.com>
Date: Wed, 29 Jan 2025 21:15:24 +0100
Subject: [PATCH] defined why2_chat_ecc_sign

and its not working as expected lol

i will fix it in next commits, i just need this for change comparison
---
 src/chat/crypto.c | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/src/chat/crypto.c b/src/chat/crypto.c
index c8f22a6..8abbbcf 100644
--- a/src/chat/crypto.c
+++ b/src/chat/crypto.c
@@ -107,6 +107,34 @@ void why2_chat_init_keys(void)
     why2_deallocate(key);
 }
 
+char *why2_chat_ecc_sign(char *message)
+{
+    //VARIABLES
+    EVP_MD_CTX *mdctx = NULL; //SIGNING CONTEXT
+    size_t siglen;
+    char *sig; //SIGNATURE
+    char *encoded_sig; //FINAL (ENCODED) SIGNATURE
+
+    //INIT mdctx
+    mdctx = EVP_MD_CTX_new();
+    EVP_DigestSignInit(mdctx, NULL, EVP_sha256(), NULL, keypair);
+
+    EVP_DigestSignUpdate(mdctx, message, strlen(message)); //UPDATE MESSAGE TO SIGN
+    EVP_DigestSignFinal(mdctx, NULL, &siglen); //COUNT LENGTH
+
+    //GENERATE SIGNATURE
+    sig = why2_malloc(siglen); //ALLOCATE SIGNATURE
+    EVP_DigestSignFinal(mdctx, (unsigned char*) sig, &siglen);
+
+    encoded_sig = base64_encode(sig); //CONVERT sig TO BASE64
+
+    //DEALLOCATION
+    why2_deallocate(sig);
+    EVP_MD_CTX_free(mdctx);
+
+    return encoded_sig;
+}
+
 void why2_chat_deallocate_keys(void)
 {
     //DEALLOCATE THE pkey