Skip to content

Commit 5fe435c

Browse files
fanquakejanus
authored andcommitted
Squashed 'src/secp256k1/' changes from 199d27cea3..efe85c70a2
efe85c70a2 Merge bitcoin-core/secp256k1#1466: release cleanup: bump version after 0.4.1 4b2e06f460 release cleanup: bump version after 0.4.1 1ad5185cd4 Merge bitcoin-core/secp256k1#1465: release: prepare for 0.4.1 672053d801 release: prepare for 0.4.1 1a81df826e Merge bitcoin-core/secp256k1#1380: Add ABI checking tool for release process 74a4d974d5 doc: Add ABI checking with `check-abi.sh` to the Release Process e7f830e32c Add `tools/check-abi.sh` 77af1da9f6 Merge bitcoin-core/secp256k1#1455: doc: improve secp256k1_fe_set_b32_mod doc 3928b7c383 doc: improve secp256k1_fe_set_b32_mod doc 5e9a4d7aec Merge bitcoin-core/secp256k1#990: Add comment on length checks when parsing ECDSA sigs 4197d667ec Merge bitcoin-core/secp256k1#1431: Add CONTRIBUTING.md 0e5ea62207 CONTRIBUTING: add some coding and style conventions e2c9888eee Merge bitcoin-core/secp256k1#1451: changelog: add entry for "field: Remove x86_64 asm" d2e36a2b81 changelog: add entry for "field: Remove x86_64 asm" 1a432cb982 README: update first sentence 0922a047fb docs: move coverage report instructions to CONTRIBUTING 76880e4015 Add CONTRIBUTING.md including scope and guidelines for new code d3e29db8bb Merge bitcoin-core/secp256k1#1450: Add group.h ge/gej equality functions 04af0ba162 Replace ge_equals_ge[,j] calls with group.h equality calls 60525f6c14 Add unit tests for group.h equality functions a47cd97d51 Add group.h ge/gej equality functions 10e6d29b60 Merge bitcoin-core/secp256k1#1446: field: Remove x86_64 asm 07687e811d Merge bitcoin-core/secp256k1#1393: Implement new policy for VERIFY_CHECK and #ifdef VERIFY (issue #1381) bb4672342e remove VERIFY_SETUP define a3a3e11acd remove unneeded VERIFY_SETUP uses in ECMULT_CONST_TABLE_GET_GE macro a0fb68a2e7 introduce and use SECP256K1_SCALAR_VERIFY macro cf25c86d05 introduce and use SECP256K1_{FE,GE,GEJ}_VERIFY macros 5d89bc031b remove superfluous `#ifdef VERIFY`/`#endif` preprocessor conditions c2688f8de9 redefine VERIFY_CHECK to empty in production (non-VERIFY) mode 5814d8485c Merge bitcoin-core/secp256k1#1438: correct assertion for secp256k1_fe_mul_inner c1b4966410 Merge bitcoin-core/secp256k1#1445: bench: add --help option to bench_internal f07cead0ca build: Don't call assembly an optimization 2f0762fa8f field: Remove x86_64 asm 1ddd76af0a bench: add --help option to bench_internal e72103932d Merge bitcoin-core/secp256k1#1441: asm: add .note.GNU-stack section for non-exec stack ea47c82e01 Merge bitcoin-core/secp256k1#1442: Return temporaries to being unsigned in secp256k1_fe_sqr_inner dcdda31f2c Tighten secp256k1_fe_mul_inner's VERIFY_BITS checks 10271356c8 Return temporaries to being unsigned in secp256k1_fe_sqr_inner 33dc7e4d3e asm: add .note.GNU-stack section for non-exec stack c891c5c2f4 Merge bitcoin-core/secp256k1#1437: ci: Ignore internal errors of snapshot compilers 8185e72d29 ci: Ignore internal errors in snapshot compilers 40f50d0fbd Merge bitcoin-core/secp256k1#1184: Signed-digit based ecmult_const algorithm 8e2a5fe908 correct assertion for secp256k1_fe_mul_inner 355bbdf38a Add changelog entry for signed-digit ecmult_const algorithm 21f49d9bec Remove unused secp256k1_scalar_shr_int 115fdc7232 Remove unused secp256k1_wnaf_const aa9f3a3c00 ecmult_const: add/improve tests 4d16e90111 Signed-digit based ecmult_const algorithm ba523be067 make SECP256K1_SCALAR_CONST reduce modulo exhaustive group order 2140da9cd5 Add secp256k1_scalar_half for halving scalars (+ tests/benchmarks). 1f1bb78b7f Merge bitcoin-core/secp256k1#1430: README: remove CI badge 5dab0baa80 README: remove CI badge b314cf2833 Merge bitcoin-core/secp256k1#1426: ci/cirrus: Add native ARM64 jobs fa4d6c76b6 ci/cirrus: Add native ARM64 persistent workers ee7aaf213e Merge bitcoin-core/secp256k1#1395: tests: simplify `random_fe_non_zero` (remove loop limit and unneeded normalize) ba9cb6f378 Merge bitcoin-core/secp256k1#1424: ci: Bump major versions for docker actions d9d80fd155 ci: Bump major versions for docker actions 4fd00f4bfe Merge bitcoin-core/secp256k1#1422: cmake: Install `libsecp256k1.pc` file 421d84855a ci: Align Autotools/CMake `CI_INSTALL` directory names 9f005c60d6 cmake: Install `libsecp256k1.pc` file 2262d0eaab ci/cirrus: Bring back skeleton .cirrus.yml without jobs b10ddd2bd2 Merge bitcoin-core/secp256k1#1416: doc: Align documented scripts with CI ones 49be5be9e8 Merge bitcoin-core/secp256k1#1390: tests: Replace counting_illegal_callbacks with CHECK_ILLEGAL_VOID cbf3053ff1 Merge bitcoin-core/secp256k1#1417: release cleanup: bump version after 0.4.0 9b118bc7fb release cleanup: bump version after 0.4.0 70303643cf tests: add CHECK_ERROR_VOID and use it in scratch tests f8d7ea68df tests: Replace counting_illegal_callbacks with CHECK_ILLEGAL_VOID b0f7bfedc9 doc: Do not mention soname in CHANGELOG.md "ABI Compatibility" section bd9d98d353 doc: Align documented scripts with CI ones a1d52e3e12 tests: remove unnecessary test in run_ec_pubkey_parse_test 875b0ada25 tests: remove unnecessary set_illegal_callback c45b7c4fbb refactor: introduce testutil.h (deduplicate `random_fe_`, `ge_equals_` helpers) dc5514144f tests: simplify `random_fe_non_zero` (remove loop limit and unneeded normalize) e02f313b1f Add comment on length checks when parsing ECDSA sigs git-subtree-dir: src/secp256k1 git-subtree-split: efe85c70a2e357e3605a8901a9662295bae1001f
1 parent b60191a commit 5fe435c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1830
-2935
lines changed

