1 | import { pbkdf2 as pbkdf2Js } from '@noble/hashes/pbkdf2';
|
2 | import { sha512 } from '@noble/hashes/sha512';
|
3 | import { hasBigInt, u8aToU8a } from '@polkadot/util';
|
4 | import { isReady, pbkdf2 } from '@polkadot/wasm-crypto';
|
5 | import { randomAsU8a } from '../random/asU8a.js';
|
6 | export 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 | }
|