diff --git a/crypto/dap_enc_sidh16.c b/crypto/dap_enc_sidh16.c index 97875d892695cfdf8422e3733596a86d3e04c368..8a8305bd0260343d85e6a58648a48ee9d966346b 100644 --- a/crypto/dap_enc_sidh16.c +++ b/crypto/dap_enc_sidh16.c @@ -24,15 +24,15 @@ static int isCompressed(void *_inheritor) { extern bool dap_sidh16_CurveIsogenyStruct_isnull(PCurveIsogenyStruct pCurveIsogeny); -dap_enc_key_t *dap_enc_sidh16_key_new_generate(OQS_RAND *rand, struct dap_enc_key *a_key, size_t a_size) { - dap_enc_key_t *k = malloc(sizeof (dap_enc_key_t)); +dap_enc_key_t *dap_enc_sidh16_key_new_generate(struct dap_enc_key *a_key, size_t a_size) { + dap_enc_key_t *k = DAP_NEW(dap_enc_key_t); dap_enc_sidh16_key_t *sidh_a_key = DAP_ENC_SIDH16_KEY(a_key); if(k == NULL) return NULL; // Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ ÑиÑтемы изогенных кривых PCurveIsogenyStruct curveIsogeny = oqs_sidh_cln16_curve_allocate(&CurveIsogeny_SIDHp751); if(curveIsogeny == NULL || dap_sidh16_CurveIsogenyStruct_isnull(curveIsogeny)) { - free(k); + DAP_DELETE(k); // оÑвобождаем памÑÑ‚ÑŒ Ð´Ð»Ñ Ð¸Ð·Ð¾Ð³ÐµÐ½Ð¸Ð¸ oqs_sidh_cln16_curve_free(curveIsogeny); return NULL; @@ -40,7 +40,7 @@ dap_enc_key_t *dap_enc_sidh16_key_new_generate(OQS_RAND *rand, struct dap_enc_ke // Инициализировать изогенную Ñтруктуру кривой pCurveIsogeny Ñо ÑтатичеÑкими данными, извлеченными из pCurveIsogenyData. // Ðто нужно вызвать поÑле Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¼Ñти Ð´Ð»Ñ pCurveIsogeny Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ SIDH_curve_allocate() if(oqs_sidh_cln16_curve_initialize(curveIsogeny, &CurveIsogeny_SIDHp751) != SIDH_CRYPTO_SUCCESS) { - free(k); + DAP_DELETE(k); oqs_sidh_cln16_curve_free(curveIsogeny); return NULL; } @@ -52,7 +52,7 @@ dap_enc_key_t *dap_enc_sidh16_key_new_generate(OQS_RAND *rand, struct dap_enc_ke k->dec = &dap_enc_sidh16_decode; k->delete_callback = &dap_enc_sidh16_key_delete; - sidh_a_key->rand = rand; + sidh_a_key->rand; sidh_a_key->user_curveIsogeny; return k; @@ -71,7 +71,7 @@ void dap_enc_sidh16_key_delete(struct dap_enc_key *a_key) { } oqs_sidh_cln16_curve_free((PCurveIsogenyStruct)sidh_a_key->user_curveIsogeny); sidh_a_key->user_curveIsogeny = NULL; - free(a_key); + DAP_DELETE(a_key); } @@ -90,7 +90,7 @@ size_t dap_enc_sidh16_encode(struct dap_enc_key *a_key, const void *a_in, size_t a_key->data = malloc(SIDH_COMPRESSED_PUBKEY_LEN); if(key_a_tmp_pub == NULL || a_in == NULL) { ret = 0; - free(a_key->data); + DAP_DELETE(a_key->data); a_in = NULL; a_key->data = NULL; } @@ -100,7 +100,7 @@ size_t dap_enc_sidh16_encode(struct dap_enc_key *a_key, const void *a_in, size_t a_key->data = malloc(SIDH_PUBKEY_LEN); if(a_key->data == NULL) { ret = 0; - free(a_key->data = NULL); + DAP_DELETE(a_key->data = NULL); a_key->data = NULL; a_in = NULL; } @@ -109,7 +109,7 @@ size_t dap_enc_sidh16_encode(struct dap_enc_key *a_key, const void *a_in, size_t a_in = malloc(SIDH_SECRETKEY_LEN); if(a_in == NULL) { ret = 0; - free(a_key->data = NULL); + DAP_DELETE(a_key->data = NULL); a_key->data = NULL; a_in = NULL; } @@ -117,7 +117,7 @@ size_t dap_enc_sidh16_encode(struct dap_enc_key *a_key, const void *a_in, size_t // generate A key pair if(oqs_sidh_cln16_EphemeralKeyGeneration_A((unsigned char *)a_in, (unsigned char *)key_a_tmp_pub, sidh_a_key->user_curveIsogeny, sidh_a_key->rand) != SIDH_CRYPTO_SUCCESS) { ret = 0; - free(a_key->data = NULL); + DAP_DELETE(a_key->data = NULL); a_key->data = NULL; a_in = NULL; } @@ -131,7 +131,7 @@ size_t dap_enc_sidh16_encode(struct dap_enc_key *a_key, const void *a_in, size_t } ret = 1; - free(key_a_tmp_pub); + DAP_DELETE(key_a_tmp_pub); return ret; } @@ -159,52 +159,52 @@ size_t dap_enc_sidh16_decode(struct dap_enc_key *a_key, const void *a_in, size_t if(compressed) { if(sidh_a_key->alice_msg_len != SIDH_COMPRESSED_PUBKEY_LEN) { ret = 0; - free(a_out); + DAP_DELETE(a_out); a_out = NULL; - free(a_key->data); + DAP_DELETE(a_key->data); a_key->data = NULL; } bob_tmp_pub = malloc(SIDH_PUBKEY_LEN); a_out = malloc(SIDH_COMPRESSED_PUBKEY_LEN); if(bob_tmp_pub == NULL || a_out == NULL) { ret = 0; - free(a_out); + DAP_DELETE(a_out); a_out = NULL; - free(a_key->data); + DAP_DELETE(a_key->data); a_key->data = NULL; } A = malloc(SIDH_COMPRESSED_A_LEN); if(A == NULL) { ret = 0; - free(a_out); + DAP_DELETE(a_out); a_out = NULL; - free(a_key->data); + DAP_DELETE(a_key->data); a_key->data = NULL; } R = malloc(SIDH_COMPRESSED_R_LEN); if(R == NULL) { ret = 0; - free(a_out); + DAP_DELETE(a_out); a_out = NULL; - free(a_key->data); + DAP_DELETE(a_key->data); a_key->data = NULL; } } else { if(sidh_a_key->alice_msg_len != SIDH_PUBKEY_LEN) { ret = 0; - free(a_out); + DAP_DELETE(a_out); a_out = NULL; - free(a_key->data); + DAP_DELETE(a_key->data); a_key->data = NULL; } // non-compressed a_out = malloc(SIDH_PUBKEY_LEN); if(a_out == NULL) { ret = 0; - free(a_out); + DAP_DELETE(a_out); a_out = NULL; - free(a_key->data); + DAP_DELETE(a_key->data); a_key->data = NULL; } bob_tmp_pub = a_out; // point to the pub key @@ -213,26 +213,26 @@ size_t dap_enc_sidh16_decode(struct dap_enc_key *a_key, const void *a_in, size_t bob_priv = malloc(SIDH_SECRETKEY_LEN); if(bob_priv == NULL){ ret = 0; - free(a_out); + DAP_DELETE(a_out); a_out = NULL; - free(a_key->data); + DAP_DELETE(a_key->data); a_key->data = NULL; } a_key->data = malloc(SIDH_SHAREDKEY_LEN); if(a_key->data == NULL) { ret = 0; - free(a_out); + DAP_DELETE(a_out); a_out = NULL; - free(a_key->data); + DAP_DELETE(a_key->data); a_key->data = NULL; } // generate Bob's key pair if(oqs_sidh_cln16_EphemeralKeyGeneration_B((unsigned char *) bob_priv, (unsigned char *) bob_tmp_pub, sidh_a_key->user_curveIsogeny, sidh_a_key->rand) != SIDH_CRYPTO_SUCCESS) { ret = 0; - free(a_out); + DAP_DELETE(a_out); a_out = NULL; - free(a_key->data); + DAP_DELETE(a_key->data); a_key->data = NULL; } if(compressed) { @@ -244,9 +244,9 @@ size_t dap_enc_sidh16_decode(struct dap_enc_key *a_key, const void *a_in, size_t // compute Bob's shared secret if(oqs_sidh_cln16_EphemeralSecretAgreement_Compression_B((unsigned char *) bob_priv, R, A, (unsigned char *) a_key->data, sidh_a_key->user_curveIsogeny) != SIDH_CRYPTO_SUCCESS) { ret = 0; - free(a_out); + DAP_DELETE(a_out); a_out = NULL; - free(a_key->data); + DAP_DELETE(a_key->data); a_key->data = NULL; } } else { @@ -255,18 +255,18 @@ size_t dap_enc_sidh16_decode(struct dap_enc_key *a_key, const void *a_in, size_t // compute Bob's shared secret if(oqs_sidh_cln16_EphemeralSecretAgreement_B((unsigned char *) bob_priv, (unsigned char *) a_in, (unsigned char *) a_key->data, sidh_a_key->user_curveIsogeny) != SIDH_CRYPTO_SUCCESS) { ret = 0; - free(a_out); + DAP_DELETE(a_out); a_out = NULL; - free(a_key->data); + DAP_DELETE(a_key->data); a_key->data = NULL; } } sidh_a_key->key_len = SIDH_SHAREDKEY_LEN; ret = 1; - free(bob_tmp_pub); - free(bob_priv); - free(A); - free(R); + DAP_DELETE(bob_tmp_pub); + DAP_DELETE(bob_priv); + DAP_DELETE(A); + DAP_DELETE(R); return ret; } @@ -323,12 +323,12 @@ int OQS_KEX_sidh_cln16_alice_1(OQS_KEX *k, const void *alice_priv, const uint8_t err: ret = 0; - free(*key); + DAP_DELETE(*key); *key = NULL; cleanup: - free(A); - free(R); + DAP_DELETE(A); + DAP_DELETE(R); return ret; } diff --git a/crypto/dap_enc_sidh16.h b/crypto/dap_enc_sidh16.h index 74b5bbf2ed7798442f9c32f7b7a68b708838c138..606780b1243f3fc9996af4288535f93f92b5558d 100644 --- a/crypto/dap_enc_sidh16.h +++ b/crypto/dap_enc_sidh16.h @@ -25,7 +25,7 @@ typedef struct dap_enc_sidh16_key{ #define DAP_ENC_SIDH16_KEY(a) ((dap_enc_sidh16_key_t *)((a)->_inheritor)) -dap_enc_key_t *dap_enc_sidh16_key_new_generate(OQS_RAND *rand, struct dap_enc_key* a_key, size_t a_size); // new +dap_enc_key_t *dap_enc_sidh16_key_new_generate(struct dap_enc_key* a_key, size_t a_size); // new void dap_enc_sidh16_key_new_from_data(struct dap_enc_key* a_key, const void* a_in, size_t a_in_size); // alice_1 void dap_enc_sidh16_key_delete(struct dap_enc_key* a_key); // sidh_cln16_alice_priv_free // sidh_cln16_free