From 92da675c4acf5f349b80ad4e8c1ee8f8f7113e2d Mon Sep 17 00:00:00 2001 From: mjthatch Date: Thu, 16 Jul 2026 22:17:46 +0300 Subject: [PATCH] ci: patch --- .github/workflows/build_and_deploy.yml | 2 ++ Makefile | 1 + document/content/3-search.tex | 4 ++-- stateful.sage | 2 +- utils/extremes_summary.py | 2 +- 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build_and_deploy.yml b/.github/workflows/build_and_deploy.yml index 244c8f8..6cd10ed 100644 --- a/.github/workflows/build_and_deploy.yml +++ b/.github/workflows/build_and_deploy.yml @@ -57,6 +57,8 @@ jobs: if: steps.cache.outputs.cache-hit != 'true' run: | apt-get update -qq && apt-get install -y -qq make + # running as root: mark the checkout safe so the data.json commit stamp works + git config --global --add safe.directory "$GITHUB_WORKSPACE" sage -pip install --quiet --no-cache-dir pandas seaborn make sweeps derived data figures PYTHON="sage -python" diff --git a/Makefile b/Makefile index f181298..a58ffa0 100644 --- a/Makefile +++ b/Makefile @@ -35,6 +35,7 @@ data: $(SAGE) export_site_data.sage figures: + mkdir -p $(IMAGES) # holds only generated files, so fresh checkouts lack it cd $(IMAGES) && $(PYTHON) ../../../$(UTILS)/sieve_search_draw.py \ --input ../../../$(CSV_UNBOUND) --weights 1,1,1,1,1 --suffix _1 cd $(IMAGES) && $(PYTHON) ../../../$(UTILS)/sieve_search_draw.py \ diff --git a/document/content/3-search.tex b/document/content/3-search.tex index 3294342..d560bf5 100644 --- a/document/content/3-search.tex +++ b/document/content/3-search.tex @@ -62,7 +62,7 @@ \subsubsection{Case 1: Best in Class} %--- Smallest Signature & $(50, 2, 6, 20, 256)$ & \textcolor{green}{$3408$} & \textcolor{green}{$-56.6\%$} & \textcolor{red}{$1.55 \times 10^{11}$} & \textcolor{red}{$5.30 \times 10^5$} & \textcolor{red}{$3.10 \times 10^{11}$} & \textcolor{red}{$1.40 \times 10^5$} & \textcolor{red}{$4780$} & \textcolor{red}{$2.22$} & \textcolor{red}{$1.40$} \\ %--- -Fastest Keygen & $(40, 10, 9, 17, 32)$ & \textcolor{red}{$7728$} & \textcolor{red}{$-1.6\%$} & \textcolor{green}{$1.45 \times 10^4$} & \textcolor{green}{$0.05$} & \textcolor{orange}{$3.68 \times 10^6$} & \textcolor{orange}{$1.66$} & \textcolor{orange}{$4627$} & \textcolor{orange}{$2.15$} & \textcolor{orange}{$0.60$} \\ +Fastest Keygen & $(40, 10, 7, 20, 32)$ & \textcolor{red}{$7488$} & \textcolor{red}{$-4.7\%$} & \textcolor{green}{$1.45 \times 10^4$} & \textcolor{green}{$0.05$} & \textcolor{red}{$2.22 \times 10^7$} & \textcolor{red}{$9.99$} & \textcolor{orange}{$4612$} & \textcolor{orange}{$2.14$} & \textcolor{orange}{$0.62$} \\ %--- Fastest Signing & $(40, 8, 23, 8, 32)$ & \textcolor{red}{$7552$} & \textcolor{red}{$-3.9\%$} & \textcolor{green}{$2.90 \times 10^4$} & \textcolor{green}{$0.10$} & \textcolor{green}{$2.49 \times 10^5$} & \textcolor{green}{$0.11$} & \textcolor{orange}{$3792$} & \textcolor{orange}{$1.76$} & \textcolor{orange}{$0.50$} \\ %--- @@ -467,4 +467,4 @@ \section{Recommended Candidate Tuple} \label{sec:ideal-examples} \label{fig:ideal_distance_plot} \end{figure} -All figures and tables in this report are generated by the accompanying pipeline (\texttt{make generate}). An interactive explorer that reproduces these searches, including the filter coefficients, decisional weights, and distance criteria used above — is publicly available at \url{https://mjthatch.github.io/SPHINCS-Parameters/site/}. \ No newline at end of file +All figures and tables in this report are generated by the accompanying pipeline (\texttt{make generate}). An interactive explorer that reproduces these searches — including the filter coefficients, decisional weights, and distance criteria used above — is publicly available at \url{https://blockstreamresearch.github.io/SPHINCS-Parameters/site/}. \ No newline at end of file diff --git a/stateful.sage b/stateful.sage index d1bd156..6dccb78 100644 --- a/stateful.sage +++ b/stateful.sage @@ -19,7 +19,7 @@ signature-count targets: 2^20 and 2^40. 3. SHRINCS/UXMSS: Left-leaning unbalanced Merkle tree (SHRINCS stateful) - Tree of height hsf with hsf+1 leaves; capacity = hsf + 1 signature. - - The signature with index i \in (1...hsf+1) carries min(i, hsf) auth nodes. + - The signature with index i in 1..hsf+1 carries min(i, hsf) auth nodes. - Signature size grows linearly with the index (XMSS-MT: constant). - Target is strictly isolated to 2^40 signatures, hardcoded to use (5,712 bytes) as the reference bound. - hsf is additionally capped at 255. diff --git a/utils/extremes_summary.py b/utils/extremes_summary.py index dc8cc24..5af2e91 100644 --- a/utils/extremes_summary.py +++ b/utils/extremes_summary.py @@ -34,7 +34,7 @@ def main(): rows = [std.to_dict() | {'cat1_award': ''}] for col, award in EXTREMES: - winner = custom.sort_values(col).iloc[0] + winner = custom.sort_values([col, 'size', 'h', 'd', 'k', 'a', 'w']).iloc[0] rows.append(winner.to_dict() | {'cat1_award': award}) print(f' {award}: ({winner.h:.0f},{winner.d:.0f},{winner.k:.0f},' f'{winner.a:.0f},{winner.w:.0f}) {col} = {winner[col]}')