.cirrus.yml

+84-198
Original file line numberDiff line numberDiff line change
@@ -1,209 +1,95 @@
1-
env: # Global defaults
1+
env:
2+
### cirrus config
23
CIRRUS_CLONE_DEPTH: 1
3-
PACKAGE_MANAGER_INSTALL: "apt-get update && apt-get install -y"
4-
MAKEJOBS: "-j10"
5-
TEST_RUNNER_PORT_MIN: "14000" # Must be larger than 12321, which is used for the http cache. See https://cirrus-ci.org/guide/writing-tasks/#http-cache
6-
CI_FAILFAST_TEST_LEAVE_DANGLING: "1" # Cirrus CI does not care about dangling processes and setting this variable avoids killing the CI script itself on error
7-
CCACHE_MAXSIZE: "200M"
8-
CCACHE_DIR: "/tmp/ccache_dir"
9-
CCACHE_NOHASHDIR: "1" # Debug info might contain a stale path if the build dir changes, but this is fine
10-
11-
# https://cirrus-ci.org/guide/persistent-workers/
12-
#
13-
# It is possible to select a specific persistent worker by label. Refer to the
14-
# Cirrus CI docs for more details.
15-
#
16-
# Generally, a persistent worker must run Ubuntu 23.04+ or Debian 12+.
17-
# Specifically,
18-
# - apt-get is required due to PACKAGE_MANAGER_INSTALL
19-
# - podman-docker-4.1+ is required due to the use of `podman` when
20-
# RESTART_CI_DOCKER_BEFORE_RUN is set and 4.1+ due to the bugfix in 4.1
21-
# (https://github.com/bitcoin/bitcoin/pull/21652#issuecomment-1657098200)
22-
# - The ./ci/ depedencies (with cirrus-cli) should be installed:
23-
#
24-
# ```
25-
# apt update && apt install screen python3 bash podman-docker curl -y && curl -L -o cirrus "https://github.com/cirruslabs/cirrus-cli/releases/latest/download/cirrus-linux-$(dpkg --print-architecture)" && mv cirrus /usr/local/bin/cirrus && chmod +x /usr/local/bin/cirrus
26-
# ```
27-
#
28-
# - There are no strict requirements on the hardware, because having less CPUs
29-
# runs the same CI script (maybe slower). To avoid rare and intermittent OOM
30-
# due to short memory usage spikes, it is recommended to add (and persist)
31-
# swap:
32-
#
33-
# ```
34-
# fallocate -l 16G /swapfile_ci && chmod 600 /swapfile_ci && mkswap /swapfile_ci && swapon /swapfile_ci && ( echo '/swapfile_ci none swap sw 0 0' | tee -a /etc/fstab )
35-
# ```
36-
#
37-
# - To register the persistent worker, open a `screen` session and run:
38-
#
39-
# ```
40-
# RESTART_CI_DOCKER_BEFORE_RUN=1 screen cirrus worker run --labels type=todo_fill_in_type --token todo_fill_in_token
41-
# ```
42-
#
43-
# The following specific types should exist, with the following requirements:
44-
# - small: For an x86_64 machine, recommended to have 2 CPUs and 8 GB of memory.
45-
# - medium: For an x86_64 machine, recommended to have 4 CPUs and 16 GB of memory.
46-
# - noble: For a machine running the Linux kernel shipped with exaclty Ubuntu Noble 24.04. The machine is recommended to have 4 CPUs and 16 GB of memory.
47-
# - arm64: For an aarch64 machine, recommended to have 2 CPUs and 8 GB of memory.
48-
49-
# https://cirrus-ci.org/guide/tips-and-tricks/#sharing-configuration-between-tasks
50-
filter_template: &FILTER_TEMPLATE
51-
skip: $CIRRUS_REPO_FULL_NAME == "bitcoin-core/gui" && $CIRRUS_PR == "" # No need to run on the read-only mirror, unless it is a PR. https://cirrus-ci.org/guide/writing-tasks/#conditional-task-execution
52-
stateful: false # https://cirrus-ci.org/guide/writing-tasks/#stateful-tasks
53-
54-
base_template: &BASE_TEMPLATE
55-
<< : *FILTER_TEMPLATE
56-
merge_base_script:
57-
# Unconditionally install git (used in fingerprint_script).
58-
- bash -c "$PACKAGE_MANAGER_INSTALL git"
59-
- if [ "$CIRRUS_PR" = "" ]; then exit 0; fi
60-
- git fetch --depth=1 $CIRRUS_REPO_CLONE_URL "pull/${CIRRUS_PR}/merge"
61-
- git checkout FETCH_HEAD # Use merged changes to detect silent merge conflicts
62-
# Also, the merge commit is used to lint COMMIT_RANGE="HEAD~..HEAD"
63-
64-
main_template: &MAIN_TEMPLATE
65-
timeout_in: 120m # https://cirrus-ci.org/faq/#instance-timed-out
66-
ci_script:
67-
- ./ci/test_run_all.sh
68-
69-
global_task_template: &GLOBAL_TASK_TEMPLATE
70-
<< : *BASE_TEMPLATE
71-
<< : *MAIN_TEMPLATE
72-
73-
compute_credits_template: &CREDITS_TEMPLATE
74-
# https://cirrus-ci.org/pricing/#compute-credits
75-
# Only use credits for pull requests to the main repo
76-
use_compute_credits: $CIRRUS_REPO_FULL_NAME == 'bitcoin/bitcoin' && $CIRRUS_PR != ""
77-
78-
task:
79-
name: 'lint'
80-
<< : *BASE_TEMPLATE
81-
container:
82-
image: debian:bookworm
83-
cpu: 1
84-
memory: 1G
85-
# For faster CI feedback, immediately schedule the linters
86-
<< : *CREDITS_TEMPLATE
87-
test_runner_cache:
88-
folder: "/lint_test_runner"
89-
fingerprint_script: echo $CIRRUS_TASK_NAME $(git rev-parse HEAD:test/lint/test_runner)
90-
python_cache:
91-
folder: "/python_build"
92-
fingerprint_script: cat .python-version /etc/os-release
93-
unshallow_script:
94-
- git fetch --unshallow --no-tags
95-
lint_script:
96-
- ./ci/lint_run_all.sh
97-
98-
task:
99-
name: 'tidy'
100-
<< : *GLOBAL_TASK_TEMPLATE
101-
persistent_worker:
102-
labels:
103-
type: medium
104-
env:
105-
FILE_ENV: "./ci/test/00_setup_env_native_tidy.sh"
106-
107-
task:
108-
name: 'ARM, unit tests, no functional tests'
109-
<< : *GLOBAL_TASK_TEMPLATE
110-
persistent_worker:
111-
labels:
112-
type: arm64 # Use arm64 worker to sidestep qemu and avoid a slow CI: https://github.com/bitcoin/bitcoin/pull/28087#issuecomment-1649399453
113-
env:
114-
FILE_ENV: "./ci/test/00_setup_env_arm.sh"
115-
116-
task:
117-
name: 'Win64, unit tests, no gui tests, no functional tests'
118-
<< : *GLOBAL_TASK_TEMPLATE
119-
persistent_worker:
120-
labels:
121-
type: small
122-
env:
123-
FILE_ENV: "./ci/test/00_setup_env_win64.sh"
124-
125-
task:
126-
name: '32-bit CentOS, dash, gui'
127-
<< : *GLOBAL_TASK_TEMPLATE
128-
persistent_worker:
129-
labels:
130-
type: small
131-
env:
132-
FILE_ENV: "./ci/test/00_setup_env_i686_centos.sh"
133-
134-
task:
135-
name: 'previous releases, qt5 dev package and depends packages, DEBUG'
136-
<< : *GLOBAL_TASK_TEMPLATE
137-
persistent_worker:
138-
labels:
139-
type: small
140-
env:
141-
FILE_ENV: "./ci/test/00_setup_env_native_qt5.sh"
142-
143-
task:
144-
name: 'TSan, depends, gui'
145-
<< : *GLOBAL_TASK_TEMPLATE
146-
persistent_worker:
147-
labels:
148-
type: medium
149-
env:
150-
FILE_ENV: "./ci/test/00_setup_env_native_tsan.sh"
151-
152-
task:
153-
name: 'MSan, depends'
154-
<< : *GLOBAL_TASK_TEMPLATE
155-
persistent_worker:
156-
labels:
157-
type: small
158-
timeout_in: 300m # Use longer timeout for the *rare* case where a full build (llvm + msan + depends + ...) needs to be done.
159-
env:
160-
FILE_ENV: "./ci/test/00_setup_env_native_msan.sh"
161-
162-
task:
163-
name: 'ASan + LSan + UBSan + integer, no depends, USDT'
164-
enable_bpfcc_script:
165-
# In the image build step, no external environment variables are available,
166-
# so any settings will need to be written to the settings env file:
167-
- sed -i "s|\${CIRRUS_CI}|true|g" ./ci/test/00_setup_env_native_asan.sh
168-
<< : *GLOBAL_TASK_TEMPLATE
169-
persistent_worker:
170-
labels:
171-
type: noble # Must use this specific worker (needed for USDT functional tests)
172-
env:
173-
FILE_ENV: "./ci/test/00_setup_env_native_asan.sh"
174-
175-
task:
176-
name: 'fuzzer,address,undefined,integer, no depends'
177-
<< : *GLOBAL_TASK_TEMPLATE
178-
persistent_worker:
179-
labels:
180-
type: medium
181-
env:
182-
FILE_ENV: "./ci/test/00_setup_env_native_fuzz.sh"
183-
184-
task:
185-
name: 'multiprocess, i686, DEBUG'
186-
<< : *GLOBAL_TASK_TEMPLATE
187-
persistent_worker:
188-
labels:
189-
type: medium
190-
env:
191-
FILE_ENV: "./ci/test/00_setup_env_i686_multiprocess.sh"
4+
### compiler options
5+
HOST:
6+
WRAPPER_CMD:
7+
# Specific warnings can be disabled with -Wno-error=foo.
8+
# -pedantic-errors is not equivalent to -Werror=pedantic and thus not implied by -Werror according to the GCC manual.
9+
WERROR_CFLAGS: -Werror -pedantic-errors
10+
MAKEFLAGS: -j4
11+
BUILD: check
12+
### secp256k1 config
13+
ECMULTWINDOW: auto
14+
ECMULTGENPRECISION: auto
15+
ASM: no
16+
WIDEMUL: auto
17+
WITH_VALGRIND: yes
18+
EXTRAFLAGS:
19+
### secp256k1 modules
20+
EXPERIMENTAL: no
21+
ECDH: no
22+
RECOVERY: no
23+
SCHNORRSIG: no
24+
ELLSWIFT: no
25+
### test options
26+
SECP256K1_TEST_ITERS:
27+
BENCH: yes
28+
SECP256K1_BENCH_ITERS: 2
29+
CTIMETESTS: yes
30+
# Compile and run the tests
31+
EXAMPLES: yes
32+
33+
cat_logs_snippet: &CAT_LOGS
34+
always:
35+
cat_tests_log_script:
36+
- cat tests.log || true
37+
cat_noverify_tests_log_script:
38+
- cat noverify_tests.log || true
39+
cat_exhaustive_tests_log_script:
40+
- cat exhaustive_tests.log || true
41+
cat_ctime_tests_log_script:
42+
- cat ctime_tests.log || true
43+
cat_bench_log_script:
44+
- cat bench.log || true
45+
cat_config_log_script:
46+
- cat config.log || true
47+
cat_test_env_script:
48+
- cat test_env.log || true
49+
cat_ci_env_script:
50+
- env
51+
52+
linux_arm64_container_snippet: &LINUX_ARM64_CONTAINER
53+
env_script:
54+
- env | tee /tmp/env
55+
build_script:
56+
- DOCKER_BUILDKIT=1 docker build --file "ci/linux-debian.Dockerfile" --tag="ci_secp256k1_arm"
57+
- docker image prune --force # Cleanup stale layers
58+
test_script:
59+
- docker run --rm --mount "type=bind,src=./,dst=/ci_secp256k1" --env-file /tmp/env --replace --name "ci_secp256k1_arm" "ci_secp256k1_arm" bash -c "cd /ci_secp256k1/ && ./ci/ci.sh"
19260

19361
task:
194-
name: 'no wallet, libbitcoinkernel'
195-
<< : *GLOBAL_TASK_TEMPLATE
62+
name: "ARM64: Linux (Debian stable)"
19663
persistent_worker:
19764
labels:
198-
type: small
65+
type: arm64
19966
env:
200-
FILE_ENV: "./ci/test/00_setup_env_native_nowallet_libbitcoinkernel.sh"
67+
ECDH: yes
68+
RECOVERY: yes
69+
SCHNORRSIG: yes
70+
ELLSWIFT: yes
71+
matrix:
72+
# Currently only gcc-snapshot, the other compilers are tested on GHA with QEMU
73+
- env: { CC: 'gcc-snapshot' }
74+
<< : *LINUX_ARM64_CONTAINER
75+
<< : *CAT_LOGS
20176

20277
task:
203-
name: 'macOS-cross 11.0, gui, no tests'
204-
<< : *GLOBAL_TASK_TEMPLATE
78+
name: "ARM64: Linux (Debian stable), Valgrind"
20579
persistent_worker:
20680
labels:
207-
type: small
81+
type: arm64
20882
env:
209-
FILE_ENV: "./ci/test/00_setup_env_mac.sh"
83+
ECDH: yes
84+
RECOVERY: yes
85+
SCHNORRSIG: yes
86+
ELLSWIFT: yes
87+
WRAPPER_CMD: 'valgrind --error-exitcode=42'
88+
SECP256K1_TEST_ITERS: 2
89+
matrix:
90+
- env: { CC: 'gcc' }
91+
- env: { CC: 'clang' }
92+
- env: { CC: 'gcc-snapshot' }
93+
- env: { CC: 'clang-snapshot' }
94+
<< : *LINUX_ARM64_CONTAINER
95+
<< : *CAT_LOGS

