| @@ -462,7 +462,7 @@ goldilocks_verify ( | |||
| linear_combo_var_fixed_vt( pk_text, | |||
| challenge, 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 ); | |||
| @@ -70,52 +70,6 @@ constant_time_lookup_tw_niels ( | |||
| 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 | |||
| convert_to_signed_window_form ( | |||
| word_t *out, | |||
| @@ -180,7 +134,7 @@ scalarmul ( | |||
| inv = (bits>>(WINDOW-1))-1; | |||
| 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); | |||
| convert_tw_pniels_to_tw_extensible(working, pn); | |||
| @@ -200,7 +154,7 @@ scalarmul ( | |||
| inv = (bits>>(WINDOW-1))-1; | |||
| 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); | |||
| add_tw_pniels_to_tw_extensible(working, pn); | |||
| } | |||
| @@ -355,7 +309,7 @@ scalarmul_fixed_base ( | |||
| tab ^= invert; | |||
| 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); | |||
| if (i||j) { | |||
| 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; | |||
| 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; | |||
| for (i=0; i<1<<tbits; i++) { | |||
| @@ -359,7 +359,7 @@ int main(int argc, char **argv) { | |||
| when = now(); | |||
| for (i=0; i<nbase/10; i++) { | |||
| 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; | |||
| printf("edwards vt6: %5.1fµs\n", when * 1e6 / i); | |||
| @@ -374,7 +374,7 @@ int main(int argc, char **argv) { | |||
| when = now(); | |||
| for (i=0; i<nbase/10; i++) { | |||
| 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; | |||
| printf("edwards vt4: %5.1fµs\n", when * 1e6 / i); | |||
| @@ -389,7 +389,7 @@ int main(int argc, char **argv) { | |||
| when = now(); | |||
| for (i=0; i<nbase/10; i++) { | |||
| 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; | |||
| 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++) { | |||
| q448_randomize(&crand, sk); | |||
| 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; | |||
| 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); | |||
| 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); | |||
| serialize_extensible(c, &exta); | |||
| @@ -89,7 +89,7 @@ single_scalarmul_compatibility_test ( | |||
| 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); | |||
| } | |||
| @@ -193,7 +193,7 @@ single_linear_combo_test ( | |||
| /* use the dedicated wNAF linear combo algorithm */ | |||
| 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); | |||
| /* use the dedicated combs algorithm */ | |||