CleverWild
3817a080c9
refactor(proposal): replace string kind dispatch with ProposalKindTag enum (strum)
2026-08-26 13:01:44 +02:00
CleverWild
e1d060dd06
feat(vault): add recovery passphrase handling for bootstrap and unseal processes
2026-08-26 13:01:44 +02:00
CleverWild
e121708d28
fix(crypto): handle 1-of-N Shamir split when ordinary_count=1
2026-08-26 13:01:44 +02:00
CleverWild
6e3fa736e0
feat(server): recovery operators with sleeping/wakeup mechanism (§3.5/§3.6)
2026-08-26 13:01:44 +02:00
CleverWild
19a62e7195
feat(server): key-rotation proposals require full quorum (§3.3)
2026-08-26 13:01:44 +02:00
CleverWild
57200cbc50
feat(server): two-operator vault requires at least one recovery share
2026-08-26 13:01:44 +02:00
CleverWild
291ef2e831
refactor(server): typed pubkey len via u32::try_from in ReplaceOperator
2026-08-26 13:01:44 +02:00
CleverWild
d12109c2c9
feat(server): ProposalKind::ApproveOneOffTransaction
2026-08-26 13:01:44 +02:00
CleverWild
277fb3c92d
feat(server): ProposalKind::ApprovePersistentGrant
2026-08-26 13:01:44 +02:00
CleverWild
9e42097683
feat(server): ProposalKind::UpdateShamirParameters
2026-08-26 13:01:44 +02:00
CleverWild
25b86b14e9
feat(server): ProposalKind::ReplaceOperator
2026-08-26 13:01:44 +02:00
CleverWild
ba8748a17b
feat(server): ProposalKind ::GrantWalletAccess and ::ApproveServerUpdate
2026-08-26 13:01:44 +02:00
CleverWild
3e61d807b4
test(server): governance integration tests
2026-08-26 13:01:44 +02:00
CleverWild
e6459aade8
feat(server::grpc): wire governance RPCs through operator session
2026-08-26 13:01:44 +02:00
CleverWild
f16d0a26e2
feat(server): introduce ProposalManager actor with quorum voting logic
2026-08-26 13:01:44 +02:00
CleverWild
074e6501ec
feat(crypto): expose governance signing context and make shamir_threshold pub const
2026-08-26 13:01:44 +02:00
CleverWild
b2632661f8
feat(db): add proposal and proposal_vote tables
2026-08-26 13:01:44 +02:00
CleverWild
966b4c8828
feat(proto): add governance proposal/vote RPC definitions
2026-08-26 13:01:44 +02:00
CleverWild
b6c91c56eb
housekepping: add fixme for start_bootstrap's operator_id
2026-08-26 13:01:44 +02:00
CleverWild
240fd3eb63
refactor(server::crypto): use fixed-size [u8; 32] and KeyCell throughout seal key API
2026-08-26 13:01:44 +02:00
CleverWild
80ba30d430
fix(server::tests): tighten unseal test seal_key params to &[u8; 32]
2026-08-26 13:01:44 +02:00
CleverWild
59cb65f3e1
feat(server::grpc): wire Shamir committee bootstrap and unseal proto messages
...
Adds DeclareCommittee and ContributePassphrase variants to bootstrap.proto,
ContributePassphrase to unseal.proto, and AwaitingContributions result codes
to both. Implements corresponding inbound converters and outbound reply
mappings. VaultGate handlers delegate to VaultCoordinator.
2026-08-26 13:01:44 +02:00
CleverWild
83075e9df7
feat(server): introduce VaultCoordinator for multi-operator Shamir bootstrap/unseal
...
VaultCoordinator collects operator passphrases, splits the seal key into
Shamir shares on bootstrap (encrypting each share with the operator's
passphrase via Argon2 + XChaCha20-Poly1305), and reconstructs the seal
key from threshold shares on unseal. Adds vsss-rs 5.4.0 and rand_core 0.6
dependencies.
2026-08-26 13:01:44 +02:00
CleverWild
fc7f2b1a03
refactor(server::actors::vault): clean up Bootstrap/TryUnseal, remove Bootstrapping state
...
Bootstrap and TryUnseal now accept a SafeCell<Vec<u8>> seal key directly.
The Bootstrapping intermediate state is removed — multi-operator coordination
is the responsibility of VaultCoordinator, which calls Bootstrap atomically
once all shares are collected.
2026-08-26 13:01:44 +02:00
CleverWild
0695ec96a8
feat(server::crypto): add Shamir secret sharing utilities
...
Wraps vsss_rs Gf256::split_array / combine_array into thin split_key /
combine_shares helpers. Also widens derive_key salt parameter from &[u8;16]
to &[u8] to accommodate the 32-byte share salts.
2026-08-26 13:01:44 +02:00
CleverWild
8159902027
feat(server::db): add share_salt column to operator table
...
Each operator row now stores a 32-byte random salt used to derive the
per-operator share encryption key from their passphrase (Argon2 KDF).
2026-08-26 13:01:44 +02:00
CleverWild
928799fa07
feat(server::actors::evm): implement operator_delete_grant
...
Sets revoked_at on the evm_basic_grant row; returns NotFound if the grant
does not exist. Wires the handler in OperatorSession replacing the todo!().
2026-08-26 13:01:44 +02:00
CleverWild
3d3a4be806
fix(server::peers::operator::auth): make ChallengeContext pub for smlang state machine
...
smlang generates a public state enum whose variants contain ChallengeContext,
requiring the type itself to be fully public. Also tightens the wildcard arm
in client auth to an exhaustive match.
2026-08-26 13:01:44 +02:00
Skipper
28b7276e11
WIP: some things
2026-08-26 13:01:44 +02:00
Skipper
f97b8f9424
feat(grpc): governance contract
2026-08-26 13:01:44 +02:00
Skipper
9ca2c4ed64
refactor(server::db): introduced newtype wrappers for entity id's in database
2026-08-26 13:01:44 +02:00
Skipper
ab79959dce
housekeeping(server): deps upgrade + diesel migration to AsyncFnOnce
2026-08-26 13:01:44 +02:00
Skipper
853a038363
fix(server): MacOS build version
2026-08-26 13:01:44 +02:00
Skipper
a31ef99338
housekeeping(server): removed unused deps
2026-08-26 13:01:44 +02:00
Skipper
ec5a8143fb
refactor: rename to to better reflect meaning
2026-08-26 13:01:44 +02:00
Skipper
e4db36f145
docs: move to folder and update to new challenge payload
2026-08-26 13:00:40 +02:00
Skipper
602be3aa11
merge: feat-lints into main
2026-08-26 13:00:40 +02:00
CleverWild
1d15e04a6b
fix(lints): remove unstable ones
2026-08-26 13:00:40 +02:00
d8a03fcdbe
Merge pull request 'refactor-integrity-check' ( #90 ) from refactor-integrity-check into main
...
Reviewed-on: #90
2026-08-26 13:00:40 +02:00
CleverWild
d4084ded35
feat: rustc and clippy linting
2026-08-26 13:00:40 +02:00
6221debd84
Merge pull request 'housekeeping(server): dependencies upgrade' ( #89 ) from push-zmvtzuwrnyyv into main
...
Reviewed-on: #89
2026-08-26 13:00:40 +02:00
Skipper
8392f27ce4
housekeeping(server): clippy warns fix
2026-08-26 13:00:40 +02:00
96b4eb1d98
Merge pull request 'refactor(hashing): introduce Hashable derive macro and migrate server types' ( #82 ) from hashing-proc-macro into main
...
Reviewed-on: #82
Reviewed-by: Stas <business@jexter.tech >
2026-08-26 13:00:40 +02:00
Skipper
d7ca0b4fc8
housekeeping(server): dependencies upgrade
2026-08-26 13:00:40 +02:00
Skipper
e6724cb8d3
merge: refactor-integrity-check into main
2026-08-26 13:00:40 +02:00
Skipper
6b572d0c86
housekeeping(server): clean too-broad visibility markers and organize imports
2026-08-26 13:00:40 +02:00
Skipper
bf63279f73
merge: refactor-integrity-check into main
2026-08-26 13:00:40 +02:00
Skipper
539265e3b1
docs: updated to new auth challenge format and removed stale TOCTOU race condition note
2026-08-26 13:00:40 +02:00
Skipper
cddf9e02ba
fix(useragent): now using new challenge format
2026-08-26 13:00:40 +02:00
Skipper
270e843598
fix(server::tests): api surface of auth challenge changed
2026-08-26 13:00:40 +02:00