@protontech/drive-sdk 0.11.0 → 0.12.1

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.
Files changed (52) hide show
  1. package/dist/crypto/driveCrypto.d.ts +16 -1
  2. package/dist/crypto/driveCrypto.js +55 -19
  3. package/dist/crypto/driveCrypto.js.map +1 -1
  4. package/dist/crypto/driveCrypto.test.js +1 -1
  5. package/dist/crypto/driveCrypto.test.js.map +1 -1
  6. package/dist/crypto/interface.d.ts +22 -8
  7. package/dist/crypto/openPGPCrypto.d.ts +30 -7
  8. package/dist/crypto/openPGPCrypto.js +46 -8
  9. package/dist/crypto/openPGPCrypto.js.map +1 -1
  10. package/dist/interface/featureFlags.d.ts +4 -1
  11. package/dist/interface/featureFlags.js +5 -0
  12. package/dist/interface/featureFlags.js.map +1 -1
  13. package/dist/interface/index.d.ts +1 -0
  14. package/dist/interface/index.js +3 -1
  15. package/dist/interface/index.js.map +1 -1
  16. package/dist/internal/photos/index.d.ts +2 -2
  17. package/dist/internal/photos/index.js +2 -2
  18. package/dist/internal/photos/index.js.map +1 -1
  19. package/dist/internal/photos/upload.d.ts +2 -2
  20. package/dist/internal/photos/upload.js +2 -2
  21. package/dist/internal/photos/upload.js.map +1 -1
  22. package/dist/internal/sharingPublic/nodes.js +11 -4
  23. package/dist/internal/sharingPublic/nodes.js.map +1 -1
  24. package/dist/internal/upload/cryptoService.d.ts +4 -2
  25. package/dist/internal/upload/cryptoService.js +14 -2
  26. package/dist/internal/upload/cryptoService.js.map +1 -1
  27. package/dist/internal/upload/index.d.ts +2 -2
  28. package/dist/internal/upload/index.js +2 -2
  29. package/dist/internal/upload/index.js.map +1 -1
  30. package/dist/protonDriveClient.js +1 -1
  31. package/dist/protonDriveClient.js.map +1 -1
  32. package/dist/protonDrivePhotosClient.d.ts +1 -1
  33. package/dist/protonDrivePhotosClient.js +6 -2
  34. package/dist/protonDrivePhotosClient.js.map +1 -1
  35. package/dist/protonDrivePublicLinkClient.d.ts +3 -2
  36. package/dist/protonDrivePublicLinkClient.js +6 -2
  37. package/dist/protonDrivePublicLinkClient.js.map +1 -1
  38. package/package.json +1 -1
  39. package/src/crypto/driveCrypto.test.ts +1 -0
  40. package/src/crypto/driveCrypto.ts +51 -10
  41. package/src/crypto/interface.ts +21 -8
  42. package/src/crypto/openPGPCrypto.ts +68 -8
  43. package/src/interface/featureFlags.ts +5 -1
  44. package/src/interface/index.ts +1 -0
  45. package/src/internal/photos/index.ts +3 -1
  46. package/src/internal/photos/upload.ts +14 -6
  47. package/src/internal/sharingPublic/nodes.ts +11 -4
  48. package/src/internal/upload/cryptoService.ts +24 -2
  49. package/src/internal/upload/index.ts +3 -2
  50. package/src/protonDriveClient.ts +1 -0
  51. package/src/protonDrivePhotosClient.ts +14 -9
  52. package/src/protonDrivePublicLinkClient.ts +8 -0
