1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-16 08:13:42 +00:00

crypto function implementations

This commit is contained in:
Kyle Spearrin
2018-04-16 12:07:51 -04:00
parent 4ad29e25f3
commit d6474aee0e
3 changed files with 59 additions and 11 deletions

View File

@@ -3,9 +3,24 @@ import * as crypto from 'crypto';
import { CryptoFunctionService } from '../abstractions/cryptoFunction.service';
export class NodeCryptoFunctionService implements CryptoFunctionService {
async pbkdf2(password: Buffer, salt: Buffer, iterations: number, length: number): Promise<ArrayBuffer> {
async pbkdf2(password: string | ArrayBuffer, salt: string | ArrayBuffer, algorithm: 'sha256' | 'sha512',
iterations: number, length: number): Promise<ArrayBuffer> {
let nodePassword: string | Buffer;
if (typeof (password) === 'string') {
nodePassword = password;
} else {
nodePassword = Buffer.from(new Uint8Array(password) as any);
}
let nodeSalt: string | Buffer;
if (typeof (salt) === 'string') {
nodeSalt = salt;
} else {
nodeSalt = Buffer.from(new Uint8Array(salt) as any);
}
return new Promise<ArrayBuffer>((resolve, reject) => {
crypto.pbkdf2(password, salt, iterations, length, 'sha256', (error, key) => {
crypto.pbkdf2(nodePassword, nodeSalt, iterations, length, algorithm, (error, key) => {
if (error != null) {
reject(error);
} else {