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 abstract createAesEcb(key: Buffer): IEncryptionScheme
// algo: sha1 or sha512 (default sha512)
abstract pbkdf2( abstract pbkdf2(
password: Buffer, password: Buffer,
salt: Buffer, salt: Buffer,
iterations: number iterations: number,
keylen?: number, // = 64
algo?: string
): MaybeAsync<Buffer> ): MaybeAsync<Buffer>
abstract sha1(data: Buffer): MaybeAsync<Buffer> abstract sha1(data: Buffer): MaybeAsync<Buffer>

View file

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

View file

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