@haskou/value-objects 4.0.1 → 5.0.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 (125) hide show
  1. package/README.md +2 -3
  2. package/dist/errors/index.d.ts +0 -3
  3. package/dist/errors/index.d.ts.map +1 -1
  4. package/dist/errors/index.js +0 -3
  5. package/dist/errors/index.js.map +1 -1
  6. package/dist/value-objects/Enum.d.ts +1 -1
  7. package/dist/value-objects/Enum.d.ts.map +1 -1
  8. package/dist/value-objects/Enum.js.map +1 -1
  9. package/dist/value-objects/hashes/MD5Hash.d.ts +0 -3
  10. package/dist/value-objects/hashes/MD5Hash.d.ts.map +1 -1
  11. package/dist/value-objects/hashes/MD5Hash.js +0 -5
  12. package/dist/value-objects/hashes/MD5Hash.js.map +1 -1
  13. package/dist/value-objects/hashes/SHA256Hash.d.ts +0 -3
  14. package/dist/value-objects/hashes/SHA256Hash.d.ts.map +1 -1
  15. package/dist/value-objects/hashes/SHA256Hash.js +0 -5
  16. package/dist/value-objects/hashes/SHA256Hash.js.map +1 -1
  17. package/dist/value-objects/hashes/SHA512Hash.d.ts +0 -3
  18. package/dist/value-objects/hashes/SHA512Hash.d.ts.map +1 -1
  19. package/dist/value-objects/hashes/SHA512Hash.js +0 -5
  20. package/dist/value-objects/hashes/SHA512Hash.js.map +1 -1
  21. package/dist/value-objects/ids/ShortId.d.ts +1 -0
  22. package/dist/value-objects/ids/ShortId.d.ts.map +1 -1
  23. package/dist/value-objects/ids/ShortId.js +7 -2
  24. package/dist/value-objects/ids/ShortId.js.map +1 -1
  25. package/dist/value-objects/ids/UUID.d.ts +1 -0
  26. package/dist/value-objects/ids/UUID.d.ts.map +1 -1
  27. package/dist/value-objects/ids/UUID.js +8 -3
  28. package/dist/value-objects/ids/UUID.js.map +1 -1
  29. package/dist/value-objects/index.d.ts +0 -1
  30. package/dist/value-objects/index.d.ts.map +1 -1
  31. package/dist/value-objects/index.js +0 -1
  32. package/dist/value-objects/index.js.map +1 -1
  33. package/package.json +3 -11
  34. package/dist/errors/InvalidEncryptedPrivateKeyFormatError.d.ts +0 -5
  35. package/dist/errors/InvalidEncryptedPrivateKeyFormatError.d.ts.map +0 -1
  36. package/dist/errors/InvalidEncryptedPrivateKeyFormatError.js +0 -11
  37. package/dist/errors/InvalidEncryptedPrivateKeyFormatError.js.map +0 -1
  38. package/dist/errors/InvalidKeyError.d.ts +0 -5
  39. package/dist/errors/InvalidKeyError.d.ts.map +0 -1
  40. package/dist/errors/InvalidKeyError.js +0 -11
  41. package/dist/errors/InvalidKeyError.js.map +0 -1
  42. package/dist/errors/InvalidSignatureError.d.ts +0 -5
  43. package/dist/errors/InvalidSignatureError.d.ts.map +0 -1
  44. package/dist/errors/InvalidSignatureError.js +0 -11
  45. package/dist/errors/InvalidSignatureError.js.map +0 -1
  46. package/dist/value-objects/crypto/AsymmetricEncryptedPayload.d.ts +0 -5
  47. package/dist/value-objects/crypto/AsymmetricEncryptedPayload.d.ts.map +0 -1
  48. package/dist/value-objects/crypto/AsymmetricEncryptedPayload.js +0 -11
  49. package/dist/value-objects/crypto/AsymmetricEncryptedPayload.js.map +0 -1
  50. package/dist/value-objects/crypto/CryptoAdapter.d.ts +0 -31
  51. package/dist/value-objects/crypto/CryptoAdapter.d.ts.map +0 -1
  52. package/dist/value-objects/crypto/CryptoAdapter.js +0 -101
  53. package/dist/value-objects/crypto/CryptoAdapter.js.map +0 -1
  54. package/dist/value-objects/crypto/CryptoPayload.d.ts +0 -5
  55. package/dist/value-objects/crypto/CryptoPayload.d.ts.map +0 -1
  56. package/dist/value-objects/crypto/CryptoPayload.js +0 -3
  57. package/dist/value-objects/crypto/CryptoPayload.js.map +0 -1
  58. package/dist/value-objects/crypto/EncryptedKeyPair.d.ts +0 -25
  59. package/dist/value-objects/crypto/EncryptedKeyPair.d.ts.map +0 -1
  60. package/dist/value-objects/crypto/EncryptedKeyPair.js +0 -42
  61. package/dist/value-objects/crypto/EncryptedKeyPair.js.map +0 -1
  62. package/dist/value-objects/crypto/EncryptedPayload.d.ts +0 -6
  63. package/dist/value-objects/crypto/EncryptedPayload.d.ts.map +0 -1
  64. package/dist/value-objects/crypto/EncryptedPayload.js +0 -23
  65. package/dist/value-objects/crypto/EncryptedPayload.js.map +0 -1
  66. package/dist/value-objects/crypto/EncryptedPrivateKey.d.ts +0 -12
  67. package/dist/value-objects/crypto/EncryptedPrivateKey.d.ts.map +0 -1
  68. package/dist/value-objects/crypto/EncryptedPrivateKey.js +0 -39
  69. package/dist/value-objects/crypto/EncryptedPrivateKey.js.map +0 -1
  70. package/dist/value-objects/crypto/Key.d.ts +0 -4
  71. package/dist/value-objects/crypto/Key.d.ts.map +0 -1
  72. package/dist/value-objects/crypto/Key.js +0 -8
  73. package/dist/value-objects/crypto/Key.js.map +0 -1
  74. package/dist/value-objects/crypto/KeyPair.d.ts +0 -26
  75. package/dist/value-objects/crypto/KeyPair.d.ts.map +0 -1
  76. package/dist/value-objects/crypto/KeyPair.js +0 -45
  77. package/dist/value-objects/crypto/KeyPair.js.map +0 -1
  78. package/dist/value-objects/crypto/PrivateKey.d.ts +0 -32
  79. package/dist/value-objects/crypto/PrivateKey.d.ts.map +0 -1
  80. package/dist/value-objects/crypto/PrivateKey.js +0 -102
  81. package/dist/value-objects/crypto/PrivateKey.js.map +0 -1
  82. package/dist/value-objects/crypto/PublicKey.d.ts +0 -19
  83. package/dist/value-objects/crypto/PublicKey.d.ts.map +0 -1
  84. package/dist/value-objects/crypto/PublicKey.js +0 -68
  85. package/dist/value-objects/crypto/PublicKey.js.map +0 -1
  86. package/dist/value-objects/crypto/Signature.d.ts +0 -11
  87. package/dist/value-objects/crypto/Signature.d.ts.map +0 -1
  88. package/dist/value-objects/crypto/Signature.js +0 -26
  89. package/dist/value-objects/crypto/Signature.js.map +0 -1
  90. package/dist/value-objects/crypto/StrictBase64.d.ts +0 -15
  91. package/dist/value-objects/crypto/StrictBase64.d.ts.map +0 -1
  92. package/dist/value-objects/crypto/StrictBase64.js +0 -36
  93. package/dist/value-objects/crypto/StrictBase64.js.map +0 -1
  94. package/dist/value-objects/crypto/SymmetricEncryptedPayload.d.ts +0 -5
  95. package/dist/value-objects/crypto/SymmetricEncryptedPayload.d.ts.map +0 -1
  96. package/dist/value-objects/crypto/SymmetricEncryptedPayload.js +0 -11
  97. package/dist/value-objects/crypto/SymmetricEncryptedPayload.js.map +0 -1
  98. package/dist/value-objects/crypto/SymmetricKey.d.ts +0 -49
  99. package/dist/value-objects/crypto/SymmetricKey.d.ts.map +0 -1
  100. package/dist/value-objects/crypto/SymmetricKey.js +0 -149
  101. package/dist/value-objects/crypto/SymmetricKey.js.map +0 -1
  102. package/dist/value-objects/crypto/encrypted-private-key/CryptoDerivation.d.ts +0 -21
  103. package/dist/value-objects/crypto/encrypted-private-key/CryptoDerivation.d.ts.map +0 -1
  104. package/dist/value-objects/crypto/encrypted-private-key/CryptoDerivation.js +0 -56
  105. package/dist/value-objects/crypto/encrypted-private-key/CryptoDerivation.js.map +0 -1
  106. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.d.ts +0 -14
  107. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.d.ts.map +0 -1
  108. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.js +0 -33
  109. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.js.map +0 -1
  110. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.d.ts +0 -22
  111. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.d.ts.map +0 -1
  112. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.js +0 -93
  113. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.js.map +0 -1
  114. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV3.d.ts +0 -24
  115. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV3.d.ts.map +0 -1
  116. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV3.js +0 -105
  117. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV3.js.map +0 -1
  118. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.d.ts +0 -8
  119. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.d.ts.map +0 -1
  120. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.js +0 -10
  121. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.js.map +0 -1
  122. package/dist/value-objects/crypto/index.d.ts +0 -12
  123. package/dist/value-objects/crypto/index.d.ts.map +0 -1
  124. package/dist/value-objects/crypto/index.js +0 -15
  125. package/dist/value-objects/crypto/index.js.map +0 -1
