| @@ -462,7 +462,7 @@ goldilocks_verify ( | |||||
| linear_combo_var_fixed_vt( pk_text, | linear_combo_var_fixed_vt( pk_text, | ||||
| challenge, GOLDI_SCALAR_BITS, | challenge, GOLDI_SCALAR_BITS, | ||||
| s, GOLDI_SCALAR_BITS, | s, GOLDI_SCALAR_BITS, | ||||
| goldilocks_global.wnafs, WNAF_PRECMP_BITS ); | |||||
| (const tw_niels_a_t*)goldilocks_global.wnafs, WNAF_PRECMP_BITS ); | |||||
| untwist_and_double_and_serialize( pk, pk_text ); | untwist_and_double_and_serialize( pk, pk_text ); | ||||
| @@ -70,52 +70,6 @@ constant_time_lookup_tw_niels ( | |||||
| constant_time_lookup(out,in,sizeof(*out),nin,idx); | constant_time_lookup(out,in,sizeof(*out),nin,idx); | ||||
| } | } | ||||
| /* | |||||
| static __inline__ void | |||||
| constant_time_lookup_tw_pniels ( | |||||
| tw_pniels_a_t out, | |||||
| const tw_pniels_a_t in, | |||||
| int nin, | |||||
| int idx | |||||
| ) { | |||||
| big_register_t big_one = br_set_to_mask(1), big_i = br_set_to_mask(idx); | |||||
| big_register_t *o = (big_register_t *)out; | |||||
| const big_register_t *i = (const big_register_t *)in; | |||||
| int j; | |||||
| unsigned int k; | |||||
| really_memset(out, 0, sizeof(*out)); | |||||
| for (j=0; j<nin; j++, big_i-=big_one) { | |||||
| big_register_t mask = br_is_zero(big_i); | |||||
| for (k=0; k<sizeof(*out)/sizeof(*o); k++) { | |||||
| o[k] |= mask & i[k+j*sizeof(*out)/sizeof(*o)]; | |||||
| } | |||||
| } | |||||
| } | |||||
| static __inline__ void | |||||
| constant_time_lookup_tw_niels ( | |||||
| tw_niels_a_t out, | |||||
| const tw_niels_a_t in, | |||||
| int nin, | |||||
| int idx | |||||
| ) { | |||||
| big_register_t big_one = br_set_to_mask(1), big_i = br_set_to_mask(idx); | |||||
| big_register_t *o = (big_register_t *)out; | |||||
| const big_register_t *i = (const big_register_t *)in; | |||||
| int j; | |||||
| unsigned int k; | |||||
| really_memset(out, 0, sizeof(*out)); | |||||
| for (j=0; j<nin; j++, big_i-=big_one) { | |||||
| big_register_t mask = br_is_zero(big_i); | |||||
| for (k=0; k<sizeof(*out)/sizeof(*o); k++) { | |||||
| o[k] |= mask & i[k+j*sizeof(*out)/sizeof(*o)]; | |||||
| } | |||||
| } | |||||
| } | |||||
| */ | |||||
| static void | static void | ||||
| convert_to_signed_window_form ( | convert_to_signed_window_form ( | ||||
| word_t *out, | word_t *out, | ||||
| @@ -180,7 +134,7 @@ scalarmul ( | |||||
| inv = (bits>>(WINDOW-1))-1; | inv = (bits>>(WINDOW-1))-1; | ||||
| bits ^= inv; | bits ^= inv; | ||||
| constant_time_lookup_tw_pniels(pn, multiples, NTABLE, bits & WINDOW_T_MASK); | |||||
| constant_time_lookup_tw_pniels(pn, (const tw_pniels_a_t*)multiples, NTABLE, bits & WINDOW_T_MASK); | |||||
| cond_negate_tw_pniels(pn, inv); | cond_negate_tw_pniels(pn, inv); | ||||
| convert_tw_pniels_to_tw_extensible(working, pn); | convert_tw_pniels_to_tw_extensible(working, pn); | ||||
| @@ -200,7 +154,7 @@ scalarmul ( | |||||
| inv = (bits>>(WINDOW-1))-1; | inv = (bits>>(WINDOW-1))-1; | ||||
| bits ^= inv; | bits ^= inv; | ||||
| constant_time_lookup_tw_pniels(pn, multiples, NTABLE, bits & WINDOW_T_MASK); | |||||
| constant_time_lookup_tw_pniels(pn, (const tw_pniels_a_t*)multiples, NTABLE, bits & WINDOW_T_MASK); | |||||
| cond_negate_tw_pniels(pn, inv); | cond_negate_tw_pniels(pn, inv); | ||||
| add_tw_pniels_to_tw_extensible(working, pn); | add_tw_pniels_to_tw_extensible(working, pn); | ||||
| } | } | ||||
| @@ -355,7 +309,7 @@ scalarmul_fixed_base ( | |||||
| tab ^= invert; | tab ^= invert; | ||||
| tab &= (1<<(t-1)) - 1; | tab &= (1<<(t-1)) - 1; | ||||
| constant_time_lookup_tw_niels(ni, table->table + (j<<(t-1)), 1<<(t-1), tab); | |||||
| constant_time_lookup_tw_niels(ni, (const tw_niels_a_t*)table->table + (j<<(t-1)), 1<<(t-1), tab); | |||||
| cond_negate_tw_niels(ni, invert); | cond_negate_tw_niels(ni, invert); | ||||
| if (i||j) { | if (i||j) { | ||||
| add_tw_niels_to_tw_extensible(out, ni); | add_tw_niels_to_tw_extensible(out, ni); | ||||
| @@ -582,7 +536,7 @@ precompute_fixed_base ( | |||||
| } | } | ||||
| } | } | ||||
| field_simultaneous_invert(zis, zs, n<<(t-1)); | |||||
| field_simultaneous_invert(zis, (const field_a_t*)zs, n<<(t-1)); | |||||
| field_a_t product; | field_a_t product; | ||||
| for (i=0; i<n<<(t-1); i++) { | for (i=0; i<n<<(t-1); i++) { | ||||
| @@ -670,7 +624,7 @@ precompute_fixed_base_wnaf ( | |||||
| } | } | ||||
| } | } | ||||
| field_simultaneous_invert(zis, zs, 1<<tbits); | |||||
| field_simultaneous_invert(zis, (const field_a_t *)zs, 1<<tbits); | |||||
| field_a_t product; | field_a_t product; | ||||
| for (i=0; i<1<<tbits; i++) { | for (i=0; i<1<<tbits; i++) { | ||||
| @@ -359,7 +359,7 @@ int main(int argc, char **argv) { | |||||
| when = now(); | when = now(); | ||||
| for (i=0; i<nbase/10; i++) { | for (i=0; i<nbase/10; i++) { | ||||
| q448_randomize(&crand, sk); | q448_randomize(&crand, sk); | ||||
| scalarmul_fixed_base_wnaf_vt(&ext,sk,SCALAR_BITS,wnaft,6); | |||||
| scalarmul_fixed_base_wnaf_vt(&ext,sk,SCALAR_BITS,(const tw_niels_a_t*)wnaft,6); | |||||
| } | } | ||||
| when = now() - when; | when = now() - when; | ||||
| printf("edwards vt6: %5.1fµs\n", when * 1e6 / i); | printf("edwards vt6: %5.1fµs\n", when * 1e6 / i); | ||||
| @@ -374,7 +374,7 @@ int main(int argc, char **argv) { | |||||
| when = now(); | when = now(); | ||||
| for (i=0; i<nbase/10; i++) { | for (i=0; i<nbase/10; i++) { | ||||
| q448_randomize(&crand, sk); | q448_randomize(&crand, sk); | ||||
| scalarmul_fixed_base_wnaf_vt(&ext,sk,SCALAR_BITS,wnaft,4); | |||||
| scalarmul_fixed_base_wnaf_vt(&ext,sk,SCALAR_BITS,(const tw_niels_a_t*)wnaft,4); | |||||
| } | } | ||||
| when = now() - when; | when = now() - when; | ||||
| printf("edwards vt4: %5.1fµs\n", when * 1e6 / i); | printf("edwards vt4: %5.1fµs\n", when * 1e6 / i); | ||||
| @@ -389,7 +389,7 @@ int main(int argc, char **argv) { | |||||
| when = now(); | when = now(); | ||||
| for (i=0; i<nbase/10; i++) { | for (i=0; i<nbase/10; i++) { | ||||
| q448_randomize(&crand, sk); | q448_randomize(&crand, sk); | ||||
| scalarmul_fixed_base_wnaf_vt(&ext,sk,SCALAR_BITS,wnaft,5); | |||||
| scalarmul_fixed_base_wnaf_vt(&ext,sk,SCALAR_BITS,(const tw_niels_a_t*)wnaft,5); | |||||
| } | } | ||||
| when = now() - when; | when = now() - when; | ||||
| printf("edwards vt5: %5.1fµs\n", when * 1e6 / i); | printf("edwards vt5: %5.1fµs\n", when * 1e6 / i); | ||||
| @@ -398,7 +398,7 @@ int main(int argc, char **argv) { | |||||
| for (i=0; i<nbase/10; i++) { | for (i=0; i<nbase/10; i++) { | ||||
| q448_randomize(&crand, sk); | q448_randomize(&crand, sk); | ||||
| q448_randomize(&crand, tk); | q448_randomize(&crand, tk); | ||||
| linear_combo_var_fixed_vt(&ext,sk,FIELD_BITS,tk,FIELD_BITS,wnaft,5); | |||||
| linear_combo_var_fixed_vt(&ext,sk,FIELD_BITS,tk,FIELD_BITS,(const tw_niels_a_t*)wnaft,5); | |||||
| } | } | ||||
| when = now() - when; | when = now() - when; | ||||
| printf("vt vf combo: %5.1fµs\n", when * 1e6 / i); | printf("vt vf combo: %5.1fµs\n", when * 1e6 / i); | ||||
| @@ -708,7 +708,7 @@ int main(int argc, char **argv) { | |||||
| serialize_extensible(b, &exta); | serialize_extensible(b, &exta); | ||||
| ignore_result(precompute_fixed_base_wnaf(wnaft,&exu,5)); | ignore_result(precompute_fixed_base_wnaf(wnaft,&exu,5)); | ||||
| linear_combo_var_fixed_vt(&ext,sk,FIELD_BITS,tk,FIELD_BITS,wnaft,5); | |||||
| linear_combo_var_fixed_vt(&ext,sk,FIELD_BITS,tk,FIELD_BITS,(const tw_niels_a_t*)wnaft,5); | |||||
| untwist_and_double(&exta,&exv); | untwist_and_double(&exta,&exv); | ||||
| serialize_extensible(c, &exta); | serialize_extensible(c, &exta); | ||||
| @@ -89,7 +89,7 @@ single_scalarmul_compatibility_test ( | |||||
| continue; | continue; | ||||
| } | } | ||||
| scalarmul_fixed_base_wnaf_vt(&work, scalar, nbits, pre, i); | |||||
| scalarmul_fixed_base_wnaf_vt(&work, scalar, nbits, (const tw_niels_a_t*)pre, i); | |||||
| untwist_and_double_and_serialize(wout[i], &work); | untwist_and_double_and_serialize(wout[i], &work); | ||||
| } | } | ||||
| @@ -193,7 +193,7 @@ single_linear_combo_test ( | |||||
| /* use the dedicated wNAF linear combo algorithm */ | /* use the dedicated wNAF linear combo algorithm */ | ||||
| copy_tw_extensible(&working, &text1); | copy_tw_extensible(&working, &text1); | ||||
| linear_combo_var_fixed_vt(&working, scalar1, nbits1, scalar2, nbits2, wnaf, 5); | |||||
| linear_combo_var_fixed_vt(&working, scalar1, nbits1, scalar2, nbits2, (const tw_niels_a_t*)wnaf, 5); | |||||
| untwist_and_double_and_serialize(result_wnaf, &working); | untwist_and_double_and_serialize(result_wnaf, &working); | ||||
| /* use the dedicated combs algorithm */ | /* use the dedicated combs algorithm */ | ||||