mirror of
https://github.com/bitwarden/browser
synced 2025-12-20 10:13:31 +00:00
* Provide RSA encryption in encrypt service * Define state for provider keys * Require cryptoService This is temporary until cryptoService has an observable active user private key. We don't want promise-based values in derive functions * Update crypto service provider keys to observables * Remove provider keys from state service * Migrate provider keys out of state account object * Correct Provider key state types * Prefix migration with current version number
30 lines
1.5 KiB
TypeScript
30 lines
1.5 KiB
TypeScript
import { Decryptable } from "../interfaces/decryptable.interface";
|
|
import { Encrypted } from "../interfaces/encrypted";
|
|
import { InitializerMetadata } from "../interfaces/initializer-metadata.interface";
|
|
import { EncArrayBuffer } from "../models/domain/enc-array-buffer";
|
|
import { EncString } from "../models/domain/enc-string";
|
|
import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key";
|
|
|
|
export abstract class EncryptService {
|
|
abstract encrypt(plainValue: string | Uint8Array, key: SymmetricCryptoKey): Promise<EncString>;
|
|
abstract encryptToBytes: (
|
|
plainValue: Uint8Array,
|
|
key?: SymmetricCryptoKey,
|
|
) => Promise<EncArrayBuffer>;
|
|
abstract decryptToUtf8: (encString: EncString, key: SymmetricCryptoKey) => Promise<string>;
|
|
abstract decryptToBytes: (encThing: Encrypted, key: SymmetricCryptoKey) => Promise<Uint8Array>;
|
|
abstract rsaEncrypt: (data: Uint8Array, publicKey: Uint8Array) => Promise<EncString>;
|
|
abstract rsaDecrypt: (data: EncString, privateKey: Uint8Array) => Promise<Uint8Array>;
|
|
abstract resolveLegacyKey: (key: SymmetricCryptoKey, encThing: Encrypted) => SymmetricCryptoKey;
|
|
abstract decryptItems: <T extends InitializerMetadata>(
|
|
items: Decryptable<T>[],
|
|
key: SymmetricCryptoKey,
|
|
) => Promise<T[]>;
|
|
/**
|
|
* Generates a base64-encoded hash of the given value
|
|
* @param value The value to hash
|
|
* @param algorithm The hashing algorithm to use
|
|
*/
|
|
hash: (value: string | Uint8Array, algorithm: "sha1" | "sha256" | "sha512") => Promise<string>;
|
|
}
|