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
No related merge requests found
#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