diff --git a/src/models/domain/cipherString.ts b/src/models/domain/cipherString.ts index 6d49d1724ea..3c5bed833cb 100644 --- a/src/models/domain/cipherString.ts +++ b/src/models/domain/cipherString.ts @@ -16,11 +16,11 @@ export class CipherString { if (data != null) { // data and header const encType = encryptedStringOrType as EncryptionType; - this.encryptedString = encType + '.' + data; - // iv if (iv != null) { - this.encryptedString += ('|' + iv); + this.encryptedString = encType + '.' + iv + '|' + data; + } else { + this.encryptedString = encType + '.' + data; } // mac diff --git a/src/services/crypto.service.ts b/src/services/crypto.service.ts index b2da1ce5321..66f4c810a79 100644 --- a/src/services/crypto.service.ts +++ b/src/services/crypto.service.ts @@ -96,12 +96,17 @@ export class CryptoService implements CryptoServiceAbstraction { return key == null ? null : this.key; } - getKeyHash(): Promise { + async getKeyHash(): Promise { if (this.keyHash != null) { - return Promise.resolve(this.keyHash); + return this.keyHash; } - return this.storageService.get(Keys.keyHash); + const keyHash = await this.secureStorageService.get(Keys.keyHash); + if (keyHash != null) { + this.keyHash = keyHash; + } + + return keyHash == null ? null : this.keyHash; } @sequentialize(() => 'getEncKey') @@ -380,7 +385,7 @@ export class CryptoService implements CryptoServiceAbstraction { const iv = Utils.fromBufferToB64(encObj.iv); const data = Utils.fromBufferToB64(encObj.data); const mac = encObj.mac != null ? Utils.fromBufferToB64(encObj.mac) : null; - return new CipherString(encObj.key.encType, iv, data, mac); + return new CipherString(encObj.key.encType, data, iv, mac); } async encryptToBytes(plainValue: ArrayBuffer, key?: SymmetricCryptoKey): Promise {