@haskou/value-objects 2.8.0 → 2.9.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.
Files changed (74) hide show
  1. package/README.md +28 -19
  2. package/dist/errors/InvalidEncryptedPrivateKeyFormatError.d.ts +5 -0
  3. package/dist/errors/InvalidEncryptedPrivateKeyFormatError.d.ts.map +1 -0
  4. package/dist/errors/InvalidEncryptedPrivateKeyFormatError.js +11 -0
  5. package/dist/errors/InvalidEncryptedPrivateKeyFormatError.js.map +1 -0
  6. package/dist/errors/InvalidPasswordError.d.ts +5 -0
  7. package/dist/errors/InvalidPasswordError.d.ts.map +1 -0
  8. package/dist/errors/InvalidPasswordError.js +11 -0
  9. package/dist/errors/InvalidPasswordError.js.map +1 -0
  10. package/dist/errors/index.d.ts +2 -0
  11. package/dist/errors/index.d.ts.map +1 -1
  12. package/dist/errors/index.js +2 -0
  13. package/dist/errors/index.js.map +1 -1
  14. package/dist/patterns/Assert.d.ts +1 -1
  15. package/dist/patterns/Assert.d.ts.map +1 -1
  16. package/dist/value-objects/Password.d.ts +8 -0
  17. package/dist/value-objects/Password.d.ts.map +1 -0
  18. package/dist/value-objects/Password.js +28 -0
  19. package/dist/value-objects/Password.js.map +1 -0
  20. package/dist/value-objects/crypto/CryptoAdapter.d.ts +3 -2
  21. package/dist/value-objects/crypto/CryptoAdapter.d.ts.map +1 -1
  22. package/dist/value-objects/crypto/CryptoAdapter.js +9 -4
  23. package/dist/value-objects/crypto/CryptoAdapter.js.map +1 -1
  24. package/dist/value-objects/crypto/EncryptedKeyPair.d.ts +4 -4
  25. package/dist/value-objects/crypto/EncryptedKeyPair.d.ts.map +1 -1
  26. package/dist/value-objects/crypto/EncryptedKeyPair.js.map +1 -1
  27. package/dist/value-objects/crypto/EncryptedPayload.d.ts.map +1 -1
  28. package/dist/value-objects/crypto/EncryptedPayload.js +5 -0
  29. package/dist/value-objects/crypto/EncryptedPayload.js.map +1 -1
  30. package/dist/value-objects/crypto/EncryptedPrivateKey.d.ts +3 -2
  31. package/dist/value-objects/crypto/EncryptedPrivateKey.d.ts.map +1 -1
  32. package/dist/value-objects/crypto/EncryptedPrivateKey.js +6 -4
  33. package/dist/value-objects/crypto/EncryptedPrivateKey.js.map +1 -1
  34. package/dist/value-objects/crypto/KeyPair.d.ts +2 -2
  35. package/dist/value-objects/crypto/KeyPair.d.ts.map +1 -1
  36. package/dist/value-objects/crypto/KeyPair.js +1 -1
  37. package/dist/value-objects/crypto/KeyPair.js.map +1 -1
  38. package/dist/value-objects/crypto/PrivateKey.d.ts +6 -3
  39. package/dist/value-objects/crypto/PrivateKey.d.ts.map +1 -1
  40. package/dist/value-objects/crypto/PrivateKey.js +43 -31
  41. package/dist/value-objects/crypto/PrivateKey.js.map +1 -1
  42. package/dist/value-objects/crypto/PublicKey.d.ts +3 -0
  43. package/dist/value-objects/crypto/PublicKey.d.ts.map +1 -1
  44. package/dist/value-objects/crypto/PublicKey.js +9 -2
  45. package/dist/value-objects/crypto/PublicKey.js.map +1 -1
  46. package/dist/value-objects/crypto/StrictBase64.d.ts +15 -0
  47. package/dist/value-objects/crypto/StrictBase64.d.ts.map +1 -0
  48. package/dist/value-objects/crypto/StrictBase64.js +36 -0
  49. package/dist/value-objects/crypto/StrictBase64.js.map +1 -0
  50. package/dist/value-objects/crypto/SymmetricKey.d.ts +14 -5
  51. package/dist/value-objects/crypto/SymmetricKey.d.ts.map +1 -1
  52. package/dist/value-objects/crypto/SymmetricKey.js +53 -18
  53. package/dist/value-objects/crypto/SymmetricKey.js.map +1 -1
  54. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.d.ts +2 -2
  55. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.d.ts.map +1 -1
  56. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.js.map +1 -1
  57. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.d.ts +4 -3
  58. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.d.ts.map +1 -1
  59. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.js +6 -3
  60. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.js.map +1 -1
  61. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV3.d.ts +24 -0
  62. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV3.d.ts.map +1 -0
  63. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV3.js +105 -0
  64. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV3.js.map +1 -0
  65. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.d.ts +2 -2
  66. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.d.ts.map +1 -1
  67. package/dist/value-objects/index.d.ts +1 -0
  68. package/dist/value-objects/index.d.ts.map +1 -1
  69. package/dist/value-objects/index.js +1 -0
  70. package/dist/value-objects/index.js.map +1 -1
  71. package/dist/value-objects/time/DayOfWeek.d.ts.map +1 -1
  72. package/dist/value-objects/time/DayOfWeek.js +2 -3
  73. package/dist/value-objects/time/DayOfWeek.js.map +1 -1
  74. package/package.json +1 -1
@@ -11,31 +11,29 @@ const CryptoAdapter_1 = require("./CryptoAdapter");
11
11
  const Key_1 = require("./Key");
12
12
  const PublicKey_1 = require("./PublicKey");
13
13
  const Signature_1 = require("./Signature");
14
+ const StrictBase64_1 = require("./StrictBase64");
14
15
  class PrivateKey extends Key_1.Key {
15
16
  static LENGTH = 119;
16
- static ENCRYPTED_PAYLOAD_PARTS = 4;
17
+ static LEGACY_ENCRYPTED_PAYLOAD_PARTS = 4;
18
+ static OWASP_ENCRYPTED_PAYLOAD_PARTS = 6;
17
19
  static EPHEMERAL_PUBLIC_KEY_LENGTH = 32;
18
20
  static IV_LENGTH = 12;
19
21
  static TAG_LENGTH = 16;
20
22
  static MAX_CIPHERTEXT_LENGTH = 1024 * 1024;
21
- static BASE64_PATTERN = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;
23
+ static PAYLOAD_ALGORITHM = 'x25519-hkdf-sha256-aes-256-gcm';
24
+ static PAYLOAD_VERSION = 'v2';
22
25
  static PATTERN = /^-----BEGIN PRIVATE KEY-----\n[A-Za-z0-9+/=]+\n-----END PRIVATE KEY-----\n$/;
23
- static getBase64DecodedLength(value) {
24
- const padding = value.endsWith('==') ? 2 : value.endsWith('=') ? 1 : 0;
25
- return (value.length / 4) * 3 - padding;
26
- }
27
- static ensureIsBase64(value, encryptedPayload, options = { allowEmpty: false }) {
28
- (0, patterns_1.assert)((options.allowEmpty || value.length > 0) &&
29
- value.length % 4 === 0 &&
30
- PrivateKey.BASE64_PATTERN.test(value), new InvalidFormatError_1.InvalidFormatError(encryptedPayload.valueOf()));
26
+ static ensureIsBase64(value, encryptedPayload, options) {
27
+ StrictBase64_1.StrictBase64.ensure(value, new InvalidFormatError_1.InvalidFormatError(encryptedPayload.valueOf()), options);
31
28
  }
32
29
  static ensureBase64DecodedLength(value, encryptedPayload, length) {
33
- PrivateKey.ensureIsBase64(value, encryptedPayload);
34
- (0, patterns_1.assert)(PrivateKey.getBase64DecodedLength(value) === length, new InvalidFormatError_1.InvalidFormatError(encryptedPayload.valueOf()));
30
+ StrictBase64_1.StrictBase64.ensureDecodedLength(value, new InvalidFormatError_1.InvalidFormatError(encryptedPayload.valueOf()), length);
35
31
  }
36
32
  static decodeBase64(value, encryptedPayload) {
37
- PrivateKey.ensureIsBase64(value, encryptedPayload);
38
- return buffer_1.Buffer.from(value, 'base64');
33
+ return StrictBase64_1.StrictBase64.decode(value, new InvalidFormatError_1.InvalidFormatError(encryptedPayload.valueOf()));
34
+ }
35
+ static getPayloadAad() {
36
+ return buffer_1.Buffer.from([PrivateKey.PAYLOAD_VERSION, PrivateKey.PAYLOAD_ALGORITHM].join('.'));
39
37
  }
40
38
  static fromPEM(pem) {
41
39
  return new PrivateKey(pem.valueOf());
@@ -54,6 +52,26 @@ class PrivateKey extends Key_1.Key {
54
52
  (0, patterns_1.assert)(value.length === PrivateKey.LENGTH, new InvalidLengthError_1.InvalidLengthError(value, PrivateKey.LENGTH));
55
53
  (0, patterns_1.assert)(PrivateKey.PATTERN.test(value), new InvalidFormatError_1.InvalidFormatError(value));
56
54
  }
55
+ decryptPayload(encryptedPayload, ephPubB64, ivB64, cipherTextB64, tagB64, options) {
56
+ PrivateKey.ensureIsBase64(cipherTextB64, encryptedPayload, {
57
+ allowEmpty: true,
58
+ });
59
+ const cipherTextLength = StrictBase64_1.StrictBase64.getDecodedLength(cipherTextB64);
60
+ (0, patterns_1.assert)(cipherTextLength <= PrivateKey.MAX_CIPHERTEXT_LENGTH, new InvalidLengthError_1.InvalidLengthError(cipherTextLength, PrivateKey.MAX_CIPHERTEXT_LENGTH));
61
+ PrivateKey.ensureBase64DecodedLength(ephPubB64, encryptedPayload, PrivateKey.EPHEMERAL_PUBLIC_KEY_LENGTH);
62
+ PrivateKey.ensureBase64DecodedLength(ivB64, encryptedPayload, PrivateKey.IV_LENGTH);
63
+ PrivateKey.ensureBase64DecodedLength(tagB64, encryptedPayload, PrivateKey.TAG_LENGTH);
64
+ const ephemeralPub = PrivateKey.decodeBase64(ephPubB64, encryptedPayload);
65
+ const iv = PrivateKey.decodeBase64(ivB64, encryptedPayload);
66
+ const cipherText = StrictBase64_1.StrictBase64.decode(cipherTextB64, new InvalidFormatError_1.InvalidFormatError(encryptedPayload.valueOf()), { allowEmpty: true });
67
+ const tag = PrivateKey.decodeBase64(tagB64, encryptedPayload);
68
+ const x25519Priv = CryptoAdapter_1.CryptoAdapter.privateKeyToX25519(this.valueOf());
69
+ const sharedSecret = CryptoAdapter_1.CryptoAdapter.x25519SharedSecret(x25519Priv, ephemeralPub);
70
+ const aesKey = options.useHkdf
71
+ ? CryptoAdapter_1.CryptoAdapter.deriveEncryptionKeyWithHkdf(sharedSecret, ephemeralPub, CryptoAdapter_1.CryptoAdapter.x25519PublicKey(x25519Priv))
72
+ : CryptoAdapter_1.CryptoAdapter.deriveEncryptionKey(sharedSecret, ephemeralPub);
73
+ return CryptoAdapter_1.CryptoAdapter.decryptAes256Gcm(aesKey, iv, cipherText, tag, options.aad);
74
+ }
57
75
  getPublicKey() {
58
76
  return PublicKey_1.PublicKey.fromPEM(CryptoAdapter_1.CryptoAdapter.getPublicKey(this.valueOf()));
59
77
  }
@@ -66,24 +84,18 @@ class PrivateKey extends Key_1.Key {
66
84
  }
67
85
  decrypt(encryptedPayload) {
68
86
  const parts = encryptedPayload.valueOf().split('.');
69
- (0, patterns_1.assert)(parts.length === PrivateKey.ENCRYPTED_PAYLOAD_PARTS, new InvalidFormatError_1.InvalidFormatError(encryptedPayload.valueOf()));
70
- const [ephPubB64, ivB64, cipherTextB64, tagB64] = parts;
71
- PrivateKey.ensureIsBase64(cipherTextB64, encryptedPayload, {
72
- allowEmpty: true,
87
+ if (parts.length === PrivateKey.LEGACY_ENCRYPTED_PAYLOAD_PARTS) {
88
+ const [ephPubB64, ivB64, cipherTextB64, tagB64] = parts;
89
+ return this.decryptPayload(encryptedPayload, ephPubB64, ivB64, cipherTextB64, tagB64, { useHkdf: false });
90
+ }
91
+ (0, patterns_1.assert)(parts.length === PrivateKey.OWASP_ENCRYPTED_PAYLOAD_PARTS, new InvalidFormatError_1.InvalidFormatError(encryptedPayload.valueOf()));
92
+ const [version, algorithm, ephPubB64, ivB64, cipherTextB64, tagB64] = parts;
93
+ (0, patterns_1.assert)(version === PrivateKey.PAYLOAD_VERSION &&
94
+ algorithm === PrivateKey.PAYLOAD_ALGORITHM, new InvalidFormatError_1.InvalidFormatError(encryptedPayload.valueOf()));
95
+ return this.decryptPayload(encryptedPayload, ephPubB64, ivB64, cipherTextB64, tagB64, {
96
+ aad: PrivateKey.getPayloadAad(),
97
+ useHkdf: true,
73
98
  });
74
- const cipherTextLength = PrivateKey.getBase64DecodedLength(cipherTextB64);
75
- (0, patterns_1.assert)(cipherTextLength <= PrivateKey.MAX_CIPHERTEXT_LENGTH, new InvalidLengthError_1.InvalidLengthError(cipherTextLength, PrivateKey.MAX_CIPHERTEXT_LENGTH));
76
- PrivateKey.ensureBase64DecodedLength(ephPubB64, encryptedPayload, PrivateKey.EPHEMERAL_PUBLIC_KEY_LENGTH);
77
- PrivateKey.ensureBase64DecodedLength(ivB64, encryptedPayload, PrivateKey.IV_LENGTH);
78
- PrivateKey.ensureBase64DecodedLength(tagB64, encryptedPayload, PrivateKey.TAG_LENGTH);
79
- const ephemeralPub = PrivateKey.decodeBase64(ephPubB64, encryptedPayload);
80
- const iv = PrivateKey.decodeBase64(ivB64, encryptedPayload);
81
- const cipherText = buffer_1.Buffer.from(cipherTextB64, 'base64');
82
- const tag = PrivateKey.decodeBase64(tagB64, encryptedPayload);
83
- const x25519Priv = CryptoAdapter_1.CryptoAdapter.privateKeyToX25519(this.valueOf());
84
- const sharedSecret = CryptoAdapter_1.CryptoAdapter.x25519SharedSecret(x25519Priv, ephemeralPub);
85
- const aesKey = CryptoAdapter_1.CryptoAdapter.deriveEncryptionKey(sharedSecret, ephemeralPub);
86
- return CryptoAdapter_1.CryptoAdapter.decryptAes256Gcm(aesKey, iv, cipherText, tag);
87
99
  }
88
100
  }
89
101
  exports.PrivateKey = PrivateKey;
@@ -1 +1 @@
1
- {"version":3,"file":"PrivateKey.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/PrivateKey.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PrivateKey.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/PrivateKey.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,10 @@ import { Signature } from './Signature';
6
6
  export declare class PublicKey extends Key {
7
7
  private static readonly LENGTH;
8
8
  private static readonly MAX_PAYLOAD_LENGTH;
9
+ private static readonly PAYLOAD_ALGORITHM;
10
+ private static readonly PAYLOAD_VERSION;
9
11
  private static readonly PATTERN;
12
+ private static getPayloadAad;
10
13
  static fromPEM(pem: string | StringValueObject): PublicKey;
11
14
  constructor(value: string | StringValueObject);
12
15
  private ensureIsValidPublicKey;
@@ -1 +1 @@
1
- {"version":3,"file":"PublicKey.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/PublicKey.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,SAAU,SAAQ,GAAG;IAChC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAO;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAe;IACzD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAC+C;WAEhE,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;gBAIrD,KAAK,EAAE,MAAM,GAAG,iBAAiB;IAU7C,OAAO,CAAC,sBAAsB;IAQvB,gBAAgB,CACrB,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,SAAS,GACnB,OAAO;IAeH,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,0BAA0B;CA4CnE"}
1
+ {"version":3,"file":"PublicKey.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/PublicKey.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,SAAU,SAAQ,GAAG;IAChC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAO;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAe;IACzD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAoC;IAE7E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAQ;IAE/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAC+C;IAE9E,OAAO,CAAC,MAAM,CAAC,aAAa;WAMd,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;gBAIrD,KAAK,EAAE,MAAM,GAAG,iBAAiB;IAU7C,OAAO,CAAC,sBAAsB;IAQvB,gBAAgB,CACrB,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,SAAS,GACnB,OAAO;IAeH,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,0BAA0B;CAgDnE"}
@@ -13,7 +13,12 @@ const Key_1 = require("./Key");
13
13
  class PublicKey extends Key_1.Key {
14
14
  static LENGTH = 113;
15
15
  static MAX_PAYLOAD_LENGTH = 1024 * 1024;
16
+ static PAYLOAD_ALGORITHM = 'x25519-hkdf-sha256-aes-256-gcm';
17
+ static PAYLOAD_VERSION = 'v2';
16
18
  static PATTERN = /^-----BEGIN PUBLIC KEY-----\n[A-Za-z0-9+/=]+\n-----END PUBLIC KEY-----\n$/;
19
+ static getPayloadAad() {
20
+ return buffer_1.Buffer.from([PublicKey.PAYLOAD_VERSION, PublicKey.PAYLOAD_ALGORITHM].join('.'));
21
+ }
17
22
  static fromPEM(pem) {
18
23
  return new PublicKey(pem.valueOf());
19
24
  }
@@ -45,10 +50,12 @@ class PublicKey extends Key_1.Key {
45
50
  const ephemeralPriv = CryptoAdapter_1.CryptoAdapter.x25519RandomPrivateKey();
46
51
  const ephemeralPub = CryptoAdapter_1.CryptoAdapter.x25519PublicKey(ephemeralPriv);
47
52
  const sharedSecret = CryptoAdapter_1.CryptoAdapter.x25519SharedSecret(ephemeralPriv, x25519Pub);
48
- const aesKey = CryptoAdapter_1.CryptoAdapter.deriveEncryptionKey(sharedSecret, ephemeralPub);
53
+ const aesKey = CryptoAdapter_1.CryptoAdapter.deriveEncryptionKeyWithHkdf(sharedSecret, ephemeralPub, x25519Pub);
49
54
  const iv = CryptoAdapter_1.CryptoAdapter.randomBytes(12);
50
- const { cipherText, tag } = CryptoAdapter_1.CryptoAdapter.encryptAes256Gcm(aesKey, iv, messageBuffer);
55
+ const { cipherText, tag } = CryptoAdapter_1.CryptoAdapter.encryptAes256Gcm(aesKey, iv, messageBuffer, PublicKey.getPayloadAad());
51
56
  const result = [
57
+ PublicKey.PAYLOAD_VERSION,
58
+ PublicKey.PAYLOAD_ALGORITHM,
52
59
  buffer_1.Buffer.from(ephemeralPub).toString('base64'),
53
60
  iv.toString('base64'),
54
61
  buffer_1.Buffer.from(cipherText).toString('base64'),
@@ -1 +1 @@
1
- {"version":3,"file":"PublicKey.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/PublicKey.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PublicKey.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/PublicKey.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { Buffer } from 'buffer';
2
+ type StrictBase64Options = {
3
+ allowEmpty?: boolean;
4
+ };
5
+ export declare class StrictBase64 {
6
+ private static readonly PATTERN;
7
+ static getDecodedLength(value: string): number;
8
+ static ensure(value: string, error: Error, options?: StrictBase64Options): void;
9
+ static ensureDecodedLength(value: string, error: Error, length: number, options?: StrictBase64Options): void;
10
+ static decode(value: string, error: Error, options?: StrictBase64Options): Buffer;
11
+ static decodeFixedLength(value: string, error: Error, length: number): Buffer;
12
+ static decodeCanonicalFixedLength(value: string, error: Error, length: number): Buffer;
13
+ }
14
+ export {};
15
+ //# sourceMappingURL=StrictBase64.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StrictBase64.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/StrictBase64.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIhC,KAAK,mBAAmB,GAAG;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CACsC;WAEvD,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;WAMvC,MAAM,CAClB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,mBAAwB,GAChC,IAAI;WASO,mBAAmB,CAC/B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,mBAAwB,GAChC,IAAI;WAKO,MAAM,CAClB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,mBAAwB,GAChC,MAAM;WAMK,iBAAiB,CAC7B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,GACb,MAAM;WAMK,0BAA0B,CACtC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,GACb,MAAM;CAOV"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StrictBase64 = void 0;
4
+ const buffer_1 = require("buffer");
5
+ const patterns_1 = require("../../patterns");
6
+ class StrictBase64 {
7
+ static PATTERN = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;
8
+ static getDecodedLength(value) {
9
+ const padding = value.endsWith('==') ? 2 : value.endsWith('=') ? 1 : 0;
10
+ return (value.length / 4) * 3 - padding;
11
+ }
12
+ static ensure(value, error, options = {}) {
13
+ (0, patterns_1.assert)((options.allowEmpty === true || value.length > 0) &&
14
+ value.length % 4 === 0 &&
15
+ StrictBase64.PATTERN.test(value), error);
16
+ }
17
+ static ensureDecodedLength(value, error, length, options = {}) {
18
+ StrictBase64.ensure(value, error, options);
19
+ (0, patterns_1.assert)(StrictBase64.getDecodedLength(value) === length, error);
20
+ }
21
+ static decode(value, error, options = {}) {
22
+ StrictBase64.ensure(value, error, options);
23
+ return buffer_1.Buffer.from(value, 'base64');
24
+ }
25
+ static decodeFixedLength(value, error, length) {
26
+ StrictBase64.ensureDecodedLength(value, error, length);
27
+ return buffer_1.Buffer.from(value, 'base64');
28
+ }
29
+ static decodeCanonicalFixedLength(value, error, length) {
30
+ const decoded = StrictBase64.decodeFixedLength(value, error, length);
31
+ (0, patterns_1.assert)(decoded.toString('base64') === value, error);
32
+ return decoded;
33
+ }
34
+ }
35
+ exports.StrictBase64 = StrictBase64;
36
+ //# sourceMappingURL=StrictBase64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StrictBase64.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/StrictBase64.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEhC,6CAAwC;AAMxC,MAAa,YAAY;IACf,MAAM,CAAU,OAAO,GAC7B,kEAAkE,CAAC;IAE9D,MAAM,CAAC,gBAAgB,CAAC,KAAa;QAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvE,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;IAC1C,CAAC;IAEM,MAAM,CAAC,MAAM,CAClB,KAAa,EACb,KAAY,EACZ,UAA+B,EAAE;QAEjC,IAAA,iBAAM,EACJ,CAAC,OAAO,CAAC,UAAU,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAC/C,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;YACtB,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAClC,KAAK,CACN,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAC/B,KAAa,EACb,KAAY,EACZ,MAAc,EACd,UAA+B,EAAE;QAEjC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAA,iBAAM,EAAC,YAAY,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,MAAM,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC;IAEM,MAAM,CAAC,MAAM,CAClB,KAAa,EACb,KAAY,EACZ,UAA+B,EAAE;QAEjC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAE3C,OAAO,eAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAC7B,KAAa,EACb,KAAY,EACZ,MAAc;QAEd,YAAY,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAEvD,OAAO,eAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAEM,MAAM,CAAC,0BAA0B,CACtC,KAAa,EACb,KAAY,EACZ,MAAc;QAEd,MAAM,OAAO,GAAG,YAAY,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAErE,IAAA,iBAAM,EAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,KAAK,EAAE,KAAK,CAAC,CAAC;QAEpD,OAAO,OAAO,CAAC;IACjB,CAAC;;AA/DH,oCAgEC"}
@@ -1,4 +1,5 @@
1
1
  import { Buffer } from 'buffer';
2
+ import { Password } from '../Password';
2
3
  import { StringValueObject } from '../StringValueObject';
3
4
  import { ValueObject } from '../ValueObject';
4
5
  import { CryptoPayload } from './CryptoPayload';
@@ -10,6 +11,10 @@ export type SymmetricKeyDerivationOptions = {
10
11
  r?: number;
11
12
  salt: string | StringValueObject | Buffer;
12
13
  };
14
+ export type CryptoPassword = string | StringValueObject | Password;
15
+ export type SymmetricKeyCryptOptions = {
16
+ aad?: string | StringValueObject | Buffer;
17
+ };
13
18
  export declare class SymmetricKey extends ValueObject<string> {
14
19
  private static readonly ALGORITHM;
15
20
  private static readonly IV_LENGTH;
@@ -19,22 +24,26 @@ export declare class SymmetricKey extends ValueObject<string> {
19
24
  private static readonly SCRYPT_N;
20
25
  private static readonly SCRYPT_P;
21
26
  private static readonly SCRYPT_R;
27
+ private static readonly OWASP_SCRYPT_N;
28
+ private static readonly OWASP_SCRYPT_P;
29
+ private static readonly OWASP_SCRYPT_R;
22
30
  private static readonly TAG_LENGTH;
23
31
  private static readonly VERSION;
24
- private static readonly BASE64_PATTERN;
25
- private static getBase64DecodedLength;
26
32
  private static ensureIsBase64;
27
33
  private static ensureBase64DecodedLength;
28
34
  private static getSaltBytes;
29
35
  private static getPayloadBytes;
36
+ private static getAadBytes;
37
+ private static getDefaultAad;
30
38
  static fromBase64(key: string | StringValueObject): SymmetricKey;
31
39
  static fromBuffer(key: Buffer): SymmetricKey;
32
40
  static generate(): SymmetricKey;
33
- static fromPassword(password: string | StringValueObject, options: SymmetricKeyDerivationOptions): Promise<SymmetricKey>;
41
+ static fromPassword(password: CryptoPassword, options: SymmetricKeyDerivationOptions): Promise<SymmetricKey>;
42
+ static fromPasswordUsingOwasp(password: CryptoPassword, options: Pick<SymmetricKeyDerivationOptions, 'salt'>): Promise<SymmetricKey>;
34
43
  constructor(value: string | StringValueObject);
35
44
  private ensureIsValidKey;
36
45
  getBuffer(): Buffer;
37
- encrypt(payload: CryptoPayload): SymmetricEncryptedPayload;
38
- decrypt(encryptedPayload: EncryptedPayload): Buffer;
46
+ encrypt(payload: CryptoPayload, options?: SymmetricKeyCryptOptions): SymmetricEncryptedPayload;
47
+ decrypt(encryptedPayload: EncryptedPayload, options?: SymmetricKeyCryptOptions): Buffer;
39
48
  }
40
49
  //# sourceMappingURL=SymmetricKey.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SymmetricKey.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/SymmetricKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAOhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE,MAAM,MAAM,6BAA6B,GAAG;IAC1C,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,MAAM,CAAC;CAC3C,CAAC;AAEF,qBAAa,YAAa,SAAQ,WAAW,CAAC,MAAM,CAAC;IACnD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAM;IACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAM;IACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAe;IACzD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAK;IAC1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAS;IACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAK;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAK;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAM;IACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAQ;IACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAC+B;IAErE,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAMrC,OAAO,CAAC,MAAM,CAAC,cAAc;IAa7B,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAYxC,OAAO,CAAC,MAAM,CAAC,YAAY;IAU3B,OAAO,CAAC,MAAM,CAAC,eAAe;WAMhB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,YAAY;WAIzD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY;WASrC,QAAQ,IAAI,YAAY;WAMlB,YAAY,CAC9B,QAAQ,EAAE,MAAM,GAAG,iBAAiB,EACpC,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,YAAY,CAAC;gBAkBZ,KAAK,EAAE,MAAM,GAAG,iBAAiB;IAU7C,OAAO,CAAC,gBAAgB;IAcjB,SAAS,IAAI,MAAM;IAInB,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,yBAAyB;IA4B1D,OAAO,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,MAAM;CAuC3D"}
1
+ {"version":3,"file":"SymmetricKey.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/SymmetricKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAOhC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE,MAAM,MAAM,6BAA6B,GAAG;IAC1C,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,MAAM,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,iBAAiB,GAAG,QAAQ,CAAC;AAEnE,MAAM,MAAM,wBAAwB,GAAG;IACrC,GAAG,CAAC,EAAE,MAAM,GAAG,iBAAiB,GAAG,MAAM,CAAC;CAC3C,CAAC;AAEF,qBAAa,YAAa,SAAQ,WAAW,CAAC,MAAM,CAAC;IACnD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAM;IACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAM;IACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAe;IACzD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAK;IAC1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAS;IACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAK;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAK;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAS;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAK;IAC3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAK;IAC3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAM;IACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAEvC,OAAO,CAAC,MAAM,CAAC,cAAc;IAY7B,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAYxC,OAAO,CAAC,MAAM,CAAC,YAAY;IAU3B,OAAO,CAAC,MAAM,CAAC,eAAe;IAM9B,OAAO,CAAC,MAAM,CAAC,WAAW;IAQ1B,OAAO,CAAC,MAAM,CAAC,aAAa;WAId,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,YAAY;WAIzD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY;WASrC,QAAQ,IAAI,YAAY;WAMlB,YAAY,CAC9B,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,YAAY,CAAC;WAkBJ,sBAAsB,CACxC,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,IAAI,CAAC,6BAA6B,EAAE,MAAM,CAAC,GACnD,OAAO,CAAC,YAAY,CAAC;gBASZ,KAAK,EAAE,MAAM,GAAG,iBAAiB;IAU7C,OAAO,CAAC,gBAAgB;IASjB,SAAS,IAAI,MAAM;IAInB,OAAO,CACZ,OAAO,EAAE,aAAa,EACtB,OAAO,GAAE,wBAA6B,GACrC,yBAAyB;IAoCrB,OAAO,CACZ,gBAAgB,EAAE,gBAAgB,EAClC,OAAO,GAAE,wBAA6B,GACrC,MAAM;CAsDV"}
@@ -10,6 +10,7 @@ const NullObject_1 = require("../NullObject");
10
10
  const ValueObject_1 = require("../ValueObject");
11
11
  const CryptoAdapter_1 = require("./CryptoAdapter");
12
12
  const CryptoDerivation_1 = require("./encrypted-private-key/CryptoDerivation");
13
+ const StrictBase64_1 = require("./StrictBase64");
13
14
  const SymmetricEncryptedPayload_1 = require("./SymmetricEncryptedPayload");
14
15
  class SymmetricKey extends ValueObject_1.ValueObject {
15
16
  static ALGORITHM = 'aes-256-gcm';
@@ -20,21 +21,16 @@ class SymmetricKey extends ValueObject_1.ValueObject {
20
21
  static SCRYPT_N = 16384;
21
22
  static SCRYPT_P = 1;
22
23
  static SCRYPT_R = 8;
24
+ static OWASP_SCRYPT_N = 16384;
25
+ static OWASP_SCRYPT_P = 5;
26
+ static OWASP_SCRYPT_R = 8;
23
27
  static TAG_LENGTH = 16;
24
28
  static VERSION = 'v1';
25
- static BASE64_PATTERN = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;
26
- static getBase64DecodedLength(value) {
27
- const padding = value.endsWith('==') ? 2 : value.endsWith('=') ? 1 : 0;
28
- return (value.length / 4) * 3 - padding;
29
- }
30
- static ensureIsBase64(value, encryptedPayload, options = { allowEmpty: false }) {
31
- (0, patterns_1.assert)((options.allowEmpty || value.length > 0) &&
32
- value.length % 4 === 0 &&
33
- SymmetricKey.BASE64_PATTERN.test(value), new InvalidFormatError_1.InvalidFormatError(encryptedPayload.valueOf()));
29
+ static ensureIsBase64(value, encryptedPayload, options) {
30
+ StrictBase64_1.StrictBase64.ensure(value, new InvalidFormatError_1.InvalidFormatError(encryptedPayload.valueOf()), options);
34
31
  }
35
32
  static ensureBase64DecodedLength(value, encryptedPayload, length) {
36
- SymmetricKey.ensureIsBase64(value, encryptedPayload);
37
- (0, patterns_1.assert)(SymmetricKey.getBase64DecodedLength(value) === length, new InvalidFormatError_1.InvalidFormatError(encryptedPayload.valueOf()));
33
+ StrictBase64_1.StrictBase64.ensureDecodedLength(value, new InvalidFormatError_1.InvalidFormatError(encryptedPayload.valueOf()), length);
38
34
  }
39
35
  static getSaltBytes(salt) {
40
36
  if (buffer_1.Buffer.isBuffer(salt)) {
@@ -47,6 +43,15 @@ class SymmetricKey extends ValueObject_1.ValueObject {
47
43
  ? payload.getBuffer()
48
44
  : buffer_1.Buffer.from(payload.valueOf());
49
45
  }
46
+ static getAadBytes(aad) {
47
+ if (buffer_1.Buffer.isBuffer(aad)) {
48
+ return aad;
49
+ }
50
+ return buffer_1.Buffer.from(aad.valueOf());
51
+ }
52
+ static getDefaultAad(version, algorithm) {
53
+ return buffer_1.Buffer.from([version, algorithm].join('.'));
54
+ }
50
55
  static fromBase64(key) {
51
56
  return new SymmetricKey(key.valueOf());
52
57
  }
@@ -67,6 +72,14 @@ class SymmetricKey extends ValueObject_1.ValueObject {
67
72
  });
68
73
  return SymmetricKey.fromBuffer(buffer_1.Buffer.from(key));
69
74
  }
75
+ static async fromPasswordUsingOwasp(password, options) {
76
+ return SymmetricKey.fromPassword(password, {
77
+ N: SymmetricKey.OWASP_SCRYPT_N,
78
+ p: SymmetricKey.OWASP_SCRYPT_P,
79
+ r: SymmetricKey.OWASP_SCRYPT_R,
80
+ salt: options.salt,
81
+ });
82
+ }
70
83
  constructor(value) {
71
84
  super(value?.valueOf());
72
85
  if (NullObject_1.NullObject.isNullObject(this)) {
@@ -75,17 +88,21 @@ class SymmetricKey extends ValueObject_1.ValueObject {
75
88
  this.ensureIsValidKey(this.value);
76
89
  }
77
90
  ensureIsValidKey(value) {
78
- (0, patterns_1.assert)(value.length % 4 === 0 && SymmetricKey.BASE64_PATTERN.test(value), new InvalidFormatError_1.InvalidFormatError(value));
79
- (0, patterns_1.assert)(SymmetricKey.getBase64DecodedLength(value) === SymmetricKey.KEY_LENGTH, new InvalidLengthError_1.InvalidLengthError(SymmetricKey.getBase64DecodedLength(value), SymmetricKey.KEY_LENGTH));
91
+ StrictBase64_1.StrictBase64.ensure(value, new InvalidFormatError_1.InvalidFormatError(value));
92
+ const decodedLength = StrictBase64_1.StrictBase64.getDecodedLength(value);
93
+ (0, patterns_1.assert)(decodedLength === SymmetricKey.KEY_LENGTH, new InvalidLengthError_1.InvalidLengthError(decodedLength, SymmetricKey.KEY_LENGTH));
80
94
  }
81
95
  getBuffer() {
82
96
  return buffer_1.Buffer.from(this.valueOf(), 'base64');
83
97
  }
84
- encrypt(payload) {
98
+ encrypt(payload, options = {}) {
85
99
  const messageBuffer = SymmetricKey.getPayloadBytes(payload);
86
100
  (0, patterns_1.assert)(messageBuffer.length <= SymmetricKey.MAX_PAYLOAD_LENGTH, new InvalidLengthError_1.InvalidLengthError(messageBuffer.length, SymmetricKey.MAX_PAYLOAD_LENGTH));
87
101
  const iv = CryptoAdapter_1.CryptoAdapter.randomBytes(SymmetricKey.IV_LENGTH);
88
- const { cipherText, tag } = CryptoAdapter_1.CryptoAdapter.encryptAes256Gcm(this.getBuffer(), iv, messageBuffer);
102
+ const aad = options.aad === undefined
103
+ ? SymmetricKey.getDefaultAad(SymmetricKey.VERSION, SymmetricKey.ALGORITHM)
104
+ : SymmetricKey.getAadBytes(options.aad);
105
+ const { cipherText, tag } = CryptoAdapter_1.CryptoAdapter.encryptAes256Gcm(this.getBuffer(), iv, messageBuffer, aad);
89
106
  const result = [
90
107
  SymmetricKey.VERSION,
91
108
  SymmetricKey.ALGORITHM,
@@ -95,7 +112,7 @@ class SymmetricKey extends ValueObject_1.ValueObject {
95
112
  ].join('.');
96
113
  return new SymmetricEncryptedPayload_1.SymmetricEncryptedPayload(result);
97
114
  }
98
- decrypt(encryptedPayload) {
115
+ decrypt(encryptedPayload, options = {}) {
99
116
  const parts = encryptedPayload.valueOf().split('.');
100
117
  (0, patterns_1.assert)(parts.length === SymmetricKey.PAYLOAD_PARTS, new InvalidFormatError_1.InvalidFormatError(encryptedPayload.valueOf()));
101
118
  const [version, algorithm, ivB64, cipherTextB64, tagB64] = parts;
@@ -104,10 +121,28 @@ class SymmetricKey extends ValueObject_1.ValueObject {
104
121
  SymmetricKey.ensureIsBase64(cipherTextB64, encryptedPayload, {
105
122
  allowEmpty: true,
106
123
  });
107
- const cipherTextLength = SymmetricKey.getBase64DecodedLength(cipherTextB64);
124
+ const cipherTextLength = StrictBase64_1.StrictBase64.getDecodedLength(cipherTextB64);
108
125
  (0, patterns_1.assert)(cipherTextLength <= SymmetricKey.MAX_PAYLOAD_LENGTH, new InvalidLengthError_1.InvalidLengthError(cipherTextLength, SymmetricKey.MAX_PAYLOAD_LENGTH));
109
126
  SymmetricKey.ensureBase64DecodedLength(tagB64, encryptedPayload, SymmetricKey.TAG_LENGTH);
110
- return CryptoAdapter_1.CryptoAdapter.decryptAes256Gcm(this.getBuffer(), buffer_1.Buffer.from(ivB64, 'base64'), buffer_1.Buffer.from(cipherTextB64, 'base64'), buffer_1.Buffer.from(tagB64, 'base64'));
127
+ const key = this.getBuffer();
128
+ const formatError = new InvalidFormatError_1.InvalidFormatError(encryptedPayload.valueOf());
129
+ const iv = StrictBase64_1.StrictBase64.decode(ivB64, formatError);
130
+ const cipherText = StrictBase64_1.StrictBase64.decode(cipherTextB64, formatError, {
131
+ allowEmpty: true,
132
+ });
133
+ const tag = StrictBase64_1.StrictBase64.decode(tagB64, formatError);
134
+ const aad = options.aad === undefined
135
+ ? SymmetricKey.getDefaultAad(version, algorithm)
136
+ : SymmetricKey.getAadBytes(options.aad);
137
+ try {
138
+ return CryptoAdapter_1.CryptoAdapter.decryptAes256Gcm(key, iv, cipherText, tag, aad);
139
+ }
140
+ catch (error) {
141
+ if (options.aad !== undefined) {
142
+ throw error;
143
+ }
144
+ return CryptoAdapter_1.CryptoAdapter.decryptAes256Gcm(key, iv, cipherText, tag);
145
+ }
111
146
  }
112
147
  }
113
148
  exports.SymmetricKey = SymmetricKey;
@@ -1 +1 @@
1
- {"version":3,"file":"SymmetricKey.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/SymmetricKey.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SymmetricKey.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/SymmetricKey.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEhC,wEAAqE;AACrE,wEAAqE;AACrE,6CAAwC;AACxC,oCAAiC;AACjC,8CAA2C;AAG3C,gDAA6C;AAC7C,mDAAgD;AAEhD,+EAA4E;AAE5E,iDAA8C;AAC9C,2EAAwE;AAexE,MAAa,YAAa,SAAQ,yBAAmB;IAC3C,MAAM,CAAU,SAAS,GAAG,aAAa,CAAC;IAC1C,MAAM,CAAU,SAAS,GAAG,EAAE,CAAC;IAC/B,MAAM,CAAU,UAAU,GAAG,EAAE,CAAC;IAChC,MAAM,CAAU,kBAAkB,GAAG,IAAI,GAAG,IAAI,CAAC;IACjD,MAAM,CAAU,aAAa,GAAG,CAAC,CAAC;IAClC,MAAM,CAAU,QAAQ,GAAG,KAAK,CAAC;IACjC,MAAM,CAAU,QAAQ,GAAG,CAAC,CAAC;IAC7B,MAAM,CAAU,QAAQ,GAAG,CAAC,CAAC;IAC7B,MAAM,CAAU,cAAc,GAAG,KAAK,CAAC;IACvC,MAAM,CAAU,cAAc,GAAG,CAAC,CAAC;IACnC,MAAM,CAAU,cAAc,GAAG,CAAC,CAAC;IACnC,MAAM,CAAU,UAAU,GAAG,EAAE,CAAC;IAChC,MAAM,CAAU,OAAO,GAAG,IAAI,CAAC;IAE/B,MAAM,CAAC,cAAc,CAC3B,KAAa,EACb,gBAAkC,EAClC,OAAgC;QAEhC,2BAAY,CAAC,MAAM,CACjB,KAAK,EACL,IAAI,uCAAkB,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAClD,OAAO,CACR,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,yBAAyB,CACtC,KAAa,EACb,gBAAkC,EAClC,MAAc;QAEd,2BAAY,CAAC,mBAAmB,CAC9B,KAAK,EACL,IAAI,uCAAkB,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAClD,MAAM,CACP,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,YAAY,CACzB,IAAyC;QAEzC,IAAI,eAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACrC,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,OAAsB;QACnD,OAAO,OAAO,YAAY,aAAK;YAC7B,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE;YACrB,CAAC,CAAC,eAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACrC,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,GAAwC;QACjE,IAAI,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,GAAG,CAAC;QACb,CAAC;QAED,OAAO,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACpC,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,OAAe,EAAE,SAAiB;QAC7D,OAAO,eAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,GAA+B;QACtD,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACzC,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,GAAW;QAClC,IAAA,iBAAM,EACJ,GAAG,CAAC,MAAM,KAAK,YAAY,CAAC,UAAU,EACtC,IAAI,uCAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC,CAC5D,CAAC;QAEF,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClD,CAAC;IAEM,MAAM,CAAC,QAAQ;QACpB,OAAO,YAAY,CAAC,UAAU,CAC5B,6BAAa,CAAC,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,CACnD,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,YAAY,CAC9B,QAAwB,EACxB,OAAsC;QAEtC,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrD,IAAA,iBAAM,EAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,uCAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QAEhE,MAAM,GAAG,GAAG,MAAM,mCAAgB,CAAC,WAAW,CAC5C,QAAQ,CAAC,OAAO,EAAE,EAClB,IAAI,EACJ,YAAY,CAAC,UAAU,EACvB;YACE,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,YAAY,CAAC,QAAQ;YACrC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,YAAY,CAAC,QAAQ;YACrC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,YAAY,CAAC,QAAQ;SACtC,CACF,CAAC;QAEF,OAAO,YAAY,CAAC,UAAU,CAAC,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACnD,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,sBAAsB,CACxC,QAAwB,EACxB,OAAoD;QAEpD,OAAO,YAAY,CAAC,YAAY,CAAC,QAAQ,EAAE;YACzC,CAAC,EAAE,YAAY,CAAC,cAAc;YAC9B,CAAC,EAAE,YAAY,CAAC,cAAc;YAC9B,CAAC,EAAE,YAAY,CAAC,cAAc;YAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;IAED,YAAY,KAAiC;QAC3C,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAExB,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAEO,gBAAgB,CAAC,KAAa;QACpC,2BAAY,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,uCAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,2BAAY,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAA,iBAAM,EACJ,aAAa,KAAK,YAAY,CAAC,UAAU,EACzC,IAAI,uCAAkB,CAAC,aAAa,EAAE,YAAY,CAAC,UAAU,CAAC,CAC/D,CAAC;IACJ,CAAC;IAEM,SAAS;QACd,OAAO,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAEM,OAAO,CACZ,OAAsB,EACtB,UAAoC,EAAE;QAEtC,MAAM,aAAa,GAAG,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAA,iBAAM,EACJ,aAAa,CAAC,MAAM,IAAI,YAAY,CAAC,kBAAkB,EACvD,IAAI,uCAAkB,CACpB,aAAa,CAAC,MAAM,EACpB,YAAY,CAAC,kBAAkB,CAChC,CACF,CAAC;QAEF,MAAM,EAAE,GAAG,6BAAa,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,GAAG,GACP,OAAO,CAAC,GAAG,KAAK,SAAS;YACvB,CAAC,CAAC,YAAY,CAAC,aAAa,CACxB,YAAY,CAAC,OAAO,EACpB,YAAY,CAAC,SAAS,CACvB;YACH,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5C,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,6BAAa,CAAC,gBAAgB,CACxD,IAAI,CAAC,SAAS,EAAE,EAChB,EAAE,EACF,aAAa,EACb,GAAG,CACJ,CAAC;QAEF,MAAM,MAAM,GAAG;YACb,YAAY,CAAC,OAAO;YACpB,YAAY,CAAC,SAAS;YACtB,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACrB,eAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC1C,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;SACpC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEZ,OAAO,IAAI,qDAAyB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAEM,OAAO,CACZ,gBAAkC,EAClC,UAAoC,EAAE;QAEtC,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpD,IAAA,iBAAM,EACJ,KAAK,CAAC,MAAM,KAAK,YAAY,CAAC,aAAa,EAC3C,IAAI,uCAAkB,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CACnD,CAAC;QAEF,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;QACjE,IAAA,iBAAM,EACJ,OAAO,KAAK,YAAY,CAAC,OAAO,IAAI,SAAS,KAAK,YAAY,CAAC,SAAS,EACxE,IAAI,uCAAkB,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CACnD,CAAC;QAEF,YAAY,CAAC,yBAAyB,CACpC,KAAK,EACL,gBAAgB,EAChB,YAAY,CAAC,SAAS,CACvB,CAAC;QACF,YAAY,CAAC,cAAc,CAAC,aAAa,EAAE,gBAAgB,EAAE;YAC3D,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,gBAAgB,GAAG,2BAAY,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QACtE,IAAA,iBAAM,EACJ,gBAAgB,IAAI,YAAY,CAAC,kBAAkB,EACnD,IAAI,uCAAkB,CAAC,gBAAgB,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAC1E,CAAC;QACF,YAAY,CAAC,yBAAyB,CACpC,MAAM,EACN,gBAAgB,EAChB,YAAY,CAAC,UAAU,CACxB,CAAC;QAEF,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAG,IAAI,uCAAkB,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,MAAM,EAAE,GAAG,2BAAY,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,2BAAY,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,EAAE;YACjE,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,2BAAY,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACrD,MAAM,GAAG,GACP,OAAO,CAAC,GAAG,KAAK,SAAS;YACvB,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC;YAChD,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAE5C,IAAI,CAAC;YACH,OAAO,6BAAa,CAAC,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,KAAK,CAAC;YACd,CAAC;YAED,OAAO,6BAAa,CAAC,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;;AA7OH,oCA8OC"}
@@ -1,5 +1,5 @@
1
- import { StringValueObject } from '../../StringValueObject';
2
1
  import { PrivateKey } from '../PrivateKey';
2
+ import { CryptoPassword } from '../SymmetricKey';
3
3
  import { EncryptedPrivateKeyVersion } from './EncryptedPrivateKeyVersion';
4
4
  export declare class EncryptedPrivateKeyLegacy extends EncryptedPrivateKeyVersion {
5
5
  private static readonly LEGACY_ITERATIONS;
@@ -8,7 +8,7 @@ export declare class EncryptedPrivateKeyLegacy extends EncryptedPrivateKeyVersio
8
8
  private static readonly CIPHER;
9
9
  private static readonly EXPECTED_PARTS;
10
10
  matches(parts: string[]): boolean;
11
- decrypt(parts: string[], password: string | StringValueObject): Promise<PrivateKey>;
11
+ decrypt(parts: string[], password: CryptoPassword): Promise<PrivateKey>;
12
12
  needsReEncryption(): boolean;
13
13
  }
14
14
  //# sourceMappingURL=EncryptedPrivateKeyLegacy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EncryptedPrivateKeyLegacy.d.ts","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,qBAAa,yBAA0B,SAAQ,0BAA0B;IACvE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAU;IACnD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAY;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAM;IACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAK;IAEpC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;IAI3B,OAAO,CAClB,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GACnC,OAAO,CAAC,UAAU,CAAC;IAoBf,iBAAiB,IAAI,OAAO;CAGpC"}
1
+ {"version":3,"file":"EncryptedPrivateKeyLegacy.d.ts","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,qBAAa,yBAA0B,SAAQ,0BAA0B;IACvE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAU;IACnD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAY;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAM;IACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAK;IAEpC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;IAI3B,OAAO,CAClB,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,UAAU,CAAC;IAoBf,iBAAiB,IAAI,OAAO;CAGpC"}
@@ -1 +1 @@
1
- {"version":3,"file":"EncryptedPrivateKeyLegacy.js","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAGhC,oDAAiD;AACjD,8CAA2C;AAC3C,yDAAsD;AACtD,6EAA0E;AAE1E,MAAa,yBAA0B,SAAQ,uDAA0B;IAC/D,MAAM,CAAU,iBAAiB,GAAG,MAAM,CAAC;IAC3C,MAAM,CAAU,gBAAgB,GAAG,QAAQ,CAAC;IAC5C,MAAM,CAAU,UAAU,GAAG,EAAE,CAAC;IAChC,MAAM,CAAU,MAAM,GAAG,aAAa,CAAC;IACvC,MAAM,CAAU,cAAc,GAAG,CAAC,CAAC;IAEpC,OAAO,CAAC,KAAe;QAC5B,OAAO,KAAK,CAAC,MAAM,KAAK,yBAAyB,CAAC,cAAc,CAAC;IACnE,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,KAAe,EACf,QAAoC;QAEpC,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;QACtD,MAAM,UAAU,GAAG,eAAM,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,EAAE,GAAG,eAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,eAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,eAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAE1C,MAAM,GAAG,GAAG,MAAM,mCAAgB,CAAC,WAAW,CAC5C,QAAQ,CAAC,OAAO,EAAE,EAClB,IAAI,EACJ,yBAAyB,CAAC,iBAAiB,EAC3C,yBAAyB,CAAC,UAAU,EACpC,yBAAyB,CAAC,gBAAgB,CAC3C,CAAC;QAEF,MAAM,SAAS,GAAG,6BAAa,CAAC,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;QAE3E,OAAO,IAAI,uBAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9C,CAAC;IAEM,iBAAiB;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;;AApCH,8DAqCC"}
1
+ {"version":3,"file":"EncryptedPrivateKeyLegacy.js","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEhC,oDAAiD;AACjD,8CAA2C;AAE3C,yDAAsD;AACtD,6EAA0E;AAE1E,MAAa,yBAA0B,SAAQ,uDAA0B;IAC/D,MAAM,CAAU,iBAAiB,GAAG,MAAM,CAAC;IAC3C,MAAM,CAAU,gBAAgB,GAAG,QAAQ,CAAC;IAC5C,MAAM,CAAU,UAAU,GAAG,EAAE,CAAC;IAChC,MAAM,CAAU,MAAM,GAAG,aAAa,CAAC;IACvC,MAAM,CAAU,cAAc,GAAG,CAAC,CAAC;IAEpC,OAAO,CAAC,KAAe;QAC5B,OAAO,KAAK,CAAC,MAAM,KAAK,yBAAyB,CAAC,cAAc,CAAC;IACnE,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,KAAe,EACf,QAAwB;QAExB,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;QACtD,MAAM,UAAU,GAAG,eAAM,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,EAAE,GAAG,eAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,eAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,eAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAE1C,MAAM,GAAG,GAAG,MAAM,mCAAgB,CAAC,WAAW,CAC5C,QAAQ,CAAC,OAAO,EAAE,EAClB,IAAI,EACJ,yBAAyB,CAAC,iBAAiB,EAC3C,yBAAyB,CAAC,UAAU,EACpC,yBAAyB,CAAC,gBAAgB,CAC3C,CAAC;QAEF,MAAM,SAAS,GAAG,6BAAa,CAAC,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;QAE3E,OAAO,IAAI,uBAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9C,CAAC;IAEM,iBAAiB;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;;AApCH,8DAqCC"}
@@ -1,5 +1,5 @@
1
- import { StringValueObject } from '../../StringValueObject';
2
1
  import { PrivateKey } from '../PrivateKey';
2
+ import { CryptoPassword } from '../SymmetricKey';
3
3
  import { EncryptedPrivateKeyVersion } from './EncryptedPrivateKeyVersion';
4
4
  export declare class EncryptedPrivateKeyV2 extends EncryptedPrivateKeyVersion {
5
5
  private static readonly VERSION;
@@ -14,8 +14,9 @@ export declare class EncryptedPrivateKeyV2 extends EncryptedPrivateKeyVersion {
14
14
  private static hasSupportedScryptParameters;
15
15
  private static deriveSymmetricKey;
16
16
  private static toSymmetricPayload;
17
- static encrypt(privateKey: PrivateKey, password: string | StringValueObject): Promise<string>;
17
+ static encrypt(privateKey: PrivateKey, password: CryptoPassword): Promise<string>;
18
18
  matches(parts: string[]): boolean;
19
- decrypt(parts: string[], password: string | StringValueObject): Promise<PrivateKey>;
19
+ decrypt(parts: string[], password: CryptoPassword): Promise<PrivateKey>;
20
+ needsReEncryption(): boolean;
20
21
  }
21
22
  //# sourceMappingURL=EncryptedPrivateKeyV2.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EncryptedPrivateKeyV2.d.ts","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAI3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,qBAAa,qBAAsB,SAAQ,0BAA0B;IACnE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAQ;IACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAY;IACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAS;IACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAK;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAK;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAM;IAC1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAK;IAC3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAQ;IAEzD,OAAO,CAAC,MAAM,CAAC,4BAA4B;mBAQtB,kBAAkB;IAQvC,OAAO,CAAC,MAAM,CAAC,kBAAkB;WAkBb,OAAO,CACzB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GACnC,OAAO,CAAC,MAAM,CAAC;IA8BX,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;IAS3B,OAAO,CAClB,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GACnC,OAAO,CAAC,UAAU,CAAC;CAqBvB"}
1
+ {"version":3,"file":"EncryptedPrivateKeyV2.d.ts","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAgB,MAAM,iBAAiB,CAAC;AAE/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,qBAAa,qBAAsB,SAAQ,0BAA0B;IACnE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAQ;IACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAY;IACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAS;IACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAK;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAK;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAM;IAC1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAK;IAC3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAQ;IAEzD,OAAO,CAAC,MAAM,CAAC,4BAA4B;mBAQtB,kBAAkB;IAQvC,OAAO,CAAC,MAAM,CAAC,kBAAkB;WAkBb,OAAO,CACzB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC;IA8BX,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;IAS3B,OAAO,CAClB,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,UAAU,CAAC;IAyBf,iBAAiB,IAAI,OAAO;CAGpC"}
@@ -2,6 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EncryptedPrivateKeyV2 = void 0;
4
4
  const buffer_1 = require("buffer");
5
+ const InvalidEncryptedPrivateKeyFormatError_1 = require("../../../errors/InvalidEncryptedPrivateKeyFormatError");
6
+ const patterns_1 = require("../../../patterns");
5
7
  const PrivateKey_1 = require("../PrivateKey");
6
8
  const SymmetricEncryptedPayload_1 = require("../SymmetricEncryptedPayload");
7
9
  const SymmetricKey_1 = require("../SymmetricKey");
@@ -70,9 +72,7 @@ class EncryptedPrivateKeyV2 extends EncryptedPrivateKeyVersion_1.EncryptedPrivat
70
72
  EncryptedPrivateKeyV2.hasSupportedScryptParameters(parts));
71
73
  }
72
74
  async decrypt(parts, password) {
73
- if (!EncryptedPrivateKeyV2.hasSupportedScryptParameters(parts)) {
74
- throw new Error('Unsupported encrypted private key parameters');
75
- }
75
+ (0, patterns_1.assert)(EncryptedPrivateKeyV2.hasSupportedScryptParameters(parts), new InvalidEncryptedPrivateKeyFormatError_1.InvalidEncryptedPrivateKeyFormatError('Unsupported encrypted private key parameters'));
76
76
  const N = parseInt(parts[2].slice(1), 10);
77
77
  const r = parseInt(parts[3].slice(1), 10);
78
78
  const p = parseInt(parts[4].slice(1), 10);
@@ -85,6 +85,9 @@ class EncryptedPrivateKeyV2 extends EncryptedPrivateKeyVersion_1.EncryptedPrivat
85
85
  const decrypted = key.decrypt(EncryptedPrivateKeyV2.toSymmetricPayload(parts));
86
86
  return new PrivateKey_1.PrivateKey(decrypted.toString());
87
87
  }
88
+ needsReEncryption() {
89
+ return true;
90
+ }
88
91
  }
89
92
  exports.EncryptedPrivateKeyV2 = EncryptedPrivateKeyV2;
90
93
  //# sourceMappingURL=EncryptedPrivateKeyV2.js.map