@@ -9,6 +9,19 @@ import { OpenPGPCrypto, PrivateKey, PublicKey, SessionKey, SRPModule, SRPVerifie
9
9
  * but we do share same key generation across shares and nodes modules,
10
10
  * for example, which we can generelise here and in each module just
11
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.
12
25
  */
13
26
  export declare class DriveCrypto {
14
27
  private telemetry;
@@ -28,7 +41,9 @@ export declare class DriveCrypto {
28
41
  * signature) for sending to the server
29
42
  * - decrypted data (key, sessionKey) for crypto usage
30
43
  */
31
- generateKey(encryptionKeys: PrivateKey[], signingKey: PrivateKey): Promise<{
44
+ generateKey(encryptionKeys: PrivateKey[], signingKey: PrivateKey, { enableAead }?: {
45
+ enableAead: boolean;
46
+ }): Promise<{
32
47
  encrypted: {
33
48
  armoredKey: string;
34
49
  armoredPassphrase: string;
@@ -20,6 +20,19 @@ 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 {
25
38
  telemetry;
@@ -46,11 +59,12 @@ class DriveCrypto {
46
59
  * signature) for sending to the server
47
60
  * - decrypted data (key, sessionKey) for crypto usage
48
61
  */
49
- async generateKey(encryptionKeys, signingKey) {
62
+ async generateKey(encryptionKeys, signingKey, { enableAead } = { enableAead: false }) {
50
63
  const passphrase = this.openPGPCrypto.generatePassphrase();
51
64
  const [{ privateKey, armoredKey }, passphraseSessionKey] = await Promise.all([
52
- this.openPGPCrypto.generateKey(passphrase),
53
- this.openPGPCrypto.generateSessionKey(encryptionKeys),
65
+ this.openPGPCrypto.generateKey(passphrase, { enableAead }),
66
+ // See note in the interface documentation about AEAD encryption.
67
+ this.openPGPCrypto.generateSessionKey(encryptionKeys, { enableAeadWithEncryptionKeys: false }),
54
68
  ]);
55
69
  const { armoredPassphrase, armoredPassphraseSignature } = await this.encryptPassphrase(passphrase, passphraseSessionKey, encryptionKeys, signingKey);
56
70
  return {
@@ -73,7 +87,10 @@ class DriveCrypto {
73
87
  * @returns Object with serialised key packet and decrypted session key.
74
88
  */
75
89
  async generateContentKey(encryptionKey) {
76
- const contentKeyPacketSessionKey = await this.openPGPCrypto.generateSessionKey([encryptionKey]);
90
+ // See note in the interface documentation about AEAD encryption.
91
+ const contentKeyPacketSessionKey = await this.openPGPCrypto.generateSessionKey([encryptionKey], {
92
+ enableAeadWithEncryptionKeys: true,
93
+ });
77
94
  const { signature: armoredContentKeyPacketSignature } = await this.openPGPCrypto.signArmored(contentKeyPacketSessionKey.data, [encryptionKey]);
78
95
  const { keyPacket } = await this.openPGPCrypto.encryptSessionKey(contentKeyPacketSessionKey, [encryptionKey]);
79
96
  return {
@@ -94,7 +111,9 @@ class DriveCrypto {
94
111
  * @returns Object with armored passphrase and passphrase signature.
95
112
  */
96
113
  async encryptPassphrase(passphrase, sessionKey, encryptionKeys, signingKey) {
97
- 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 });
98
117
  return {
99
118
  armoredPassphrase,
100
119
  armoredPassphraseSignature,
@@ -142,7 +161,9 @@ class DriveCrypto {
142
161
  */
143
162
  async encryptPublicLinkPasswordAndSessionKey(password, addressKey, bcryptPassphrase, sharePassphraseSessionKey) {
144
163
  const [{ armoredData: armoredPassword }, { keyPacket }, srp] = await Promise.all([
145
- 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 }),
146
167
  this.openPGPCrypto.encryptSessionKeyWithPassword(sharePassphraseSessionKey, bcryptPassphrase),
147
168
  this.srpModule.getSrpVerifier(password),
148
169
  ]);
@@ -207,7 +228,9 @@ class DriveCrypto {
207
228
  * It encrypts and armors signature with provided session and encryption keys.
208
229
  */
209
230
  async encryptSignature(signature, encryptionKey, sessionKey) {
210
- 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 });
211
234
  return {
212
235
  armoredSignature,
213
236
  };
@@ -222,7 +245,9 @@ class DriveCrypto {
222
245
  //const passphrase crypto.getRandomValues(new Uint8Array(32));
223
246
  const passphrase = this.openPGPCrypto.generatePassphrase();
224
247
  const hashKey = new TextEncoder().encode(passphrase);
225
- 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 });
226
251
  return {
227
252
  armoredHashKey,
228
253
  hashKey,
@@ -245,7 +270,9 @@ class DriveCrypto {
245
270
  if (!sessionKey && !encryptionKey) {
246
271
  throw new Error('Neither session nor encryption key provided for encrypting node name');
247
272
  }
248
- 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 });
249
276
  return {
250
277
  armoredNodeName,
251
278
  };
@@ -285,7 +312,9 @@ class DriveCrypto {
285
312
  };
286
313
  }
287
314
  async encryptExtendedAttributes(extendedAttributes, encryptionKey, signingKey) {
288
- const { armoredData: armoredExtendedAttributes } = await this.openPGPCrypto.encryptAndSignArmored(new TextEncoder().encode(extendedAttributes), undefined, [encryptionKey], signingKey, { compress: true });
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 });
289
318
  return {
290
319
  armoredExtendedAttributes,
291
320
  };
@@ -327,8 +356,10 @@ class DriveCrypto {
327
356
  async encryptThumbnailBlock(thumbnailData, sessionKey, signingKey) {
328
357
  const start = performance.now();
329
358
  const { encryptedData } = await this.openPGPCrypto.encryptAndSign(thumbnailData, sessionKey, [], // Thumbnails use the session key so we do not send encryption key.
330
- signingKey);
331
- this.recordPerformance('content_encryption', thumbnailData.length, start);
359
+ signingKey,
360
+ // See note in the interface documentation about AEAD encryption.
361
+ { enableAeadWithEncryptionKeys: true });
362
+ this.recordPerformance('content_encryption', sessionKey, thumbnailData.length, start);
332
363
  return {
333
364
  encryptedData,
334
365
  };
@@ -336,7 +367,7 @@ class DriveCrypto {
336
367
  async decryptThumbnailBlock(encryptedThumbnail, sessionKey, verificationKeys) {
337
368
  const start = performance.now();
338
369
  const { data: decryptedThumbnail, verified, verificationErrors, } = await this.openPGPCrypto.decryptAndVerify(encryptedThumbnail, sessionKey, verificationKeys);
339
- this.recordPerformance('content_decryption', decryptedThumbnail.length, start);
370
+ this.recordPerformance('content_decryption', sessionKey, decryptedThumbnail.length, start);
340
371
  return {
341
372
  decryptedThumbnail,
342
373
  verified,
@@ -346,8 +377,10 @@ class DriveCrypto {
346
377
  async encryptBlock(blockData, encryptionKey, sessionKey, signingKey) {
347
378
  const start = performance.now();
348
379
  const { encryptedData, signature } = await this.openPGPCrypto.encryptAndSignDetached(blockData, sessionKey, [], // Blocks use the session key so we do not send encryption key.
349
- signingKey);
350
- this.recordPerformance('content_encryption', blockData.length, start);
380
+ signingKey,
381
+ // See note in the interface documentation about AEAD encryption.
382
+ { enableAeadWithEncryptionKeys: true });
383
+ this.recordPerformance('content_encryption', sessionKey, blockData.length, start);
351
384
  const { armoredSignature } = await this.encryptSignature(signature, encryptionKey, sessionKey);
352
385
  return {
353
386
  encryptedData,
@@ -357,7 +390,7 @@ class DriveCrypto {
357
390
  async decryptBlock(encryptedBlock, sessionKey) {
358
391
  const start = performance.now();
359
392
  const { data: decryptedBlock } = await this.openPGPCrypto.decryptAndVerify(encryptedBlock, sessionKey, []);
360
- this.recordPerformance('content_decryption', decryptedBlock.length, start);
393
+ this.recordPerformance('content_decryption', sessionKey, decryptedBlock.length, start);
361
394
  return decryptedBlock;
362
395
  }
363
396
  async signManifest(manifest, signingKey) {
@@ -378,16 +411,19 @@ class DriveCrypto {
378
411
  return uint8ArrayToUtf8(password);
379
412
  }
380
413
  async encryptShareUrlPassword(password, encryptionKey, signingKey) {
381
- 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 });
382
417
  return armoredData;
383
418
  }
384
- recordPerformance(type, bytesProcessed, start) {
419
+ recordPerformance(type, sessionKey, bytesProcessed, start) {
385
420
  const end = performance.now();
386
421
  const duration = end - start;
422
+ const cryptoModel = sessionKey.aeadAlgorithm ? 'v1.5' : 'v1';
387
423
  this.telemetry.recordMetric({
388
424
  eventName: 'performance',
389
425
  type,
390
- cryptoModel: 'v1',
426
+ cryptoModel,
391
427
  bytesProcessed,
392
428
  milliseconds: Math.round(duration),
393
429
  });
@@ -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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"}
@@ -54,7 +54,7 @@ describe('DriveCrypto.encryptShareUrlPassword', () => {
54
54
  const signingKey = 'mockSigningKey';
55
55
  const result = await driveCrypto.encryptShareUrlPassword(password, encryptionKey, signingKey);
56
56
  expect(result).toBe('-----BEGIN PGP MESSAGE-----\nencrypted data\n-----END PGP MESSAGE-----');
57
- 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 });
58
58
  });
59
59
  });
60
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;AAChF,kDAAsD;AAEtD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACrD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACvD,MAAM,cAAc,GAAG,OAAO,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAA,8BAAgB,EAAC,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACzC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAA,8BAAgB,EAAC,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QACxC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,8BAAgB,EAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC;IACvG,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACnD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/C,MAAM,cAAc,GAAG,UAAU,CAAC;QAClC,MAAM,MAAM,GAAG,IAAA,8BAAgB,EAAC,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACzC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAA,8BAAgB,EAAC,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACnD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,cAAc,GAAG,IAAI,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAA,8BAAgB,EAAC,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACjD,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,iBAAiB,GAAG;YACtB,qBAAqB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;gBAC/C,WAAW,EAAE,wEAAwE;aACxF,CAAC;SACL,CAAC;QAEF,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,WAAW,GAAG,IAAI,yBAAW,CAAC,IAAA,4BAAgB,GAAE,EAAE,iBAAwB,EAAE,aAAoB,CAAC,CAAC;QAExG,MAAM,QAAQ,GAAG,iBAAiB,CAAC;QACnC,MAAM,aAAa,GAAG,mBAA0B,CAAC;QACjD,MAAM,UAAU,GAAG,gBAAuB,CAAC;QAE3C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,uBAAuB,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;QAE9F,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;QAC9F,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC,oBAAoB,CAChE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAClC,SAAS,EACT,CAAC,aAAa,CAAC,EACf,UAAU,CACb,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
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: any;
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[]) => Promise<SessionKey>;
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) => Promise<{
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?: SessionKey) => Promise<{
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) => Promise<{
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) => Promise<{
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) => Promise<{
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[]): Promise<SessionKey>;
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): Promise<{
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?: SessionKey): Promise<{
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): Promise<{
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): Promise<{
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): Promise<{
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({ recipientKeys: encryptionKeys });
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) {
@@ -1 +1 @@
1
- {"version":3,"file":"openPGPCrypto.js","sourceRoot":"","sources":["../../src/crypto/openPGPCrypto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openPGPCrypto.js","sourceRoot":"","sources":["../../src/crypto/openPGPCrypto.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,8 @@
3
3
  * Applications must supply their own implementation.
4
4
  */
5
5
  export interface FeatureFlagProvider {
6
- isEnabled(flagName: string, signal?: AbortSignal): Promise<boolean>;
6
+ isEnabled(flagName: FeatureFlags, signal?: AbortSignal): Promise<boolean>;
7
+ }
8
+ export declare enum FeatureFlags {
9
+ DriveCryptoEncryptBlocksWithPgpAead = "DriveCryptoEncryptBlocksWithPgpAead"
7
10
  }
@@ -1,3 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FeatureFlags = void 0;
4
+ var FeatureFlags;
5
+ (function (FeatureFlags) {
6
+ FeatureFlags["DriveCryptoEncryptBlocksWithPgpAead"] = "DriveCryptoEncryptBlocksWithPgpAead";
7
+ })(FeatureFlags || (exports.FeatureFlags = FeatureFlags = {}));
3
8
  //# sourceMappingURL=featureFlags.js.map