21
21
MAKEFLAGS : ' -j4'
22
22
BUILD : ' check'
23
23
# ## secp256k1 config
24
- ECMULTWINDOW : ' auto '
25
- ECMULTGENPRECISION : ' auto '
24
+ ECMULTWINDOW : 15
25
+ ECMULTGENKB : 86
26
26
ASM : ' no'
27
27
WIDEMUL : ' auto'
28
28
WITH_VALGRIND : ' yes'
31
31
EXPERIMENTAL : ' no'
32
32
ECDH : ' no'
33
33
RECOVERY : ' no'
34
+ EXTRAKEYS : ' no'
34
35
SCHNORRSIG : ' no'
35
36
ELLSWIFT : ' no'
37
+ SILENTPAYMENTS : ' no'
36
38
# ## test options
37
39
SECP256K1_TEST_ITERS :
38
40
BENCH : ' yes'
@@ -71,20 +73,20 @@ jobs:
71
73
matrix :
72
74
configuration :
73
75
- env_vars : { WIDEMUL: 'int64', RECOVERY: 'yes' }
74
- - env_vars : { WIDEMUL: 'int64', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' }
76
+ - env_vars : { WIDEMUL: 'int64', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS : 'yes' }
75
77
- env_vars : { WIDEMUL: 'int128' }
76
- - env_vars : { WIDEMUL: 'int128_struct', ELLSWIFT: 'yes' }
77
- - env_vars : { WIDEMUL: 'int128', RECOVERY: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' }
78
- - env_vars : { WIDEMUL: 'int128', ECDH: 'yes', SCHNORRSIG: 'yes' }
79
- - env_vars : { WIDEMUL: 'int128', ASM: 'x86_64', ELLSWIFT: 'yes' }
80
- - env_vars : { RECOVERY: 'yes', SCHNORRSIG: 'yes' }
81
- - env_vars : { CTIMETESTS: 'no', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', CPPFLAGS: '-DVERIFY' }
78
+ - env_vars : { WIDEMUL: 'int128_struct', ELLSWIFT: 'yes' }
79
+ - env_vars : { WIDEMUL: 'int128', RECOVERY: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' }
80
+ - env_vars : { WIDEMUL: 'int128', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', SILENTPAYMENTS : 'yes' }
81
+ - env_vars : { WIDEMUL: 'int128', ASM: 'x86_64', ELLSWIFT: 'yes' }
82
+ - env_vars : { RECOVERY: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes' }
83
+ - env_vars : { CTIMETESTS: 'no', RECOVERY: 'yes', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', SILENTPAYMENTS : 'yes', CPPFLAGS: '-DVERIFY' }
82
84
- env_vars : { BUILD: 'distcheck', WITH_VALGRIND: 'no', CTIMETESTS: 'no', BENCH: 'no' }
83
85
- env_vars : { CPPFLAGS: '-DDETERMINISTIC' }
84
86
- env_vars : { CFLAGS: '-O0', CTIMETESTS: 'no' }
85
- - env_vars : { CFLAGS: '-O1', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' }
86
- - env_vars : { ECMULTGENPRECISION : 2, ECMULTWINDOW: 2 }
87
- - env_vars : { ECMULTGENPRECISION: 8 , ECMULTWINDOW: 4 }
87
+ - env_vars : { CFLAGS: '-O1', RECOVERY: 'yes', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS : 'yes' }
88
+ - env_vars : { ECMULTGENKB : 2, ECMULTWINDOW: 2 }
89
+ - env_vars : { ECMULTGENKB: 86 , ECMULTWINDOW: 4 }
88
90
cc :
89
91
- ' gcc'
90
92
- ' clang'
@@ -139,8 +141,10 @@ jobs:
139
141
HOST : ' i686-linux-gnu'
140
142
ECDH : ' yes'
141
143
RECOVERY : ' yes'
144
+ EXTRAKEYS : ' yes'
142
145
SCHNORRSIG : ' yes'
143
146
ELLSWIFT : ' yes'
147
+ SILENTPAYMENTS : ' yes'
144
148
CC : ${{ matrix.cc }}
145
149
146
150
steps :
@@ -183,8 +187,10 @@ jobs:
183
187
WITH_VALGRIND : ' no'
184
188
ECDH : ' yes'
185
189
RECOVERY : ' yes'
190
+ EXTRAKEYS : ' yes'
186
191
SCHNORRSIG : ' yes'
187
192
ELLSWIFT : ' yes'
193
+ SILENTPAYMENTS : ' yes'
188
194
CTIMETESTS : ' no'
189
195
190
196
steps :
@@ -234,8 +240,10 @@ jobs:
234
240
WITH_VALGRIND : ' no'
235
241
ECDH : ' yes'
236
242
RECOVERY : ' yes'
243
+ EXTRAKEYS : ' yes'
237
244
SCHNORRSIG : ' yes'
238
245
ELLSWIFT : ' yes'
246
+ SILENTPAYMENTS : ' yes'
239
247
CTIMETESTS : ' no'
240
248
241
249
steps :
@@ -279,8 +287,10 @@ jobs:
279
287
WITH_VALGRIND : ' no'
280
288
ECDH : ' yes'
281
289
RECOVERY : ' yes'
290
+ EXTRAKEYS : ' yes'
282
291
SCHNORRSIG : ' yes'
283
292
ELLSWIFT : ' yes'
293
+ SILENTPAYMENTS : ' yes'
284
294
CTIMETESTS : ' no'
285
295
286
296
strategy :
@@ -334,8 +344,10 @@ jobs:
334
344
WITH_VALGRIND : ' no'
335
345
ECDH : ' yes'
336
346
RECOVERY : ' yes'
347
+ EXTRAKEYS : ' yes'
337
348
SCHNORRSIG : ' yes'
338
349
ELLSWIFT : ' yes'
350
+ SILENTPAYMENTS : ' yes'
339
351
CTIMETESTS : ' no'
340
352
341
353
steps :
@@ -377,17 +389,19 @@ jobs:
377
389
configuration :
378
390
- env_vars : { CC: 'clang', ASM: 'auto' }
379
391
- env_vars : { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'auto' }
380
- - env_vars : { CC: 'clang', ASM: 'no', ECMULTGENPRECISION : 2, ECMULTWINDOW: 2 }
381
- - env_vars : { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'no', ECMULTGENPRECISION : 2, ECMULTWINDOW: 2 }
392
+ - env_vars : { CC: 'clang', ASM: 'no', ECMULTGENKB : 2, ECMULTWINDOW: 2 }
393
+ - env_vars : { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'no', ECMULTGENKB : 2, ECMULTWINDOW: 2 }
382
394
383
395
env :
384
396
# The `--error-exitcode` is required to make the test fail if valgrind found errors,
385
397
# otherwise it will return 0 (https://www.valgrind.org/docs/manual/manual-core.html).
386
398
WRAPPER_CMD : ' valgrind --error-exitcode=42'
387
399
ECDH : ' yes'
388
400
RECOVERY : ' yes'
401
+ EXTRAKEYS : ' yes'
389
402
SCHNORRSIG : ' yes'
390
403
ELLSWIFT : ' yes'
404
+ SILENTPAYMENTS : ' yes'
391
405
CTIMETESTS : ' no'
392
406
SECP256K1_TEST_ITERS : 2
393
407
@@ -431,14 +445,16 @@ jobs:
431
445
configuration :
432
446
- env_vars : { CC: 'clang', ASM: 'auto' }
433
447
- env_vars : { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'auto' }
434
- - env_vars : { CC: 'clang', ASM: 'no', ECMULTGENPRECISION : 2, ECMULTWINDOW: 2 }
435
- - env_vars : { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'no', ECMULTGENPRECISION : 2, ECMULTWINDOW: 2 }
448
+ - env_vars : { CC: 'clang', ASM: 'no', ECMULTGENKB : 2, ECMULTWINDOW: 2 }
449
+ - env_vars : { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'no', ECMULTGENKB : 2, ECMULTWINDOW: 2 }
436
450
437
451
env :
438
452
ECDH : ' yes'
439
453
RECOVERY : ' yes'
454
+ EXTRAKEYS : ' yes'
440
455
SCHNORRSIG : ' yes'
441
456
ELLSWIFT : ' yes'
457
+ SILENTPAYMENTS : ' yes'
442
458
CTIMETESTS : ' no'
443
459
CFLAGS : ' -fsanitize=undefined,address -g'
444
460
UBSAN_OPTIONS : ' print_stacktrace=1:halt_on_error=1'
@@ -485,18 +501,26 @@ jobs:
485
501
matrix :
486
502
configuration :
487
503
- env_vars :
504
+ CTIMETESTS : ' yes'
488
505
CFLAGS : ' -fsanitize=memory -fsanitize-recover=memory -g'
489
506
- env_vars :
490
- ECMULTGENPRECISION : 2
507
+ ECMULTGENKB : 2
491
508
ECMULTWINDOW : 2
509
+ CTIMETESTS : ' yes'
492
510
CFLAGS : ' -fsanitize=memory -fsanitize-recover=memory -g -O3'
511
+ - env_vars :
512
+ # -fsanitize-memory-param-retval is clang's default, but our build system disables it
513
+ # when ctime_tests when enabled.
514
+ CFLAGS : ' -fsanitize=memory -fsanitize-recover=memory -fsanitize-memory-param-retval -g'
515
+ CTIMETESTS : ' no'
493
516
494
517
env :
495
518
ECDH : ' yes'
496
519
RECOVERY : ' yes'
520
+ EXTRAKEYS : ' yes'
497
521
SCHNORRSIG : ' yes'
498
522
ELLSWIFT : ' yes'
499
- CTIMETESTS : ' yes'
523
+ SILENTPAYMENTS : ' yes'
500
524
CC : ' clang'
501
525
SECP256K1_TEST_ITERS : 32
502
526
ASM : ' no'
@@ -541,8 +565,10 @@ jobs:
541
565
WITH_VALGRIND : ' no'
542
566
ECDH : ' yes'
543
567
RECOVERY : ' yes'
568
+ EXTRAKEYS : ' yes'
544
569
SCHNORRSIG : ' yes'
545
570
ELLSWIFT : ' yes'
571
+ SILENTPAYMENTS : ' yes'
546
572
CTIMETESTS : ' no'
547
573
548
574
strategy :
@@ -585,10 +611,10 @@ jobs:
585
611
run : env
586
612
if : ${{ always() }}
587
613
588
- macos-native :
589
- name : " x86_64: macOS Monterey"
614
+ x86_64- macos-native :
615
+ name : " x86_64: macOS Monterey, Valgrind "
590
616
# See: https://github.com/actions/runner-images#available-images.
591
- runs-on : macos-12 # Use M1 once available https://github.com/github/roadmap/issues/528
617
+ runs-on : macos-12
592
618
593
619
env :
594
620
CC : ' clang'
@@ -599,15 +625,15 @@ jobs:
599
625
fail-fast : false
600
626
matrix :
601
627
env_vars :
602
- - { WIDEMUL: 'int64', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' }
603
- - { WIDEMUL: 'int128_struct', ECMULTGENPRECISION : 2, ECMULTWINDOW: 4 }
604
- - { WIDEMUL: 'int128', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' }
628
+ - { WIDEMUL: 'int64', RECOVERY: 'yes', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS : 'yes' }
629
+ - { WIDEMUL: 'int128_struct', ECMULTGENKB : 2, ECMULTWINDOW: 4 }
630
+ - { WIDEMUL: 'int128', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS : 'yes' }
605
631
- { WIDEMUL: 'int128', RECOVERY: 'yes' }
606
- - { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' }
607
- - { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', CC: 'gcc' }
608
- - { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', WRAPPER_CMD: 'valgrind --error-exitcode=42', SECP256K1_TEST_ITERS: 2 }
609
- - { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', CC: 'gcc', WRAPPER_CMD: 'valgrind --error-exitcode=42', SECP256K1_TEST_ITERS: 2 }
610
- - { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', CPPFLAGS: '-DVERIFY', CTIMETESTS: 'no' }
632
+ - { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS : 'yes' }
633
+ - { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS : 'yes', CC: 'gcc' }
634
+ - { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS : 'yes', WRAPPER_CMD: 'valgrind --error-exitcode=42', SECP256K1_TEST_ITERS: 2 }
635
+ - { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS : 'yes', CC: 'gcc', WRAPPER_CMD: 'valgrind --error-exitcode=42', SECP256K1_TEST_ITERS: 2 }
636
+ - { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', CPPFLAGS: '-DVERIFY', CTIMETESTS: 'no' }
611
637
- BUILD : ' distcheck'
612
638
613
639
steps :
@@ -616,7 +642,7 @@ jobs:
616
642
617
643
- name : Install Homebrew packages
618
644
run : |
619
- brew install automake libtool gcc
645
+ brew install --quiet automake libtool gcc
620
646
ln -s $(brew --prefix gcc)/bin/gcc-?? /usr/local/bin/gcc
621
647
622
648
- name : Install and cache Valgrind
@@ -644,6 +670,62 @@ jobs:
644
670
run : env
645
671
if : ${{ always() }}
646
672
673
+ arm64-macos-native :
674
+ name : " ARM64: macOS Sonoma"
675
+ # See: https://github.com/actions/runner-images#available-images.
676
+ runs-on : macos-14
677
+
678
+ env :
679
+ CC : ' clang'
680
+ HOMEBREW_NO_AUTO_UPDATE : 1
681
+ HOMEBREW_NO_INSTALL_CLEANUP : 1
682
+ WITH_VALGRIND : ' no'
683
+ CTIMETESTS : ' no'
684
+
685
+ strategy :
686
+ fail-fast : false
687
+ matrix :
688
+ env_vars :
689
+ - { WIDEMUL: 'int64', RECOVERY: 'yes', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' }
690
+ - { WIDEMUL: 'int128_struct', ECMULTGENPRECISION: 2, ECMULTWINDOW: 4 }
691
+ - { WIDEMUL: 'int128', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' }
692
+ - { WIDEMUL: 'int128', RECOVERY: 'yes' }
693
+ - { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes' }
694
+ - { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', CC: 'gcc' }
695
+ - { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', ELLSWIFT: 'yes', CPPFLAGS: '-DVERIFY' }
696
+ - BUILD : ' distcheck'
697
+
698
+ steps :
699
+ - name : Checkout
700
+ uses : actions/checkout@v4
701
+
702
+ - name : Install Homebrew packages
703
+ run : |
704
+ brew install --quiet automake libtool gcc
705
+ ln -s $(brew --prefix gcc)/bin/gcc-?? /usr/local/bin/gcc
706
+
707
+ - name : CI script
708
+ env : ${{ matrix.env_vars }}
709
+ run : ./ci/ci.sh
710
+
711
+ - run : cat tests.log || true
712
+ if : ${{ always() }}
713
+ - run : cat noverify_tests.log || true
714
+ if : ${{ always() }}
715
+ - run : cat exhaustive_tests.log || true
716
+ if : ${{ always() }}
717
+ - run : cat ctime_tests.log || true
718
+ if : ${{ always() }}
719
+ - run : cat bench.log || true
720
+ if : ${{ always() }}
721
+ - run : cat config.log || true
722
+ if : ${{ always() }}
723
+ - run : cat test_env.log || true
724
+ if : ${{ always() }}
725
+ - name : CI env
726
+ run : env
727
+ if : ${{ always() }}
728
+
647
729
win64-native :
648
730
name : ${{ matrix.configuration.job_name }}
649
731
# See: https://github.com/actions/runner-images#available-images.
@@ -716,8 +798,10 @@ jobs:
716
798
WERROR_CFLAGS :
717
799
ECDH : ' yes'
718
800
RECOVERY : ' yes'
801
+ EXTRAKEYS : ' yes'
719
802
SCHNORRSIG : ' yes'
720
803
ELLSWIFT : ' yes'
804
+ SILENTPAYMENTS : ' yes'
721
805
722
806
steps :
723
807
- name : Checkout
@@ -802,5 +886,5 @@ jobs:
802
886
CI_BUILD : ${{ runner.temp }}/${{ github.run_id }}${{ github.action }}/build
803
887
CI_INSTALL : ${{ runner.temp }}/${{ github.run_id }}${{ github.action }}/install
804
888
run : |
805
- cmake -B ${{ env.CI_BUILD }} -DCMAKE_INSTALL_PREFIX=${{ env.CI_INSTALL }} && cmake --build ${{ env.CI_BUILD }} --target install && ls -RlAh ${{ env.CI_INSTALL }}
889
+ cmake -B ${{ env.CI_BUILD }} -DCMAKE_INSTALL_PREFIX=${{ env.CI_INSTALL }} && cmake --build ${{ env.CI_BUILD }} && cmake -- install ${{ env.CI_BUILD }} && ls -RlAh ${{ env.CI_INSTALL }}
806
890
gcc -o ecdsa examples/ecdsa.c -I ${{ env.CI_INSTALL }}/include -L ${{ env.CI_INSTALL }}/lib*/ -l secp256k1 -Wl,-rpath,"${{ env.CI_INSTALL }}/lib",-rpath,"${{ env.CI_INSTALL }}/lib64" && ./ecdsa
0 commit comments