Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | 3x 3x 3x 3x 3x 3x 3x 7x 7x 7x 7x | import { getCryptoLib } from 'micro-stacks/crypto-aes';
import { ensureUint8Array, utf8ToBytes } from 'micro-stacks/common';
import { NodeCryptoPbkdf2 } from './node';
import { WebCryptoPbkdf2 } from './web';
import { pbkdf2Async } from '@noble/hashes/pbkdf2';
import { sha512 } from '@noble/hashes/sha512';
import type { Pbkdf2, Pbkdf2Digests } from './types';
export async function createPbkdf2(): Promise<Pbkdf2> {
try {
const cryptoLib = await getCryptoLib();
Iif (cryptoLib.name === 'webCrypto') return new WebCryptoPbkdf2(cryptoLib.lib);
return new NodeCryptoPbkdf2(cryptoLib.lib.pbkdf2);
} catch (_e) {
return {
derive(
password: string,
salt: Uint8Array,
iterations: number,
keyLength: number,
_digest: Pbkdf2Digests = 'sha512'
): Promise<Uint8Array> {
return pbkdf2Async(
sha512,
ensureUint8Array(utf8ToBytes(password)),
ensureUint8Array(salt),
{
c: iterations,
dkLen: keyLength,
}
);
},
};
}
}
|