allow original cipher to be passed during encrypt

This commit is contained in:
Kyle Spearrin 2018-08-15 11:43:52 -04:00
parent d56c5ff4f1
commit f16fc58d70
2 changed files with 7 additions and 4 deletions

View File

@ -14,7 +14,7 @@ export abstract class CipherService {
decryptedCipherCache: CipherView[];
clearCache: () => void;
encrypt: (model: CipherView, key?: SymmetricCryptoKey) => Promise<Cipher>;
encrypt: (model: CipherView, key?: SymmetricCryptoKey, originalCipher?: Cipher) => Promise<Cipher>;
encryptFields: (fieldsModel: FieldView[], key: SymmetricCryptoKey) => Promise<Field[]>;
encryptField: (fieldModel: FieldView, key: SymmetricCryptoKey) => Promise<Field>;
get: (id: string) => Promise<Cipher>;

View File

@ -80,11 +80,14 @@ export class CipherService implements CipherServiceAbstraction {
this.decryptedCipherCache = null;
}
async encrypt(model: CipherView, key?: SymmetricCryptoKey): Promise<Cipher> {
async encrypt(model: CipherView, key?: SymmetricCryptoKey, originalCipher: Cipher = null): Promise<Cipher> {
// Adjust password history
if (model.id != null) {
const existingCipher = await (await this.get(model.id)).decrypt();
if (existingCipher != null) {
if (originalCipher == null) {
originalCipher = await this.get(model.id);
}
if (originalCipher != null) {
const existingCipher = await originalCipher.decrypt();
model.passwordHistory = existingCipher.passwordHistory || [];
if (model.type === CipherType.Login && existingCipher.type === CipherType.Login) {
if (existingCipher.login.password != null && existingCipher.login.password !== '' &&