.github/actions/run-in-docker-action/action.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ inputs:
1414
runs:
1515
using: "composite"
1616
steps:
17-
- uses: docker/setup-buildx-action@v2
17+
- uses: docker/setup-buildx-action@v3
1818

19-
- uses: docker/build-push-action@v4
19+
- uses: docker/build-push-action@v5
2020
id: main_builder
2121
continue-on-error: true
2222
with:
@@ -26,7 +26,7 @@ runs:
2626
load: true
2727
cache-from: type=gha
2828

29-
- uses: docker/build-push-action@v4
29+
- uses: docker/build-push-action@v5
3030
id: retry_builder
3131
if: steps.main_builder.outcome == 'failure'
3232
with:

.github/workflows/ci.yml

+4-5
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,8 @@ jobs:
5050
env:
5151
MAX_COUNT: 6
5252
steps:
53-
- name: Determine fetch depth
54-
run: echo "FETCH_DEPTH=$((${{ github.event.pull_request.commits }} + 2))" >> "$GITHUB_ENV"
55-
- uses: actions/checkout@v4
53+
- name: Set up Docker Buildx
54+
uses: docker/setup-buildx-action@v3
5655
with:
5756
ref: ${{ github.event.pull_request.head.sha }}
5857
fetch-depth: ${{ env.FETCH_DEPTH }}
@@ -95,7 +94,7 @@ jobs:
9594
runs-on: macos-13
9695

9796
- name: Build container
98-
uses: docker/build-push-action@v4
97+
uses: docker/build-push-action@v5
9998
with:
10099
file: ./ci/linux-debian.Dockerfile
101100
tags: linux-debian-image
@@ -836,7 +835,7 @@ jobs:
836835

837836
- name: Check installation with Autotools
838837
env:
839-
CI_INSTALL: ${{ runner.temp }}/${{ github.run_id }}${{ github.action }}
838+
CI_INSTALL: ${{ runner.temp }}/${{ github.run_id }}${{ github.action }}/install
840839
run: |
841840
./autogen.sh && ./configure --prefix=${{ env.CI_INSTALL }} && make clean && make install && ls -RlAh ${{ env.CI_INSTALL }}
842841
gcc -o ecdsa examples/ecdsa.c $(PKG_CONFIG_PATH=${{ env.CI_INSTALL }}/lib/pkgconfig pkg-config --cflags --libs libsecp256k1) -Wl,-rpath,"${{ env.CI_INSTALL }}/lib" && ./ecdsa

0 commit comments

Comments
 (0)