UNPKG

662 BJavaScriptView Raw
1import { pbkdf2 as pbkdf2Js } from '@noble/hashes/pbkdf2';
2import { sha512 } from '@noble/hashes/sha512';
3import { hasBigInt, u8aToU8a } from '@polkadot/util';
4import { isReady, pbkdf2 } from '@polkadot/wasm-crypto';
5import { randomAsU8a } from '../random/asU8a.js';
6export function pbkdf2Encode(passphrase, salt = randomAsU8a(), rounds = 2048, onlyJs) {
7 const u8aPass = u8aToU8a(passphrase);
8 const u8aSalt = u8aToU8a(salt);
9 return {
10 password: !hasBigInt || (!onlyJs && isReady())
11 ? pbkdf2(u8aPass, u8aSalt, rounds)
12 : pbkdf2Js(sha512, u8aPass, u8aSalt, { c: rounds, dkLen: 64 }),
13 rounds,
14 salt
15 };
16}