@@ -1,93 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EncryptedPrivateKeyV2 = void 0;
4
- const buffer_1 = require("buffer");
5
- const InvalidEncryptedPrivateKeyFormatError_1 = require("../../../errors/InvalidEncryptedPrivateKeyFormatError");
6
- const patterns_1 = require("../../../patterns");
7
- const PrivateKey_1 = require("../PrivateKey");
8
- const SymmetricEncryptedPayload_1 = require("../SymmetricEncryptedPayload");
9
- const SymmetricKey_1 = require("../SymmetricKey");
10
- const CryptoDerivation_1 = require("./CryptoDerivation");
11
- const EncryptedPrivateKeyVersion_1 = require("./EncryptedPrivateKeyVersion");
12
- class EncryptedPrivateKeyV2 extends EncryptedPrivateKeyVersion_1.EncryptedPrivateKeyVersion {
13
- static VERSION = 'v2';
14
- static KDF = 'scrypt';
15
- static SCRYPT_N = 16384;
16
- static SCRYPT_R = 8;
17
- static SCRYPT_P = 1;
18
- static SALT_ENTROPY = 16;
19
- static CIPHER = 'aes-256-gcm';
20
- static EXPECTED_PARTS = 9;
21
- static SYMMETRIC_PAYLOAD_VERSION = 'v1';
22
- static hasSupportedScryptParameters(parts) {
23
- return (parts[2] === `N${EncryptedPrivateKeyV2.SCRYPT_N}` &&
24
- parts[3] === `r${EncryptedPrivateKeyV2.SCRYPT_R}` &&
25
- parts[4] === `p${EncryptedPrivateKeyV2.SCRYPT_P}`);
26
- }
27
- static async deriveSymmetricKey(password, salt, options) {
28
- return SymmetricKey_1.SymmetricKey.fromPassword(password, { ...options, salt });
29
- }
30
- static toSymmetricPayload(parts) {
31
- const iv = parts[6];
32
- const tag = parts[7];
33
- const cipherText = parts[8];
34
- return new SymmetricEncryptedPayload_1.SymmetricEncryptedPayload([
35
- EncryptedPrivateKeyV2.SYMMETRIC_PAYLOAD_VERSION,
36
- EncryptedPrivateKeyV2.CIPHER,
37
- iv,
38
- cipherText,
39
- tag,
40
- ].join('.'));
41
- }
42
- static async encrypt(privateKey, password) {
43
- const salt = await CryptoDerivation_1.CryptoDerivation.randomBytesAsync(EncryptedPrivateKeyV2.SALT_ENTROPY);
44
- const key = await EncryptedPrivateKeyV2.deriveSymmetricKey(password, salt, {
45
- N: EncryptedPrivateKeyV2.SCRYPT_N,
46
- p: EncryptedPrivateKeyV2.SCRYPT_P,
47
- r: EncryptedPrivateKeyV2.SCRYPT_R,
48
- });
49
- const symmetricPayload = key
50
- .encrypt(privateKey.valueOf())
51
- .valueOf()
52
- .split('.');
53
- const iv = symmetricPayload[2];
54
- const cipherText = symmetricPayload[3];
55
- const tag = symmetricPayload[4];
56
- return [
57
- EncryptedPrivateKeyV2.VERSION,
58
- EncryptedPrivateKeyV2.KDF,
59
- `N${EncryptedPrivateKeyV2.SCRYPT_N}`,
60
- `r${EncryptedPrivateKeyV2.SCRYPT_R}`,
61
- `p${EncryptedPrivateKeyV2.SCRYPT_P}`,
62
- salt.toString('base64'),
63
- iv,
64
- tag,
65
- cipherText,
66
- ].join('.');
67
- }
68
- matches(parts) {
69
- return (parts.length === EncryptedPrivateKeyV2.EXPECTED_PARTS &&
70
- parts[0] === EncryptedPrivateKeyV2.VERSION &&
71
- parts[1] === EncryptedPrivateKeyV2.KDF &&
72
- EncryptedPrivateKeyV2.hasSupportedScryptParameters(parts));
73
- }
74
- async decrypt(parts, password) {
75
- (0, patterns_1.assert)(EncryptedPrivateKeyV2.hasSupportedScryptParameters(parts), new InvalidEncryptedPrivateKeyFormatError_1.InvalidEncryptedPrivateKeyFormatError('Unsupported encrypted private key parameters'));
76
- const N = parseInt(parts[2].slice(1), 10);
77
- const r = parseInt(parts[3].slice(1), 10);
78
- const p = parseInt(parts[4].slice(1), 10);
79
- const salt = buffer_1.Buffer.from(parts[5], 'base64');
80
- const key = await EncryptedPrivateKeyV2.deriveSymmetricKey(password, salt, {
81
- N,
82
- p,
83
- r,
84
- });
85
- const decrypted = key.decrypt(EncryptedPrivateKeyV2.toSymmetricPayload(parts));
86
- return new PrivateKey_1.PrivateKey(decrypted.toString());
87
- }
88
- needsReEncryption() {
89
- return true;
90
- }
91
- }
92
- exports.EncryptedPrivateKeyV2 = EncryptedPrivateKeyV2;
93
- //# sourceMappingURL=EncryptedPrivateKeyV2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EncryptedPrivateKeyV2.js","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import { PrivateKey } from '../PrivateKey';
2
- import { CryptoPassword } from '../SymmetricKey';
3
- import { EncryptedPrivateKeyVersion } from './EncryptedPrivateKeyVersion';
4
- export declare class EncryptedPrivateKeyV3 extends EncryptedPrivateKeyVersion {
5
- private static readonly VERSION;
6
- private static readonly KDF;
7
- private static readonly SCRYPT_N;
8
- private static readonly SCRYPT_R;
9
- private static readonly SCRYPT_P;
10
- private static readonly SALT_ENTROPY;
11
- private static readonly CIPHER;
12
- private static readonly EXPECTED_PARTS;
13
- private static readonly SYMMETRIC_PAYLOAD_VERSION;
14
- private static hasSupportedScryptParameters;
15
- private static getHeaderParts;
16
- private static getAad;
17
- private static ensureSaltIsValid;
18
- private static deriveSymmetricKey;
19
- private static toSymmetricPayload;
20
- static encrypt(privateKey: PrivateKey, password: CryptoPassword): Promise<string>;
21
- matches(parts: string[]): boolean;
22
- decrypt(parts: string[], password: CryptoPassword): Promise<PrivateKey>;
23
- }
24
- //# sourceMappingURL=EncryptedPrivateKeyV3.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EncryptedPrivateKeyV3.d.ts","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV3.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,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;IAQ3C,OAAO,CAAC,MAAM,CAAC,cAAc;IAU7B,OAAO,CAAC,MAAM,CAAC,MAAM;IAIrB,OAAO,CAAC,MAAM,CAAC,iBAAiB;mBAUX,kBAAkB;IAQvC,OAAO,CAAC,MAAM,CAAC,kBAAkB;WAkBb,OAAO,CACzB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC;IA4BX,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;IAS3B,OAAO,CAClB,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,UAAU,CAAC;CA2BvB"}
@@ -1,105 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EncryptedPrivateKeyV3 = void 0;
4
- const InvalidEncryptedPrivateKeyFormatError_1 = require("../../../errors/InvalidEncryptedPrivateKeyFormatError");
5
- const patterns_1 = require("../../../patterns");
6
- const PrivateKey_1 = require("../PrivateKey");
7
- const StrictBase64_1 = require("../StrictBase64");
8
- const SymmetricEncryptedPayload_1 = require("../SymmetricEncryptedPayload");
9
- const SymmetricKey_1 = require("../SymmetricKey");
10
- const CryptoDerivation_1 = require("./CryptoDerivation");
11
- const EncryptedPrivateKeyVersion_1 = require("./EncryptedPrivateKeyVersion");
12
- class EncryptedPrivateKeyV3 extends EncryptedPrivateKeyVersion_1.EncryptedPrivateKeyVersion {
13
- static VERSION = 'v3';
14
- static KDF = 'scrypt';
15
- static SCRYPT_N = 16384;
16
- static SCRYPT_R = 8;
17
- static SCRYPT_P = 5;
18
- static SALT_ENTROPY = 16;
19
- static CIPHER = 'aes-256-gcm';
20
- static EXPECTED_PARTS = 9;
21
- static SYMMETRIC_PAYLOAD_VERSION = 'v1';
22
- static hasSupportedScryptParameters(parts) {
23
- return (parts[2] === `N${EncryptedPrivateKeyV3.SCRYPT_N}` &&
24
- parts[3] === `r${EncryptedPrivateKeyV3.SCRYPT_R}` &&
25
- parts[4] === `p${EncryptedPrivateKeyV3.SCRYPT_P}`);
26
- }
27
- static getHeaderParts() {
28
- return [
29
- EncryptedPrivateKeyV3.VERSION,
30
- EncryptedPrivateKeyV3.KDF,
31
- `N${EncryptedPrivateKeyV3.SCRYPT_N}`,
32
- `r${EncryptedPrivateKeyV3.SCRYPT_R}`,
33
- `p${EncryptedPrivateKeyV3.SCRYPT_P}`,
34
- ];
35
- }
36
- static getAad(parts) {
37
- return parts.slice(0, 5).join('.');
38
- }
39
- static ensureSaltIsValid(saltB64) {
40
- return StrictBase64_1.StrictBase64.decodeCanonicalFixedLength(saltB64, new InvalidEncryptedPrivateKeyFormatError_1.InvalidEncryptedPrivateKeyFormatError('Invalid encrypted private key salt'), EncryptedPrivateKeyV3.SALT_ENTROPY);
41
- }
42
- static async deriveSymmetricKey(password, salt, options) {
43
- return SymmetricKey_1.SymmetricKey.fromPassword(password, { ...options, salt });
44
- }
45
- static toSymmetricPayload(parts) {
46
- const iv = parts[6];
47
- const tag = parts[7];
48
- const cipherText = parts[8];
49
- return new SymmetricEncryptedPayload_1.SymmetricEncryptedPayload([
50
- EncryptedPrivateKeyV3.SYMMETRIC_PAYLOAD_VERSION,
51
- EncryptedPrivateKeyV3.CIPHER,
52
- iv,
53
- cipherText,
54
- tag,
55
- ].join('.'));
56
- }
57
- static async encrypt(privateKey, password) {
58
- const salt = await CryptoDerivation_1.CryptoDerivation.randomBytesAsync(EncryptedPrivateKeyV3.SALT_ENTROPY);
59
- const key = await EncryptedPrivateKeyV3.deriveSymmetricKey(password, salt, {
60
- N: EncryptedPrivateKeyV3.SCRYPT_N,
61
- p: EncryptedPrivateKeyV3.SCRYPT_P,
62
- r: EncryptedPrivateKeyV3.SCRYPT_R,
63
- });
64
- const symmetricPayload = key
65
- .encrypt(privateKey.valueOf(), {
66
- aad: EncryptedPrivateKeyV3.getHeaderParts().join('.'),
67
- })
68
- .valueOf()
69
- .split('.');
70
- const iv = symmetricPayload[2];
71
- const cipherText = symmetricPayload[3];
72
- const tag = symmetricPayload[4];
73
- return [
74
- ...EncryptedPrivateKeyV3.getHeaderParts(),
75
- salt.toString('base64'),
76
- iv,
77
- tag,
78
- cipherText,
79
- ].join('.');
80
- }
81
- matches(parts) {
82
- return (parts.length === EncryptedPrivateKeyV3.EXPECTED_PARTS &&
83
- parts[0] === EncryptedPrivateKeyV3.VERSION &&
84
- parts[1] === EncryptedPrivateKeyV3.KDF &&
85
- EncryptedPrivateKeyV3.hasSupportedScryptParameters(parts));
86
- }
87
- async decrypt(parts, password) {
88
- (0, patterns_1.assert)(EncryptedPrivateKeyV3.hasSupportedScryptParameters(parts), new InvalidEncryptedPrivateKeyFormatError_1.InvalidEncryptedPrivateKeyFormatError('Unsupported encrypted private key parameters'));
89
- const N = parseInt(parts[2].slice(1), 10);
90
- const r = parseInt(parts[3].slice(1), 10);
91
- const p = parseInt(parts[4].slice(1), 10);
92
- const salt = EncryptedPrivateKeyV3.ensureSaltIsValid(parts[5]);
93
- const key = await EncryptedPrivateKeyV3.deriveSymmetricKey(password, salt, {
94
- N,
95
- p,
96
- r,
97
- });
98
- const decrypted = key.decrypt(EncryptedPrivateKeyV3.toSymmetricPayload(parts), {
99
- aad: EncryptedPrivateKeyV3.getAad(parts),
100
- });
101
- return new PrivateKey_1.PrivateKey(decrypted.toString());
102
- }
103
- }
104
- exports.EncryptedPrivateKeyV3 = EncryptedPrivateKeyV3;
105
- //# sourceMappingURL=EncryptedPrivateKeyV3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EncryptedPrivateKeyV3.js","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV3.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import { PrivateKey } from '../PrivateKey';
2
- import { CryptoPassword } from '../SymmetricKey';
3
- export declare abstract class EncryptedPrivateKeyVersion {
4
- abstract matches(parts: string[]): boolean;
5
- abstract decrypt(parts: string[], password: CryptoPassword): Promise<PrivateKey>;
6
- needsReEncryption(): boolean;
7
- }
8
- //# sourceMappingURL=EncryptedPrivateKeyVersion.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EncryptedPrivateKeyVersion.d.ts","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,8BAAsB,0BAA0B;aAC9B,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;aACjC,OAAO,CACrB,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,UAAU,CAAC;IAEf,iBAAiB,IAAI,OAAO;CAGpC"}
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EncryptedPrivateKeyVersion = void 0;
4
- class EncryptedPrivateKeyVersion {
5
- needsReEncryption() {
6
- return false;
7
- }
8
- }
9
- exports.EncryptedPrivateKeyVersion = EncryptedPrivateKeyVersion;
10
- //# sourceMappingURL=EncryptedPrivateKeyVersion.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EncryptedPrivateKeyVersion.js","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.ts"],"names":[],"mappings":";;;AAGA,MAAsB,0BAA0B;IAOvC,iBAAiB;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAVD,gEAUC"}
@@ -1,12 +0,0 @@
1
- export * from './AsymmetricEncryptedPayload';
2
- export * from './EncryptedKeyPair';
3
- export * from './EncryptedPayload';
4
- export * from './EncryptedPrivateKey';
5
- export * from './Key';
6
- export * from './KeyPair';
7
- export * from './PrivateKey';
8
- export * from './PublicKey';
9
- export * from './Signature';
10
- export * from './SymmetricEncryptedPayload';
11
- export * from './SymmetricKey';
12
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC"}
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./AsymmetricEncryptedPayload"), exports);
5
- tslib_1.__exportStar(require("./EncryptedKeyPair"), exports);
6
- tslib_1.__exportStar(require("./EncryptedPayload"), exports);
7
- tslib_1.__exportStar(require("./EncryptedPrivateKey"), exports);
8
- tslib_1.__exportStar(require("./Key"), exports);
9
- tslib_1.__exportStar(require("./KeyPair"), exports);
10
- tslib_1.__exportStar(require("./PrivateKey"), exports);
11
- tslib_1.__exportStar(require("./PublicKey"), exports);
12
- tslib_1.__exportStar(require("./Signature"), exports);
13
- tslib_1.__exportStar(require("./SymmetricEncryptedPayload"), exports);
14
- tslib_1.__exportStar(require("./SymmetricKey"), exports);
15
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/index.ts"],"names":[],"mappings":";;;AAAA,uEAA6C;AAC7C,6DAAmC;AACnC,6DAAmC;AACnC,gEAAsC;AACtC,gDAAsB;AACtB,oDAA0B;AAC1B,uDAA6B;AAC7B,sDAA4B;AAC5B,sDAA4B;AAC5B,sEAA4C;AAC5C,yDAA+B"}