mirror of
https://github.com/bitwarden/browser
synced 2026-02-11 14:04:03 +00:00
Remove old symmetric key representations in symmetriccryptokey
This commit is contained in:
@@ -3,6 +3,7 @@ import * as crypto from "crypto";
|
||||
import * as forge from "node-forge";
|
||||
|
||||
import { CryptoFunctionService } from "@bitwarden/common/platform/abstractions/crypto-function.service";
|
||||
import { EncryptionType } from "@bitwarden/common/platform/enums";
|
||||
import { Utils } from "@bitwarden/common/platform/misc/utils";
|
||||
import {
|
||||
CbcDecryptParameters,
|
||||
@@ -172,24 +173,33 @@ export class NodeCryptoFunctionService implements CryptoFunctionService {
|
||||
mac: string | null,
|
||||
key: SymmetricCryptoKey,
|
||||
): CbcDecryptParameters<Uint8Array> {
|
||||
const p = {} as CbcDecryptParameters<Uint8Array>;
|
||||
p.encKey = key.encKey;
|
||||
p.data = Utils.fromB64ToArray(data);
|
||||
p.iv = Utils.fromB64ToArray(iv);
|
||||
const dataBytes = Utils.fromB64ToArray(data);
|
||||
const ivBytes = Utils.fromB64ToArray(iv);
|
||||
const macBytes = mac != null ? Utils.fromB64ToArray(mac) : null;
|
||||
|
||||
const macData = new Uint8Array(p.iv.byteLength + p.data.byteLength);
|
||||
macData.set(new Uint8Array(p.iv), 0);
|
||||
macData.set(new Uint8Array(p.data), p.iv.byteLength);
|
||||
p.macData = macData;
|
||||
const innerKey = key.inner();
|
||||
|
||||
if (key.macKey != null) {
|
||||
p.macKey = key.macKey;
|
||||
if (innerKey.type === EncryptionType.AesCbc256_B64) {
|
||||
return {
|
||||
iv: ivBytes,
|
||||
data: dataBytes,
|
||||
encKey: innerKey.encryptionKey,
|
||||
} as CbcDecryptParameters<Uint8Array>;
|
||||
} else if (innerKey.type === EncryptionType.AesCbc256_HmacSha256_B64) {
|
||||
const macData = new Uint8Array(ivBytes.length + dataBytes.length);
|
||||
macData.set(ivBytes, 0);
|
||||
macData.set(dataBytes, ivBytes.length);
|
||||
return {
|
||||
iv: ivBytes,
|
||||
data: dataBytes,
|
||||
mac: macBytes,
|
||||
macData: macData,
|
||||
encKey: innerKey.encryptionKey,
|
||||
macKey: innerKey.authenticationKey,
|
||||
} as CbcDecryptParameters<Uint8Array>;
|
||||
} else {
|
||||
throw new Error("Unsupported encryption type");
|
||||
}
|
||||
if (mac != null) {
|
||||
p.mac = Utils.fromB64ToArray(mac);
|
||||
}
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
async aesDecryptFast({
|
||||
|
||||
Reference in New Issue
Block a user