@protontech/drive-sdk 0.10.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/crypto/driveCrypto.d.ts +20 -2
- package/dist/crypto/driveCrypto.js +72 -14
- package/dist/crypto/driveCrypto.js.map +1 -1
- package/dist/crypto/driveCrypto.test.js +3 -2
- package/dist/crypto/driveCrypto.test.js.map +1 -1
- package/dist/crypto/interface.d.ts +22 -8
- package/dist/crypto/openPGPCrypto.d.ts +30 -7
- package/dist/crypto/openPGPCrypto.js +46 -8
- package/dist/crypto/openPGPCrypto.js.map +1 -1
- package/dist/diagnostic/telemetry.js +3 -0
- package/dist/diagnostic/telemetry.js.map +1 -1
- package/dist/interface/featureFlags.d.ts +4 -1
- package/dist/interface/featureFlags.js +5 -0
- package/dist/interface/featureFlags.js.map +1 -1
- package/dist/interface/index.d.ts +2 -0
- package/dist/interface/index.js +5 -1
- package/dist/interface/index.js.map +1 -1
- package/dist/interface/photos.d.ts +13 -1
- package/dist/interface/photos.js +14 -0
- package/dist/interface/photos.js.map +1 -1
- package/dist/interface/telemetry.d.ts +12 -1
- package/dist/interface/telemetry.js.map +1 -1
- package/dist/internal/apiService/apiService.d.ts +1 -1
- package/dist/internal/apiService/apiService.js +2 -2
- package/dist/internal/apiService/apiService.js.map +1 -1
- package/dist/internal/nodes/apiService.js.map +1 -1
- package/dist/internal/nodes/nodesAccess.js +1 -1
- package/dist/internal/nodes/nodesAccess.js.map +1 -1
- package/dist/internal/photos/addToAlbum.d.ts +1 -5
- package/dist/internal/photos/addToAlbum.js +8 -87
- package/dist/internal/photos/addToAlbum.js.map +1 -1
- package/dist/internal/photos/{albums.d.ts → albumsManager.d.ts} +1 -1
- package/dist/internal/photos/{albums.js → albumsManager.js} +4 -4
- package/dist/internal/photos/albumsManager.js.map +1 -0
- package/dist/internal/photos/{albums.test.js → albumsManager.test.js} +3 -3
- package/dist/internal/photos/albumsManager.test.js.map +1 -0
- package/dist/internal/photos/apiService.d.ts +8 -4
- package/dist/internal/photos/apiService.js +38 -6
- package/dist/internal/photos/apiService.js.map +1 -1
- package/dist/internal/photos/index.d.ts +7 -5
- package/dist/internal/photos/index.js +7 -4
- package/dist/internal/photos/index.js.map +1 -1
- package/dist/internal/photos/interface.d.ts +3 -26
- package/dist/internal/photos/interface.js +0 -14
- package/dist/internal/photos/interface.js.map +1 -1
- package/dist/internal/photos/nodes.js +1 -1
- package/dist/internal/photos/nodes.js.map +1 -1
- package/dist/internal/photos/photosManager.d.ts +22 -0
- package/dist/internal/photos/photosManager.js +101 -0
- package/dist/internal/photos/photosManager.js.map +1 -0
- package/dist/internal/photos/photosManager.test.d.ts +1 -0
- package/dist/internal/photos/photosManager.test.js +222 -0
- package/dist/internal/photos/photosManager.test.js.map +1 -0
- package/dist/internal/photos/photosTransferPayloadBuilder.d.ts +57 -0
- package/dist/internal/photos/photosTransferPayloadBuilder.js +113 -0
- package/dist/internal/photos/photosTransferPayloadBuilder.js.map +1 -0
- package/dist/internal/photos/photosTransferPayloadBuilder.test.d.ts +1 -0
- package/dist/internal/photos/photosTransferPayloadBuilder.test.js +289 -0
- package/dist/internal/photos/photosTransferPayloadBuilder.test.js.map +1 -0
- package/dist/internal/photos/upload.d.ts +2 -2
- package/dist/internal/photos/upload.js +3 -3
- package/dist/internal/photos/upload.js.map +1 -1
- package/dist/internal/sharingPublic/nodes.js +11 -4
- package/dist/internal/sharingPublic/nodes.js.map +1 -1
- package/dist/internal/upload/apiService.d.ts +0 -4
- package/dist/internal/upload/apiService.js +0 -4
- package/dist/internal/upload/apiService.js.map +1 -1
- package/dist/internal/upload/cryptoService.d.ts +4 -2
- package/dist/internal/upload/cryptoService.js +18 -6
- package/dist/internal/upload/cryptoService.js.map +1 -1
- package/dist/internal/upload/index.d.ts +2 -2
- package/dist/internal/upload/index.js +2 -2
- package/dist/internal/upload/index.js.map +1 -1
- package/dist/internal/upload/interface.d.ts +1 -1
- package/dist/internal/upload/streamUploader.d.ts +1 -1
- package/dist/internal/upload/streamUploader.js +12 -13
- package/dist/internal/upload/streamUploader.js.map +1 -1
- package/dist/internal/upload/streamUploader.test.js +28 -4
- package/dist/internal/upload/streamUploader.test.js.map +1 -1
- package/dist/protonDriveClient.js +2 -2
- package/dist/protonDriveClient.js.map +1 -1
- package/dist/protonDrivePhotosClient.d.ts +20 -3
- package/dist/protonDrivePhotosClient.js +27 -3
- package/dist/protonDrivePhotosClient.js.map +1 -1
- package/dist/protonDrivePublicLinkClient.d.ts +3 -2
- package/dist/protonDrivePublicLinkClient.js +7 -3
- package/dist/protonDrivePublicLinkClient.js.map +1 -1
- package/package.json +1 -1
- package/src/crypto/driveCrypto.test.ts +3 -1
- package/src/crypto/driveCrypto.ts +82 -7
- package/src/crypto/interface.ts +21 -8
- package/src/crypto/openPGPCrypto.ts +68 -8
- package/src/diagnostic/telemetry.ts +3 -0
- package/src/interface/featureFlags.ts +5 -1
- package/src/interface/index.ts +2 -0
- package/src/interface/photos.ts +14 -1
- package/src/interface/telemetry.ts +14 -1
- package/src/internal/apiService/apiService.ts +6 -2
- package/src/internal/nodes/apiService.ts +2 -2
- package/src/internal/nodes/nodesAccess.ts +1 -1
- package/src/internal/photos/addToAlbum.ts +29 -136
- package/src/internal/photos/{albums.test.ts → albumsManager.test.ts} +3 -3
- package/src/internal/photos/{albums.ts → albumsManager.ts} +1 -1
- package/src/internal/photos/apiService.ts +73 -16
- package/src/internal/photos/index.ts +9 -4
- package/src/internal/photos/interface.ts +3 -28
- package/src/internal/photos/nodes.ts +1 -1
- package/src/internal/photos/photosManager.test.ts +266 -0
- package/src/internal/photos/photosManager.ts +144 -0
- package/src/internal/photos/photosTransferPayloadBuilder.test.ts +380 -0
- package/src/internal/photos/photosTransferPayloadBuilder.ts +203 -0
- package/src/internal/photos/upload.ts +20 -7
- package/src/internal/sharingPublic/nodes.ts +11 -4
- package/src/internal/upload/apiService.ts +7 -9
- package/src/internal/upload/cryptoService.ts +28 -7
- package/src/internal/upload/index.ts +3 -2
- package/src/internal/upload/interface.ts +1 -1
- package/src/internal/upload/streamUploader.test.ts +33 -4
- package/src/internal/upload/streamUploader.ts +13 -13
- package/src/protonDriveClient.ts +2 -1
- package/src/protonDrivePhotosClient.ts +39 -2
- package/src/protonDrivePublicLinkClient.ts +9 -1
- package/dist/internal/photos/albums.js.map +0 -1
- package/dist/internal/photos/albums.test.js.map +0 -1
- /package/dist/internal/photos/{albums.test.d.ts → albumsManager.test.d.ts} +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ProtonDriveTelemetry } from '../interface';
|
|
1
2
|
import { OpenPGPCrypto, PrivateKey, PublicKey, SessionKey, SRPModule, SRPVerifier, VERIFICATION_STATUS } from './interface';
|
|
2
3
|
/**
|
|
3
4
|
* Drive crypto layer to provide general operations for Drive crypto.
|
|
@@ -8,11 +9,25 @@ import { OpenPGPCrypto, PrivateKey, PublicKey, SessionKey, SRPModule, SRPVerifie
|
|
|
8
9
|
* but we do share same key generation across shares and nodes modules,
|
|
9
10
|
* for example, which we can generelise here and in each module just
|
|
10
11
|
* call with specific arguments.
|
|
12
|
+
*
|
|
13
|
+
* Note about AEAD encryption:
|
|
14
|
+
*
|
|
15
|
+
* The algorithm of generated session key or encrypted data is defined by
|
|
16
|
+
* the encryption key preferences. If encryption key was generated with
|
|
17
|
+
* `aeadProtect` set to true, session key or encrypted data should use
|
|
18
|
+
* AEAD algorithm.
|
|
19
|
+
*
|
|
20
|
+
* However, in Drive, we do not want to use the AEAD algorithm everywhere,
|
|
21
|
+
* only for file content. Thus, we must pass the `enableAeadWithEncryptionKeys`
|
|
22
|
+
* flag explicitely to control whether to use the encryption key preferences
|
|
23
|
+
* to avoid using AEAD on places where it would not be supported. It should
|
|
24
|
+
* be set to false by default everywhere except for content encryption.
|
|
11
25
|
*/
|
|
12
26
|
export declare class DriveCrypto {
|
|
27
|
+
private telemetry;
|
|
13
28
|
private openPGPCrypto;
|
|
14
29
|
private srpModule;
|
|
15
|
-
constructor(openPGPCrypto: OpenPGPCrypto, srpModule: SRPModule);
|
|
30
|
+
constructor(telemetry: ProtonDriveTelemetry, openPGPCrypto: OpenPGPCrypto, srpModule: SRPModule);
|
|
16
31
|
/**
|
|
17
32
|
* It generates passphrase and key that is encrypted with the
|
|
18
33
|
* generated passphrase.
|
|
@@ -26,7 +41,9 @@ export declare class DriveCrypto {
|
|
|
26
41
|
* signature) for sending to the server
|
|
27
42
|
* - decrypted data (key, sessionKey) for crypto usage
|
|
28
43
|
*/
|
|
29
|
-
generateKey(encryptionKeys: PrivateKey[], signingKey: PrivateKey
|
|
44
|
+
generateKey(encryptionKeys: PrivateKey[], signingKey: PrivateKey, { enableAead }?: {
|
|
45
|
+
enableAead: boolean;
|
|
46
|
+
}): Promise<{
|
|
30
47
|
encrypted: {
|
|
31
48
|
armoredKey: string;
|
|
32
49
|
armoredPassphrase: string;
|
|
@@ -219,6 +236,7 @@ export declare class DriveCrypto {
|
|
|
219
236
|
}>;
|
|
220
237
|
decryptShareUrlPassword(armoredPassword: string, decryptionKeys: PrivateKey[]): Promise<string>;
|
|
221
238
|
encryptShareUrlPassword(password: string, encryptionKey: PrivateKey, signingKey: PrivateKey): Promise<string>;
|
|
239
|
+
private recordPerformance;
|
|
222
240
|
}
|
|
223
241
|
export declare function uint8ArrayToUtf8(input: Uint8Array<ArrayBuffer>): string;
|
|
224
242
|
/**
|
|
@@ -20,13 +20,29 @@ var SIGNING_CONTEXTS;
|
|
|
20
20
|
* but we do share same key generation across shares and nodes modules,
|
|
21
21
|
* for example, which we can generelise here and in each module just
|
|
22
22
|
* call with specific arguments.
|
|
23
|
+
*
|
|
24
|
+
* Note about AEAD encryption:
|
|
25
|
+
*
|
|
26
|
+
* The algorithm of generated session key or encrypted data is defined by
|
|
27
|
+
* the encryption key preferences. If encryption key was generated with
|
|
28
|
+
* `aeadProtect` set to true, session key or encrypted data should use
|
|
29
|
+
* AEAD algorithm.
|
|
30
|
+
*
|
|
31
|
+
* However, in Drive, we do not want to use the AEAD algorithm everywhere,
|
|
32
|
+
* only for file content. Thus, we must pass the `enableAeadWithEncryptionKeys`
|
|
33
|
+
* flag explicitely to control whether to use the encryption key preferences
|
|
34
|
+
* to avoid using AEAD on places where it would not be supported. It should
|
|
35
|
+
* be set to false by default everywhere except for content encryption.
|
|
23
36
|
*/
|
|
24
37
|
class DriveCrypto {
|
|
38
|
+
telemetry;
|
|
25
39
|
openPGPCrypto;
|
|
26
40
|
srpModule;
|
|
27
|
-
constructor(openPGPCrypto, srpModule) {
|
|
41
|
+
constructor(telemetry, openPGPCrypto, srpModule) {
|
|
42
|
+
this.telemetry = telemetry;
|
|
28
43
|
this.openPGPCrypto = openPGPCrypto;
|
|
29
44
|
this.srpModule = srpModule;
|
|
45
|
+
this.telemetry = telemetry;
|
|
30
46
|
this.openPGPCrypto = openPGPCrypto;
|
|
31
47
|
this.srpModule = srpModule;
|
|
32
48
|
}
|
|
@@ -43,11 +59,12 @@ class DriveCrypto {
|
|
|
43
59
|
* signature) for sending to the server
|
|
44
60
|
* - decrypted data (key, sessionKey) for crypto usage
|
|
45
61
|
*/
|
|
46
|
-
async generateKey(encryptionKeys, signingKey) {
|
|
62
|
+
async generateKey(encryptionKeys, signingKey, { enableAead } = { enableAead: false }) {
|
|
47
63
|
const passphrase = this.openPGPCrypto.generatePassphrase();
|
|
48
64
|
const [{ privateKey, armoredKey }, passphraseSessionKey] = await Promise.all([
|
|
49
|
-
this.openPGPCrypto.generateKey(passphrase),
|
|
50
|
-
|
|
65
|
+
this.openPGPCrypto.generateKey(passphrase, { enableAead }),
|
|
66
|
+
// See note in the interface documentation about AEAD encryption.
|
|
67
|
+
this.openPGPCrypto.generateSessionKey(encryptionKeys, { enableAeadWithEncryptionKeys: false }),
|
|
51
68
|
]);
|
|
52
69
|
const { armoredPassphrase, armoredPassphraseSignature } = await this.encryptPassphrase(passphrase, passphraseSessionKey, encryptionKeys, signingKey);
|
|
53
70
|
return {
|
|
@@ -70,7 +87,10 @@ class DriveCrypto {
|
|
|
70
87
|
* @returns Object with serialised key packet and decrypted session key.
|
|
71
88
|
*/
|
|
72
89
|
async generateContentKey(encryptionKey) {
|
|
73
|
-
|
|
90
|
+
// See note in the interface documentation about AEAD encryption.
|
|
91
|
+
const contentKeyPacketSessionKey = await this.openPGPCrypto.generateSessionKey([encryptionKey], {
|
|
92
|
+
enableAeadWithEncryptionKeys: true,
|
|
93
|
+
});
|
|
74
94
|
const { signature: armoredContentKeyPacketSignature } = await this.openPGPCrypto.signArmored(contentKeyPacketSessionKey.data, [encryptionKey]);
|
|
75
95
|
const { keyPacket } = await this.openPGPCrypto.encryptSessionKey(contentKeyPacketSessionKey, [encryptionKey]);
|
|
76
96
|
return {
|
|
@@ -91,7 +111,9 @@ class DriveCrypto {
|
|
|
91
111
|
* @returns Object with armored passphrase and passphrase signature.
|
|
92
112
|
*/
|
|
93
113
|
async encryptPassphrase(passphrase, sessionKey, encryptionKeys, signingKey) {
|
|
94
|
-
const { armoredData: armoredPassphrase, armoredSignature: armoredPassphraseSignature } = await this.openPGPCrypto.encryptAndSignDetachedArmored(new TextEncoder().encode(passphrase), sessionKey, encryptionKeys, signingKey
|
|
114
|
+
const { armoredData: armoredPassphrase, armoredSignature: armoredPassphraseSignature } = await this.openPGPCrypto.encryptAndSignDetachedArmored(new TextEncoder().encode(passphrase), sessionKey, encryptionKeys, signingKey,
|
|
115
|
+
// See note in the interface documentation about AEAD encryption.
|
|
116
|
+
{ enableAeadWithEncryptionKeys: false });
|
|
95
117
|
return {
|
|
96
118
|
armoredPassphrase,
|
|
97
119
|
armoredPassphraseSignature,
|
|
@@ -139,7 +161,9 @@ class DriveCrypto {
|
|
|
139
161
|
*/
|
|
140
162
|
async encryptPublicLinkPasswordAndSessionKey(password, addressKey, bcryptPassphrase, sharePassphraseSessionKey) {
|
|
141
163
|
const [{ armoredData: armoredPassword }, { keyPacket }, srp] = await Promise.all([
|
|
142
|
-
this.openPGPCrypto.encryptArmored(new TextEncoder().encode(password), [addressKey]
|
|
164
|
+
this.openPGPCrypto.encryptArmored(new TextEncoder().encode(password), [addressKey], undefined,
|
|
165
|
+
// See note in the interface documentation about AEAD encryption.
|
|
166
|
+
{ enableAeadWithEncryptionKeys: false }),
|
|
143
167
|
this.openPGPCrypto.encryptSessionKeyWithPassword(sharePassphraseSessionKey, bcryptPassphrase),
|
|
144
168
|
this.srpModule.getSrpVerifier(password),
|
|
145
169
|
]);
|
|
@@ -204,7 +228,9 @@ class DriveCrypto {
|
|
|
204
228
|
* It encrypts and armors signature with provided session and encryption keys.
|
|
205
229
|
*/
|
|
206
230
|
async encryptSignature(signature, encryptionKey, sessionKey) {
|
|
207
|
-
const { armoredData: armoredSignature } = await this.openPGPCrypto.encryptArmored(signature, [encryptionKey], sessionKey
|
|
231
|
+
const { armoredData: armoredSignature } = await this.openPGPCrypto.encryptArmored(signature, [encryptionKey], sessionKey,
|
|
232
|
+
// See note in the interface documentation about AEAD encryption.
|
|
233
|
+
{ enableAeadWithEncryptionKeys: false });
|
|
208
234
|
return {
|
|
209
235
|
armoredSignature,
|
|
210
236
|
};
|
|
@@ -219,7 +245,9 @@ class DriveCrypto {
|
|
|
219
245
|
//const passphrase crypto.getRandomValues(new Uint8Array(32));
|
|
220
246
|
const passphrase = this.openPGPCrypto.generatePassphrase();
|
|
221
247
|
const hashKey = new TextEncoder().encode(passphrase);
|
|
222
|
-
const { armoredData: armoredHashKey } = await this.openPGPCrypto.encryptAndSignArmored(hashKey, undefined, [encryptionAndSigningKey], encryptionAndSigningKey
|
|
248
|
+
const { armoredData: armoredHashKey } = await this.openPGPCrypto.encryptAndSignArmored(hashKey, undefined, [encryptionAndSigningKey], encryptionAndSigningKey,
|
|
249
|
+
// See note in the interface documentation about AEAD encryption.
|
|
250
|
+
{ enableAeadWithEncryptionKeys: false });
|
|
223
251
|
return {
|
|
224
252
|
armoredHashKey,
|
|
225
253
|
hashKey,
|
|
@@ -242,7 +270,9 @@ class DriveCrypto {
|
|
|
242
270
|
if (!sessionKey && !encryptionKey) {
|
|
243
271
|
throw new Error('Neither session nor encryption key provided for encrypting node name');
|
|
244
272
|
}
|
|
245
|
-
const { armoredData: armoredNodeName } = await this.openPGPCrypto.encryptAndSignArmored(new TextEncoder().encode(nodeName), sessionKey, encryptionKey ? [encryptionKey] : [], signingKey
|
|
273
|
+
const { armoredData: armoredNodeName } = await this.openPGPCrypto.encryptAndSignArmored(new TextEncoder().encode(nodeName), sessionKey, encryptionKey ? [encryptionKey] : [], signingKey,
|
|
274
|
+
// See note in the interface documentation about AEAD encryption.
|
|
275
|
+
{ enableAeadWithEncryptionKeys: false });
|
|
246
276
|
return {
|
|
247
277
|
armoredNodeName,
|
|
248
278
|
};
|
|
@@ -282,7 +312,9 @@ class DriveCrypto {
|
|
|
282
312
|
};
|
|
283
313
|
}
|
|
284
314
|
async encryptExtendedAttributes(extendedAttributes, encryptionKey, signingKey) {
|
|
285
|
-
const { armoredData: armoredExtendedAttributes } = await this.openPGPCrypto.encryptAndSignArmored(new TextEncoder().encode(extendedAttributes), undefined, [encryptionKey], signingKey,
|
|
315
|
+
const { armoredData: armoredExtendedAttributes } = await this.openPGPCrypto.encryptAndSignArmored(new TextEncoder().encode(extendedAttributes), undefined, [encryptionKey], signingKey,
|
|
316
|
+
// See note in the interface documentation about AEAD encryption.
|
|
317
|
+
{ compress: true, enableAeadWithEncryptionKeys: false });
|
|
286
318
|
return {
|
|
287
319
|
armoredExtendedAttributes,
|
|
288
320
|
};
|
|
@@ -322,14 +354,20 @@ class DriveCrypto {
|
|
|
322
354
|
};
|
|
323
355
|
}
|
|
324
356
|
async encryptThumbnailBlock(thumbnailData, sessionKey, signingKey) {
|
|
357
|
+
const start = performance.now();
|
|
325
358
|
const { encryptedData } = await this.openPGPCrypto.encryptAndSign(thumbnailData, sessionKey, [], // Thumbnails use the session key so we do not send encryption key.
|
|
326
|
-
signingKey
|
|
359
|
+
signingKey,
|
|
360
|
+
// See note in the interface documentation about AEAD encryption.
|
|
361
|
+
{ enableAeadWithEncryptionKeys: true });
|
|
362
|
+
this.recordPerformance('content_encryption', sessionKey, thumbnailData.length, start);
|
|
327
363
|
return {
|
|
328
364
|
encryptedData,
|
|
329
365
|
};
|
|
330
366
|
}
|
|
331
367
|
async decryptThumbnailBlock(encryptedThumbnail, sessionKey, verificationKeys) {
|
|
368
|
+
const start = performance.now();
|
|
332
369
|
const { data: decryptedThumbnail, verified, verificationErrors, } = await this.openPGPCrypto.decryptAndVerify(encryptedThumbnail, sessionKey, verificationKeys);
|
|
370
|
+
this.recordPerformance('content_decryption', sessionKey, decryptedThumbnail.length, start);
|
|
333
371
|
return {
|
|
334
372
|
decryptedThumbnail,
|
|
335
373
|
verified,
|
|
@@ -337,8 +375,12 @@ class DriveCrypto {
|
|
|
337
375
|
};
|
|
338
376
|
}
|
|
339
377
|
async encryptBlock(blockData, encryptionKey, sessionKey, signingKey) {
|
|
378
|
+
const start = performance.now();
|
|
340
379
|
const { encryptedData, signature } = await this.openPGPCrypto.encryptAndSignDetached(blockData, sessionKey, [], // Blocks use the session key so we do not send encryption key.
|
|
341
|
-
signingKey
|
|
380
|
+
signingKey,
|
|
381
|
+
// See note in the interface documentation about AEAD encryption.
|
|
382
|
+
{ enableAeadWithEncryptionKeys: true });
|
|
383
|
+
this.recordPerformance('content_encryption', sessionKey, blockData.length, start);
|
|
342
384
|
const { armoredSignature } = await this.encryptSignature(signature, encryptionKey, sessionKey);
|
|
343
385
|
return {
|
|
344
386
|
encryptedData,
|
|
@@ -346,7 +388,9 @@ class DriveCrypto {
|
|
|
346
388
|
};
|
|
347
389
|
}
|
|
348
390
|
async decryptBlock(encryptedBlock, sessionKey) {
|
|
391
|
+
const start = performance.now();
|
|
349
392
|
const { data: decryptedBlock } = await this.openPGPCrypto.decryptAndVerify(encryptedBlock, sessionKey, []);
|
|
393
|
+
this.recordPerformance('content_decryption', sessionKey, decryptedBlock.length, start);
|
|
350
394
|
return decryptedBlock;
|
|
351
395
|
}
|
|
352
396
|
async signManifest(manifest, signingKey) {
|
|
@@ -367,9 +411,23 @@ class DriveCrypto {
|
|
|
367
411
|
return uint8ArrayToUtf8(password);
|
|
368
412
|
}
|
|
369
413
|
async encryptShareUrlPassword(password, encryptionKey, signingKey) {
|
|
370
|
-
const { armoredData } = await this.openPGPCrypto.encryptAndSignArmored(new TextEncoder().encode(password), undefined, [encryptionKey], signingKey
|
|
414
|
+
const { armoredData } = await this.openPGPCrypto.encryptAndSignArmored(new TextEncoder().encode(password), undefined, [encryptionKey], signingKey,
|
|
415
|
+
// See note in the interface documentation about AEAD encryption.
|
|
416
|
+
{ enableAeadWithEncryptionKeys: false });
|
|
371
417
|
return armoredData;
|
|
372
418
|
}
|
|
419
|
+
recordPerformance(type, sessionKey, bytesProcessed, start) {
|
|
420
|
+
const end = performance.now();
|
|
421
|
+
const duration = end - start;
|
|
422
|
+
const cryptoModel = sessionKey.aeadAlgorithm ? 'v1.5' : 'v1';
|
|
423
|
+
this.telemetry.recordMetric({
|
|
424
|
+
eventName: 'performance',
|
|
425
|
+
type,
|
|
426
|
+
cryptoModel,
|
|
427
|
+
bytesProcessed,
|
|
428
|
+
milliseconds: Math.round(duration),
|
|
429
|
+
});
|
|
430
|
+
}
|
|
373
431
|
}
|
|
374
432
|
exports.DriveCrypto = DriveCrypto;
|
|
375
433
|
function uint8ArrayToUtf8(input) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driveCrypto.js","sourceRoot":"","sources":["../../src/crypto/driveCrypto.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"driveCrypto.js","sourceRoot":"","sources":["../../src/crypto/driveCrypto.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const driveCrypto_1 = require("./driveCrypto");
|
|
4
|
+
const telemetry_1 = require("../tests/telemetry");
|
|
4
5
|
describe('uint8ArrayToUtf8', () => {
|
|
5
6
|
it('should convert a Uint8Array to a UTF-8 string', () => {
|
|
6
7
|
const input = new Uint8Array([72, 101, 108, 108, 111]);
|
|
@@ -47,13 +48,13 @@ describe('DriveCrypto.encryptShareUrlPassword', () => {
|
|
|
47
48
|
}),
|
|
48
49
|
};
|
|
49
50
|
const mockSrpModule = jest.fn();
|
|
50
|
-
const driveCrypto = new driveCrypto_1.DriveCrypto(mockOpenPGPCrypto, mockSrpModule);
|
|
51
|
+
const driveCrypto = new driveCrypto_1.DriveCrypto((0, telemetry_1.getMockTelemetry)(), mockOpenPGPCrypto, mockSrpModule);
|
|
51
52
|
const password = 'testPassword123';
|
|
52
53
|
const encryptionKey = 'mockEncryptionKey';
|
|
53
54
|
const signingKey = 'mockSigningKey';
|
|
54
55
|
const result = await driveCrypto.encryptShareUrlPassword(password, encryptionKey, signingKey);
|
|
55
56
|
expect(result).toBe('-----BEGIN PGP MESSAGE-----\nencrypted data\n-----END PGP MESSAGE-----');
|
|
56
|
-
expect(mockOpenPGPCrypto.encryptAndSignArmored).toHaveBeenCalledWith(new TextEncoder().encode(password), undefined, [encryptionKey], signingKey);
|
|
57
|
+
expect(mockOpenPGPCrypto.encryptAndSignArmored).toHaveBeenCalledWith(new TextEncoder().encode(password), undefined, [encryptionKey], signingKey, { enableAeadWithEncryptionKeys: false });
|
|
57
58
|
});
|
|
58
59
|
});
|
|
59
60
|
//# sourceMappingURL=driveCrypto.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driveCrypto.test.js","sourceRoot":"","sources":["../../src/crypto/driveCrypto.test.ts"],"names":[],"mappings":";;AAAA,+CAAgF;
|
|
1
|
+
{"version":3,"file":"driveCrypto.test.js","sourceRoot":"","sources":["../../src/crypto/driveCrypto.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,8 @@ export interface PrivateKey extends PublicKey {
|
|
|
25
25
|
}
|
|
26
26
|
export interface SessionKey {
|
|
27
27
|
data: Uint8Array<ArrayBuffer>;
|
|
28
|
-
algorithm:
|
|
28
|
+
algorithm: string | null;
|
|
29
|
+
aeadAlgorithm: string | null;
|
|
29
30
|
}
|
|
30
31
|
export declare enum VERIFICATION_STATUS {
|
|
31
32
|
NOT_SIGNED = 0,
|
|
@@ -65,7 +66,9 @@ export interface OpenPGPCrypto {
|
|
|
65
66
|
* 32 random bytes are generated and encoded into a base64 string.
|
|
66
67
|
*/
|
|
67
68
|
generatePassphrase: () => string;
|
|
68
|
-
generateSessionKey: (encryptionKeys: PublicKey[]
|
|
69
|
+
generateSessionKey: (encryptionKeys: PublicKey[], options: {
|
|
70
|
+
enableAeadWithEncryptionKeys: boolean;
|
|
71
|
+
}) => Promise<SessionKey>;
|
|
69
72
|
encryptSessionKey: (sessionKey: SessionKey, encryptionKeys: PublicKey | PublicKey[]) => Promise<{
|
|
70
73
|
keyPacket: Uint8Array<ArrayBuffer>;
|
|
71
74
|
}>;
|
|
@@ -77,26 +80,37 @@ export interface OpenPGPCrypto {
|
|
|
77
80
|
*
|
|
78
81
|
* The key pair is generated using the Curve25519 algorithm.
|
|
79
82
|
*/
|
|
80
|
-
generateKey: (passphrase: string
|
|
83
|
+
generateKey: (passphrase: string, options: {
|
|
84
|
+
enableAead: boolean;
|
|
85
|
+
}) => Promise<{
|
|
81
86
|
privateKey: PrivateKey;
|
|
82
87
|
armoredKey: string;
|
|
83
88
|
}>;
|
|
84
|
-
encryptArmored: (data: Uint8Array<ArrayBuffer>, encryptionKeys: PublicKey[], sessionKey
|
|
89
|
+
encryptArmored: (data: Uint8Array<ArrayBuffer>, encryptionKeys: PublicKey[], sessionKey: SessionKey | undefined, options: {
|
|
90
|
+
enableAeadWithEncryptionKeys: boolean;
|
|
91
|
+
}) => Promise<{
|
|
85
92
|
armoredData: string;
|
|
86
93
|
}>;
|
|
87
|
-
encryptAndSign: (data: Uint8Array<ArrayBuffer>, sessionKey: SessionKey, encryptionKeys: PublicKey[], signingKey: PrivateKey
|
|
94
|
+
encryptAndSign: (data: Uint8Array<ArrayBuffer>, sessionKey: SessionKey, encryptionKeys: PublicKey[], signingKey: PrivateKey, options: {
|
|
95
|
+
enableAeadWithEncryptionKeys: boolean;
|
|
96
|
+
}) => Promise<{
|
|
88
97
|
encryptedData: Uint8Array<ArrayBuffer>;
|
|
89
98
|
}>;
|
|
90
|
-
encryptAndSignArmored: (data: Uint8Array<ArrayBuffer>, sessionKey: SessionKey | undefined, encryptionKeys: PublicKey[], signingKey: PrivateKey, options
|
|
99
|
+
encryptAndSignArmored: (data: Uint8Array<ArrayBuffer>, sessionKey: SessionKey | undefined, encryptionKeys: PublicKey[], signingKey: PrivateKey, options: {
|
|
91
100
|
compress?: boolean;
|
|
101
|
+
enableAeadWithEncryptionKeys: boolean;
|
|
92
102
|
}) => Promise<{
|
|
93
103
|
armoredData: string;
|
|
94
104
|
}>;
|
|
95
|
-
encryptAndSignDetached: (data: Uint8Array<ArrayBuffer>, sessionKey: SessionKey, encryptionKeys: PublicKey[], signingKey: PrivateKey
|
|
105
|
+
encryptAndSignDetached: (data: Uint8Array<ArrayBuffer>, sessionKey: SessionKey, encryptionKeys: PublicKey[], signingKey: PrivateKey, options: {
|
|
106
|
+
enableAeadWithEncryptionKeys: boolean;
|
|
107
|
+
}) => Promise<{
|
|
96
108
|
encryptedData: Uint8Array<ArrayBuffer>;
|
|
97
109
|
signature: Uint8Array<ArrayBuffer>;
|
|
98
110
|
}>;
|
|
99
|
-
encryptAndSignDetachedArmored: (data: Uint8Array<ArrayBuffer>, sessionKey: SessionKey, encryptionKeys: PublicKey[], signingKey: PrivateKey
|
|
111
|
+
encryptAndSignDetachedArmored: (data: Uint8Array<ArrayBuffer>, sessionKey: SessionKey, encryptionKeys: PublicKey[], signingKey: PrivateKey, options: {
|
|
112
|
+
enableAeadWithEncryptionKeys: boolean;
|
|
113
|
+
}) => Promise<{
|
|
100
114
|
armoredData: string;
|
|
101
115
|
armoredSignature: string;
|
|
102
116
|
}>;
|
|
@@ -10,6 +10,9 @@ export interface OpenPGPCryptoProxy {
|
|
|
10
10
|
}[];
|
|
11
11
|
type: 'ecc';
|
|
12
12
|
curve: 'ed25519Legacy';
|
|
13
|
+
config?: {
|
|
14
|
+
aeadProtect: boolean;
|
|
15
|
+
};
|
|
13
16
|
}) => Promise<PrivateKey>;
|
|
14
17
|
exportPrivateKey: (options: {
|
|
15
18
|
privateKey: PrivateKey;
|
|
@@ -21,6 +24,9 @@ export interface OpenPGPCryptoProxy {
|
|
|
21
24
|
}) => Promise<PrivateKey>;
|
|
22
25
|
generateSessionKey: (options: {
|
|
23
26
|
recipientKeys: PublicKey[];
|
|
27
|
+
config?: {
|
|
28
|
+
ignoreSEIPDv2FeatureFlag: boolean;
|
|
29
|
+
};
|
|
24
30
|
}) => Promise<SessionKey>;
|
|
25
31
|
encryptSessionKey: (options: SessionKey & {
|
|
26
32
|
format: 'binary';
|
|
@@ -40,6 +46,9 @@ export interface OpenPGPCryptoProxy {
|
|
|
40
46
|
signingKeys?: PrivateKey;
|
|
41
47
|
detached?: Detached;
|
|
42
48
|
compress?: boolean;
|
|
49
|
+
config?: {
|
|
50
|
+
ignoreSEIPDv2FeatureFlag: boolean;
|
|
51
|
+
};
|
|
43
52
|
}) => Promise<Detached extends true ? {
|
|
44
53
|
message: Format extends 'binary' ? Uint8Array<ArrayBuffer> : string;
|
|
45
54
|
signature: Format extends 'binary' ? Uint8Array<ArrayBuffer> : string;
|
|
@@ -94,33 +103,47 @@ export declare class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
|
|
|
94
103
|
private cryptoProxy;
|
|
95
104
|
constructor(cryptoProxy: OpenPGPCryptoProxy);
|
|
96
105
|
generatePassphrase(): string;
|
|
97
|
-
generateSessionKey(encryptionKeys: PublicKey[]
|
|
106
|
+
generateSessionKey(encryptionKeys: PublicKey[], options: {
|
|
107
|
+
enableAeadWithEncryptionKeys: boolean;
|
|
108
|
+
}): Promise<SessionKey>;
|
|
98
109
|
encryptSessionKey(sessionKey: SessionKey, encryptionKeys: PublicKey | PublicKey[]): Promise<{
|
|
99
110
|
keyPacket: Uint8Array<ArrayBuffer>;
|
|
100
111
|
}>;
|
|
101
112
|
encryptSessionKeyWithPassword(sessionKey: SessionKey, password: string): Promise<{
|
|
102
113
|
keyPacket: Uint8Array<ArrayBuffer>;
|
|
103
114
|
}>;
|
|
104
|
-
generateKey(passphrase: string
|
|
115
|
+
generateKey(passphrase: string, options: {
|
|
116
|
+
enableAead: boolean;
|
|
117
|
+
}): Promise<{
|
|
105
118
|
armoredKey: string;
|
|
106
119
|
privateKey: PrivateKey;
|
|
107
120
|
}>;
|
|
108
|
-
encryptArmored(data: Uint8Array<ArrayBuffer>, encryptionKeys: PublicKey[], sessionKey
|
|
121
|
+
encryptArmored(data: Uint8Array<ArrayBuffer>, encryptionKeys: PublicKey[], sessionKey: SessionKey | undefined, options: {
|
|
122
|
+
enableAeadWithEncryptionKeys: boolean;
|
|
123
|
+
}): Promise<{
|
|
109
124
|
armoredData: string;
|
|
110
125
|
}>;
|
|
111
|
-
encryptAndSign(data: Uint8Array<ArrayBuffer>, sessionKey: SessionKey, encryptionKeys: PublicKey[], signingKey: PrivateKey
|
|
126
|
+
encryptAndSign(data: Uint8Array<ArrayBuffer>, sessionKey: SessionKey, encryptionKeys: PublicKey[], signingKey: PrivateKey, options: {
|
|
127
|
+
compress?: boolean;
|
|
128
|
+
enableAeadWithEncryptionKeys: boolean;
|
|
129
|
+
}): Promise<{
|
|
112
130
|
encryptedData: Uint8Array<ArrayBuffer>;
|
|
113
131
|
}>;
|
|
114
|
-
encryptAndSignArmored(data: Uint8Array<ArrayBuffer>, sessionKey: SessionKey | undefined, encryptionKeys: PublicKey[], signingKey: PrivateKey, options
|
|
132
|
+
encryptAndSignArmored(data: Uint8Array<ArrayBuffer>, sessionKey: SessionKey | undefined, encryptionKeys: PublicKey[], signingKey: PrivateKey, options: {
|
|
115
133
|
compress?: boolean;
|
|
134
|
+
enableAeadWithEncryptionKeys: boolean;
|
|
116
135
|
}): Promise<{
|
|
117
136
|
armoredData: string;
|
|
118
137
|
}>;
|
|
119
|
-
encryptAndSignDetached(data: Uint8Array<ArrayBuffer>, sessionKey: SessionKey, encryptionKeys: PublicKey[], signingKey: PrivateKey
|
|
138
|
+
encryptAndSignDetached(data: Uint8Array<ArrayBuffer>, sessionKey: SessionKey, encryptionKeys: PublicKey[], signingKey: PrivateKey, options: {
|
|
139
|
+
enableAeadWithEncryptionKeys: boolean;
|
|
140
|
+
}): Promise<{
|
|
120
141
|
encryptedData: Uint8Array<ArrayBuffer>;
|
|
121
142
|
signature: Uint8Array<ArrayBuffer>;
|
|
122
143
|
}>;
|
|
123
|
-
encryptAndSignDetachedArmored(data: Uint8Array<ArrayBuffer>, sessionKey: SessionKey, encryptionKeys: PublicKey[], signingKey: PrivateKey
|
|
144
|
+
encryptAndSignDetachedArmored(data: Uint8Array<ArrayBuffer>, sessionKey: SessionKey, encryptionKeys: PublicKey[], signingKey: PrivateKey, options: {
|
|
145
|
+
enableAeadWithEncryptionKeys: boolean;
|
|
146
|
+
}): Promise<{
|
|
124
147
|
armoredData: string;
|
|
125
148
|
armoredSignature: string;
|
|
126
149
|
}>;
|
|
@@ -20,8 +20,15 @@ class OpenPGPCryptoWithCryptoProxy {
|
|
|
20
20
|
// generating of random bytes without encoding it into base64.
|
|
21
21
|
return (0, utils_1.uint8ArrayToBase64String)(value);
|
|
22
22
|
}
|
|
23
|
-
async generateSessionKey(encryptionKeys) {
|
|
24
|
-
return this.cryptoProxy.generateSessionKey({
|
|
23
|
+
async generateSessionKey(encryptionKeys, options) {
|
|
24
|
+
return this.cryptoProxy.generateSessionKey({
|
|
25
|
+
recipientKeys: encryptionKeys,
|
|
26
|
+
// `ignoreSEIPDv2FeatureFlag` means that the key preferences are
|
|
27
|
+
// ignored. If set to `true`, the session key will be generated
|
|
28
|
+
// the standard non-AEAD algorithm. If set to `false`, the session
|
|
29
|
+
// key will always follow the encryption key preferences.
|
|
30
|
+
config: { ignoreSEIPDv2FeatureFlag: !options.enableAeadWithEncryptionKeys },
|
|
31
|
+
});
|
|
25
32
|
}
|
|
26
33
|
async encryptSessionKey(sessionKey, encryptionKeys) {
|
|
27
34
|
const keyPacket = await this.cryptoProxy.encryptSessionKey({
|
|
@@ -43,11 +50,12 @@ class OpenPGPCryptoWithCryptoProxy {
|
|
|
43
50
|
keyPacket,
|
|
44
51
|
};
|
|
45
52
|
}
|
|
46
|
-
async generateKey(passphrase) {
|
|
53
|
+
async generateKey(passphrase, options) {
|
|
47
54
|
const privateKey = await this.cryptoProxy.generateKey({
|
|
48
55
|
userIDs: [{ name: 'Drive key' }],
|
|
49
56
|
type: 'ecc',
|
|
50
57
|
curve: 'ed25519Legacy',
|
|
58
|
+
config: { aeadProtect: options.enableAead },
|
|
51
59
|
});
|
|
52
60
|
const armoredKey = await this.cryptoProxy.exportPrivateKey({
|
|
53
61
|
privateKey,
|
|
@@ -58,17 +66,22 @@ class OpenPGPCryptoWithCryptoProxy {
|
|
|
58
66
|
privateKey,
|
|
59
67
|
};
|
|
60
68
|
}
|
|
61
|
-
async encryptArmored(data, encryptionKeys, sessionKey) {
|
|
69
|
+
async encryptArmored(data, encryptionKeys, sessionKey, options) {
|
|
62
70
|
const { message: armoredData } = await this.cryptoProxy.encryptMessage({
|
|
63
71
|
binaryData: data,
|
|
64
72
|
sessionKey,
|
|
65
73
|
encryptionKeys,
|
|
74
|
+
// `ignoreSEIPDv2FeatureFlag` means that the key preferences are
|
|
75
|
+
// ignored. If set to `true`, the encrypted data will be generated
|
|
76
|
+
// the standard non-AEAD algorithm. If set to `false`, the session
|
|
77
|
+
// key will always follow the encryption key preferences.
|
|
78
|
+
config: { ignoreSEIPDv2FeatureFlag: !options.enableAeadWithEncryptionKeys },
|
|
66
79
|
});
|
|
67
80
|
return {
|
|
68
81
|
armoredData: armoredData,
|
|
69
82
|
};
|
|
70
83
|
}
|
|
71
|
-
async encryptAndSign(data, sessionKey, encryptionKeys, signingKey) {
|
|
84
|
+
async encryptAndSign(data, sessionKey, encryptionKeys, signingKey, options) {
|
|
72
85
|
const { message: encryptedData } = await this.cryptoProxy.encryptMessage({
|
|
73
86
|
binaryData: data,
|
|
74
87
|
sessionKey,
|
|
@@ -76,12 +89,17 @@ class OpenPGPCryptoWithCryptoProxy {
|
|
|
76
89
|
encryptionKeys,
|
|
77
90
|
format: 'binary',
|
|
78
91
|
detached: false,
|
|
92
|
+
// `ignoreSEIPDv2FeatureFlag` means that the key preferences are
|
|
93
|
+
// ignored. If set to `true`, the encrypted data will be generated
|
|
94
|
+
// the standard non-AEAD algorithm. If set to `false`, the session
|
|
95
|
+
// key will always follow the encryption key preferences.
|
|
96
|
+
config: { ignoreSEIPDv2FeatureFlag: !options.enableAeadWithEncryptionKeys },
|
|
79
97
|
});
|
|
80
98
|
return {
|
|
81
99
|
encryptedData: encryptedData,
|
|
82
100
|
};
|
|
83
101
|
}
|
|
84
|
-
async encryptAndSignArmored(data, sessionKey, encryptionKeys, signingKey, options
|
|
102
|
+
async encryptAndSignArmored(data, sessionKey, encryptionKeys, signingKey, options) {
|
|
85
103
|
const { message: armoredData } = await this.cryptoProxy.encryptMessage({
|
|
86
104
|
binaryData: data,
|
|
87
105
|
encryptionKeys,
|
|
@@ -89,12 +107,17 @@ class OpenPGPCryptoWithCryptoProxy {
|
|
|
89
107
|
signingKeys: signingKey,
|
|
90
108
|
detached: false,
|
|
91
109
|
compress: options.compress || false,
|
|
110
|
+
// `ignoreSEIPDv2FeatureFlag` means that the key preferences are
|
|
111
|
+
// ignored. If set to `true`, the encrypted data will be generated
|
|
112
|
+
// the standard non-AEAD algorithm. If set to `false`, the session
|
|
113
|
+
// key will always follow the encryption key preferences.
|
|
114
|
+
config: { ignoreSEIPDv2FeatureFlag: !options.enableAeadWithEncryptionKeys },
|
|
92
115
|
});
|
|
93
116
|
return {
|
|
94
117
|
armoredData: armoredData,
|
|
95
118
|
};
|
|
96
119
|
}
|
|
97
|
-
async encryptAndSignDetached(data, sessionKey, encryptionKeys, signingKey) {
|
|
120
|
+
async encryptAndSignDetached(data, sessionKey, encryptionKeys, signingKey, options) {
|
|
98
121
|
const { message: encryptedData, signature } = await this.cryptoProxy.encryptMessage({
|
|
99
122
|
binaryData: data,
|
|
100
123
|
sessionKey,
|
|
@@ -102,19 +125,29 @@ class OpenPGPCryptoWithCryptoProxy {
|
|
|
102
125
|
encryptionKeys,
|
|
103
126
|
format: 'binary',
|
|
104
127
|
detached: true,
|
|
128
|
+
// `ignoreSEIPDv2FeatureFlag` means that the key preferences are
|
|
129
|
+
// ignored. If set to `true`, the encrypted data will be generated
|
|
130
|
+
// the standard non-AEAD algorithm. If set to `false`, the session
|
|
131
|
+
// key will always follow the encryption key preferences.
|
|
132
|
+
config: { ignoreSEIPDv2FeatureFlag: !options.enableAeadWithEncryptionKeys },
|
|
105
133
|
});
|
|
106
134
|
return {
|
|
107
135
|
encryptedData: encryptedData,
|
|
108
136
|
signature: signature,
|
|
109
137
|
};
|
|
110
138
|
}
|
|
111
|
-
async encryptAndSignDetachedArmored(data, sessionKey, encryptionKeys, signingKey) {
|
|
139
|
+
async encryptAndSignDetachedArmored(data, sessionKey, encryptionKeys, signingKey, options) {
|
|
112
140
|
const { message: armoredData, signature: armoredSignature } = await this.cryptoProxy.encryptMessage({
|
|
113
141
|
binaryData: data,
|
|
114
142
|
sessionKey,
|
|
115
143
|
signingKeys: signingKey,
|
|
116
144
|
encryptionKeys,
|
|
117
145
|
detached: true,
|
|
146
|
+
// `ignoreSEIPDv2FeatureFlag` means that the key preferences are
|
|
147
|
+
// ignored. If set to `true`, the encrypted data will be generated
|
|
148
|
+
// the standard non-AEAD algorithm. If set to `false`, the session
|
|
149
|
+
// key will always follow the encryption key preferences.
|
|
150
|
+
config: { ignoreSEIPDv2FeatureFlag: !options.enableAeadWithEncryptionKeys },
|
|
118
151
|
});
|
|
119
152
|
return {
|
|
120
153
|
armoredData: armoredData,
|
|
@@ -175,6 +208,11 @@ class OpenPGPCryptoWithCryptoProxy {
|
|
|
175
208
|
if (!sessionKey) {
|
|
176
209
|
throw new Error('Could not decrypt session key');
|
|
177
210
|
}
|
|
211
|
+
// Encrypted OpenPGP v6 session keys used for AEAD do not store algorithm information, so we hardcode it
|
|
212
|
+
if (sessionKey.algorithm === null) {
|
|
213
|
+
sessionKey.algorithm = 'aes256';
|
|
214
|
+
sessionKey.aeadAlgorithm = 'gcm';
|
|
215
|
+
}
|
|
178
216
|
return sessionKey;
|
|
179
217
|
}
|
|
180
218
|
async decryptArmoredSessionKey(armoredData, decryptionKeys) {
|