CleverWild
62fb83469f
refactor(custody): drop the single-implementation CustodyStore trait
2026-09-11 15:45:21 +02:00
CleverWild
d49c39130a
fix(vault): apply Shamir custody review feedback
2026-09-11 15:02:59 +02:00
CleverWild
c722712166
feat(vault)!: add multi-operator Shamir custody
2026-09-11 10:48:01 +02:00
Skipper
27925a67ad
merge: custom db ids for entities
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
Clippy Bot
3d4bba3584
test(client-auth): update metadata test to reflect frozen-metadata behavior
2026-08-26 13:01:44 +02:00
Skipper
853a038363
fix(server): MacOS build version
2026-08-26 13:01:44 +02:00
Clippy Bot
7cc745182f
Merge branch 'main' into zeroized-bootstrap-token
2026-08-26 13:01:44 +02:00
Skipper
a31ef99338
housekeeping(server): removed unused deps
2026-08-26 13:01:44 +02:00
Clippy Bot
95799e5da8
fix: lints
2026-08-26 13:01:44 +02:00
CleverWild
8dabec893e
fix(user-agent): zombie sessions #74
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
CleverWild
00426e597d
fix!: protect evm_wallet integrity and bind key ciphertext to wallet address
...
Three independent failures allowed an offline attacker with DB write access
to sign transactions using a different wallet's private key:
1. evm_wallet had no HMAC envelope — aead_encrypted_id could be swapped silently.
2. AEAD used a static tag as AAD — any valid ciphertext decrypted as any wallet key.
3. No post-decryption check that the derived address matched the requested wallet.
Fix: sign_entity covers (address, aead_encrypted_id) in a single transaction;
CreateNew/Decrypt take caller-provided AAD (wallet address bytes); after decryption
signer.address() is verified against the requested wallet address.
2026-08-26 13:01:44 +02:00
CleverWild
10486e6a32
fix(client-auth): freeze client metadata after initial operator approval
2026-08-26 13:01:44 +02:00
CleverWild
2b8acad415
fix: lints
2026-08-26 13:01:44 +02:00
CleverWild
55b5b9361f
fix(operator): bind sign-transaction to operator-approved client set
2026-08-26 13:01:44 +02:00
CleverWild
49e5f2c7f6
Merge branch 'main' into security-hash-revoke_at
2026-08-26 13:01:44 +02:00
CleverWild
5824df16b1
fix(integrity): return AttestationStatus::Unavailable for key version mismatch
2026-08-26 13:01:44 +02:00
CleverWild
7de235f144
fix(smlang::statemachine): macro invocation requires inner types to be public
2026-08-26 13:01:44 +02:00
CleverWild
39d5dfd2e8
fix(wallet): delete access entries by entry ID instead of wallet ID
2026-08-26 13:01:44 +02:00
CleverWild
add058f1d5
security(bootstrap): use SafeCell for token storage instead of zeroize
2026-08-26 13:01:44 +02:00
CleverWild
5ecf3508d6
fix(UA): signing endpoint accepts arbitrary client_id
2026-08-26 13:01:44 +02:00
CleverWild
2b53023234
security: feat unseal and bootstrap handshake brute-force protection
2026-08-26 13:01:44 +02:00
CleverWild
850e2b8669
fix(bootstrap): token persists on disk with weak file permissions #59
2026-08-26 13:01:44 +02:00
CleverWild
4e11c27129
security(server): use SysRng directly for bootstrap token generation
...
Replace make_rng()/StdRng with UnwrapErr(SysRng) to eliminate the PRNG
intermediate layer and make OS entropy derivation explicit and unambiguous.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-08-26 13:01:44 +02:00
CleverWild
84e1ef7c85
security(memory): zeroization of bootstrap token
2026-08-26 13:01:44 +02:00
CleverWild
7e23b3b2ec
security(evm): remove client-controlled wallet_access_id from grant revocation
2026-08-26 13:00:40 +02:00
Skipper
602be3aa11
merge: feat-lints into main
2026-08-26 13:00:40 +02:00
CleverWild
bb28d311a1
feat(evm): add wallet_access_id to grant deletion requests and revocation logic
2026-08-26 13:00:40 +02:00
CleverWild
1d15e04a6b
fix(lints): remove unstable ones
2026-08-26 13:00:40 +02:00
CleverWild
3302bb8995
refactor(evm): implement revoke_grant method for grant revocation
2026-08-26 13:00:40 +02:00
CleverWild
d4084ded35
feat: rustc and clippy linting
2026-08-26 13:00:40 +02:00
Skipper
8392f27ce4
housekeeping(server): clippy warns fix
2026-08-26 13:00:40 +02:00
Skipper
e6724cb8d3
merge: refactor-integrity-check into main
2026-08-26 13:00:40 +02:00
CleverWild
7a64bcd1bf
revert(server): bind grant revocation state (revoked_at) to integrity hash
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
d7ca0b4fc8
housekeeping(server): dependencies upgrade
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
Skipper
0a48839321
refactor(server::{useragent::auth, client::auth}): use random based + timestamp nonce instead of monotonic counter in database
2026-08-26 13:00:40 +02:00
Skipper
f6151293d4
refactor(server): now keeps track of useragents, instead of
2026-08-26 13:00:40 +02:00
Skipper
3bbf713e67
refactor(server::grpc::vault_gate): standard approach using / traits
2026-08-26 13:00:40 +02:00
Skipper
810656702b
fix(server): sending fixed vault state when on stage
2026-08-26 13:00:40 +02:00
hdbg
4823a291f8
WIP: kameo::messages wiring for transport generalization
2026-08-26 13:00:40 +02:00
hdbg
1d9b572565
feat(user-agent): add VaultGate for sealed vault authentication
2026-08-26 13:00:40 +02:00
hdbg
af7e90dcad
fix(server::integrity): vault now differentias between expected/unexpected states for commands more granularly
2026-08-26 13:00:40 +02:00
hdbg
97e6b1950d
fix(useragent): unsafe, but working implementation of ml-dsa
2026-08-26 13:00:40 +02:00