Skip to content
Snippets Groups Projects
Commit bc4ab985 authored by Maxim Krasylnikov's avatar Maxim Krasylnikov
Browse files

byKEX

parent 9bc7e1ad
No related branches found
No related tags found
1 merge request!24Support 3689
#include "dap_common.h"
#include "dap_enc_msrln16.h"
#include "liboqs/crypto/rand/rand.h"
#include "liboqs/kex_rlwe_msrln16/kex_rlwe_msrln16.h"
#include "liboqs/kex/kex.h"
#define LOG_TAG "dap_enc_msrln16"
OQS_KEX *kex = NULL;
void *alignce_priv = NULL;
uint8_t *alice_msg = NULL;
size_t alice_msg_len;
uint8_t *alice_key = NULL;
size_t alice_key_len;
uint8_t *bob_msg = NULL;
size_t bob_msg_len;
uint8_t *bob_key = NULL;
size_t bob_key_len;
struct dap_enc_param{
enum OQS_KEX_alg_name alg_name;
char *named_parameters;
char *id;
};
typedef struct dap_enc_sidh16_key{
} dap_enc_sidh16_key_t;
#define PRINT_HEX_STRING(label, str, len) \
{ size_t i; \
printf("%-20s (%4zu bytes): ", (label), (size_t)(len)); \
for (i = 0; i < (len); i++) { \
printf("%02X", ((unsigned char *) (str))[i]); \
} \
printf("\n"); \
}
/**
* @brief dap_enc_msrln16_key_new_generate
* @param a_key
* @param a_size
*/
void dap_enc_msrln16_key_new_generate(dap_enc_key_t * a_key, size_t a_size)
void dap_enc_msrln16_key_new_generate(OQS_RAND *rand)
{
//rand = OQS_RAND_new(OQS_RAND_alg_default);
kex = OQS_KEX_rlwe_msrln16_new(rand);
if(kex == NULL) {
printf("новая пара не сгенерирована \n");
//gen = 0;
}
printf("расчёт для обмена ключами методом %s\n", kex->method_name);
}
/**
* @brief dap_enc_msrln16_key_new_from_data
* @param a_key
* @param a_in
* @param a_in_size
* @param k
* @param alice_priv
* @param bob_msg
* @param bob_msg_len
* @param key
* @param key_len
*/
void dap_enc_msrln16_key_new_from_data(dap_enc_key_t * a_key, const void * a_in, size_t a_in_size)
void dap_enc_msrln16_key_new_from_data(OQS_KEX *k, const void * alice_priv, const uint8_t *bob_msg, const size_t bob_msg_len, uint8_t **key, size_t *key_len)
{
gen = OQS_KEX_rlwe_msrln16_alice_1(k, alice_priv, bob_msg, bob_msg_len, &alice_key, &alice_key_len);
if(gen != 1) {
printf("OQS_KEX_rlwe_msrln16_alice_1 lose..\n");
gen = 0;
}
PRINT_HEX_STRING("Alice session key", alice_key, alice_key_len);
if(alice_key_len != bob_key_len) {
printf("ERROR: Alice's session key and Bob's session key are different lengths (%zu vs %zu)\n", alice_key_len, bob_key_len);
gen = 0;
}
gen = memcmp(alice_key, bob_key, alice_key_len);
if(gen != 0){
printf("ERROR: Alice's session key and Bob's session key are not equal\n");
PRINT_HEX_STRING("Alice session key", alice_key, alice_key_len);
PRINT_HEX_STRING("Bob session key", bob_key, bob_key_len);
// здесь сделать запись ключа в файл????
gen = 0;
}
printf("Alice and Bob's session keys match.\n");
printf("\n\n");
gen = 1;
}
......@@ -41,9 +111,15 @@ void dap_enc_msrln16_key_new_from_data_public(dap_enc_key_t * a_key, const void
* @brief dap_enc_msrln16_key_delete
* @param a_key
*/
void dap_enc_msrln16_key_delete(dap_enc_key_t *a_key)
void dap_enc_msrln16_key_delete()
{
// free();
free(alice_msg);
free(alice_key);
free(bob_msg);
free(bob_key);
OQS_KEX_rlwe_msrln16_alice_priv_free(kex, alignce_priv);
OQS_KEX_rlwe_msrln16_free(kex);
}
/**
......@@ -69,26 +145,45 @@ size_t dap_enc_msrln16_key_public_raw(dap_enc_key_t *a_key, void ** a_key_public
/**
* @brief dap_enc_msrln16_decode
* @param a_key
* @param a_in
* @param a_in_size
* @param a_out
* @param k
* @param alice_msg
* @param alice_msg_len
* @param bob_msg
* @param bob_msg_len
* @param key
* @param key_len
* @return
*/
size_t dap_enc_msrln16_decode(dap_enc_key_t* a_key, const void * a_in, size_t a_in_size,void * a_out)
//Боб отвечает на приветствие
size_t dap_enc_msrln16_decode(OQS_KEX *k, const uint8_t *alice_msg, const size_t alice_msg_len, uint8_t **bob_msg, size_t *bob_msg_len, uint8_t **key, size_t *key_len)
{
gen=OQS_KEX_rlwe_msrln16_bob(k, alice_msg, alice_msg_len, &bob_msg, &bob_msg_len, &bob_key, &bob_key_len);
if (gen!=1){
//потеряли от боба
}
PRINT_HEX_STRING("Bob message", bob_msg, bob_msg_len);
PRINT_HEX_STRING("Bob session key", bob_key, bob_key_len);
}
/**
* @brief dap_enc_msrln16_encode
* @param a_key
* @param a_in
* @param a_in_size
* @param a_out
* @param k
* @param alice_priv
* @param alice_msg
* @param alice_msg_len
* @return
*/
size_t dap_enc_msrln16_encode(dap_enc_key_t* a_key, const void * a_in, size_t a_in_size,void * a_out)
{
//Алиса приветствует
size_t dap_enc_msrln16_encode(OQS_KEX *k, void **alice_priv, uint8_t **alice_msg, size_t *alice_msg_len)
{
gen=OQS_KEX_rlwe_msrln16_alice_0(k ,alice_priv, alice_msg, alice_msg_len);
if (gen!=1){
//потеряли от алисы
}
PRINT_HEX_STRING("Alice message", alice_msg, alice_msg_len);
}
......@@ -2,18 +2,30 @@
#define _DAP_ENC_MSRLN16_H_
#include <stddef.h>
#include "liboqs/crypto/rand/rand.h"
typedef struct dap_enc_key dap_enc_key_t;
void dap_enc_msrln16_key_new_generate(dap_enc_key_t * a_key, size_t a_size);
void dap_enc_msrln16_key_new_from_data(dap_enc_key_t * a_key, const void * a_in, size_t a_in_size);
//void dap_enc_msrln16_key_new_generate(dap_enc_key_t * a_key, size_t a_size);
//int OQS_KEX_rlwe_msrln16_bob(OQS_KEX *k, const uint8_t *alice_msg, const size_t alice_msg_len, uint8_t **bob_msg, size_t *bob_msg_len, uint8_t **key, size_t *key_len);
//int OQS_KEX_rlwe_msrln16_alice_0(OQS_KEX *k, void **alice_priv, uint8_t **alice_msg, size_t *alice_msg_len);
void dap_enc_msrln16_key_new_generate(OQS_RAND *rand);
// OQS_KEX_rlwe_msrln16_alice_1
void dap_enc_msrln16_key_new_from_data(OQS_KEX *k, const void *alice_priv, const uint8_t *bob_msg, const size_t bob_msg_len, uint8_t **key, size_t *key_len);
//void dap_enc_msrln16_key_new_from_data(dap_enc_key_t * a_key, const void * a_in, size_t a_in_size);
void dap_enc_msrln16_key_new_from_data_public(dap_enc_key_t* a_key, const void * a_in, size_t a_in_size);
void dap_enc_msrln16_key_delete(dap_enc_key_t *a_key);
size_t dap_enc_msrln16_key_public_raw(dap_enc_key_t *a_key, void ** a_key_public);
// OQS_KEX_rlwe_msrln16_alice_priv_free
// OQS_KEX_rlwe_msrln16_free
void dap_enc_msrln16_key_delete();
/*?*/size_t dap_enc_msrln16_key_public_raw(dap_enc_key_t *a_key, void ** a_key_public);
size_t dap_enc_msrln16_decode(dap_enc_key_t* a_key, const void * a_in, size_t a_in_size,void * a_out);
size_t dap_enc_msrln16_encode(dap_enc_key_t* a_key, const void * a_in, size_t a_in_size,void * a_out);
//size_t dap_enc_msrln16_decode(dap_enc_key_t* a_key, const void * a_in, size_t a_in_size,void * a_out);
size_t dap_enc_msrln16_decode(OQS_KEX *k, const uint8_t *alice_msg, const size_t alice_msg_len, uint8_t **bob_msg, size_t *bob_msg_len, uint8_t **key, size_t *key_len);
size_t dap_enc_msrln16_encode(OQS_KEX *k, void **alice_priv, uint8_t **alice_msg, size_t *alice_msg_len);
//size_t dap_enc_msrln16_encode(dap_enc_key_t* a_key, const void * a_in, size_t a_in_size,void * a_out);
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment