Function: deriveMasterKey()
deriveMasterKey(
password,salt):Promise<SecretBytes>
Defined in: kdf.ts:34
Derives a 32-byte master key from a password with Argon2id (19 MiB memory, 2 passes, 1 lane: the OWASP interactive profile). The result stays in WASM memory as SecretBytes; use deriveKey() on it to obtain purpose-specific subkeys (for example an auth key and a vault key with different info strings).
This is not part of quantum-safe-py (which has no master-password concept), so there is no cross-library compatibility requirement; the parameters are fixed so the same password and salt always give the same key.
Passwords are used as the UTF-8 bytes of the string you pass, with no Unicode normalisation. If users may type the same password in different composed forms, normalise it first (for example password.normalize('NFKC')) and do so consistently everywhere.
The call is CPU- and memory-heavy. It currently runs synchronously on the calling thread inside the returned promise; in a browser, run it in a Web Worker to keep the UI responsive.
Parameters
password
string | Uint8Array<ArrayBufferLike>
The password (string, or bytes you control and should wipe afterwards).
salt
Uint8Array
At least 8 bytes; use 16+ random bytes per user.
Returns
Promise<SecretBytes>
A 32-byte SecretBytes; free it (or use using) when done.
Throws
for a too-short salt.
Throws
if password is neither a string nor bytes, or salt is not bytes.
Throws
if init() has not completed.
Example
using master = await deriveMasterKey('correct horse battery staple', salt);
const authKey = master.deriveKey(32, utf8('myapp-auth-v1'));