diff --git a/src/dap_enc_ringct20.c b/src/dap_enc_ringct20.c index e07cfdcd51f8882db902c821704f831e00bd7e8e..dd4b6050fb9f2df1a5a7a361e8a2a813a3f47964 100644 --- a/src/dap_enc_ringct20.c +++ b/src/dap_enc_ringct20.c @@ -14,6 +14,8 @@ DAP_RINGCT20_SIGN_SECURITY _ringct20_type = RINGCT20_MINSEC; // by default //poly_ringct20 Afixed[10]; //poly_ringct20 Hfixed[10]; +int32_t ringct20_private_and_public_keys_init(ringct20_private_key_t *private_key, ringct20_public_key_t *public_key, ringct20_param_t *p); + void SetupPrintAH(poly_ringct20 *A, poly_ringct20 * H, const int mLen) { @@ -56,13 +58,13 @@ void SetupPrintAH(poly_ringct20 *A, poly_ringct20 * H, const int mLen) void ringct20_pack_prk(uint8_t *prk, const poly_ringct20 *S, const ringct20_param_t *rct_p) { - for(int i = 0; i < rct_p->M - 1; ++i) + for(uint32_t i = 0; i < rct_p->M - 1; ++i) poly_tobytes(prk + i*rct_p->POLY_RINGCT20_SIZE_PACKED, S +i); } void ringct20_unpack_prk(const uint8_t *prk, poly_ringct20 *S, const ringct20_param_t *rct_p) { - for(int i = 0; i < rct_p->M - 1; ++i) + for(uint32_t i = 0; i < rct_p->M - 1; ++i) poly_frombytes(S +i, prk + i*rct_p->POLY_RINGCT20_SIZE_PACKED); } @@ -88,15 +90,15 @@ void ringct20_unpack_sig(const uint8_t *sig, poly_ringct20 *a_list, { uint32_t unpacked_size = 0; //unpack a_list - for(int i = 0; i < rct_p->wLen; ++i) + for(uint32_t i = 0; i < rct_p->wLen; ++i) { poly_frombytes(a_list + i, sig + unpacked_size); unpacked_size += rct_p->POLY_RINGCT20_SIZE_PACKED; } //unpack t[W][M] - for(int j = 0; j < rct_p->wLen; ++j) + for(uint32_t j = 0; j < rct_p->wLen; ++j) { - for(int i = 0; i < rct_p->M; ++i) + for(uint32_t i = 0; i < rct_p->M; ++i) { poly_frombytes(t[j] + i, sig + unpacked_size); unpacked_size += rct_p->POLY_RINGCT20_SIZE_PACKED; @@ -111,19 +113,19 @@ void ringct20_unpack_sig(const uint8_t *sig, poly_ringct20 *a_list, } void ringct20_pack_sig(uint8_t *sig, const poly_ringct20 *a_list, - const poly_ringct20 *c1, const poly_ringct20 **t, const poly_ringct20 *h, const ringct20_param_t *rct_p) + poly_ringct20 *c1, poly_ringct20 **t, const poly_ringct20 *h, const ringct20_param_t *rct_p) { uint32_t packed_size = 0; //pack a_list - for(int i = 0; i < rct_p->wLen; ++i) + for(uint32_t i = 0; i < rct_p->wLen; ++i) { poly_tobytes(sig + packed_size, a_list + i); packed_size += rct_p->POLY_RINGCT20_SIZE_PACKED; } //pack t[W][M] - for(int j = 0; j < rct_p->wLen; ++j) + for(uint32_t j = 0; j < rct_p->wLen; ++j) { - for(int i = 0; i < rct_p->M; ++i) + for(uint32_t i = 0; i < rct_p->M; ++i) { poly_tobytes(sig + packed_size,t[j] + i); packed_size += rct_p->POLY_RINGCT20_SIZE_PACKED; @@ -150,9 +152,9 @@ int get_pbk_list(poly_ringct20 *aList, const ringct20_param_t *p, const int Pi) //get a list of some pbk { poly_ringct20 *Stmp = malloc(p->POLY_RINGCT20_SIZE*p->mLen); - for(int i = 0; i < p->wLen; ++i) + for(uint32_t i = 0; i < p->wLen; ++i) { - if(i == Pi) + if(i == (uint32_t) Pi) continue; LRCT_SampleKey(Stmp, p->mLen); LRCT_KeyGen(aList + i, p->A, Stmp, p->mLen); @@ -189,21 +191,21 @@ int ringct20_crypto_sign( ringct20_signature_t *sig, const unsigned char *m, uns poly_ringct20 c1; poly_ringct20** t;//[w][M]//TOCORRECT to *t; t = malloc(p->wLen*sizeof(poly_ringct20*)); - for(int i = 0; i < p->wLen; ++i) + for(uint32_t i = 0; i < p->wLen; ++i) t[i] = malloc(p->M*p->POLY_RINGCT20_SIZE); unsigned char *bt = malloc(NEWHOPE_POLYBYTES); - for (int i = 0; i < p->wLen; i++) + for (uint32_t i = 0; i < p->wLen; i++) { - for (int k = 0; k < p->M; k++) + for (uint32_t k = 0; k < p->M; k++) { poly_init(t[i] + k); } } - for (int k = 0; k < p->M; k++) + for (uint32_t k = 0; k < p->M; k++) { randombytes(bt, NEWHOPE_POLYBYTES); poly_frombytes(u + k, bt); @@ -223,7 +225,7 @@ int ringct20_crypto_sign( ringct20_signature_t *sig, const unsigned char *m, uns free(S); free(u); - for(int i = 0; i < p->wLen; ++i) + for(uint32_t i = 0; i < p->wLen; ++i) free(t[i]); free(t); @@ -254,14 +256,14 @@ int ringct20_crypto_sign_open( const unsigned char * msg, const unsigned long lo poly_ringct20 c1; poly_ringct20** t;//[w][M]//TOCORRECT to *t; t = malloc(p->wLen*sizeof(poly_ringct20*)); - for(int i = 0; i < p->wLen; ++i) + for(uint32_t i = 0; i < p->wLen; ++i) t[i] = malloc(p->M*p->POLY_RINGCT20_SIZE); ringct20_unpack_sig(sig->sig_data,aList,&c1, t, &h, p); //CRUTCH ADD test pbk in aList int pbk_in_aList = 0; poly_ringct20 a_pi; ringct20_unpack_pbk(public_key->data, &a_pi, p); - for(int i = 0; i < p->wLen; ++i) + for(uint32_t i = 0; i < p->wLen; ++i) { if(poly_equal(&a_pi, aList + i)) { @@ -278,7 +280,7 @@ int ringct20_crypto_sign_open( const unsigned char * msg, const unsigned long lo free(aList); - for(int i = 0; i < p->wLen; ++i) + for(uint32_t i = 0; i < p->wLen; ++i) free(t[i]); free(t); ringct20_params_free(p); @@ -345,6 +347,7 @@ void ringct20_private_and_public_keys_delete(ringct20_private_key_t *private_key free(public_key->data); public_key->data = NULL; } + int32_t ringct20_private_and_public_keys_init(ringct20_private_key_t *private_key, ringct20_public_key_t *public_key, ringct20_param_t *p){ unsigned char *f = NULL, *g = NULL; diff --git a/src/ringct20/poly.c b/src/ringct20/poly.c index cfb07a8af1bc0a0629ef634f23ca49ca4c1f14f6..82e7a2d85798dd2fe2cd674a2724346ad9dcdb91 100644 --- a/src/ringct20/poly.c +++ b/src/ringct20/poly.c @@ -1,3 +1,5 @@ +#include <stdio.h> + #include "poly.h" #include "ntt.h" #include "reduce.h" diff --git a/src/ringct20/poly.h b/src/ringct20/poly.h index 0073b2903d752215d8adc4b0189396b83b4e48c2..7c507b568d8e0ae46dbc17578dd684f141b3fbd0 100644 --- a/src/ringct20/poly.h +++ b/src/ringct20/poly.h @@ -2,6 +2,7 @@ #define POLY_H #include <stdint.h> +#include <stddef.h> #include "params.h" /* diff --git a/src/ringct20/ring.c b/src/ringct20/ring.c index 445936b3946a8c44cdbf91a1dd44e93d687d8a37..2c31403ecd039cad7760e271f4300c0351fb1747 100644 --- a/src/ringct20/ring.c +++ b/src/ringct20/ring.c @@ -77,7 +77,7 @@ void LRCT_KeyGen(poly_ringct20 *a, poly_ringct20 *A, poly_ringct20 *S, size_t mL poly_serial(a); } -void LRCT_SigGen(poly_ringct20 *c1, poly_ringct20 **t, poly_ringct20 *h, poly_ringct20 *A, poly_ringct20 *H, poly_ringct20 *S, poly_ringct20 *u, size_t mLen, poly_ringct20 *L, uint8_t w, uint8_t pai, unsigned char *msg, int msgLen) +void LRCT_SigGen(poly_ringct20 *c1, poly_ringct20 **t, poly_ringct20 *h, poly_ringct20 *A, poly_ringct20 *H, poly_ringct20 *S, poly_ringct20 *u, size_t mLen, poly_ringct20 *L, uint8_t w, uint8_t pai, const unsigned char *msg, int msgLen) { //H2q size_t i, j, k; @@ -228,7 +228,7 @@ void LRCT_SigGen(poly_ringct20 *c1, poly_ringct20 **t, poly_ringct20 *h, poly_ri free(tmp2q); } int LRCT_SigVer(const poly_ringct20 *c1, poly_ringct20 **t, poly_ringct20 *A, poly_ringct20 *H, size_t mLen, poly_ringct20 *h, poly_ringct20 *L, - uint8_t w, unsigned char *msg, int msgLen) + uint8_t w, const unsigned char *msg, int msgLen) { size_t i,k; poly_ringct20 *H2q = (poly_ringct20 *)malloc((mLen + 1) * sizeof(poly_ringct20)); diff --git a/src/ringct20/ring.h b/src/ringct20/ring.h index ea3a0cdc44d08465342b9e3b8f9817e3c3f33903..665110d5fa70dc3b3bb930a4271eccf0c07f6f74 100644 --- a/src/ringct20/ring.h +++ b/src/ringct20/ring.h @@ -19,9 +19,9 @@ void LRCT_Setup(poly_ringct20 *A, poly_ringct20 *H, size_t mLen); void LRCT_KeyGen(poly_ringct20 *a, poly_ringct20 *A, poly_ringct20 *S, size_t mLen); void LRCT_SigGen(poly_ringct20 *c1, poly_ringct20 **t, poly_ringct20 *h, poly_ringct20 *A, poly_ringct20 *H, poly_ringct20 *S, poly_ringct20 *u, size_t mLen, poly_ringct20 *L, uint8_t w, - uint8_t pai, unsigned char *msg, int msgLen); + uint8_t pai, const unsigned char *msg, int msgLen); int LRCT_SigVer(const poly_ringct20 *c1, poly_ringct20 **t, poly_ringct20 *A, poly_ringct20 *H, size_t mLen, poly_ringct20 *h, poly_ringct20 *L, - uint8_t w, unsigned char *msg, int msgLen); + uint8_t w, const unsigned char *msg, int msgLen); /////Single output trading scheme /* plan description: