mirror of
https://github.com/bitwarden/browser
synced 2024-12-23 08:30:14 +01:00
bacb8828de
* refactor: update clientType enum * refactor: update deviceType filename * refactor: update encryptedExportType filename * refactor: update encryptionType filename * refactor: update eventType filename * refactor: update fieldType filename * refactor: update fileUploadType filename * refactor: update hashPurpose filename * refactor: update htmlStorageLocation filename * refactor: update kdfType filename * refactor: update keySuffixOptions filename * refactor: update linkedIdType filename * refactor: update logLevelType filename * refactor: update nativeMessagingVersion filename * refactor: update notificationType filename * refactor: update productType filename * refactor: update secureNoteType filename * refactor: update stateVersion filename * refactor: update storageLocation filename * refactor: update themeType filename * refactor: update uriMatchType filename * fix: update kdfType classes missed in initial pass, refs AC-1266 * fix: missing import update for device-type * refactor: add barrel file for enums and update pathed import statements, refs AC-1266 * fix: incorrect import statements for web, refs AC-1266 * fix: missed import statement updates (browser), refs AC-1266 * fix: missed import statement changes (cli), refs AC-1266 * fix: missed import statement changes (desktop), refs AC-1266 * fix: prettier, refs AC-1266 * refactor: (libs) update relative paths to use barrel file, refs AC-1266 * fix: missed find/replace import statements for SecureNoteType, refs AC-1266 * refactor: apply .enum suffix to enums folder and modify leftover relative paths, refs AC-1266 * fix: find/replace errors for native-messaging-version, refs AC-1266
87 lines
2.6 KiB
TypeScript
87 lines
2.6 KiB
TypeScript
import { EncryptionType } from "@bitwarden/common/enums";
|
|
import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key";
|
|
|
|
import { makeStaticByteArray } from "../../utils";
|
|
|
|
describe("SymmetricCryptoKey", () => {
|
|
it("errors if no key", () => {
|
|
const t = () => {
|
|
new SymmetricCryptoKey(null);
|
|
};
|
|
|
|
expect(t).toThrowError("Must provide key");
|
|
});
|
|
|
|
describe("guesses encKey from key length", () => {
|
|
it("AesCbc256_B64", () => {
|
|
const key = makeStaticByteArray(32);
|
|
const cryptoKey = new SymmetricCryptoKey(key);
|
|
|
|
expect(cryptoKey).toEqual({
|
|
encKey: key,
|
|
encKeyB64: "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8=",
|
|
encType: 0,
|
|
key: key,
|
|
keyB64: "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8=",
|
|
macKey: null,
|
|
});
|
|
});
|
|
|
|
it("AesCbc128_HmacSha256_B64", () => {
|
|
const key = makeStaticByteArray(32);
|
|
const cryptoKey = new SymmetricCryptoKey(key, EncryptionType.AesCbc128_HmacSha256_B64);
|
|
|
|
expect(cryptoKey).toEqual({
|
|
encKey: key.slice(0, 16),
|
|
encKeyB64: "AAECAwQFBgcICQoLDA0ODw==",
|
|
encType: 1,
|
|
key: key,
|
|
keyB64: "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8=",
|
|
macKey: key.slice(16, 32),
|
|
macKeyB64: "EBESExQVFhcYGRobHB0eHw==",
|
|
});
|
|
});
|
|
|
|
it("AesCbc256_HmacSha256_B64", () => {
|
|
const key = makeStaticByteArray(64);
|
|
const cryptoKey = new SymmetricCryptoKey(key);
|
|
|
|
expect(cryptoKey).toEqual({
|
|
encKey: key.slice(0, 32),
|
|
encKeyB64: "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8=",
|
|
encType: 2,
|
|
key: key,
|
|
keyB64:
|
|
"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+Pw==",
|
|
macKey: key.slice(32, 64),
|
|
macKeyB64: "ICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj8=",
|
|
});
|
|
});
|
|
|
|
it("unknown length", () => {
|
|
const t = () => {
|
|
new SymmetricCryptoKey(makeStaticByteArray(30));
|
|
};
|
|
|
|
expect(t).toThrowError("Unable to determine encType.");
|
|
});
|
|
});
|
|
|
|
it("toJSON creates object for serialization", () => {
|
|
const key = new SymmetricCryptoKey(makeStaticByteArray(64).buffer);
|
|
const actual = key.toJSON();
|
|
|
|
const expected = { keyB64: key.keyB64 };
|
|
|
|
expect(actual).toEqual(expected);
|
|
});
|
|
|
|
it("fromJSON hydrates new object", () => {
|
|
const expected = new SymmetricCryptoKey(makeStaticByteArray(64).buffer);
|
|
const actual = SymmetricCryptoKey.fromJSON({ keyB64: expected.keyB64 });
|
|
|
|
expect(actual).toEqual(expected);
|
|
expect(actual).toBeInstanceOf(SymmetricCryptoKey);
|
|
});
|
|
});
|