kv-store: SQLite (bundled) and in-memory Store holding only ciphertext envelopes, with base copies for three-way merges and a 10-version history. kv-ffi: VaultCore::open(path); persisted account record; local unlock key (enable/unlock_with_local_key/disable); async sync API (configure_server, set_device_signer, register_account, login, sync_now, logout, devices); DeviceSigner foreign trait; IntegrityAlarm/PinMismatch/... error variants. kv-sync: reqwest + rustls (TLS 1.3 only, ring) with SPKI pinning; OPAQUE client on kv-proto's OpaqueSuite; RFC 9421 signing per kv_proto::httpsig; pull/push with If-Match, field-level three-way merge, edit-beats-delete; signed manifest (canonical CBOR, Merkle root, prev chain, Ed25519) with rollback/fork/Merkle checks as hard integrity alarms. Tested against a wiremock fake server, plus an #[ignore] test against kestrove-server. kv-crypto: gen-vectors example and tests reproducing kestrove-spec/vectors. Co-Authored-By: Claude Opus 5.5 <[email protected]>
38 lines
1.4 KiB
JSON
38 lines
1.4 KiB
JSON
{
|
|
"description": "2SKD (docs/02 'Derivation'): Argon2id(NFKD(trim(password))) + HKDF(secret_key) -> root -> AUK, AUTH_INPUT",
|
|
"vectors": [
|
|
{
|
|
"account_id": "11111111-1111-4111-9111-111111111111",
|
|
"auk": "33e9bfb720e3cb5092677bf71d58781f7c032840299d5cc0f10c59b6d0b868d6",
|
|
"auth_input": "0eeae51fc4c439082b91211477c5e6fd792c98f1781a7b9808dbb39b54483096",
|
|
"params": {
|
|
"alg": "argon2id",
|
|
"m_kib": 65536,
|
|
"p": 4,
|
|
"salt": "a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5",
|
|
"t": 3
|
|
},
|
|
"password": "correct horse battery staple",
|
|
"root": "c6b0513bc1244cdabe9b2ec388b5cd441b8d25a3ba0ab8834f9fb231ad89a5e7",
|
|
"secret_key": "01010101010101010101010101010101",
|
|
"secret_key_display": "K1-01040G-20810-40G20-81040-G2081-C"
|
|
},
|
|
{
|
|
"account_id": "22222222-2222-4222-a222-222222222222",
|
|
"auk": "fc443a82cb371b0a33672509e61b64c08cd26bdc4ce0cdc726e98adc25906068",
|
|
"auth_input": "77a83f16adf68bae8fe9ee448e7b2ab60ff2ea5234fba69816d5b560700c18a1",
|
|
"params": {
|
|
"alg": "argon2id",
|
|
"m_kib": 65536,
|
|
"p": 4,
|
|
"salt": "00000000000000000000000000000000",
|
|
"t": 3
|
|
},
|
|
"password": " café fish ",
|
|
"root": "da0438d0cb15483dff9f4f569741911fdde9dee37b116c11402480c8f4d9b406",
|
|
"secret_key": "ffffffffffffffffffffffffffffffff",
|
|
"secret_key_display": "K1-7ZZZZZ-ZZZZZ-ZZZZZ-ZZZZZ-ZZZZZ-T"
|
|
}
|
|
]
|
|
}
|