@@ -151,6 +151,16 @@ AC_ARG_WITH([scalar], [AS_HELP_STRING([--with-scalar=64bit|32bit|auto],
151
151
AC_ARG_WITH ( [ asm] , [ AS_HELP_STRING ( [ --with-asm=x86_64|arm|no|auto]
152
152
[ Specify assembly optimizations to use. Default is auto (experimental: arm)] ) ] ,[ req_asm=$withval] , [ req_asm=auto] )
153
153
154
+ # Default is window size 16 (or window size 15 with endomorphism) which needs 1.375 MiB. */
155
+ AC_ARG_WITH ( [ ecmult-window] , [ AS_HELP_STRING ( [ --with-ecmult-window=SIZE|auto] ,
156
+ [ window size for ecmult precomputation for verification, specified as integer in range [ 3..24] .]
157
+ [ Larger values result in possibly better performance at the cost of an exponentially larger precomputed table.]
158
+ [ The table will store 2^(SIZE-2) * 64 bytes of data but can be larger in memory due]
159
+ [ to platform-specific padding and alignment. "auto" is a reasonable setting for desktop machines]
160
+ [ (currently 15 if the endomorphism optimization is disabled and 16 if it is enabled). [ default=auto] ]
161
+ ) ] ,
162
+ [ req_ecmult_window=$withval] , [ req_ecmult_window=auto] )
163
+
154
164
AC_CHECK_TYPES ( [ __int128] )
155
165
156
166
if test x"$enable_coverage" = x"yes"; then
@@ -387,6 +397,32 @@ case $set_scalar in
387
397
;;
388
398
esac
389
399
400
+ # set ecmult window size
401
+ if test x"$req_ecmult_window" = x"auto"; then
402
+ if test x"$use_endomorphism" = x"yes"; then
403
+ set_ecmult_window=16
404
+ else
405
+ set_ecmult_window=15
406
+ fi
407
+ else
408
+ set_ecmult_window=$req_ecmult_window
409
+ fi
410
+
411
+ error_window_size=[ 'window size for ecmult precomputation not an integer in range [ 3..24] or "auto"']
412
+ case $set_ecmult_window in
413
+ ''|*[ [ !0-9] ] *)
414
+ # no valid integer
415
+ AC_MSG_ERROR ( $error_window_size )
416
+ ;;
417
+ *)
418
+ if test "$set_ecmult_window" -lt 3 -o "$set_ecmult_window" -gt 24 ; then
419
+ # not in range
420
+ AC_MSG_ERROR ( $error_window_size )
421
+ fi
422
+ AC_DEFINE_UNQUOTED ( ECMULT_WINDOW_SIZE , $set_ecmult_window , [ Set window size for ecmult precomputation] )
423
+ ;;
424
+ esac
425
+
390
426
if test x"$use_tests" = x"yes"; then
391
427
SECP_OPENSSL_CHECK
392
428
if test x"$has_openssl_ec" = x"yes"; then
@@ -516,6 +552,7 @@ echo " asm = $set_asm"
516
552
echo " bignum = $set_bignum"
517
553
echo " field = $set_field"
518
554
echo " scalar = $set_scalar"
555
+ echo " ecmult window size = $set_ecmult_window"
519
556
echo
520
557
echo " CC = $CC"
521
558
echo " CFLAGS = $CFLAGS"
0 commit comments