feat(keys): halkyon_keys, an account's keys on the device
ADR 0017's step 1, on libsodium (sodium 4.1.0+1, whose build hook compiles the libsodium 1.0.22 it ships: a C compiler and make wherever it builds): - Argon2id (64 MiB, 3 passes, kept with the account and never below that) makes a master key, which libsodium's KDF splits into SRP's secret (x) and the key-encryption key. - The account's X25519 and Ed25519 key pairs, their private halves wrapped with XChaCha20-Poly1305 under the KEK and under the recovery key, bound to their public keys. - A 24-word BIP-39 recovery phrase (the English list, MIT) and the recovery key derived from it. - Data keys sealed to the account with crypto_box_seal, bound to their IDs; content in ADR 0002's envelope, encrypted with a data key and signed with Ed25519 (detached), bound to a context the caller names. - Secrets in libsodium's guarded memory where its API takes them. - Tests: libsodium's Argon2id known answers, BIP-39's English vectors, round trips and every refusal. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
470a0b633c
commit
3bc0bae6e3
1 changed files with 4495 additions and 0 deletions
102
packages/halkyon_keys/test/bip39_vectors.dart
Normal file
102
packages/halkyon_keys/test/bip39_vectors.dart
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
// BIP-39's English test vectors (trezor/python-mnemonic, vectors.json, MIT
|
||||
// License): the entropy and the mnemonic it makes.
|
||||
|
||||
/// (entropy in hex, mnemonic).
|
||||
const bip39Vectors = <(String, String)>[
|
||||
(
|
||||
'00000000000000000000000000000000',
|
||||
'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about',
|
||||
),
|
||||
(
|
||||
'7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f',
|
||||
'legal winner thank year wave sausage worth useful legal winner thank yellow',
|
||||
),
|
||||
(
|
||||
'80808080808080808080808080808080',
|
||||
'letter advice cage absurd amount doctor acoustic avoid letter advice cage above',
|
||||
),
|
||||
(
|
||||
'ffffffffffffffffffffffffffffffff',
|
||||
'zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo wrong',
|
||||
),
|
||||
(
|
||||
'000000000000000000000000000000000000000000000000',
|
||||
'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon agent',
|
||||
),
|
||||
(
|
||||
'7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f',
|
||||
'legal winner thank year wave sausage worth useful legal winner thank year wave sausage worth useful legal will',
|
||||
),
|
||||
(
|
||||
'808080808080808080808080808080808080808080808080',
|
||||
'letter advice cage absurd amount doctor acoustic avoid letter advice cage absurd amount doctor acoustic avoid letter always',
|
||||
),
|
||||
(
|
||||
'ffffffffffffffffffffffffffffffffffffffffffffffff',
|
||||
'zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo when',
|
||||
),
|
||||
(
|
||||
'0000000000000000000000000000000000000000000000000000000000000000',
|
||||
'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon art',
|
||||
),
|
||||
(
|
||||
'7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f',
|
||||
'legal winner thank year wave sausage worth useful legal winner thank year wave sausage worth useful legal winner thank year wave sausage worth title',
|
||||
),
|
||||
(
|
||||
'8080808080808080808080808080808080808080808080808080808080808080',
|
||||
'letter advice cage absurd amount doctor acoustic avoid letter advice cage absurd amount doctor acoustic avoid letter advice cage absurd amount doctor acoustic bless',
|
||||
),
|
||||
(
|
||||
'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',
|
||||
'zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo vote',
|
||||
),
|
||||
(
|
||||
'9e885d952ad362caeb4efe34a8e91bd2',
|
||||
'ozone drill grab fiber curtain grace pudding thank cruise elder eight picnic',
|
||||
),
|
||||
(
|
||||
'6610b25967cdcca9d59875f5cb50b0ea75433311869e930b',
|
||||
'gravity machine north sort system female filter attitude volume fold club stay feature office ecology stable narrow fog',
|
||||
),
|
||||
(
|
||||
'68a79eaca2324873eacc50cb9c6eca8cc68ea5d936f98787c60c7ebc74e6ce7c',
|
||||
'hamster diagram private dutch cause delay private meat slide toddler razor book happy fancy gospel tennis maple dilemma loan word shrug inflict delay length',
|
||||
),
|
||||
(
|
||||
'c0ba5a8e914111210f2bd131f3d5e08d',
|
||||
'scheme spot photo card baby mountain device kick cradle pact join borrow',
|
||||
),
|
||||
(
|
||||
'6d9be1ee6ebd27a258115aad99b7317b9c8d28b6d76431c3',
|
||||
'horn tenant knee talent sponsor spell gate clip pulse soap slush warm silver nephew swap uncle crack brave',
|
||||
),
|
||||
(
|
||||
'9f6a2878b2520799a44ef18bc7df394e7061a224d2c33cd015b157d746869863',
|
||||
'panda eyebrow bullet gorilla call smoke muffin taste mesh discover soft ostrich alcohol speed nation flash devote level hobby quick inner drive ghost inside',
|
||||
),
|
||||
(
|
||||
'23db8160a31d3e0dca3688ed941adbf3',
|
||||
'cat swing flag economy stadium alone churn speed unique patch report train',
|
||||
),
|
||||
(
|
||||
'8197a4a47f0425faeaa69deebc05ca29c0a5b5cc76ceacc0',
|
||||
'light rule cinnamon wrap drastic word pride squirrel upgrade then income fatal apart sustain crack supply proud access',
|
||||
),
|
||||
(
|
||||
'066dca1a2bb7e8a1db2832148ce9933eea0f3ac9548d793112d9a95c9407efad',
|
||||
'all hour make first leader extend hole alien behind guard gospel lava path output census museum junior mass reopen famous sing advance salt reform',
|
||||
),
|
||||
(
|
||||
'f30f8c1da665478f49b001d94c5fc452',
|
||||
'vessel ladder alter error federal sibling chat ability sun glass valve picture',
|
||||
),
|
||||
(
|
||||
'c10ec20dc3cd9f652c7fac2f1230f7a3c828389a14392f05',
|
||||
'scissors invite lock maple supreme raw rapid void congress muscle digital elegant little brisk hair mango congress clump',
|
||||
),
|
||||
(
|
||||
'f585c11aec520db57dd353c69554b21a89b20fb0650966fa0a9d6f74fd989d8f',
|
||||
'void come effort suffer camp survey warrior heavy shoot primary clutch crush open amazing screen patrol group space point ten exist slush involve unfold',
|
||||
),
|
||||
];
|
||||
Loading…
Reference in a new issue