1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-28 06:03:40 +00:00

add support for md5 hash crypto function

This commit is contained in:
Kyle Spearrin
2018-07-30 23:29:30 -04:00
parent 13769a7fcb
commit 2045e7047a
5 changed files with 22 additions and 8 deletions

View File

@@ -47,9 +47,9 @@ export class WebCryptoFunctionService implements CryptoFunctionService {
return await this.subtle.deriveBits(pbkdf2Params, impKey, wcLen);
}
async hash(value: string | ArrayBuffer, algorithm: 'sha1' | 'sha256' | 'sha512'): Promise<ArrayBuffer> {
if ((this.isEdge || this.isIE) && algorithm === 'sha1') {
const md = forge.md.sha1.create();
async hash(value: string | ArrayBuffer, algorithm: 'sha1' | 'sha256' | 'sha512' | 'md5'): Promise<ArrayBuffer> {
if (((this.isEdge || this.isIE) && algorithm === 'sha1') || algorithm === 'md5') {
const md = algorithm === 'md5' ? forge.md.md5.create() : forge.md.sha1.create();
const valueBytes = this.toByteString(value);
md.update(valueBytes, 'raw');
return Utils.fromByteStringToArray(md.digest().data).buffer;
@@ -263,7 +263,10 @@ export class WebCryptoFunctionService implements CryptoFunctionService {
return bytes;
}
private toWebCryptoAlgorithm(algorithm: 'sha1' | 'sha256' | 'sha512'): string {
private toWebCryptoAlgorithm(algorithm: 'sha1' | 'sha256' | 'sha512' | 'md5'): string {
if (algorithm === 'md5') {
throw new Error('MD5 is not supported in WebCrypto.');
}
return algorithm === 'sha1' ? 'SHA-1' : algorithm === 'sha256' ? 'SHA-256' : 'SHA-512';
}
}