diff --git a/include/dap_enc_key.h b/include/dap_enc_key.h index 0d47a9aa4a87cc005c7e83e99210e86ac33e62c0..145fb27d64abb454a66a4864932fe50028bd0a56 100755 --- a/include/dap_enc_key.h +++ b/include/dap_enc_key.h @@ -53,6 +53,8 @@ typedef enum dap_enc_key_type{ DAP_ENC_KEY_TYPE_GOST_OFB,//GOST28147_89 DAP_ENC_KEY_TYPE_KUZN_OFB,//GOST28147_14 + DAP_ENC_KEY_TYPE_SALSA2012,//SALSA2012//http://www.ecrypt.eu.org/stream/salsa20pf.html//https://ianix.com/pub/salsa20-deployment.html + DAP_ENC_KEY_TYPE_RLWE_NEWHOPE, // "NewHope": key exchange from the ring learning with errors problem // (Alkim, Ducas, Pöppelmann, Schwabe, USENIX Security 2016 ) // Using the reference C implementation of NewHope @@ -173,7 +175,7 @@ typedef size_t (*dap_enc_gen_bob_shared_key) (struct dap_enc_key *b_key, const v typedef size_t (*dap_enc_gen_alice_shared_key) (struct dap_enc_key *a_key, const void *a_priv, size_t b_pub_size, unsigned char *b_pub); -typedef int (*dap_enc_callback_gen_key_public_t ) (struct dap_enc_key *l_key, void * l_output); +typedef int (*dap_enc_callback_gen_key_public_t ) (struct dap_enc_key *a_key, void * a_output); typedef void (*dap_enc_callback_ptr_t)(struct dap_enc_key *, void *); typedef size_t (*dap_enc_callback_pptr_r_size_t)(struct dap_enc_key *, void **); @@ -182,7 +184,7 @@ typedef void (*dap_enc_callback_size_t)(struct dap_enc_key *, size_t); typedef void (*dap_enc_callback_str_t)(struct dap_enc_key *, const char*); typedef char* (*dap_enc_callback_r_str_t)(struct dap_enc_key *); typedef size_t (*dap_enc_callback_calc_out_size)(const size_t); -typedef size_t (*dap_enc_get_allpbkList) (struct dap_enc_key *b_key, const void *allpbkList, const int allpbknum); +typedef size_t (*dap_enc_get_allpbk_list) (struct dap_enc_key *a_key, const void *allpbk_list, const int allpbk_num); typedef struct dap_enc_key { size_t priv_key_data_size; @@ -209,7 +211,7 @@ typedef struct dap_enc_key { void *pbkListdata; size_t pbkListsize; - dap_enc_get_allpbkList getallpbkList; + dap_enc_get_allpbk_list getallpbkList; void * _inheritor; // WARNING! Inheritor must have only serealizeble/deserializeble data (copy) diff --git a/include/dap_enc_ringct20.h b/include/dap_enc_ringct20.h index 39cfef2e1b879742fce114dd6ed72fd8bfbfbedc..3ee3ccb5d6dfbcace6006333e10dcabba3588391 100644 --- a/include/dap_enc_ringct20.h +++ b/include/dap_enc_ringct20.h @@ -15,9 +15,9 @@ void dap_enc_sig_ringct20_key_new_generate(struct dap_enc_key * key, const void size_t kex_size, const void * seed, size_t seed_size, size_t key_size); -size_t dap_enc_sig_ringct20_get_sign_with_pbkList(struct dap_enc_key * key, const void * msg, +size_t dap_enc_sig_ringct20_get_sign_with_pb_list(struct dap_enc_key * key, const void * msg, const size_t msg_size, void * signature, const size_t signature_size); -size_t dap_enc_sig_ringct20_verify_sign_with_pbkList(struct dap_enc_key * key, const void * msg, +size_t dap_enc_sig_ringct20_verify_sign_with_pbk_list(struct dap_enc_key * key, const void * msg, const size_t msg_size, void * signature, const size_t signature_size, const void *pbkList_buf, const int wpbkList); size_t dap_enc_sig_ringct20_get_sign(struct dap_enc_key * key,const void * msg, diff --git a/src/dap_enc_GOST.c b/src/dap_enc_GOST.c index 29a4d65bcb05fb97a26b5b420e1167c60cd611e0..22c7fb98b2925802db533cfa7615179ce3fa96c8 100644 --- a/src/dap_enc_GOST.c +++ b/src/dap_enc_GOST.c @@ -21,7 +21,7 @@ void dap_enc_gost_key_generate(struct dap_enc_key * a_key, const void *kex_buf, a_key->last_used_timestamp = time(NULL); - a_key->priv_key_data_size = key_size; + a_key->priv_key_data_size = 32; a_key->priv_key_data = DAP_NEW_SIZE(uint8_t, key_size); Keccak_HashInstance Keccak_ctx; diff --git a/src/dap_enc_key.c b/src/dap_enc_key.c index 4352ecb65601feb4b42dcddbc9c3b8e7da7c3186..55258d7d61454410f2c3edbb122a918588bb296e 100755 --- a/src/dap_enc_key.c +++ b/src/dap_enc_key.c @@ -27,6 +27,7 @@ #include "dap_enc_oaes.h" #include "dap_enc_bf.h" #include "dap_enc_GOST.h" +#include "dap_enc_salsa2012.h" #include "dap_enc_msrln.h" #include "dap_enc_defeo.h" @@ -165,6 +166,7 @@ struct dap_enc_key_callbacks{ .sign_get = NULL, .sign_verify = NULL }, + [DAP_ENC_KEY_TYPE_MSRLN] = { .name = "MSRLN", .enc = NULL, @@ -275,9 +277,9 @@ struct dap_enc_key_callbacks{ .name = "SIG_RINGCT20", .enc = NULL, .dec = NULL, - .enc_na = dap_enc_sig_ringct20_get_sign_with_pbkList,//dap_enc_sig_ringct20_get_sign, + .enc_na = dap_enc_sig_ringct20_get_sign_with_pb_list,//dap_enc_sig_ringct20_get_sign, .dec_na = dap_enc_sig_ringct20_verify_sign, - .dec_na_ext = dap_enc_sig_ringct20_verify_sign_with_pbkList, + .dec_na_ext = dap_enc_sig_ringct20_verify_sign_with_pbk_list, .gen_key_public = NULL, .gen_key_public_size = NULL, .gen_bob_shared_key = NULL, diff --git a/src/dap_enc_ringct20.c b/src/dap_enc_ringct20.c index ffaca3c5f32efecc1ceb61f7b5c621969bd9c286..61ea4278a438138a239cfe66772b756c58c39a09 100644 --- a/src/dap_enc_ringct20.c +++ b/src/dap_enc_ringct20.c @@ -541,7 +541,6 @@ int32_t ringct20_private_and_public_keys_init(ringct20_private_key_t *private_ke f = calloc(p->RINGCT20_PBK_SIZE, sizeof(char)); if (f == NULL) { free(f); -// free(g); return -1; } public_key->kind = p->kind; @@ -569,24 +568,24 @@ void dap_enc_sig_ringct20_key_new(struct dap_enc_key *key) { key->type = DAP_ENC_KEY_TYPE_SIG_RINGCT20; key->enc = NULL; - key->enc_na = (dap_enc_callback_dataop_na_t) dap_enc_sig_ringct20_get_sign_with_pbkList;//dap_enc_sig_ringct20_get_sign; + key->enc_na = (dap_enc_callback_dataop_na_t) dap_enc_sig_ringct20_get_sign_with_pb_list;//dap_enc_sig_ringct20_get_sign; key->dec_na = (dap_enc_callback_dataop_na_t) dap_enc_sig_ringct20_verify_sign; - key->dec_na_ext = (dap_enc_callback_dataop_na_ext_t) dap_enc_sig_ringct20_verify_sign_with_pbkList;//dap_enc_sig_ringct20_verify_sign; - key->getallpbkList = (dap_enc_get_allpbkList) dap_enc_sig_ringct20_getallpbk; + key->dec_na_ext = (dap_enc_callback_dataop_na_ext_t) dap_enc_sig_ringct20_verify_sign_with_pbk_list;//dap_enc_sig_ringct20_verify_sign; + key->getallpbkList = (dap_enc_get_allpbk_list) dap_enc_sig_ringct20_getallpbk; key->pbkListsize = 0; key->pbkListdata = NULL; } -size_t dap_enc_sig_ringct20_getallpbk(dap_enc_key_t *key, const void *allpbkList, const int allpbkListsize) +size_t dap_enc_sig_ringct20_getallpbk(dap_enc_key_t *key, const void *allpbk_list, const int allpbk_list_size) { - key->pbkListdata = DAP_NEW_SIZE(uint8_t, allpbkListsize); - memcpy(key->pbkListdata, allpbkList, allpbkListsize); - key->pbkListsize= allpbkListsize; + key->pbkListdata = DAP_NEW_SIZE(uint8_t, allpbk_list_size); + memcpy(key->pbkListdata, allpbk_list, allpbk_list_size); + key->pbkListsize= allpbk_list_size; return 0; } -void dap_enc_sig_ringct20_key_new_generate(struct dap_enc_key * key, const void *kex_buf, +void dap_enc_sig_ringct20_key_new_generate(struct dap_enc_key * a_key, const void *kex_buf, size_t kex_size, const void * seed, size_t seed_size, size_t key_size) { @@ -597,22 +596,22 @@ void dap_enc_sig_ringct20_key_new_generate(struct dap_enc_key * key, const void dap_enc_sig_ringct20_set_type(ringct20_type); - key->priv_key_data_size = sizeof(ringct20_private_key_t); - key->pub_key_data_size = sizeof(ringct20_public_key_t); - key->priv_key_data = malloc(key->priv_key_data_size); - key->pub_key_data = malloc(key->pub_key_data_size); + a_key->priv_key_data_size = sizeof(ringct20_private_key_t); + a_key->pub_key_data_size = sizeof(ringct20_public_key_t); + a_key->priv_key_data = malloc(a_key->priv_key_data_size); + a_key->pub_key_data = malloc(a_key->pub_key_data_size); - retcode = ringct20_crypto_sign_keypair((ringct20_public_key_t *) key->pub_key_data, - (ringct20_private_key_t *) key->priv_key_data, _ringct20_type); + retcode = ringct20_crypto_sign_keypair((ringct20_public_key_t *) a_key->pub_key_data, + (ringct20_private_key_t *) a_key->priv_key_data, _ringct20_type); if(retcode != 0) { - ringct20_private_and_public_keys_delete((ringct20_private_key_t *) key->pub_key_data, - (ringct20_public_key_t *) key->pub_key_data); + ringct20_private_and_public_keys_delete((ringct20_private_key_t *) a_key->pub_key_data, + (ringct20_public_key_t *) a_key->pub_key_data); log_it(L_CRITICAL, "Error"); return; } } -int ringct20_crypto_sign_with_pbkList( ringct20_signature_t *sig, const unsigned char *m, +int ringct20_crypto_sign_with_pbk_list( ringct20_signature_t *sig, const unsigned char *m, unsigned long long mlen, const ringct20_private_key_t *private_key, const void *allpbk_buf, const int allpbk_size) { @@ -699,7 +698,7 @@ int ringct20_crypto_sign_with_pbkList( ringct20_signature_t *sig, const unsigned return 0; } -size_t dap_enc_sig_ringct20_get_sign_with_pbkList(struct dap_enc_key * key, const void * msg, +size_t dap_enc_sig_ringct20_get_sign_with_pb_list(struct dap_enc_key * a_key, const void * msg, const size_t msg_size, void * signature, const size_t signature_size) { if(signature_size < sizeof(ringct20_signature_t)) { @@ -707,14 +706,14 @@ size_t dap_enc_sig_ringct20_get_sign_with_pbkList(struct dap_enc_key * key, cons return 0; } - if(!ringct20_crypto_sign_with_pbkList((ringct20_signature_t *) signature, (const unsigned char *) msg, msg_size, key->priv_key_data, key->pbkListdata, key->pbkListsize)) + if(!ringct20_crypto_sign_with_pbk_list((ringct20_signature_t *) signature, (const unsigned char *) msg, msg_size, a_key->priv_key_data, a_key->pbkListdata, a_key->pbkListsize)) return signature_size; else return 0; } -size_t dap_enc_sig_ringct20_get_sign(struct dap_enc_key * key, const void * msg, +size_t dap_enc_sig_ringct20_get_sign(struct dap_enc_key * a_key, const void * msg, const size_t msg_size, void * signature, const size_t signature_size) { if(signature_size < sizeof(ringct20_signature_t)) { @@ -722,13 +721,13 @@ size_t dap_enc_sig_ringct20_get_sign(struct dap_enc_key * key, const void * msg, return 0; } - if(!ringct20_crypto_sign((ringct20_signature_t *) signature, (const unsigned char *) msg, msg_size, key->priv_key_data)) + if(!ringct20_crypto_sign((ringct20_signature_t *) signature, (const unsigned char *) msg, msg_size, a_key->priv_key_data)) return signature_size; else return 0; } -size_t dap_enc_sig_ringct20_verify_sign(struct dap_enc_key * key, const void * msg, +size_t dap_enc_sig_ringct20_verify_sign(struct dap_enc_key * a_key, const void * msg, const size_t msg_size, void * signature, const size_t signature_size) { if(signature_size < sizeof(ringct20_signature_t)) { @@ -736,10 +735,10 @@ size_t dap_enc_sig_ringct20_verify_sign(struct dap_enc_key * key, const void * m return 1; } - return (ringct20_crypto_sign_open( (unsigned char *) msg, msg_size, (ringct20_signature_t *) signature, key->pub_key_data)); + return (ringct20_crypto_sign_open( (unsigned char *) msg, msg_size, (ringct20_signature_t *) signature, a_key->pub_key_data)); } -size_t dap_enc_sig_ringct20_verify_sign_with_pbkList(struct dap_enc_key * key, const void * msg, +size_t dap_enc_sig_ringct20_verify_sign_with_pbk_list(struct dap_enc_key * a_key, const void * msg, const size_t msg_size, void * signature, const size_t signature_size, const void *pbkList_buf, const int wpbkList) { if(signature_size < sizeof(ringct20_signature_t)) { @@ -750,15 +749,15 @@ size_t dap_enc_sig_ringct20_verify_sign_with_pbkList(struct dap_enc_key * key, c return ringct20_crypto_sign_open_with_pbkList( (unsigned char *) msg, msg_size, (ringct20_signature_t *) signature, pbkList_buf, wpbkList); } -void dap_enc_sig_ringct20_key_delete(struct dap_enc_key * key) +void dap_enc_sig_ringct20_key_delete(struct dap_enc_key * a_key) { - if(key->pbkListsize) + if(a_key->pbkListsize) { - DAP_DELETE(key->pbkListdata); - key->pbkListsize = 0; + DAP_DELETE(a_key->pbkListdata); + a_key->pbkListsize = 0; } - ringct20_private_and_public_keys_delete((ringct20_private_key_t *) key->priv_key_data, - (ringct20_public_key_t *) key->pub_key_data); + ringct20_private_and_public_keys_delete((ringct20_private_key_t *) a_key->priv_key_data, + (ringct20_public_key_t *) a_key->pub_key_data); } size_t dap_enc_ringct20_calc_signature_size(void) diff --git a/test/crypto/dap_enc_ringct20_test.c b/test/crypto/dap_enc_ringct20_test.c index 24d7b6cfc37df06b66564c99f03823bdf92b521e..0633dafed0d468e4344fb4dc611c35b05c30ed8b 100644 --- a/test/crypto/dap_enc_ringct20_test.c +++ b/test/crypto/dap_enc_ringct20_test.c @@ -107,7 +107,7 @@ static void test_signing_verifying2(void) dap_enc_key_delete(key); } -//DEBUG TO USE IT get back:dap_enc_sig_ringct20_get_sign_with_pbkList,//dap_enc_sig_ringct20_get_sign, +//DEBUG TO USE IT get back:dap_enc_sig_ringct20_get_sign_with_pb_list,//dap_enc_sig_ringct20_get_sign, static void test_signing_verifying(void) {