Repository navigation
feat(tbtc/signer): Rust FROST/ROAST signer (distributed DKG, interactive-only signing, FFI ABI 2.0) #4005
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
mswilkison
wants to merge
318
commits into
frost-upgrade
from
extraction/frost-signer-mirror-2026-05-26
Open
feat(tbtc/signer): Rust FROST/ROAST signer (distributed DKG, interactive-only signing, FFI ABI 2.0) #4005
Changes from 3 commits
Commits
Show all changes
318 commits
Select commit
Hold shift + click to select a range
edf7952
fix(tbtc/signer): bound interactive session registry and validate thr…
mswilkison e45b975
docs(tbtc/signer): scope the sidecar secret-boundary claim to signing
mswilkison 289df95
fix(tbtc/signer): resolve interactive key material from DKG state, no…
mswilkison 4940a9c
fix(tbtc/signer): quarantine the full Round2 subset; reject phantom i…
mswilkison e4a8734
feat(tbtc/signer): Phase 7.1 hardened interactive signing session (#4…
mswilkison 472dfa6
docs(tbtc/signer): Phase 7.0 sidecar transport addendum (#4050)
mswilkison f3ab6b5
feat(tbtc/signer): Phase 7.2a InteractiveAggregate with attributable …
mswilkison 24f4eb2
fix(tbtc/signer): defer attributable aggregate blame until inputs are…
mswilkison 312e106
docs(tbtc/signer): align aggregate FFI/API contract with fail-closed …
mswilkison f5a08a6
fix(tbtc/signer): sweep expired interactive state in InteractiveAggre…
mswilkison f96a54c
feat(tbtc/signer): Phase 7.2a InteractiveAggregate (tweaked, self-ver…
mswilkison 33f673c
test(tbtc/signer): make the test lock poison-resilient and env hermetic
mswilkison d474a4f
fix(tbtc/signer): iterate env with vars_os in the test baseline reset
mswilkison a7c1c33
test(tbtc/signer): poison-resilient test lock + hermetic env baseline…
mswilkison a9a08c4
docs(tbtc/signer): Phase 7.2b design note - package envelopes + bound…
mswilkison 53b23b4
docs(tbtc/signer): Phase 7.2b open-questions discussion doc for revie…
mswilkison 479b58b
docs(tbtc/signer): resolve 7.2b open questions per Gemini+Codex review
mswilkison 22bfa04
docs(tbtc/signer): fold in Codex re-review P1s + review-consistency f…
mswilkison 4b1bf46
docs(tbtc/signer): pin AllCheaters aggregate + clear stale refs (review)
mswilkison 1546239
docs(tbtc/signer): elected-coordinator + retain-on-reject + tweak-awa…
mswilkison 50bdbac
docs(tbtc/signer): §3 wording — retain on receipt, not on signing
mswilkison 7f78618
docs(tbtc/signer): context-bound share auth + group key in verify-share
mswilkison 94eba3b
docs(tbtc/signer): verify-share selector + durable key source
mswilkison 2b87a25
docs(tbtc/signer): record Phase 7.2b sign-off + durable-retention con…
mswilkison b74f209
feat(tbtc/signer): Phase 7.2b-1 InteractiveAggregate completion marker
mswilkison 131c642
fix(tbtc/signer): make InteractiveAggregate idempotent (Codex P2)
mswilkison 87b579c
docs(tbtc/signer): Phase 7.2b §6 idempotent aggregate re-emission
mswilkison c50ac59
fix(tbtc/signer): return persisted signature on aggregate race (Codex…
mswilkison e2e7fb2
docs(tbtc/signer): resolve Phase 7.2b doc review nits (Codex/Gemini P3)
mswilkison 8bca31e
fix(tbtc/signer): validate completion record against request on re-em…
mswilkison d115781
docs(tbtc/signer): §6 validate aggregate re-emission against the request
mswilkison 77a16a2
fix(tbtc/signer): reject empty attempt_id in InteractiveAggregate (Co…
mswilkison a07e8dc
docs(tbtc/signer): drop second stale pending-sign-off note (Codex P3)
mswilkison 2e062ff
refactor(tbtc/signer): simplify 7.2b-1 to completion marker + reject
mswilkison 3d690bb
docs(tbtc/signer): revert 7.2b-1 design to completion marker + reject
mswilkison 9d0accf
docs(tbtc/signer): Phase 7.2b design note — package envelopes + bound…
mswilkison d57237d
feat(tbtc/signer): Phase 7.2b-1 InteractiveAggregate completion marke…
mswilkison 2d0a37a
feat(tbtc/signer): Phase 7.2b-3 candidate-culprit detection in Intera…
mswilkison 16b0483
fix(tbtc/signer): redact secret material in persisted-struct Debug
piotr-roslaniec e8e2498
fix(tbtc/signer): stop reflecting raw panic payloads across FFI in pr…
piotr-roslaniec 3d4ddc3
fix(tbtc/signer): canonicalize interactive message_hex casing for ide…
piotr-roslaniec ad04c42
fix(tbtc/signer): count interactive abort success only on real aborts
piotr-roslaniec 54d0958
refactor(tbtc/signer): assert (not re-test) the differing-attempt inv…
piotr-roslaniec 8cc3071
fix(tbtc/signer): omit absent script_tree_hex in BuildTaprootTxRequest
piotr-roslaniec 13a1e0f
docs(tbtc/signer): fix stale key_package_hex comment in open fingerprint
piotr-roslaniec fa26cc3
docs(tbtc/signer): document Phase 7 interactive signing endpoints in …
piotr-roslaniec 4867b25
fix(tbtc/signer): use parseable placeholder for sample override trust…
piotr-roslaniec cbb9d58
docs(tbtc/signer): repoint mirrored doc paths to keep-core layout
piotr-roslaniec e34291d
docs(tbtc/signer): correct spec-freeze section 4 to match the shipped…
piotr-roslaniec 8d7d661
ci(tbtc/signer): add blocking cargo-deny advisory gate
piotr-roslaniec bd73bad
test(tbtc/signer): fix env-race flake in interactive FFI roundtrip test
piotr-roslaniec dde5e79
fix(tbtc/signer): harden admission override replay registry
piotr-roslaniec 65a678e
docs(tbtc/signer): frame the domain tag in roast phase 0 attempt-id f…
piotr-roslaniec 5123dc3
test(tbtc/signer): pin int31n_fast rejection branch against Go math/rand
piotr-roslaniec ea29834
docs(tbtc/signer): mark TEE/rollout TLA models as planned, not shipped
piotr-roslaniec 3524089
docs(tbtc/signer): clarify crate is unconsumed; add activation re-rev…
piotr-roslaniec b8407f6
fixup(tbtc/signer): align candidate culprits to u16 member ids + mult…
mswilkison 023b058
Phase 7.2b-3: candidate-culprit detection in InteractiveAggregate (#4…
mswilkison b8b84dc
docs(tbtc/signer): record D1 exclusion-trust assumption at the activa…
piotr-roslaniec b0677c3
feat(tbtc/signer): Phase 7.2b-4 engine verify_signature_share FFI (ba…
mswilkison de93bc4
Fold #4068 review: header prototype + in-band Indeterminate for bad t…
mswilkison 7332303
Fold #4068 review: sweep expired interactive state in verify_signatur…
mswilkison 6af4d14
Fold #4068 review: judge share bytes only after membership context is…
mswilkison 0e6f358
Fold #4068 review: require package membership before blaming malforme…
mswilkison 129830d
Phase 7.2b-4: engine verify_signature_share FFI (backs Go Round2Share…
mswilkison 43b649d
Phase 7.2b-4: tweaked-root (script-path) verify_signature_share equiv…
mswilkison 2bd81fa
Phase 7.2b-4: tweaked-root verify_signature_share equivalence test (#…
mswilkison d12909a
frost(7.3): engine-side DeriveInteractiveAttemptContext helper
mswilkison 7ad5fa5
frost(7.3): declare derive helper in the C header + clarify threshold…
mswilkison f87fc77
frost(7.3): reject zero threshold in the derive helper (Codex re-review)
mswilkison 0fdea53
frost(7.3): mirror session-open front-door checks in the derive helper
mswilkison 9fd9845
Phase 7.3: engine-side DeriveInteractiveAttemptContext helper (#4077)
mswilkison e9075ac
feat(tbtc/signer): member-key interactive signing state for multi-sea…
mswilkison 2684dde
fix(tbtc/signer): refuse Round2 for an already-aggregated attempt (re…
mswilkison 797aa71
fix(tbtc/signer): bind the interactive completion marker to the messa…
mswilkison 6b2e2d0
fix(tbtc/signer): honor legacy bare aggregate completion markers (re-…
mswilkison 73fabaf
fix(tbtc/signer): bind the taproot root into the completion marker (r…
mswilkison 49fdcbc
fix(tbtc/signer): free finalized non-signing siblings on aggregate (r…
mswilkison d857577
fix(tbtc/signer): bind the aggregate-cleanup filter to the message to…
mswilkison ca6ee3b
feat(tbtc/signer): member-key interactive signing state for multi-sea…
mswilkison 13a8103
test(tbtc/signer): multi-seat capacity new-vs-replacement + abort-by-…
mswilkison 83b7bff
test(tbtc/signer): multi-seat capacity new-vs-replacement + abort-by-…
mswilkison 25e4f27
feat(tbtc/signer): export a structured FFI contract version (frost_tb…
mswilkison 6e3718b
fix(tbtc/signer): declare frost_tbtc_abi_version in the public C header
mswilkison d7d96bf
feat(tbtc/signer): export a structured FFI contract version (frost_tb…
mswilkison cbc5e37
fix(tbtc/signer): validate incoming attempt context before clearing a…
mswilkison 3b481ad
fix(tbtc/signer): fail closed on unknown profile and degenerate signi…
mswilkison 588cc4b
ci(tbtc/signer): pin cargo dependency resolution with --locked
mswilkison 921b009
fix(tbtc/signer): validate incoming attempt context before clearing a…
mswilkison 95ecec4
fix(tbtc/signer): fail closed on unknown profile and degenerate signi…
mswilkison b548ac4
ci(tbtc/signer): pin cargo dependency resolution with --locked (#4113)
mswilkison 4b40a5a
perf(tbtc/signer): resolve state-encryption key off-lock, deferring t…
mswilkison 77488ee
fix(tbtc/signer): resolve the state key under the ENGINE_STATE guard,…
mswilkison a1232c7
fix(tbtc/signer): resolve the state-encryption key under the ENGINE_S…
mswilkison 501dffb
fix(signer): defer sign-round clear + persist before idempotent serve
mswilkison f0ae82f
fix(signer): clear sign-round persist marker on any successful persist
mswilkison 396a80e
fix(signer): scope sign-round persist-pending marker per session
mswilkison 4587081
fix(signer): defer sign-round clear + persist before idempotent serve…
mswilkison af1cc10
fix(tbtc/signer): gate plaintext state, zeroize FFI buffers, allow pe…
mswilkison ede5c9e
feat(tbtc/signer): enforce signing-policy firewall in production with…
mswilkison 6d2a4df
fix(tbtc/signer): address self-review findings on the review-fix PR
mswilkison 816be16
docs(tbtc/signer): document firewall production force-on + built-in d…
mswilkison 8d873e7
feat(tbtc/signer): enforce signing-policy firewall in production with…
mswilkison 07238e6
fix(tbtc/signer): gate plaintext rollback-path tests to debug builds
mswilkison cba4cd1
fix(tbtc/signer): wire plaintext rollback opt-in through init config
mswilkison 39bed8b
fix(tbtc/signer): backfill legacy refresh fingerprint before overwriting
mswilkison c46adba
fix(tbtc/signer): preserve total refresh count across history pruning
mswilkison 3efa362
fix(tbtc/signer): backfill refresh_count from history on legacy state…
mswilkison b32f515
fix(tbtc/signer): harden signer FFI (secret fields, panic hook, quara…
mswilkison 6f92479
fix(tbtc/signer): synthesize refresh fingerprint record for legacy em…
mswilkison 4899108
fix(tbtc/signer): canonicalize StartSignRound message hex + seed benc…
mswilkison 98f58e1
fix(tbtc/signer): preserve legacy mixed-case message fingerprints
mswilkison 3cd2de1
fix(tbtc/signer): preserve legacy refresh fingerprint without a cache…
mswilkison 01e274b
fix(tbtc/signer): gate plaintext state, zeroize FFI buffers, allow pe…
mswilkison f9cf110
fix(electrum): refresh fulcrum integration endpoint
mswilkison 59823fe
ci(tbtc/signer): pin workflow actions to commit SHAs; disable checkou…
mswilkison 13b04ec
hardening(signer): fail closed on stateless nonce primitives in produ…
mswilkison 3010172
ci(tbtc/signer): make Setup Rust toolchain explicit (toolchain: stable)
mswilkison 911f3b6
ci(tbtc/signer): pin workflow actions to commit SHAs; disable checkou…
mswilkison 3730815
hardening(signer): fail closed on stateless nonce primitives under th…
mswilkison d1ab4dc
feat(tbtc/signer): persist a distributed DKG key package as signing m…
mswilkison af5a306
fix(tbtc/signer): accumulate distributed DKG key packages under one s…
mswilkison a491df8
fix(tbtc/signer): gate distributed-DKG persist behind provenance; add…
mswilkison 4ac6bb7
fix(tbtc/signer): admission gate, key-package consistency, ABI bump f…
mswilkison d6f293c
fix(tbtc/signer): validate participant count + reject non-canonical I…
mswilkison 228073e
fix(tbtc/signer): verify signing share derives to public share; match…
mswilkison 70f8bba
fix(tbtc/signer): enforce operator quarantine before persisting distr…
mswilkison 1841747
fix(signer): resolve DKG key material by key_group so signing works a…
mswilkison 8dd9401
fix(signer): re-check emergency-rekey/finalize gates from the WALLET …
mswilkison 5a88e9a
fix(signer): CI green (rustfmt, RUSTSEC-2026-0204) + harden emergency…
mswilkison 82cffed
fix(signer): enforce the total-session cap when Open creates a cross-…
mswilkison a5762aa
fix(signer): scrub serde-owned secret request Strings + SigningShare …
mswilkison 0d2ebcb
fix(signer): a session belongs to one key_group for life; scrub secre…
mswilkison 1d6f946
fix(signer): persist bound_key_group so cross-session signing survive…
mswilkison 4ac4a42
style(signer): satisfy clippy -D warnings (unnecessary_map_or, clone_…
mswilkison c7dcd55
feat(tbtc/signer): persist distributed DKG material and make it signa…
mswilkison 386bd36
fix(signer): update pinned TLA tools checksum
mswilkison 0172c6d
feat(signer)!: delete transitional coarse-FROST signing path (Phase 7…
mswilkison 3c60e2d
feat(signer)!: delete transitional coarse-FROST signing path (Phase 7…
mswilkison 6cc2351
ci(signer): re-pin tla2tools.jar checksum to the current v1.8.0 relea…
mswilkison 680cdc2
fix(tbtc/signer)!: bind policy to BIP-341 sighashes
mswilkison 84c3b84
fix(tbtc/signer): make state transitions crash-durable
mswilkison ac2f32a
fix(tbtc/signer): restore rollout assurance gates
mswilkison 6e0fa97
Preserve signer latency metric ABI semantics
mswilkison e487a04
fix(tbtc/signer)!: bind policy to BIP-341 sighashes (#4147)
mswilkison 0e46315
fix(tbtc/signer): make state transitions crash-durable (#4148)
mswilkison b7281da
fix(tbtc/signer): restore rollout assurance gates (#4149)
mswilkison f21ca10
docs(tbtc/signer): retire stale rollout benchmark gate
mswilkison 9945155
fix(tbtc/signer): preserve canary recovery bookkeeping
mswilkison 400a7c9
docs(tbtc/signer): retire stale rollout benchmark gate (#4151)
mswilkison 36e8c05
fix(tbtc/signer): preserve canary recovery bookkeeping (#4154)
mswilkison c2d187d
fix(tbtc/signer): fail closed on unsafe share refresh
mswilkison a4ead31
fix(tbtc/signer): bump ABI for refresh rejection
mswilkison 3a440ee
fix(tbtc/signer): mark unanchored legacy refresh overdue
mswilkison 07b4190
fix(tbtc/signer): reject empty attestation statuses
mswilkison 43a0d25
fix(tbtc/signer): fail closed on unsafe share refresh (#4155)
mswilkison 1679a60
fix(tbtc/signer): reject empty attestation statuses (#4156)
mswilkison af31d1a
Merge remote-tracking branch 'origin/main' into fix/pr4005-electrum-f…
mswilkison 00cb7de
fix(electrum): propagate embedded test networks
mswilkison 01bbaaf
fix(tbtc/signer): bound aggregate IDs and reclaim sessions
mswilkison c2ec8a4
fix(tbtc/signer): harden session retirement
mswilkison a9d64e9
fix(tbtc/signer): preserve aggregate liveness
mswilkison 43050d3
ci(tbtc/signer): refresh TLA tools checksum
mswilkison 616e4ab
fix(tbtc/signer): make session retirement rollback-safe
mswilkison 134727f
fix(tbtc/signer): retire repaired aggregate sessions
mswilkison c717a5a
fix(tbtc/signer): zeroize DKG wire secrets
mswilkison 136e85c
fix(tbtc/signer): serialize initial state loading
mswilkison 19a9fa8
fix(tbtc/signer): serialize initial state loading (#4159)
mswilkison bcdd852
fix(tbtc/signer): zeroize DKG wire secrets (#4158)
mswilkison 1ef344c
fix(tbtc/signer): bound interactive session persistence (#4157)
mswilkison 5e49300
fix(tbtc/signer): harden state-path and rollback durability
mswilkison b553a04
fix(tbtc/signer): reject unknown admission policy fields
mswilkison 90a1b00
fix(tbtc/signer): track interactive inactivity monotonically
mswilkison 72897cb
fix(tbtc/signer): harden state-path and rollback durability (#4160)
mswilkison eb1277b
fix(tbtc/signer): reject unknown admission policy fields (#4161)
mswilkison b49065f
fix(tbtc/signer): track interactive inactivity monotonically (#4162)
mswilkison cbf76eb
Merge remote-tracking branch 'origin/main' into codex/reconcile-frost…
mswilkison c494e8a
ci(tbtc/signer): refresh verified TLA tools checksum
mswilkison 8f50f80
fix(tbtc/signer): review-driven hardening across crypto, FFI, supply-…
piotr-roslaniec 3f7b531
style(tbtc/signer): rustfmt (CI formatting gate)
piotr-roslaniec 0f7cea5
ci(tbtc/signer): drop unsupported --all from cargo-deny check bans
piotr-roslaniec 4d2d241
fix(tbtc/signer): clippy doc_lazy_continuation + useless_vec + dead_code
piotr-roslaniec 3060c26
ci(tbtc/signer): refresh verified TLA tools checksum
piotr-roslaniec 555f2c5
fix(tbtc/signer): AEAD ciphertext upper bound in persistence decode
piotr-roslaniec 5f74acd
docs(tbtc-signer): FROST share refresh/recovery design-spike RFC
piotr-roslaniec 0c8f5ac
docs(tbtc-signer): operator SOP for staged FROST shadow-mode rollout
piotr-roslaniec ae85d99
fix(tbtc-signer): validation & bounds hardening on FFI-adjacent inputs
piotr-roslaniec 584a57b
fix(tbtc-signer): log hygiene and panic-hook restoration fixes
piotr-roslaniec 9e20599
perf(tbtc-signer): avoid double-clone of pending session ids per reti…
piotr-roslaniec 4161f8c
docs(tbtc-signer): fix doc drift and stale/unclear comments
piotr-roslaniec aa67db8
docs(tbtc-signer): record crypto/security investigation findings
piotr-roslaniec 20b11c6
feat(tbtc-signer): bounded n-t+1 concurrent interactive attempts (#4251)
piotr-roslaniec 3e833de
spec(frost-signer): collapse interactive-session entry points
piotr-roslaniec d606e3c
spec(frost-signer): funnel the policy reject_* family
piotr-roslaniec 59b95a3
spec(frost-signer): carve persistence into seams
piotr-roslaniec 1a4d3fe
spec(frost-signer): split SessionState into 6 substructures
piotr-roslaniec f03d2db
spec(frost-signer): macro the FFI entry-point pattern
piotr-roslaniec f6c83a6
feat(frost-signer): macro the FFI entry-point pattern
piotr-roslaniec e35076b
feat(frost-signer): collapse interactive-session entry points
piotr-roslaniec a257104
feat(frost-signer): funnel the policy reject_* family
piotr-roslaniec 94cbafb
feat(frost-signer): carve persistence into seams
2d23dd7
feat(frost-signer): split SessionState into 6 substructures
piotr-roslaniec 84b794c
fix(frost-signer): drop unused parse_request import after macro refactor
piotr-roslaniec a820f34
docs(tbtc-signer): document mutex invariant behind pending_session_id…
piotr-roslaniec 5a71f15
docs(tbtc-signer): correct canary promotion gate fields and add step-…
74d0eb9
test(tbtc-signer): cover reason-normalization match/mismatch branches
piotr-roslaniec 68cbe90
fix(tbtc/signer): drop unused session_id and mut from interactive-ses…
piotr-roslaniec c77db93
docs(frost-signer): correct false claims in persistence split spec
70b09a0
docs(rfc): fix Option B governance-keys premise and citation
1fb8189
docs(specs): correct drifted references in interactive-session deepen…
piotr-roslaniec 035f0bf
fix(frost-signer): land C6 DoD items (header narrative, regression te…
piotr-roslaniec 8067638
test(frost-signer): pin retirement invariant and capacity_pins round-…
piotr-roslaniec cf8e33f
test(tbtc-signer): regression coverage for bounded-attempt fixes
piotr-roslaniec 7a0fb00
fix(tbtc-signer): test coverage, map entry cap, ASCII check, error-re…
piotr-roslaniec b5b1a04
fix(frost-signer): correct PR framing, spec doc, and add kill-switch …
26711b4
style(tbtc-signer): cargo fmt + clippy -D warnings compliance
piotr-roslaniec 28ce2d4
style(tbtc-signer): cargo fmt + clippy -D warnings compliance
piotr-roslaniec a86285d
style(tbtc-signer): cargo fmt + clippy -D warnings compliance
piotr-roslaniec 28647c5
style(tbtc-signer): cargo fmt + clippy -D warnings compliance
piotr-roslaniec 4c70e30
style(tbtc-signer): cargo fmt + clippy -D warnings compliance
piotr-roslaniec 497bb01
style(tbtc-signer): cargo fmt + clippy -D warnings compliance
piotr-roslaniec ca846d3
style(tbtc-signer): cargo fmt + clippy -D warnings compliance
piotr-roslaniec 7295c58
style(tbtc-signer): cargo fmt + clippy -D warnings compliance
piotr-roslaniec 6d79ee2
style(tbtc-signer): cargo fmt + clippy -D warnings compliance
piotr-roslaniec 6275366
docs(tbtc-signer): FROST share refresh/recovery design-spike RFC (#42…
piotr-roslaniec cb3073f
docs(tbtc-signer): operator SOP for staged FROST shadow-mode rollout …
piotr-roslaniec 4826696
fix(tbtc-signer): log hygiene and panic-hook restoration fixes (#4255…
piotr-roslaniec a09d9b5
perf(tbtc-signer): avoid double-clone of pending session ids per reti…
piotr-roslaniec 4715b11
docs(tbtc-signer): fix doc drift and stale/unclear comments (#4255 cl…
piotr-roslaniec aee02d9
docs(tbtc-signer): record crypto/security investigation findings (#42…
piotr-roslaniec 38f9f32
C1 — Collapse interactive-session entry points (#4266)
piotr-roslaniec 76efd0c
C6 — Macro the FFI entry-point pattern (#4270)
piotr-roslaniec acde3ff
Merge remote-tracking branch 'origin/extraction/frost-signer-mirror-2…
piotr-roslaniec 4a41fac
fix(tbtc-signer): validation & bounds hardening on FFI-adjacent input…
piotr-roslaniec 17f34a2
Merge remote-tracking branch 'origin/extraction/frost-signer-mirror-2…
piotr-roslaniec ecdece4
feat(tbtc-signer): bounded n-t+1 concurrent interactive attempts (#42…
piotr-roslaniec 08f7cf0
merge: resolve modify/delete conflict on persistence.rs split (port #…
piotr-roslaniec 885ad5e
C2 — Carve persistence into seams (#4267)
piotr-roslaniec 8f78be9
merge: resolve SessionState-split conflicts against #4258/#4261/#4267…
piotr-roslaniec 7b886e0
C5 — Split `SessionState` into 6 named substructures (#4269)
piotr-roslaniec 19a2869
Merge remote-tracking branch 'origin/extraction/frost-signer-mirror-2…
piotr-roslaniec 7c45d5c
C4 — Funnel the policy `reject_*` family (#4268)
piotr-roslaniec 2242826
fix(signer): pin verified GitHub Action SHAs and disable checkout cre…
piotr-roslaniec ca76e55
fix(signer): run cargo-deny sources/licenses checks and block yanked …
piotr-roslaniec 6eb6a6b
fix(signer): validate DKG public key package shares via Lagrange inte…
piotr-roslaniec dc2c9b6
fix(signer): make quarantine enforcement honest and remove dead harde…
piotr-roslaniec 5169e0c
fix(signer): bind state to an anti-replay generation, distinguish con…
piotr-roslaniec 954065b
fix(signer): zeroize secret material reliably across FFI serializatio…
piotr-roslaniec 84d65e3
docs(signer): correct stale FFI-surface, quarantine, and canary-runbo…
piotr-roslaniec b843c87
test(signer): cover the anti-replay generation, config-regression, an…
piotr-roslaniec File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,57 @@ | ||
| name: tBTC Signer Formal Verification | ||
|
|
||
| on: | ||
| pull_request: | ||
| paths: | ||
| - pkg/tbtc/signer/** | ||
| - .github/workflows/tbtc-signer-formal.yml | ||
| schedule: | ||
| - cron: "23 5 * * *" | ||
| workflow_dispatch: | ||
|
|
||
| permissions: | ||
| contents: read | ||
|
|
||
| concurrency: | ||
| group: tbtc-signer-formal-${{ github.ref }} | ||
| cancel-in-progress: true | ||
|
|
||
| jobs: | ||
| signer-formal-invariants: | ||
| name: Signer formal invariants | ||
| runs-on: ubuntu-latest | ||
| timeout-minutes: 30 | ||
| steps: | ||
| - name: Checkout | ||
| uses: actions/checkout@v4 | ||
|
coderabbitai[bot] marked this conversation as resolved.
Outdated
|
||
|
|
||
| - name: Setup Rust | ||
| uses: dtolnay/rust-toolchain@stable | ||
|
|
||
| - name: Run signer formal invariant tests | ||
| # Filters cargo test by the formal_verification_ prefix so only | ||
| # the formal-invariant test cases run (faster + clearer signal | ||
| # than the full suite). Matches the convention used in the | ||
| # source monorepo's ci-formal-verification.yml. | ||
| run: cargo test --manifest-path pkg/tbtc/signer/Cargo.toml formal_verification_ | ||
|
|
||
| tla-model-checks: | ||
| name: TLA model checks | ||
| runs-on: ubuntu-latest | ||
| timeout-minutes: 20 | ||
| steps: | ||
| - name: Checkout | ||
| uses: actions/checkout@v4 | ||
|
|
||
| - name: Setup Java | ||
| uses: actions/setup-java@v4 | ||
| with: | ||
| distribution: temurin | ||
| java-version: "17" | ||
|
|
||
| - name: Run TLA model checks | ||
| # Iterates over every .cfg under pkg/tbtc/signer/docs/formal/models/ | ||
| # and runs TLC against the matching .tla module. MODELS_PATH defaults | ||
| # to the canonical signer-relative path; override via env var for | ||
| # alternate environments (set in extraction/frost-signer-mirror PR). | ||
| run: pkg/tbtc/signer/scripts/formal/run_tla_models.sh | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| target/ |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.