Skip to content

Add Compromised flag restricting a seed to multisig co-signing only - #14

Merged
Jossec101 merged 1 commit into
developfrom
feat/compromised-flag
Aug 20, 2026
Merged

Add Compromised flag restricting a seed to multisig co-signing only#14
Jossec101 merged 1 commit into
developfrom
feat/compromised-flag

Conversation

@Jossec101

Copy link
Copy Markdown
Contributor

New optional boolean 'Compromised' in the per-fingerprint MF_* config
(backward compatible: absent field deserializes to false). When set, the
function refuses to sign any input that is not a true multisig requiring
at least 2 signatures, so the seed's signature alone can never move funds.

The check runs against the input's signable coin (NBitcoin only resolves
it when the witness/redeem script is consistent with the UTXO's
scriptPubKey) and extracts the multisig threshold from the script code.

Intended for retired seeds after an internal wallet rotation: it contains
Lambda-mediated misuse (compromised caller draining legacy single-sig
wallets); it is not protection against a party holding the seed plaintext.

Also extracts GetConfig() so env-var config parsing is shared between the
signing loop and DecryptSeed, and documents the flag + the jq flip
procedure in the README and seed-ceremony manifest checks.


Stack created with GitHub Stacks CLIGive Feedback 💬

@Jossec101
Jossec101 force-pushed the feat/compromised-flag branch from b2ff491 to b5b34d1 Compare August 19, 2026 13:31
@Jossec101
Jossec101 force-pushed the feat/compromised-flag branch from b5b34d1 to 68e0723 Compare August 19, 2026 13:36
Base automatically changed from feat/seed-ceremony to develop August 19, 2026 13:39
@Jossec101
Jossec101 force-pushed the feat/compromised-flag branch from 68e0723 to 99fa1c0 Compare August 19, 2026 13:39
Comment thread RemoteSigner/Function.cs
New optional boolean 'Compromised' in the per-fingerprint MF_* config
(backward compatible: absent field deserializes to false). When set, the
function refuses to sign any input that is not a true multisig requiring
at least 2 signatures, so the seed's signature alone can never move funds.

The check runs against the input's signable coin (NBitcoin only resolves
it when the witness/redeem script is consistent with the UTXO's
scriptPubKey) and extracts the multisig threshold from the script code.

Intended for retired seeds after an internal wallet rotation: it contains
Lambda-mediated misuse (compromised caller draining legacy single-sig
wallets); it is not protection against a party holding the seed plaintext.

Also extracts GetConfig() so env-var config parsing is shared between the
signing loop and DecryptSeed, and documents the flag + the jq flip
procedure in the README and seed-ceremony manifest checks.
@Jossec101
Jossec101 force-pushed the feat/compromised-flag branch from 99fa1c0 to 5060db0 Compare August 19, 2026 14:18
@Jossec101
Jossec101 merged commit 3046717 into develop Aug 20, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants