@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.
- package/README.md +28 -19
- package/dist/errors/InvalidEncryptedPrivateKeyFormatError.d.ts +5 -0
- package/dist/errors/InvalidEncryptedPrivateKeyFormatError.d.ts.map +1 -0
- package/dist/errors/InvalidEncryptedPrivateKeyFormatError.js +11 -0
- package/dist/errors/InvalidEncryptedPrivateKeyFormatError.js.map +1 -0
- package/dist/errors/InvalidPasswordError.d.ts +5 -0
- package/dist/errors/InvalidPasswordError.d.ts.map +1 -0
- package/dist/errors/InvalidPasswordError.js +11 -0
- package/dist/errors/InvalidPasswordError.js.map +1 -0
- package/dist/errors/index.d.ts +2 -0
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +2 -0
- package/dist/errors/index.js.map +1 -1
- package/dist/patterns/Assert.d.ts +1 -1
- package/dist/patterns/Assert.d.ts.map +1 -1
- package/dist/value-objects/Password.d.ts +8 -0
- package/dist/value-objects/Password.d.ts.map +1 -0
- package/dist/value-objects/Password.js +28 -0
- package/dist/value-objects/Password.js.map +1 -0
- package/dist/value-objects/crypto/CryptoAdapter.d.ts +3 -2
- package/dist/value-objects/crypto/CryptoAdapter.d.ts.map +1 -1
- package/dist/value-objects/crypto/CryptoAdapter.js +9 -4
- package/dist/value-objects/crypto/CryptoAdapter.js.map +1 -1
- package/dist/value-objects/crypto/EncryptedKeyPair.d.ts +4 -4
- package/dist/value-objects/crypto/EncryptedKeyPair.d.ts.map +1 -1
- package/dist/value-objects/crypto/EncryptedKeyPair.js.map +1 -1
- package/dist/value-objects/crypto/EncryptedPayload.d.ts.map +1 -1
- package/dist/value-objects/crypto/EncryptedPayload.js +5 -0
- package/dist/value-objects/crypto/EncryptedPayload.js.map +1 -1
- package/dist/value-objects/crypto/EncryptedPrivateKey.d.ts +3 -2
- package/dist/value-objects/crypto/EncryptedPrivateKey.d.ts.map +1 -1
- package/dist/value-objects/crypto/EncryptedPrivateKey.js +6 -4
- package/dist/value-objects/crypto/EncryptedPrivateKey.js.map +1 -1
- package/dist/value-objects/crypto/KeyPair.d.ts +2 -2
- package/dist/value-objects/crypto/KeyPair.d.ts.map +1 -1
- package/dist/value-objects/crypto/KeyPair.js +1 -1
- package/dist/value-objects/crypto/KeyPair.js.map +1 -1
- package/dist/value-objects/crypto/PrivateKey.d.ts +6 -3
- package/dist/value-objects/crypto/PrivateKey.d.ts.map +1 -1
- package/dist/value-objects/crypto/PrivateKey.js +43 -31
- package/dist/value-objects/crypto/PrivateKey.js.map +1 -1
- package/dist/value-objects/crypto/PublicKey.d.ts +3 -0
- package/dist/value-objects/crypto/PublicKey.d.ts.map +1 -1
- package/dist/value-objects/crypto/PublicKey.js +9 -2
- package/dist/value-objects/crypto/PublicKey.js.map +1 -1
- package/dist/value-objects/crypto/StrictBase64.d.ts +15 -0
- package/dist/value-objects/crypto/StrictBase64.d.ts.map +1 -0
- package/dist/value-objects/crypto/StrictBase64.js +36 -0
- package/dist/value-objects/crypto/StrictBase64.js.map +1 -0
- package/dist/value-objects/crypto/SymmetricKey.d.ts +14 -5
- package/dist/value-objects/crypto/SymmetricKey.d.ts.map +1 -1
- package/dist/value-objects/crypto/SymmetricKey.js +53 -18
- package/dist/value-objects/crypto/SymmetricKey.js.map +1 -1
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.d.ts +2 -2
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.d.ts.map +1 -1
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.js.map +1 -1
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.d.ts +4 -3
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.d.ts.map +1 -1
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.js +6 -3
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.js.map +1 -1
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV3.d.ts +24 -0
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV3.d.ts.map +1 -0
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV3.js +105 -0
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV3.js.map +1 -0
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.d.ts +2 -2
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.d.ts.map +1 -1
- package/dist/value-objects/index.d.ts +1 -0
- package/dist/value-objects/index.d.ts.map +1 -1
- package/dist/value-objects/index.js +1 -0
- package/dist/value-objects/index.js.map +1 -1
- package/dist/value-objects/time/DayOfWeek.d.ts.map +1 -1
- package/dist/value-objects/time/DayOfWeek.js +2 -3
- package/dist/value-objects/time/DayOfWeek.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -57,6 +57,7 @@ your application.
|
|
|
57
57
|
|
|
58
58
|
### 🔤 Basic
|
|
59
59
|
- **`StringValueObject`** - Strings with length validation
|
|
60
|
+
- **`Password`** - Password strings with length and complexity validation
|
|
60
61
|
- **`NumberValueObject`** - Numbers with math operations
|
|
61
62
|
- **`Integer`** - Whole numbers
|
|
62
63
|
- **`PositiveNumber`** - Positive numbers (> 0)
|
|
@@ -94,7 +95,7 @@ your application.
|
|
|
94
95
|
- **`EncryptedPayload`** - Base container for dot-separated encrypted payload formats
|
|
95
96
|
- **`AsymmetricEncryptedPayload`** - Payload encrypted for an Ed25519/X25519 recipient key pair
|
|
96
97
|
- **`SymmetricEncryptedPayload`** - Payload encrypted with a symmetric AES-256-GCM key
|
|
97
|
-
- **`SymmetricKey`** - 32-byte AES-256-GCM key, randomly generated or deterministically derived from a
|
|
98
|
+
- **`SymmetricKey`** - 32-byte AES-256-GCM key, randomly generated or deterministically derived from a `Password` and salt with scrypt
|
|
98
99
|
- **`EncryptedPrivateKey`** - Password-protected private key encryption using scrypt + AES-256-GCM
|
|
99
100
|
- **`EncryptedKeyPair`** - Key pair with encrypted private key
|
|
100
101
|
|
|
@@ -103,28 +104,34 @@ Technical notes:
|
|
|
103
104
|
- Asymmetric payload encryption is a classical hybrid scheme. It generates an ephemeral
|
|
104
105
|
X25519 key pair, converts the recipient Ed25519 key material to Montgomery
|
|
105
106
|
form for X25519 key agreement, derives a shared secret, then derives a
|
|
106
|
-
256-bit AES key with
|
|
107
|
-
- The asymmetric payload format is
|
|
108
|
-
`ephemeralPublicKey.iv.cipherText.tag`,
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
107
|
+
256-bit AES key with HKDF-SHA256 and encrypts the payload with AES-256-GCM.
|
|
108
|
+
- The current asymmetric payload format is
|
|
109
|
+
`v2.x25519-hkdf-sha256-aes-256-gcm.ephemeralPublicKey.iv.cipherText.tag`,
|
|
110
|
+
with Base64-encoded key, IV, ciphertext, and tag fields. The previous
|
|
111
|
+
`ephemeralPublicKey.iv.cipherText.tag` format still decrypts for backward
|
|
112
|
+
compatibility.
|
|
113
|
+
- The v2 asymmetric header is authenticated as AES-GCM AAD. HKDF uses
|
|
114
|
+
`ephemeralPublicKey || recipientPublicKey` as salt and
|
|
115
|
+
`@haskou/value-objects/asymmetric-payload/v2` as domain-separated info.
|
|
112
116
|
- Symmetric payload encryption uses a 32-byte AES-256-GCM key directly. The
|
|
113
117
|
payload format is `v1.aes-256-gcm.iv.cipherText.tag`, with Base64-encoded
|
|
114
118
|
IV, ciphertext, and tag fields.
|
|
115
|
-
- `SymmetricKey.generate()` creates a random 256-bit key.
|
|
116
|
-
derives
|
|
117
|
-
|
|
118
|
-
|
|
119
|
+
- `SymmetricKey.generate()` creates a random 256-bit key.
|
|
120
|
+
`SymmetricKey.fromPasswordUsingOwasp()` derives a 256-bit key with the OWASP
|
|
121
|
+
scrypt profile used by this package for new password-derived keys.
|
|
122
|
+
`SymmetricKey.fromPassword()` keeps its original defaults for backward
|
|
123
|
+
compatibility with existing encrypted data.
|
|
119
124
|
- A 32-byte key provides the AES-256 key size. Real security depends on using
|
|
120
125
|
either a high-entropy random key or a strong password with a unique,
|
|
121
126
|
non-empty salt. AES-GCM also requires that IVs do not repeat for the same key;
|
|
122
127
|
the library generates a random 96-bit IV for each encryption.
|
|
123
128
|
- Payload encryption is intended for small payloads and is currently capped at
|
|
124
129
|
1 MiB before encryption.
|
|
125
|
-
-
|
|
126
|
-
|
|
127
|
-
|
|
130
|
+
- New encrypted private keys use `v3.scrypt.N16384.r8.p5` with a 16-byte salt,
|
|
131
|
+
then AES-256-GCM with a 12-byte IV and 16-byte authentication tag. The older
|
|
132
|
+
v2 scrypt profile and legacy PBKDF2 format still decrypt, and
|
|
133
|
+
`needsReEncryption()` marks them for upgrade. The v3 header is authenticated
|
|
134
|
+
as AES-GCM AAD.
|
|
128
135
|
- This is not a post-quantum cryptography scheme. Ed25519 and X25519 are
|
|
129
136
|
classical elliptic-curve primitives, so neither signatures nor payload key
|
|
130
137
|
agreement are post-quantum secure.
|
|
@@ -194,8 +201,9 @@ const signature = keyPair.sign('hello world'); // Sign a message
|
|
|
194
201
|
keyPair.isValidSignature('hello world', signature); // true
|
|
195
202
|
|
|
196
203
|
// Encrypted key pairs
|
|
197
|
-
const
|
|
198
|
-
const
|
|
204
|
+
const cryptoPassword = new Password('Secure-password-123!');
|
|
205
|
+
const encrypted = await keyPair.encryptKeyPair(cryptoPassword);
|
|
206
|
+
const sig = await encrypted.sign('message', cryptoPassword);
|
|
199
207
|
encrypted.isValidSignature('message', sig); // true
|
|
200
208
|
|
|
201
209
|
// Symmetric payload encryption
|
|
@@ -205,9 +213,10 @@ const plaintext = symmetricKey.decrypt(symmetricPayload);
|
|
|
205
213
|
console.log(plaintext.toString()); // 'secret data'
|
|
206
214
|
|
|
207
215
|
// Deterministic key derivation from a password and explicit salt
|
|
208
|
-
const derivedKey = await SymmetricKey.
|
|
209
|
-
|
|
210
|
-
}
|
|
216
|
+
const derivedKey = await SymmetricKey.fromPasswordUsingOwasp(
|
|
217
|
+
cryptoPassword,
|
|
218
|
+
{ salt: 'stable-application-salt' },
|
|
219
|
+
);
|
|
211
220
|
|
|
212
221
|
// Media
|
|
213
222
|
const media = new Media('hello world');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InvalidEncryptedPrivateKeyFormatError.d.ts","sourceRoot":"","sources":["../../src/errors/InvalidEncryptedPrivateKeyFormatError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,qBAAa,qCAAsC,SAAQ,WAAW;gBACxD,MAAM,SAAyC;CAG5D"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InvalidEncryptedPrivateKeyFormatError = void 0;
|
|
4
|
+
const DomainError_1 = require("./DomainError");
|
|
5
|
+
class InvalidEncryptedPrivateKeyFormatError extends DomainError_1.DomainError {
|
|
6
|
+
constructor(reason = 'Invalid encrypted private key format') {
|
|
7
|
+
super(reason);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.InvalidEncryptedPrivateKeyFormatError = InvalidEncryptedPrivateKeyFormatError;
|
|
11
|
+
//# sourceMappingURL=InvalidEncryptedPrivateKeyFormatError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InvalidEncryptedPrivateKeyFormatError.js","sourceRoot":"","sources":["../../src/errors/InvalidEncryptedPrivateKeyFormatError.ts"],"names":[],"mappings":";;;AAAA,+CAA4C;AAE5C,MAAa,qCAAsC,SAAQ,yBAAW;IACpE,YAAY,MAAM,GAAG,sCAAsC;QACzD,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;CACF;AAJD,sFAIC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InvalidPasswordError.d.ts","sourceRoot":"","sources":["../../src/errors/InvalidPasswordError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,qBAAa,oBAAqB,SAAQ,WAAW;gBACvC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAKjD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InvalidPasswordError = void 0;
|
|
4
|
+
const DomainError_1 = require("./DomainError");
|
|
5
|
+
class InvalidPasswordError extends DomainError_1.DomainError {
|
|
6
|
+
constructor(minLength, maxLength) {
|
|
7
|
+
super(`Password must be between ${minLength} and ${maxLength} characters long and include at least one uppercase letter, one lowercase letter, one number and one symbol.`);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.InvalidPasswordError = InvalidPasswordError;
|
|
11
|
+
//# sourceMappingURL=InvalidPasswordError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InvalidPasswordError.js","sourceRoot":"","sources":["../../src/errors/InvalidPasswordError.ts"],"names":[],"mappings":";;;AAAA,+CAA4C;AAE5C,MAAa,oBAAqB,SAAQ,yBAAW;IACnD,YAAY,SAAiB,EAAE,SAAiB;QAC9C,KAAK,CACH,4BAA4B,SAAS,QAAQ,SAAS,8GAA8G,CACrK,CAAC;IACJ,CAAC;CACF;AAND,oDAMC"}
|
package/dist/errors/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export * from './InvalidDayError';
|
|
|
5
5
|
export * from './InvalidDayFormatError';
|
|
6
6
|
export * from './InvalidHourError';
|
|
7
7
|
export * from './InvalidEmailError';
|
|
8
|
+
export * from './InvalidEncryptedPrivateKeyFormatError';
|
|
8
9
|
export * from './InvalidFormatError';
|
|
9
10
|
export * from './InvalidHashError';
|
|
10
11
|
export * from './InvalidIntegerError';
|
|
@@ -13,6 +14,7 @@ export * from './InvalidLongitudeError';
|
|
|
13
14
|
export * from './InvalidEmailError';
|
|
14
15
|
export * from './InvalidMinutesError';
|
|
15
16
|
export * from './InvalidNumberError';
|
|
17
|
+
export * from './InvalidPasswordError';
|
|
16
18
|
export * from './InvalidPositiveNumberError';
|
|
17
19
|
export * from './InvalidStringLengthError';
|
|
18
20
|
export * from './InvalidTimestampIntervalError';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yCAAyC,CAAC;AACxD,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
|
package/dist/errors/index.js
CHANGED
|
@@ -8,6 +8,7 @@ tslib_1.__exportStar(require("./InvalidDayError"), exports);
|
|
|
8
8
|
tslib_1.__exportStar(require("./InvalidDayFormatError"), exports);
|
|
9
9
|
tslib_1.__exportStar(require("./InvalidHourError"), exports);
|
|
10
10
|
tslib_1.__exportStar(require("./InvalidEmailError"), exports);
|
|
11
|
+
tslib_1.__exportStar(require("./InvalidEncryptedPrivateKeyFormatError"), exports);
|
|
11
12
|
tslib_1.__exportStar(require("./InvalidFormatError"), exports);
|
|
12
13
|
tslib_1.__exportStar(require("./InvalidHashError"), exports);
|
|
13
14
|
tslib_1.__exportStar(require("./InvalidIntegerError"), exports);
|
|
@@ -16,6 +17,7 @@ tslib_1.__exportStar(require("./InvalidLongitudeError"), exports);
|
|
|
16
17
|
tslib_1.__exportStar(require("./InvalidEmailError"), exports);
|
|
17
18
|
tslib_1.__exportStar(require("./InvalidMinutesError"), exports);
|
|
18
19
|
tslib_1.__exportStar(require("./InvalidNumberError"), exports);
|
|
20
|
+
tslib_1.__exportStar(require("./InvalidPasswordError"), exports);
|
|
19
21
|
tslib_1.__exportStar(require("./InvalidPositiveNumberError"), exports);
|
|
20
22
|
tslib_1.__exportStar(require("./InvalidStringLengthError"), exports);
|
|
21
23
|
tslib_1.__exportStar(require("./InvalidTimestampIntervalError"), exports);
|
package/dist/errors/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B;AAC5B,wDAA8B;AAC9B,8DAAoC;AACpC,4DAAkC;AAClC,kEAAwC;AACxC,6DAAmC;AACnC,8DAAoC;AACpC,+DAAqC;AACrC,6DAAmC;AACnC,gEAAsC;AACtC,iEAAuC;AACvC,kEAAwC;AACxC,8DAAoC;AACpC,gEAAsC;AACtC,+DAAqC;AACrC,uEAA6C;AAC7C,qEAA2C;AAC3C,0EAAgD;AAChD,4DAAkC;AAClC,+DAAqC;AACrC,kEAAwC;AACxC,4DAAkC;AAClC,gEAAsC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B;AAC5B,wDAA8B;AAC9B,8DAAoC;AACpC,4DAAkC;AAClC,kEAAwC;AACxC,6DAAmC;AACnC,8DAAoC;AACpC,kFAAwD;AACxD,+DAAqC;AACrC,6DAAmC;AACnC,gEAAsC;AACtC,iEAAuC;AACvC,kEAAwC;AACxC,8DAAoC;AACpC,gEAAsC;AACtC,+DAAqC;AACrC,iEAAuC;AACvC,uEAA6C;AAC7C,qEAA2C;AAC3C,0EAAgD;AAChD,4DAAkC;AAClC,+DAAqC;AACrC,kEAAwC;AACxC,4DAAkC;AAClC,gEAAsC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseError } from '../errors/BaseError';
|
|
2
2
|
import { DomainError } from '../errors/DomainError';
|
|
3
3
|
export type Errors = Error | BaseError | DomainError | string;
|
|
4
|
-
export declare function assert(condition: boolean | unknown | undefined, error: string | Errors):
|
|
4
|
+
export declare function assert(condition: boolean | unknown | undefined, error: string | Errors): asserts condition;
|
|
5
5
|
//# sourceMappingURL=Assert.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Assert.d.ts","sourceRoot":"","sources":["../../src/patterns/Assert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;AAE9D,wBAAgB,MAAM,CACpB,SAAS,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,EACxC,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,
|
|
1
|
+
{"version":3,"file":"Assert.d.ts","sourceRoot":"","sources":["../../src/patterns/Assert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;AAE9D,wBAAgB,MAAM,CACpB,SAAS,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,EACxC,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,OAAO,CAAC,SAAS,CAMnB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { StringValueObject } from './StringValueObject';
|
|
2
|
+
export declare class Password extends StringValueObject {
|
|
3
|
+
private static readonly MAX_LENGTH;
|
|
4
|
+
private static readonly MIN_LENGTH;
|
|
5
|
+
constructor(value: string | StringValueObject);
|
|
6
|
+
private isValidPassword;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=Password.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Password.d.ts","sourceRoot":"","sources":["../../src/value-objects/Password.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,qBAAa,QAAS,SAAQ,iBAAiB;IAC7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAO;IACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAM;gBAE5B,KAAK,EAAE,MAAM,GAAG,iBAAiB;IAa7C,OAAO,CAAC,eAAe;CAUxB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Password = void 0;
|
|
4
|
+
const InvalidPasswordError_1 = require("../errors/InvalidPasswordError");
|
|
5
|
+
const patterns_1 = require("../patterns");
|
|
6
|
+
const NullObject_1 = require("./NullObject");
|
|
7
|
+
const StringValueObject_1 = require("./StringValueObject");
|
|
8
|
+
class Password extends StringValueObject_1.StringValueObject {
|
|
9
|
+
static MAX_LENGTH = 256;
|
|
10
|
+
static MIN_LENGTH = 12;
|
|
11
|
+
constructor(value) {
|
|
12
|
+
super(value);
|
|
13
|
+
if (NullObject_1.NullObject.isNullObject(this)) {
|
|
14
|
+
return this;
|
|
15
|
+
}
|
|
16
|
+
(0, patterns_1.assert)(this.isValidPassword(), new InvalidPasswordError_1.InvalidPasswordError(Password.MIN_LENGTH, Password.MAX_LENGTH));
|
|
17
|
+
}
|
|
18
|
+
isValidPassword() {
|
|
19
|
+
return (this.value.length >= Password.MIN_LENGTH &&
|
|
20
|
+
this.value.length <= Password.MAX_LENGTH &&
|
|
21
|
+
/[A-Z]/.test(this.value) &&
|
|
22
|
+
/[a-z]/.test(this.value) &&
|
|
23
|
+
/[0-9]/.test(this.value) &&
|
|
24
|
+
/[^A-Za-z0-9]/.test(this.value));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.Password = Password;
|
|
28
|
+
//# sourceMappingURL=Password.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Password.js","sourceRoot":"","sources":["../../src/value-objects/Password.ts"],"names":[],"mappings":";;;AAAA,yEAAsE;AACtE,0CAAqC;AACrC,6CAA0C;AAC1C,2DAAwD;AAExD,MAAa,QAAS,SAAQ,qCAAiB;IACrC,MAAM,CAAU,UAAU,GAAG,GAAG,CAAC;IACjC,MAAM,CAAU,UAAU,GAAG,EAAE,CAAC;IAExC,YAAY,KAAiC;QAC3C,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAA,iBAAM,EACJ,IAAI,CAAC,eAAe,EAAE,EACtB,IAAI,2CAAoB,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,CACnE,CAAC;IACJ,CAAC;IAEO,eAAe;QACrB,OAAO,CACL,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU;YACxC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU;YACxC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YACxB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAChC,CAAC;IACJ,CAAC;;AA1BH,4BA2BC"}
|
|
@@ -3,9 +3,10 @@ type HashAlgorithm = 'md5' | 'sha256' | 'sha512';
|
|
|
3
3
|
export declare class CryptoAdapter {
|
|
4
4
|
private static pemToDer;
|
|
5
5
|
private static wrapPem;
|
|
6
|
-
static decryptAes256Gcm(key: Uint8Array, iv: Uint8Array, cipherText: Uint8Array, tag: Uint8Array): Buffer;
|
|
6
|
+
static decryptAes256Gcm(key: Uint8Array, iv: Uint8Array, cipherText: Uint8Array, tag: Uint8Array, aad?: Uint8Array): Buffer;
|
|
7
7
|
static deriveEncryptionKey(sharedSecret: Uint8Array, ephemeralPublicKey: Uint8Array): Uint8Array;
|
|
8
|
-
static
|
|
8
|
+
static deriveEncryptionKeyWithHkdf(sharedSecret: Uint8Array, ephemeralPublicKey: Uint8Array, recipientPublicKey: Uint8Array): Uint8Array;
|
|
9
|
+
static encryptAes256Gcm(key: Uint8Array, iv: Uint8Array, message: Uint8Array, aad?: Uint8Array): {
|
|
9
10
|
cipherText: Uint8Array;
|
|
10
11
|
tag: Uint8Array;
|
|
11
12
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CryptoAdapter.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/CryptoAdapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CryptoAdapter.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/CryptoAdapter.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAShC,KAAK,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEjD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ;IASvB,OAAO,CAAC,MAAM,CAAC,OAAO;WAOR,gBAAgB,CAC5B,GAAG,EAAE,UAAU,EACf,EAAE,EAAE,UAAU,EACd,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,UAAU,EACf,GAAG,CAAC,EAAE,UAAU,GACf,MAAM;WAIK,mBAAmB,CAC/B,YAAY,EAAE,UAAU,EACxB,kBAAkB,EAAE,UAAU,GAC7B,UAAU;WAIC,2BAA2B,CACvC,YAAY,EAAE,UAAU,EACxB,kBAAkB,EAAE,UAAU,EAC9B,kBAAkB,EAAE,UAAU,GAC7B,UAAU;WAUC,gBAAgB,CAC5B,GAAG,EAAE,UAAU,EACf,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,UAAU,EACnB,GAAG,CAAC,EAAE,UAAU,GACf;QAAE,UAAU,EAAE,UAAU,CAAC;QAAC,GAAG,EAAE,UAAU,CAAA;KAAE;WAShC,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;WAM3C,IAAI,CAChB,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,MAAM,GAAG,UAAU,GACzB,MAAM;WAWK,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;WAIzC,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,UAAU;WAInD,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,UAAU;WAMrD,cAAc,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM;WAO7C,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU;WAInD,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU;WAIlD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;WAIjC,mBAAmB,IAAI,MAAM;WAI7B,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM;WAMxD,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU;WAQ/C,MAAM,CAClB,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,UAAU,EACnB,YAAY,EAAE,MAAM,GACnB,OAAO;WAQI,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU;WAInD,kBAAkB,CAC9B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,UAAU,GACpB,UAAU;WAIC,sBAAsB,IAAI,UAAU;CAGnD"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CryptoAdapter = void 0;
|
|
4
4
|
const aes_js_1 = require("@noble/ciphers/aes.js");
|
|
5
5
|
const ed25519_js_1 = require("@noble/curves/ed25519.js");
|
|
6
|
+
const hkdf_js_1 = require("@noble/hashes/hkdf.js");
|
|
6
7
|
const legacy_js_1 = require("@noble/hashes/legacy.js");
|
|
7
8
|
const sha2_js_1 = require("@noble/hashes/sha2.js");
|
|
8
9
|
const utils_js_1 = require("@noble/hashes/utils.js");
|
|
@@ -10,6 +11,7 @@ const buffer_1 = require("buffer");
|
|
|
10
11
|
const privateKeyDerPrefix = (0, utils_js_1.hexToBytes)('302e020100300506032b657004220420');
|
|
11
12
|
const publicKeyDerPrefix = (0, utils_js_1.hexToBytes)('302a300506032b6570032100');
|
|
12
13
|
const gcmTagLength = 16;
|
|
14
|
+
const asymmetricPayloadV2Info = buffer_1.Buffer.from('@haskou/value-objects/asymmetric-payload/v2');
|
|
13
15
|
class CryptoAdapter {
|
|
14
16
|
static pemToDer(pem) {
|
|
15
17
|
const base64 = pem
|
|
@@ -21,14 +23,17 @@ class CryptoAdapter {
|
|
|
21
23
|
static wrapPem(label, der) {
|
|
22
24
|
return `-----BEGIN ${label}-----\n${buffer_1.Buffer.from(der).toString('base64')}\n-----END ${label}-----\n`;
|
|
23
25
|
}
|
|
24
|
-
static decryptAes256Gcm(key, iv, cipherText, tag) {
|
|
25
|
-
return buffer_1.Buffer.from((0, aes_js_1.gcm)(key, iv).decrypt((0, utils_js_1.concatBytes)(cipherText, tag)));
|
|
26
|
+
static decryptAes256Gcm(key, iv, cipherText, tag, aad) {
|
|
27
|
+
return buffer_1.Buffer.from((0, aes_js_1.gcm)(key, iv, aad).decrypt((0, utils_js_1.concatBytes)(cipherText, tag)));
|
|
26
28
|
}
|
|
27
29
|
static deriveEncryptionKey(sharedSecret, ephemeralPublicKey) {
|
|
28
30
|
return (0, sha2_js_1.sha256)((0, utils_js_1.concatBytes)(sharedSecret, ephemeralPublicKey));
|
|
29
31
|
}
|
|
30
|
-
static
|
|
31
|
-
|
|
32
|
+
static deriveEncryptionKeyWithHkdf(sharedSecret, ephemeralPublicKey, recipientPublicKey) {
|
|
33
|
+
return (0, hkdf_js_1.hkdf)(sha2_js_1.sha256, sharedSecret, (0, utils_js_1.concatBytes)(ephemeralPublicKey, recipientPublicKey), asymmetricPayloadV2Info, 32);
|
|
34
|
+
}
|
|
35
|
+
static encryptAes256Gcm(key, iv, message, aad) {
|
|
36
|
+
const encrypted = (0, aes_js_1.gcm)(key, iv, aad).encrypt(message);
|
|
32
37
|
return {
|
|
33
38
|
cipherText: encrypted.subarray(0, -gcmTagLength),
|
|
34
39
|
tag: encrypted.subarray(-gcmTagLength),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CryptoAdapter.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/CryptoAdapter.ts"],"names":[],"mappings":";;;AAAA,kDAA4C;AAC5C,yDAA2D;AAC3D,uDAA8C;AAC9C,mDAAuD;AACvD,qDAKgC;AAChC,mCAAgC;AAEhC,MAAM,mBAAmB,GAAG,IAAA,qBAAU,EAAC,kCAAkC,CAAC,CAAC;AAC3E,MAAM,kBAAkB,GAAG,IAAA,qBAAU,EAAC,0BAA0B,CAAC,CAAC;AAClE,MAAM,YAAY,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"CryptoAdapter.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/CryptoAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import type { Buffer } from 'buffer';
|
|
2
2
|
import { PrimitiveOf } from '../../interfaces';
|
|
3
|
-
import { StringValueObject } from '../StringValueObject';
|
|
4
3
|
import { CryptoPayload } from './CryptoPayload';
|
|
5
4
|
import { EncryptedPayload } from './EncryptedPayload';
|
|
6
5
|
import { EncryptedPrivateKey } from './EncryptedPrivateKey';
|
|
7
6
|
import { PrivateKey } from './PrivateKey';
|
|
8
7
|
import { PublicKey } from './PublicKey';
|
|
9
8
|
import { Signature } from './Signature';
|
|
9
|
+
import { CryptoPassword } from './SymmetricKey';
|
|
10
10
|
export declare class EncryptedKeyPair {
|
|
11
11
|
private readonly publicKey;
|
|
12
12
|
private readonly encryptedPrivateKey;
|
|
13
|
-
static encryptKeyPair(publicKey: PublicKey, privateKey: PrivateKey, password:
|
|
13
|
+
static encryptKeyPair(publicKey: PublicKey, privateKey: PrivateKey, password: CryptoPassword): Promise<EncryptedKeyPair>;
|
|
14
14
|
static fromPrimitives(primitives: PrimitiveOf<EncryptedKeyPair>): EncryptedKeyPair;
|
|
15
15
|
constructor(publicKey: PublicKey, encryptedPrivateKey: EncryptedPrivateKey);
|
|
16
16
|
isValidSignature(payload: CryptoPayload, signature: Signature): boolean;
|
|
17
|
-
sign(payload: CryptoPayload, password:
|
|
17
|
+
sign(payload: CryptoPayload, password: CryptoPassword): Promise<Signature>;
|
|
18
18
|
toPrimitives(): {
|
|
19
19
|
encryptedPrivateKey: string;
|
|
20
20
|
publicKey: string;
|
|
21
21
|
};
|
|
22
22
|
encrypt(payload: CryptoPayload): EncryptedPayload;
|
|
23
|
-
decrypt(encryptedPayload: EncryptedPayload, password:
|
|
23
|
+
decrypt(encryptedPayload: EncryptedPayload, password: CryptoPassword): Promise<Buffer>;
|
|
24
24
|
}
|
|
25
25
|
//# sourceMappingURL=EncryptedKeyPair.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptedKeyPair.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/EncryptedKeyPair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"EncryptedKeyPair.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/EncryptedKeyPair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,qBAAa,gBAAgB;IAwBzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;WAxBlB,cAAc,CAChC,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,gBAAgB,CAAC;WASd,cAAc,CAC1B,UAAU,EAAE,WAAW,CAAC,gBAAgB,CAAC,GACxC,gBAAgB;gBAQA,SAAS,EAAE,SAAS,EACpB,mBAAmB,EAAE,mBAAmB;IAGpD,gBAAgB,CACrB,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,SAAS,GACnB,OAAO;IAIG,IAAI,CACf,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,SAAS,CAAC;IAMd,YAAY;;;;IAOZ,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,gBAAgB;IAI3C,OAAO,CAClB,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC;CAKnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptedKeyPair.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/EncryptedKeyPair.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"EncryptedKeyPair.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/EncryptedKeyPair.ts"],"names":[],"mappings":";;;AAKA,+DAA4D;AAE5D,2CAAwC;AAIxC,MAAa,gBAAgB;IAwBR;IACA;IAxBZ,MAAM,CAAC,KAAK,CAAC,cAAc,CAChC,SAAoB,EACpB,UAAsB,EACtB,QAAwB;QAExB,MAAM,mBAAmB,GAAG,MAAM,yCAAmB,CAAC,MAAM,CAC1D,UAAU,EACV,QAAQ,CACT,CAAC;QAEF,OAAO,IAAI,gBAAgB,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IAC9D,CAAC;IAEM,MAAM,CAAC,cAAc,CAC1B,UAAyC;QAEzC,OAAO,IAAI,gBAAgB,CACzB,IAAI,qBAAS,CAAC,UAAU,CAAC,SAAS,CAAC,EACnC,IAAI,yCAAmB,CAAC,UAAU,CAAC,mBAAmB,CAAC,CACxD,CAAC;IACJ,CAAC;IAED,YACmB,SAAoB,EACpB,mBAAwC;QADxC,cAAS,GAAT,SAAS,CAAW;QACpB,wBAAmB,GAAnB,mBAAmB,CAAqB;IACxD,CAAC;IAEG,gBAAgB,CACrB,OAAsB,EACtB,SAAoB;QAEpB,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC7D,CAAC;IAEM,KAAK,CAAC,IAAI,CACf,OAAsB,EACtB,QAAwB;QAExB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEpE,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAEM,YAAY;QACjB,OAAO;YACL,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE;YACvD,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;SACpC,CAAC;IACJ,CAAC;IAEM,OAAO,CAAC,OAAsB;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,gBAAkC,EAClC,QAAwB;QAExB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEpE,OAAO,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC9C,CAAC;CACF;AA/DD,4CA+DC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptedPayload.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/EncryptedPayload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC;AAE5E,qBAAa,gBAAiB,SAAQ,WAAW,CAAC,MAAM,CAAC;IAChD,SAAS,IAAI,sBAAsB;
|
|
1
|
+
{"version":3,"file":"EncryptedPayload.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/EncryptedPayload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC;AAE5E,qBAAa,gBAAiB,SAAQ,WAAW,CAAC,MAAM,CAAC;IAChD,SAAS,IAAI,sBAAsB;CAqB3C"}
|
|
@@ -8,6 +8,11 @@ class EncryptedPayload extends ValueObject_1.ValueObject {
|
|
|
8
8
|
if (parts.length === 4) {
|
|
9
9
|
return 'asymmetric';
|
|
10
10
|
}
|
|
11
|
+
if (parts.length === 6 &&
|
|
12
|
+
parts[0] === 'v2' &&
|
|
13
|
+
parts[1] === 'x25519-hkdf-sha256-aes-256-gcm') {
|
|
14
|
+
return 'asymmetric';
|
|
15
|
+
}
|
|
11
16
|
if (parts.length === 5 && parts[0] === 'v1' && parts[1] === 'aes-256-gcm') {
|
|
12
17
|
return 'symmetric';
|
|
13
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptedPayload.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/EncryptedPayload.ts"],"names":[],"mappings":";;;AAAA,gDAA6C;AAI7C,MAAa,gBAAiB,SAAQ,yBAAmB;IAChD,SAAS;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAExC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE,CAAC;YAC1E,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"EncryptedPayload.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/EncryptedPayload.ts"],"names":[],"mappings":";;;AAAA,gDAA6C;AAI7C,MAAa,gBAAiB,SAAQ,yBAAmB;IAChD,SAAS;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAExC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,IACE,KAAK,CAAC,MAAM,KAAK,CAAC;YAClB,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;YACjB,KAAK,CAAC,CAAC,CAAC,KAAK,gCAAgC,EAC7C,CAAC;YACD,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE,CAAC;YAC1E,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAtBD,4CAsBC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { StringValueObject } from '../StringValueObject';
|
|
2
2
|
import { ValueObject } from '../ValueObject';
|
|
3
3
|
import { PrivateKey } from './PrivateKey';
|
|
4
|
+
import { CryptoPassword } from './SymmetricKey';
|
|
4
5
|
export declare class EncryptedPrivateKey extends ValueObject<string> {
|
|
5
6
|
private static readonly versions;
|
|
6
|
-
static create(privateKey: PrivateKey, password:
|
|
7
|
+
static create(privateKey: PrivateKey, password: CryptoPassword): Promise<EncryptedPrivateKey>;
|
|
7
8
|
constructor(encryptedPrivateKey: string | StringValueObject);
|
|
8
|
-
decrypt(password:
|
|
9
|
+
decrypt(password: CryptoPassword): Promise<PrivateKey>;
|
|
9
10
|
needsReEncryption(): boolean;
|
|
10
11
|
}
|
|
11
12
|
//# sourceMappingURL=EncryptedPrivateKey.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptedPrivateKey.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/EncryptedPrivateKey.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EncryptedPrivateKey.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/EncryptedPrivateKey.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAI7C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,qBAAa,mBAAoB,SAAQ,WAAW,CAAC,MAAM,CAAC;IAC1D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAI9B;WAEkB,MAAM,CACxB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,mBAAmB,CAAC;gBASnB,mBAAmB,EAAE,MAAM,GAAG,iBAAiB;IAI9C,OAAO,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC;IAW5D,iBAAiB,IAAI,OAAO;CAYpC"}
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.EncryptedPrivateKey = void 0;
|
|
4
|
+
const InvalidEncryptedPrivateKeyFormatError_1 = require("../../errors/InvalidEncryptedPrivateKeyFormatError");
|
|
5
|
+
const patterns_1 = require("../../patterns");
|
|
4
6
|
const ValueObject_1 = require("../ValueObject");
|
|
5
7
|
const EncryptedPrivateKeyLegacy_1 = require("./encrypted-private-key/EncryptedPrivateKeyLegacy");
|
|
6
8
|
const EncryptedPrivateKeyV2_1 = require("./encrypted-private-key/EncryptedPrivateKeyV2");
|
|
9
|
+
const EncryptedPrivateKeyV3_1 = require("./encrypted-private-key/EncryptedPrivateKeyV3");
|
|
7
10
|
class EncryptedPrivateKey extends ValueObject_1.ValueObject {
|
|
8
11
|
static versions = [
|
|
9
12
|
new EncryptedPrivateKeyLegacy_1.EncryptedPrivateKeyLegacy(),
|
|
10
13
|
new EncryptedPrivateKeyV2_1.EncryptedPrivateKeyV2(),
|
|
14
|
+
new EncryptedPrivateKeyV3_1.EncryptedPrivateKeyV3(),
|
|
11
15
|
];
|
|
12
16
|
static async create(privateKey, password) {
|
|
13
|
-
const encryptedPrivateKey = await
|
|
17
|
+
const encryptedPrivateKey = await EncryptedPrivateKeyV3_1.EncryptedPrivateKeyV3.encrypt(privateKey, password);
|
|
14
18
|
return new EncryptedPrivateKey(encryptedPrivateKey);
|
|
15
19
|
}
|
|
16
20
|
constructor(encryptedPrivateKey) {
|
|
@@ -19,9 +23,7 @@ class EncryptedPrivateKey extends ValueObject_1.ValueObject {
|
|
|
19
23
|
async decrypt(password) {
|
|
20
24
|
const parts = this.valueOf().split('.');
|
|
21
25
|
const version = EncryptedPrivateKey.versions.find((handler) => handler.matches(parts));
|
|
22
|
-
|
|
23
|
-
throw new Error('Invalid encrypted private key format');
|
|
24
|
-
}
|
|
26
|
+
(0, patterns_1.assert)(version, new InvalidEncryptedPrivateKeyFormatError_1.InvalidEncryptedPrivateKeyFormatError());
|
|
25
27
|
return version.decrypt(parts, password);
|
|
26
28
|
}
|
|
27
29
|
needsReEncryption() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptedPrivateKey.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/EncryptedPrivateKey.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"EncryptedPrivateKey.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/EncryptedPrivateKey.ts"],"names":[],"mappings":";;;AAAA,8GAA2G;AAC3G,6CAAwC;AAExC,gDAA6C;AAC7C,iGAA8F;AAC9F,yFAAsF;AACtF,yFAAsF;AAItF,MAAa,mBAAoB,SAAQ,yBAAmB;IAClD,MAAM,CAAU,QAAQ,GAAG;QACjC,IAAI,qDAAyB,EAAE;QAC/B,IAAI,6CAAqB,EAAE;QAC3B,IAAI,6CAAqB,EAAE;KAC5B,CAAC;IAEK,MAAM,CAAC,KAAK,CAAC,MAAM,CACxB,UAAsB,EACtB,QAAwB;QAExB,MAAM,mBAAmB,GAAG,MAAM,6CAAqB,CAAC,OAAO,CAC7D,UAAU,EACV,QAAQ,CACT,CAAC;QAEF,OAAO,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;IACtD,CAAC;IAED,YAAY,mBAA+C;QACzD,KAAK,CAAC,mBAAmB,EAAE,OAAO,EAAE,CAAC,CAAC;IACxC,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,QAAwB;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAC5D,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CACvB,CAAC;QAEF,IAAA,iBAAM,EAAC,OAAO,EAAE,IAAI,6EAAqC,EAAE,CAAC,CAAC;QAE7D,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAEM,iBAAiB;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAC5D,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CACvB,CAAC;QAEF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,OAAO,CAAC,iBAAiB,EAAE,CAAC;IACrC,CAAC;;AA7CH,kDA8CC"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import type { Buffer } from 'buffer';
|
|
2
2
|
import { PrimitiveOf } from '../../interfaces';
|
|
3
|
-
import { StringValueObject } from '../StringValueObject';
|
|
4
3
|
import { CryptoPayload } from './CryptoPayload';
|
|
5
4
|
import { EncryptedKeyPair } from './EncryptedKeyPair';
|
|
6
5
|
import { EncryptedPayload } from './EncryptedPayload';
|
|
7
6
|
import { PrivateKey } from './PrivateKey';
|
|
8
7
|
import { PublicKey } from './PublicKey';
|
|
9
8
|
import { Signature } from './Signature';
|
|
9
|
+
import { CryptoPassword } from './SymmetricKey';
|
|
10
10
|
export declare class KeyPair {
|
|
11
11
|
private readonly publicKey;
|
|
12
12
|
private readonly privateKey;
|
|
13
13
|
static generate(): Promise<KeyPair>;
|
|
14
14
|
static fromPrimitives(primitives: PrimitiveOf<KeyPair>): KeyPair;
|
|
15
15
|
constructor(publicKey: PublicKey, privateKey: PrivateKey);
|
|
16
|
-
encryptKeyPair(password:
|
|
16
|
+
encryptKeyPair(password: CryptoPassword): Promise<EncryptedKeyPair>;
|
|
17
17
|
isValidSignature(payload: CryptoPayload, signature: Signature): boolean;
|
|
18
18
|
sign(payload: CryptoPayload): Signature;
|
|
19
19
|
toPrimitives(): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyPair.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/KeyPair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"KeyPair.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/KeyPair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,qBAAa,OAAO;IAgBhB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU;WAhBf,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;WAO5B,cAAc,CAAC,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,OAAO;gBAQpD,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU;IAG5B,cAAc,CACzB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,gBAAgB,CAAC;IAQrB,gBAAgB,CACrB,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,SAAS,GACnB,OAAO;IAIH,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS;IAIvC,YAAY;;;;IAOZ,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,gBAAgB;IAIjD,OAAO,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,MAAM;CAG3D"}
|
|
@@ -20,7 +20,7 @@ class KeyPair {
|
|
|
20
20
|
this.privateKey = privateKey;
|
|
21
21
|
}
|
|
22
22
|
async encryptKeyPair(password) {
|
|
23
|
-
return await EncryptedKeyPair_1.EncryptedKeyPair.encryptKeyPair(this.publicKey, this.privateKey, password
|
|
23
|
+
return await EncryptedKeyPair_1.EncryptedKeyPair.encryptKeyPair(this.publicKey, this.privateKey, password);
|
|
24
24
|
}
|
|
25
25
|
isValidSignature(payload, signature) {
|
|
26
26
|
return this.publicKey.isValidSignature(payload, signature);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyPair.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/KeyPair.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"KeyPair.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/KeyPair.ts"],"names":[],"mappings":";;;AAIA,yDAAsD;AAEtD,6CAA0C;AAC1C,2CAAwC;AAIxC,MAAa,OAAO;IAgBC;IACA;IAhBZ,MAAM,CAAC,QAAQ;QACpB,MAAM,UAAU,GAAG,uBAAU,CAAC,QAAQ,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,EAAE,CAAC;QAE5C,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IAC7D,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,UAAgC;QAC3D,OAAO,IAAI,OAAO,CAChB,IAAI,qBAAS,CAAC,UAAU,CAAC,SAAS,CAAC,EACnC,IAAI,uBAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CACtC,CAAC;IACJ,CAAC;IAED,YACmB,SAAoB,EACpB,UAAsB;QADtB,cAAS,GAAT,SAAS,CAAW;QACpB,eAAU,GAAV,UAAU,CAAY;IACtC,CAAC;IAEG,KAAK,CAAC,cAAc,CACzB,QAAwB;QAExB,OAAO,MAAM,mCAAgB,CAAC,cAAc,CAC1C,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,UAAU,EACf,QAAQ,CACT,CAAC;IACJ,CAAC;IAEM,gBAAgB,CACrB,OAAsB,EACtB,SAAoB;QAEpB,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC7D,CAAC;IAEM,IAAI,CAAC,OAAsB;QAChC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAEM,YAAY;QACjB,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;YACrC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;SACpC,CAAC;IACJ,CAAC;IAEM,OAAO,CAAC,OAAsB;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAEM,OAAO,CAAC,gBAAkC;QAC/C,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACnD,CAAC;CACF;AAvDD,0BAuDC"}
|
|
@@ -7,21 +7,24 @@ import { PublicKey } from './PublicKey';
|
|
|
7
7
|
import { Signature } from './Signature';
|
|
8
8
|
export declare class PrivateKey extends Key {
|
|
9
9
|
private static readonly LENGTH;
|
|
10
|
-
private static readonly
|
|
10
|
+
private static readonly LEGACY_ENCRYPTED_PAYLOAD_PARTS;
|
|
11
|
+
private static readonly OWASP_ENCRYPTED_PAYLOAD_PARTS;
|
|
11
12
|
private static readonly EPHEMERAL_PUBLIC_KEY_LENGTH;
|
|
12
13
|
private static readonly IV_LENGTH;
|
|
13
14
|
private static readonly TAG_LENGTH;
|
|
14
15
|
private static readonly MAX_CIPHERTEXT_LENGTH;
|
|
15
|
-
private static readonly
|
|
16
|
+
private static readonly PAYLOAD_ALGORITHM;
|
|
17
|
+
private static readonly PAYLOAD_VERSION;
|
|
16
18
|
private static readonly PATTERN;
|
|
17
|
-
private static getBase64DecodedLength;
|
|
18
19
|
private static ensureIsBase64;
|
|
19
20
|
private static ensureBase64DecodedLength;
|
|
20
21
|
private static decodeBase64;
|
|
22
|
+
private static getPayloadAad;
|
|
21
23
|
static fromPEM(pem: string | StringValueObject): PrivateKey;
|
|
22
24
|
static generate(): PrivateKey;
|
|
23
25
|
constructor(value: string | StringValueObject);
|
|
24
26
|
private ensureIsValidPrivateKey;
|
|
27
|
+
private decryptPayload;
|
|
25
28
|
getPublicKey(): PublicKey;
|
|
26
29
|
sign(payload: CryptoPayload): Signature;
|
|
27
30
|
decrypt(encryptedPayload: EncryptedPayload): Buffer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrivateKey.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/PrivateKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAOhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"PrivateKey.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/PrivateKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAOhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,qBAAa,UAAW,SAAQ,GAAG;IACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAO;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,8BAA8B,CAAK;IAC3D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,6BAA6B,CAAK;IAC1D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAM;IACzD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAM;IACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAM;IACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAe;IAC5D,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,CACiD;IAEhF,OAAO,CAAC,MAAM,CAAC,cAAc;IAY7B,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAYxC,OAAO,CAAC,MAAM,CAAC,YAAY;IAU3B,OAAO,CAAC,MAAM,CAAC,aAAa;WAMd,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,UAAU;WAIpD,QAAQ,IAAI,UAAU;gBAIxB,KAAK,EAAE,MAAM,GAAG,iBAAiB;IAU7C,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,cAAc;IAoEf,YAAY,IAAI,SAAS;IAIzB,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS;IAUvC,OAAO,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,MAAM;CAwC3D"}
|