From da479b80530ec8789006b807eda28263f37c8a87 Mon Sep 17 00:00:00 2001
From: "alexey.stratulat" <alexey.stratulat@demlabs.net>
Date: Tue, 20 Sep 2022 18:07:36 +0700
Subject: [PATCH] [+] Added test for kyber key exchange algorithm with
 DAP_ENC_KEY_TYPE_KEM_KYBER512 key type.

---
 .../crypto/test/crypto/dap_enc_kyber_test.c   | 21 +++++++++++++++++++
 .../crypto/test/crypto/dap_enc_kyber_test.h   |  5 +++++
 dap-sdk/crypto/test/crypto/main.c             |  3 +++
 3 files changed, 29 insertions(+)
 create mode 100644 dap-sdk/crypto/test/crypto/dap_enc_kyber_test.c
 create mode 100644 dap-sdk/crypto/test/crypto/dap_enc_kyber_test.h

diff --git a/dap-sdk/crypto/test/crypto/dap_enc_kyber_test.c b/dap-sdk/crypto/test/crypto/dap_enc_kyber_test.c
new file mode 100644
index 0000000000..7a490ff456
--- /dev/null
+++ b/dap-sdk/crypto/test/crypto/dap_enc_kyber_test.c
@@ -0,0 +1,21 @@
+#include "dap_enc_kyber_test.h"
+
+void key_kem_kyber512_transfer_simulation_test(void){
+    dap_enc_key_t *alice_key = dap_enc_key_new_generate(DAP_ENC_KEY_TYPE_KEM_KYBER512, NULL, 0, NULL, 0, 0);
+    uint8_t *alice_pkey = alice_key->pub_key_data;
+    size_t alice_pkey_size = alice_key->pub_key_data_size;
+
+    dap_enc_key_t *bob_key = dap_enc_key_new_generate(DAP_ENC_KEY_TYPE_KEM_KYBER512, NULL, 0, NULL, 0, 0);
+    bob_key->gen_bob_shared_key(bob_key, alice_pkey, alice_pkey_size, (void**)&bob_key->pub_key_data);
+    uint8_t *bob_pkey = bob_key->pub_key_data;
+    size_t bob_pkey_size = bob_key->pub_key_data_size;
+
+    alice_key->gen_alice_shared_key(alice_key, alice_key->priv_key_data, bob_pkey_size, bob_pkey);
+
+    dap_assert(memcmp(alice_key->priv_key_data, bob_key->priv_key_data, alice_key->priv_key_data_size) == 0, "Session keys equals");
+}
+
+int dap_enc_kyber_test_run(void) {
+    dap_print_module_name("dap_enc_kyber_test_kem_kyber512");
+    key_kem_kyber512_transfer_simulation_test();
+}
\ No newline at end of file
diff --git a/dap-sdk/crypto/test/crypto/dap_enc_kyber_test.h b/dap-sdk/crypto/test/crypto/dap_enc_kyber_test.h
new file mode 100644
index 0000000000..295eed5cfe
--- /dev/null
+++ b/dap-sdk/crypto/test/crypto/dap_enc_kyber_test.h
@@ -0,0 +1,5 @@
+#pragma once
+#include "dap_enc_key.h"
+#include "dap_test.h"
+
+int dap_enc_kyber_test_run(void);
\ No newline at end of file
diff --git a/dap-sdk/crypto/test/crypto/main.c b/dap-sdk/crypto/test/crypto/main.c
index c9489e50a4..04bcb252ee 100755
--- a/dap-sdk/crypto/test/crypto/main.c
+++ b/dap-sdk/crypto/test/crypto/main.c
@@ -8,6 +8,7 @@
 #include "dap_enc_tesla_test.h"
 #include "dap_enc_dilithium_test.h"
 #include "dap_enc_ringct20_test.h"
+#include "dap_enc_kyber_test.h"
 #ifndef DAP_CRYPTO_MULTISIGN_TEST_OFF
 #include "dap_enc_sign_multi_test.h"
 #endif
@@ -53,6 +54,8 @@ int main(void) {
     dap_enc_defeo_tests_run();
     dap_enc_tesla_tests_run();
 
+    dap_enc_kyber_test_run();
+
 #ifndef DAP_CRYPTO_MULTISIGN_TEST_OFF
     dap_enc_multi_sign_tests_run();
 #endif
-- 
GitLab