# step: claim_verify.py, differential.py, jwp_verify.py, chain_differential.py, chain_gap_differential.py, signer_verify.py # order: 720 # features: key_discovery # bins: wai_claim_vectors wai_jwp_vectors wai_signer_vectors # pq-bins: wai_claim_vectors wai_jwp_vectors wai_signer_vectors # independent: claim trust needs=cryptography verdicts=claim-conformance/vectors.json python3 claim-conformance/claim_verify.py claim-conformance/vectors.json # independent: jwp trust needs=cryptography verdicts=jwp-conformance/vectors.json python3 jwp-conformance/jwp_verify.py jwp-conformance/vectors.json # independent: jwp-cases trust python3 -I jwp-conformance/cases_verify.py jwp-conformance/cases # independent: signer trust needs=cryptography verdicts=signer-conformance/vectors.json python3 signer-conformance/signer_verify.py signer-conformance/vectors.json # # The claim, JWP and key-discovery verifiers (claim_verify.py, jwp_verify.py and # signer_verify.py) run over their corpora in the step of every independent verifier # above; here, against wai-rs, beyond the corpora: differential.py gives seeded inputs # the corpus does not hold to wai_claim_vectors and claim_verify.py and requires the # same verdict; chain_differential.py signs receipt chains around jwp-receipts §3 step 3 # and §6.1 (two keys, two tracks, both payloads, replays, forks, gaps, the guard and the # freshness bound), and chain_gap_differential.py genuine chains up to 90 groups # delivered shuffled, withheld and walked back with rewritten links and forks; both # require wai_jwp_vectors and jwp_verify.py to give every chain the same verdict. Two # fixed seeds each, so a run is reproducible. Last, signer_verify.py's key-discovery # verdicts equal wai_signer_vectors'. set -euo pipefail python3 signer-conformance/signer_verify.py verdicts signer-conformance/vectors.json > "$RUNNER_TEMP/signer-py.tsv" # Each differential against both builds the first step copied (see its comment). for build in union pq; do bins="$RUNNER_TEMP/wai-bins/$build" if [ "$build" = pq ]; then features=$WAI_PQ_FEATURES; else features=$WAI_FEATURES; fi echo "::group::the differentials against the $build build (features $features)" python3 claim-conformance/differential.py "$bins/wai_claim_vectors" --random 2000 --seed 1 for seed in 1 2; do python3 jwp-conformance/chain_differential.py "$bins/wai_jwp_vectors" --n 3000 --seed "$seed" python3 jwp-conformance/chain_gap_differential.py "$bins/wai_jwp_vectors" --n 400 --seed "$seed" done "$bins/wai_signer_vectors" verdicts signer-conformance/vectors.json > "$RUNNER_TEMP/signer-rs-$build.tsv" diff "$RUNNER_TEMP/signer-py.tsv" "$RUNNER_TEMP/signer-rs-$build.tsv" echo "the $build build: every differential agrees" echo "::endgroup::" done