feat(core): added keylen and algo in pbkdf2

This commit is contained in:
teidesu 2022-06-12 19:26:24 +03:00
parent ae07583161
commit e98b8f8855
3 changed files with 14 additions and 7 deletions

View file

@ -53,10 +53,13 @@ export abstract class BaseCryptoProvider implements ICryptoProvider {
abstract createAesEcb(key: Buffer): IEncryptionScheme
// algo: sha1 or sha512 (default sha512)
abstract pbkdf2(
password: Buffer,
salt: Buffer,
iterations: number
iterations: number,
keylen?: number, // = 64
algo?: string
): MaybeAsync<Buffer>
abstract sha1(data: Buffer): MaybeAsync<Buffer>

View file

@ -59,15 +59,17 @@ export class ForgeCryptoProvider extends BaseCryptoProvider {
pbkdf2(
password: Buffer,
salt: Buffer,
iterations: number
iterations: number,
keylen = 64,
algo = 'sha512'
): MaybeAsync<Buffer> {
return new Promise((resolve, reject) =>
forge.pkcs5.pbkdf2(
password.toString('binary'),
salt.toString('binary'),
iterations,
64,
forge.md.sha512.create(),
keylen,
forge.md[algo].create(),
(err: Error | null, buf: string) =>
err !== null
? reject(err)

View file

@ -44,15 +44,17 @@ export class NodeCryptoProvider extends BaseCryptoProvider {
pbkdf2(
password: Buffer,
salt: Buffer,
iterations: number
iterations: number,
keylen = 64,
algo = 'sha512',
): MaybeAsync<Buffer> {
return new Promise((resolve, reject) =>
pbkdf2(
password,
salt,
iterations,
64,
'sha512',
keylen,
algo,
(err: Error | null, buf: Buffer) =>
err !== null ? reject(err) : resolve(buf)
)