@haskou/value-objects 2.7.4 → 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 +73 -10
- 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/AsymmetricEncryptedPayload.d.ts +5 -0
- package/dist/value-objects/crypto/AsymmetricEncryptedPayload.d.ts.map +1 -0
- package/dist/value-objects/crypto/AsymmetricEncryptedPayload.js +11 -0
- package/dist/value-objects/crypto/AsymmetricEncryptedPayload.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 +2 -0
- package/dist/value-objects/crypto/EncryptedPayload.d.ts.map +1 -1
- package/dist/value-objects/crypto/EncryptedPayload.js +15 -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 +5 -2
- package/dist/value-objects/crypto/PublicKey.d.ts.map +1 -1
- package/dist/value-objects/crypto/PublicKey.js +11 -4
- 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/SymmetricEncryptedPayload.d.ts +5 -0
- package/dist/value-objects/crypto/SymmetricEncryptedPayload.d.ts.map +1 -0
- package/dist/value-objects/crypto/SymmetricEncryptedPayload.js +11 -0
- package/dist/value-objects/crypto/SymmetricEncryptedPayload.js.map +1 -0
- package/dist/value-objects/crypto/SymmetricKey.d.ts +49 -0
- package/dist/value-objects/crypto/SymmetricKey.d.ts.map +1 -0
- package/dist/value-objects/crypto/SymmetricKey.js +149 -0
- package/dist/value-objects/crypto/SymmetricKey.js.map +1 -0
- 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 +7 -5
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.d.ts.map +1 -1
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.js +41 -17
- 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/crypto/index.d.ts +3 -0
- package/dist/value-objects/crypto/index.d.ts.map +1 -1
- package/dist/value-objects/crypto/index.js +3 -0
- package/dist/value-objects/crypto/index.js.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
|
@@ -15,7 +15,7 @@ npm install @haskou/value-objects
|
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
```typescript
|
|
18
|
-
import { Email, PositiveNumber, Color, Hour } from 'value-objects';
|
|
18
|
+
import { Email, PositiveNumber, Color, Hour } from '@haskou/value-objects';
|
|
19
19
|
|
|
20
20
|
// ✅ Automatic validation on construction
|
|
21
21
|
const email = new Email('user@example.com'); // Valid
|
|
@@ -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)
|
|
@@ -87,13 +88,61 @@ your application.
|
|
|
87
88
|
- **`Coordinates`** - Coordinate pairs
|
|
88
89
|
|
|
89
90
|
### 🔐 Cryptography
|
|
90
|
-
- **`KeyPair`** - Ed25519 key pair generation
|
|
91
|
-
- **`PrivateKey`** - Ed25519 private key (PEM format)
|
|
92
|
-
- **`PublicKey`** - Ed25519 public key (PEM format)
|
|
93
|
-
- **`Signature`** - Base64-encoded
|
|
94
|
-
- **`
|
|
91
|
+
- **`KeyPair`** - Ed25519 key pair generation for signing and verification
|
|
92
|
+
- **`PrivateKey`** - Ed25519 private key (PEM format) for signing; also accepted by asymmetric payload decryption for data addressed to the matching key pair
|
|
93
|
+
- **`PublicKey`** - Ed25519 public key (PEM format) for signature verification; also accepted by asymmetric payload encryption to address data to the matching key pair
|
|
94
|
+
- **`Signature`** - Base64-encoded Ed25519 digital signature
|
|
95
|
+
- **`EncryptedPayload`** - Base container for dot-separated encrypted payload formats
|
|
96
|
+
- **`AsymmetricEncryptedPayload`** - Payload encrypted for an Ed25519/X25519 recipient key pair
|
|
97
|
+
- **`SymmetricEncryptedPayload`** - Payload encrypted with a symmetric AES-256-GCM key
|
|
98
|
+
- **`SymmetricKey`** - 32-byte AES-256-GCM key, randomly generated or deterministically derived from a `Password` and salt with scrypt
|
|
99
|
+
- **`EncryptedPrivateKey`** - Password-protected private key encryption using scrypt + AES-256-GCM
|
|
95
100
|
- **`EncryptedKeyPair`** - Key pair with encrypted private key
|
|
96
101
|
|
|
102
|
+
Technical notes:
|
|
103
|
+
|
|
104
|
+
- Asymmetric payload encryption is a classical hybrid scheme. It generates an ephemeral
|
|
105
|
+
X25519 key pair, converts the recipient Ed25519 key material to Montgomery
|
|
106
|
+
form for X25519 key agreement, derives a shared secret, then derives a
|
|
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.
|
|
116
|
+
- Symmetric payload encryption uses a 32-byte AES-256-GCM key directly. The
|
|
117
|
+
payload format is `v1.aes-256-gcm.iv.cipherText.tag`, with Base64-encoded
|
|
118
|
+
IV, ciphertext, and tag fields.
|
|
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.
|
|
124
|
+
- A 32-byte key provides the AES-256 key size. Real security depends on using
|
|
125
|
+
either a high-entropy random key or a strong password with a unique,
|
|
126
|
+
non-empty salt. AES-GCM also requires that IVs do not repeat for the same key;
|
|
127
|
+
the library generates a random 96-bit IV for each encryption.
|
|
128
|
+
- Payload encryption is intended for small payloads and is currently capped at
|
|
129
|
+
1 MiB before encryption.
|
|
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.
|
|
135
|
+
- This is not a post-quantum cryptography scheme. Ed25519 and X25519 are
|
|
136
|
+
classical elliptic-curve primitives, so neither signatures nor payload key
|
|
137
|
+
agreement are post-quantum secure.
|
|
138
|
+
- Payload encryption uses fresh ephemeral key material and a random IV per
|
|
139
|
+
encryption, but captured payloads can still be decrypted later if the
|
|
140
|
+
recipient private key is compromised. Treat it as recipient-addressed
|
|
141
|
+
encryption with ciphertext integrity, not as sender-authenticated encryption
|
|
142
|
+
or a forward-secret transport protocol.
|
|
143
|
+
- The payload encryption format is library-specific, not HPKE, and has not been
|
|
144
|
+
independently audited as a protocol.
|
|
145
|
+
|
|
97
146
|
### 📎 Media
|
|
98
147
|
- **`Media`** - Binary/string content with Buffer, size, and Base64 helpers
|
|
99
148
|
|
|
@@ -147,15 +196,28 @@ const sha512 = SHA512Hash.from('hello'); // 9b71d224bd62f3785d96d46ad3ea3d73319b
|
|
|
147
196
|
console.log(md5.toBase64());
|
|
148
197
|
|
|
149
198
|
// Crypto
|
|
150
|
-
const keyPair = KeyPair.generate(); // Ed25519 key pair
|
|
199
|
+
const keyPair = await KeyPair.generate(); // Ed25519 key pair
|
|
151
200
|
const signature = keyPair.sign('hello world'); // Sign a message
|
|
152
201
|
keyPair.isValidSignature('hello world', signature); // true
|
|
153
202
|
|
|
154
203
|
// Encrypted key pairs
|
|
155
|
-
const
|
|
156
|
-
const
|
|
204
|
+
const cryptoPassword = new Password('Secure-password-123!');
|
|
205
|
+
const encrypted = await keyPair.encryptKeyPair(cryptoPassword);
|
|
206
|
+
const sig = await encrypted.sign('message', cryptoPassword);
|
|
157
207
|
encrypted.isValidSignature('message', sig); // true
|
|
158
208
|
|
|
209
|
+
// Symmetric payload encryption
|
|
210
|
+
const symmetricKey = SymmetricKey.generate();
|
|
211
|
+
const symmetricPayload = symmetricKey.encrypt('secret data');
|
|
212
|
+
const plaintext = symmetricKey.decrypt(symmetricPayload);
|
|
213
|
+
console.log(plaintext.toString()); // 'secret data'
|
|
214
|
+
|
|
215
|
+
// Deterministic key derivation from a password and explicit salt
|
|
216
|
+
const derivedKey = await SymmetricKey.fromPasswordUsingOwasp(
|
|
217
|
+
cryptoPassword,
|
|
218
|
+
{ salt: 'stable-application-salt' },
|
|
219
|
+
);
|
|
220
|
+
|
|
159
221
|
// Media
|
|
160
222
|
const media = new Media('hello world');
|
|
161
223
|
console.log(media.getSize()); // 11
|
|
@@ -211,7 +273,8 @@ to choose the npm version bump:
|
|
|
211
273
|
Branches without one of these prefixes still run CI, but they do not publish
|
|
212
274
|
to npm. Publishing uses npm Trusted Publishing from the `ci.yml` workflow.
|
|
213
275
|
After a successful publish, CI commits the release version to the default
|
|
214
|
-
branch
|
|
276
|
+
branch, creates the matching `vX.Y.Z` Git tag, and publishes a compact GitHub
|
|
277
|
+
Release with the PR title, npm package link, release branch, and PR notes.
|
|
215
278
|
|
|
216
279
|
## 🤝 Contributing
|
|
217
280
|
|
|
@@ -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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AsymmetricEncryptedPayload.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/AsymmetricEncryptedPayload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE9E,qBAAa,0BAA2B,SAAQ,gBAAgB;IACvD,SAAS,IAAI,sBAAsB;CAG3C"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AsymmetricEncryptedPayload = void 0;
|
|
4
|
+
const EncryptedPayload_1 = require("./EncryptedPayload");
|
|
5
|
+
class AsymmetricEncryptedPayload extends EncryptedPayload_1.EncryptedPayload {
|
|
6
|
+
getScheme() {
|
|
7
|
+
return 'asymmetric';
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.AsymmetricEncryptedPayload = AsymmetricEncryptedPayload;
|
|
11
|
+
//# sourceMappingURL=AsymmetricEncryptedPayload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AsymmetricEncryptedPayload.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/AsymmetricEncryptedPayload.ts"],"names":[],"mappings":";;;AAAA,yDAA8E;AAE9E,MAAa,0BAA2B,SAAQ,mCAAgB;IACvD,SAAS;QACd,OAAO,YAAY,CAAC;IACtB,CAAC;CACF;AAJD,gEAIC"}
|
|
@@ -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,4 +1,6 @@
|
|
|
1
1
|
import { ValueObject } from '../ValueObject';
|
|
2
|
+
export type EncryptedPayloadScheme = 'asymmetric' | 'symmetric' | 'unknown';
|
|
2
3
|
export declare class EncryptedPayload extends ValueObject<string> {
|
|
4
|
+
getScheme(): EncryptedPayloadScheme;
|
|
3
5
|
}
|
|
4
6
|
//# sourceMappingURL=EncryptedPayload.d.ts.map
|
|
@@ -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,qBAAa,gBAAiB,SAAQ,WAAW,CAAC,MAAM,CAAC;
|
|
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"}
|
|
@@ -3,6 +3,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.EncryptedPayload = void 0;
|
|
4
4
|
const ValueObject_1 = require("../ValueObject");
|
|
5
5
|
class EncryptedPayload extends ValueObject_1.ValueObject {
|
|
6
|
+
getScheme() {
|
|
7
|
+
const parts = this.valueOf().split('.');
|
|
8
|
+
if (parts.length === 4) {
|
|
9
|
+
return 'asymmetric';
|
|
10
|
+
}
|
|
11
|
+
if (parts.length === 6 &&
|
|
12
|
+
parts[0] === 'v2' &&
|
|
13
|
+
parts[1] === 'x25519-hkdf-sha256-aes-256-gcm') {
|
|
14
|
+
return 'asymmetric';
|
|
15
|
+
}
|
|
16
|
+
if (parts.length === 5 && parts[0] === 'v1' && parts[1] === 'aes-256-gcm') {
|
|
17
|
+
return 'symmetric';
|
|
18
|
+
}
|
|
19
|
+
return 'unknown';
|
|
20
|
+
}
|
|
6
21
|
}
|
|
7
22
|
exports.EncryptedPayload = EncryptedPayload;
|
|
8
23
|
//# sourceMappingURL=EncryptedPayload.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptedPayload.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/EncryptedPayload.ts"],"names":[],"mappings":";;;AAAA,gDAA6C;
|
|
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);
|