Files
SeedPass/js/packages/test-vectors/fixtures/password_kdf.json
T
thePR0M3TH3ANandClaude Fable 5 6d6ad5e2c5 TS port slice 2: entry schemas, password KDF, legacy vault formats
- Zod schemas for all 9 entry kinds (schema_version 4): validate and
  roundtrip the Python EntryManager-generated fixture unchanged; refuse
  future schema versions.
- Password KDF parity: PBKDF2-SHA256 (NFKD+strip, fingerprint salt, 50k/100k
  iters) and Argon2id via @noble/hashes, both fixture-verified.
- Legacy vault decrypt chain matching EncryptionManager.decrypt_data:
  V3 GCM -> V2 GCM -> V2-header-over-Fernet -> raw Fernet (decrypt-only),
  plus the JSON kdf/ct file wrapper with bare-ciphertext fallback; the
  parent-seed file decrypts end-to-end from password.
- Fixture generator grows password_kdf.json and legacy_payloads.json
  (pinned IVs/nonces, fixture-only).
- 100 parity tests green in Node and jsdom.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-08-13 10:23:56 -04:00

73 lines
2.2 KiB
JSON

{
"argon2id_cases": [
{
"kdf": {
"name": "argon2id",
"params": {
"memory_cost": 65536,
"parallelism": 8,
"time_cost": 2
},
"salt_b64": "Zml4dHVyZS1zYWx0LTE2Yg==",
"version": 1
},
"key_urlsafe_b64": "kOetayBVH0lqgiKEZoduzgp1wSN6Sr0uYO1c8qY84jY=",
"password": "fixture-password"
},
{
"kdf": {
"name": "argon2id",
"params": {
"memory_cost": 8192,
"parallelism": 1,
"time_cost": 1
},
"salt_b64": "Zml4dHVyZS1zYWx0LTE2Yg==",
"version": 1
},
"key_urlsafe_b64": "PkbCivI-Zyl-WamZ8hsHb9xTDeEMJrbiMMMcze9Zrnk=",
"password": "fixture-password"
}
],
"description": "Password-based key derivation. PBKDF2: NFKD-normalized+stripped password, salt = SHA256(fingerprint)[:16], PBKDF2-HMAC-SHA256, 32 bytes, urlsafe b64. Argon2id: NFKD+strip, salt from config, hash_len 32, urlsafe b64. Salts pinned for fixtures only.",
"fixture_version": 1,
"pbkdf2_cases": [
{
"fingerprint": "C557EEC878DFD852",
"iterations": 50000,
"key_urlsafe_b64": "ZBUI9O_vfhYEE-Hhq6csLpihWzregbuLnXbifaLE3lg=",
"password": "fixture-password"
},
{
"fingerprint": "C557EEC878DFD852",
"iterations": 100000,
"key_urlsafe_b64": "jruA49jkHzZAnNR7uqIznJjySs9CzS2C8drQWkcyuY8=",
"password": "fixture-password"
},
{
"fingerprint": "C557EEC878DFD852",
"iterations": 50000,
"key_urlsafe_b64": "mWJNQU1UYvjHY1dpjnXutzoRIj_IUZsGG8kwCQp0Qsg=",
"password": "correct horse battery staple"
},
{
"fingerprint": "C557EEC878DFD852",
"iterations": 100000,
"key_urlsafe_b64": "2KcQMPdKRgUZNRUG1A8PetAh5BfjmL-OYBLZU8ziIpo=",
"password": "correct horse battery staple"
},
{
"fingerprint": "C557EEC878DFD852",
"iterations": 50000,
"key_urlsafe_b64": "zKjk8qcTuGEQ9kHNVtL05ANedDKx6IcJBlL-ejMY8Xg=",
"password": " p\u00e4ssw\u00f6rd "
},
{
"fingerprint": "C557EEC878DFD852",
"iterations": 100000,
"key_urlsafe_b64": "QQ9Dcp9T5VkrSyU1ITgFF-FnRU6r0GZST4FdKxrh6xk=",
"password": " p\u00e4ssw\u00f6rd "
}
]
}