diff --git a/README.md b/README.md index e1f52c1..f045495 100644 --- a/README.md +++ b/README.md @@ -592,15 +592,17 @@ Phase 1: scaffolding Phase 2: crypto primitives -- [ ] Wrap libsodium init as an awaitable singleton -- [ ] `deriveKEK(password, kekSalt, memLimit, opsLimit)` (Argon2id) -- [ ] `deriveLoginSubkey(kek)` (KDF with subkey id 1, context `loginctx`, 16 +- [x] Wrap libsodium init as an awaitable singleton +- [x] `deriveKEK(password, kekSalt, memLimit, opsLimit)` (Argon2id) +- [x] `deriveLoginSubkey(kek)` (KDF with subkey id 1, context `loginctx`, 16 bytes) -- [ ] `decryptBox(ciphertext, nonce, key)` for secretbox -- [ ] `decryptSealed(ciphertext, publicKey, secretKey)` for sealed box -- [ ] `initStreamPull` and `pullStreamChunk` for chunked secretstream (4 MiB +- [x] `decryptBox(ciphertext, nonce, key)` for secretbox +- [x] `decryptSealed(ciphertext, publicKey, secretKey)` for sealed box +- [x] `initStreamPull` and `pullStreamChunk` for chunked secretstream (4 MiB plaintext chunks, 17-byte overhead) -- [ ] Round-trip tests against vectors generated by libsodium directly +- [x] Round-trip tests against vectors generated by libsodium directly +- [x] Base64 helpers (`fromBase64`, `toBase64`, `toBase64URL`) accepting all + four sodium variants on input Phase 3: SRP + auth