@haskou/value-objects 2.4.0 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +11 -1
  2. package/dist/value-objects/UniqueObjectArray.d.ts +15 -0
  3. package/dist/value-objects/UniqueObjectArray.d.ts.map +1 -0
  4. package/dist/value-objects/UniqueObjectArray.js +42 -0
  5. package/dist/value-objects/UniqueObjectArray.js.map +1 -0
  6. package/dist/value-objects/crypto/CryptoAdapter.d.ts +30 -0
  7. package/dist/value-objects/crypto/CryptoAdapter.d.ts.map +1 -0
  8. package/dist/value-objects/crypto/CryptoAdapter.js +96 -0
  9. package/dist/value-objects/crypto/CryptoAdapter.js.map +1 -0
  10. package/dist/value-objects/crypto/CryptoPayload.d.ts +1 -0
  11. package/dist/value-objects/crypto/CryptoPayload.d.ts.map +1 -1
  12. package/dist/value-objects/crypto/EncryptedKeyPair.d.ts +1 -0
  13. package/dist/value-objects/crypto/EncryptedKeyPair.d.ts.map +1 -1
  14. package/dist/value-objects/crypto/EncryptedKeyPair.js.map +1 -1
  15. package/dist/value-objects/crypto/EncryptedPrivateKey.d.ts +2 -5
  16. package/dist/value-objects/crypto/EncryptedPrivateKey.d.ts.map +1 -1
  17. package/dist/value-objects/crypto/EncryptedPrivateKey.js +21 -39
  18. package/dist/value-objects/crypto/EncryptedPrivateKey.js.map +1 -1
  19. package/dist/value-objects/crypto/KeyPair.d.ts +1 -0
  20. package/dist/value-objects/crypto/KeyPair.d.ts.map +1 -1
  21. package/dist/value-objects/crypto/KeyPair.js +4 -10
  22. package/dist/value-objects/crypto/KeyPair.js.map +1 -1
  23. package/dist/value-objects/crypto/PrivateKey.d.ts +1 -0
  24. package/dist/value-objects/crypto/PrivateKey.d.ts.map +1 -1
  25. package/dist/value-objects/crypto/PrivateKey.js +14 -33
  26. package/dist/value-objects/crypto/PrivateKey.js.map +1 -1
  27. package/dist/value-objects/crypto/PublicKey.d.ts.map +1 -1
  28. package/dist/value-objects/crypto/PublicKey.js +16 -29
  29. package/dist/value-objects/crypto/PublicKey.js.map +1 -1
  30. package/dist/value-objects/crypto/Signature.d.ts +1 -0
  31. package/dist/value-objects/crypto/Signature.d.ts.map +1 -1
  32. package/dist/value-objects/crypto/Signature.js.map +1 -1
  33. package/dist/value-objects/crypto/encrypted-private-key/CryptoDerivation.d.ts +21 -0
  34. package/dist/value-objects/crypto/encrypted-private-key/CryptoDerivation.d.ts.map +1 -0
  35. package/dist/value-objects/crypto/encrypted-private-key/CryptoDerivation.js +56 -0
  36. package/dist/value-objects/crypto/encrypted-private-key/CryptoDerivation.js.map +1 -0
  37. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.d.ts +14 -0
  38. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.d.ts.map +1 -0
  39. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.js +33 -0
  40. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.js.map +1 -0
  41. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.d.ts +20 -0
  42. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.d.ts.map +1 -0
  43. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.js +69 -0
  44. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.js.map +1 -0
  45. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.d.ts +8 -0
  46. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.d.ts.map +1 -0
  47. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.js +10 -0
  48. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.js.map +1 -0
  49. package/dist/value-objects/hashes/Hash.d.ts.map +1 -1
  50. package/dist/value-objects/hashes/Hash.js +2 -1
  51. package/dist/value-objects/hashes/Hash.js.map +1 -1
  52. package/dist/value-objects/hashes/MD5Hash.d.ts +1 -0
  53. package/dist/value-objects/hashes/MD5Hash.d.ts.map +1 -1
  54. package/dist/value-objects/hashes/MD5Hash.js +2 -3
  55. package/dist/value-objects/hashes/MD5Hash.js.map +1 -1
  56. package/dist/value-objects/hashes/SHA256Hash.d.ts +1 -0
  57. package/dist/value-objects/hashes/SHA256Hash.d.ts.map +1 -1
  58. package/dist/value-objects/hashes/SHA256Hash.js +4 -3
  59. package/dist/value-objects/hashes/SHA256Hash.js.map +1 -1
  60. package/dist/value-objects/hashes/SHA512Hash.d.ts +1 -0
  61. package/dist/value-objects/hashes/SHA512Hash.d.ts.map +1 -1
  62. package/dist/value-objects/hashes/SHA512Hash.js +4 -3
  63. package/dist/value-objects/hashes/SHA512Hash.js.map +1 -1
  64. package/dist/value-objects/index.d.ts +1 -0
  65. package/dist/value-objects/index.d.ts.map +1 -1
  66. package/dist/value-objects/index.js +1 -0
  67. package/dist/value-objects/index.js.map +1 -1
  68. package/dist/value-objects/media/Media.d.ts +1 -0
  69. package/dist/value-objects/media/Media.d.ts.map +1 -1
  70. package/dist/value-objects/media/Media.js +2 -1
  71. package/dist/value-objects/media/Media.js.map +1 -1
  72. package/package.json +4 -1
  73. package/dist/errors/InvalidValueError.d.ts +0 -5
  74. package/dist/errors/InvalidValueError.d.ts.map +0 -1
  75. package/dist/errors/InvalidValueError.js +0 -11
  76. package/dist/errors/InvalidValueError.js.map +0 -1
@@ -1,13 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PublicKey = void 0;
4
- const tslib_1 = require("tslib");
5
- const ed25519_js_1 = require("@noble/curves/ed25519.js");
6
- const crypto = tslib_1.__importStar(require("node:crypto"));
4
+ const buffer_1 = require("buffer");
7
5
  const InvalidFormatError_1 = require("../../errors/InvalidFormatError");
8
6
  const InvalidLengthError_1 = require("../../errors/InvalidLengthError");
9
7
  const patterns_1 = require("../../patterns");
10
8
  const NullObject_1 = require("../NullObject");
9
+ const CryptoAdapter_1 = require("./CryptoAdapter");
11
10
  const EncryptedPayload_1 = require("./EncryptedPayload");
12
11
  const Key_1 = require("./Key");
13
12
  class PublicKey extends Key_1.Key {
@@ -28,37 +27,25 @@ class PublicKey extends Key_1.Key {
28
27
  (0, patterns_1.assert)(PublicKey.PATTERN.test(value), new InvalidFormatError_1.InvalidFormatError(value));
29
28
  }
30
29
  isValidSignature(payload, signature) {
31
- const messageBuffer = Buffer.from(payload.valueOf());
32
- const signatureBuffer = Buffer.from(signature.valueOf(), 'base64');
33
- const valid = crypto.verify(null, messageBuffer, this.valueOf(), signatureBuffer);
30
+ const messageBuffer = buffer_1.Buffer.from(payload.valueOf());
31
+ const signatureBuffer = buffer_1.Buffer.from(signature.valueOf(), 'base64');
32
+ const valid = CryptoAdapter_1.CryptoAdapter.verify(signatureBuffer, messageBuffer, this.valueOf());
34
33
  return valid;
35
34
  }
36
35
  encrypt(payload) {
37
- const messageBuffer = Buffer.from(payload.valueOf());
38
- const spkiDer = crypto
39
- .createPublicKey(this.valueOf())
40
- .export({ format: 'der', type: 'spki' });
41
- const x25519Pub = ed25519_js_1.ed25519.utils.toMontgomery(spkiDer.subarray(12));
42
- const ephemeralPriv = ed25519_js_1.x25519.utils.randomSecretKey();
43
- const ephemeralPub = ed25519_js_1.x25519.getPublicKey(ephemeralPriv);
44
- const sharedSecret = ed25519_js_1.x25519.getSharedSecret(ephemeralPriv, x25519Pub);
45
- const aesKey = crypto
46
- .createHash('sha256')
47
- .update(sharedSecret)
48
- .update(ephemeralPub)
49
- .digest();
50
- const iv = crypto.randomBytes(12);
51
- const cipher = crypto.createCipheriv('aes-256-gcm', aesKey, iv);
52
- const cipherText = Buffer.concat([
53
- cipher.update(messageBuffer),
54
- cipher.final(),
55
- ]);
56
- const tag = cipher.getAuthTag();
36
+ const messageBuffer = buffer_1.Buffer.from(payload.valueOf());
37
+ const x25519Pub = CryptoAdapter_1.CryptoAdapter.publicKeyToX25519(this.valueOf());
38
+ const ephemeralPriv = CryptoAdapter_1.CryptoAdapter.x25519RandomPrivateKey();
39
+ const ephemeralPub = CryptoAdapter_1.CryptoAdapter.x25519PublicKey(ephemeralPriv);
40
+ const sharedSecret = CryptoAdapter_1.CryptoAdapter.x25519SharedSecret(ephemeralPriv, x25519Pub);
41
+ const aesKey = CryptoAdapter_1.CryptoAdapter.deriveEncryptionKey(sharedSecret, ephemeralPub);
42
+ const iv = CryptoAdapter_1.CryptoAdapter.randomBytes(12);
43
+ const { cipherText, tag } = CryptoAdapter_1.CryptoAdapter.encryptAes256Gcm(aesKey, iv, messageBuffer);
57
44
  const result = [
58
- Buffer.from(ephemeralPub).toString('base64'),
45
+ buffer_1.Buffer.from(ephemeralPub).toString('base64'),
59
46
  iv.toString('base64'),
60
- cipherText.toString('base64'),
61
- tag.toString('base64'),
47
+ buffer_1.Buffer.from(cipherText).toString('base64'),
48
+ buffer_1.Buffer.from(tag).toString('base64'),
62
49
  ].join('.');
63
50
  return new EncryptedPayload_1.EncryptedPayload(result);
64
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PublicKey.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/PublicKey.ts"],"names":[],"mappings":";;;;AAAA,yDAA2D;AAC3D,4DAAsC;AAEtC,wEAAqE;AACrE,wEAAqE;AACrE,6CAAwC;AACxC,8CAA2C;AAG3C,yDAAsD;AACtD,+BAA4B;AAG5B,MAAa,SAAU,SAAQ,SAAG;IACxB,MAAM,CAAU,MAAM,GAAG,GAAG,CAAC;IAC7B,MAAM,CAAU,OAAO,GAC7B,2EAA2E,CAAC;IAEvE,MAAM,CAAC,OAAO,CAAC,GAA+B;QACnD,OAAO,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,YAAY,KAAiC;QAC3C,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAExB,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAEO,sBAAsB,CAAC,KAAa;QAC1C,IAAA,iBAAM,EACJ,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EACjC,IAAI,uCAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAChD,CAAC;QACF,IAAA,iBAAM,EAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,uCAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,CAAC;IAEM,gBAAgB,CACrB,OAAsB,EACtB,SAAoB;QAEpB,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACrD,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CACzB,IAAI,EACJ,aAAa,EACb,IAAI,CAAC,OAAO,EAAE,EACd,eAAe,CAChB,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,OAAO,CAAC,OAAsB;QACnC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAErD,MAAM,OAAO,GAAG,MAAM;aACnB,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;aAC/B,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,oBAAO,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QAEnE,MAAM,aAAa,GAAG,mBAAM,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QACrD,MAAM,YAAY,GAAG,mBAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QACxD,MAAM,YAAY,GAAG,mBAAM,CAAC,eAAe,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAEtE,MAAM,MAAM,GAAG,MAAM;aAClB,UAAU,CAAC,QAAQ,CAAC;aACpB,MAAM,CAAC,YAAY,CAAC;aACpB,MAAM,CAAC,YAAY,CAAC;aACpB,MAAM,EAAE,CAAC;QAEZ,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;YAC5B,MAAM,CAAC,KAAK,EAAE;SACf,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAEhC,MAAM,MAAM,GAAG;YACb,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC5C,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACrB,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC7B,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;SACvB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEZ,OAAO,IAAI,mCAAgB,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;;AA7EH,8BA8EC"}
1
+ {"version":3,"file":"PublicKey.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/PublicKey.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEhC,wEAAqE;AACrE,wEAAqE;AACrE,6CAAwC;AACxC,8CAA2C;AAE3C,mDAAgD;AAEhD,yDAAsD;AACtD,+BAA4B;AAG5B,MAAa,SAAU,SAAQ,SAAG;IACxB,MAAM,CAAU,MAAM,GAAG,GAAG,CAAC;IAC7B,MAAM,CAAU,OAAO,GAC7B,2EAA2E,CAAC;IAEvE,MAAM,CAAC,OAAO,CAAC,GAA+B;QACnD,OAAO,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,YAAY,KAAiC;QAC3C,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAExB,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAEO,sBAAsB,CAAC,KAAa;QAC1C,IAAA,iBAAM,EACJ,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EACjC,IAAI,uCAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAChD,CAAC;QACF,IAAA,iBAAM,EAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,uCAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,CAAC;IAEM,gBAAgB,CACrB,OAAsB,EACtB,SAAoB;QAEpB,MAAM,aAAa,GAAG,eAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACrD,MAAM,eAAe,GAAG,eAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,6BAAa,CAAC,MAAM,CAChC,eAAe,EACf,aAAa,EACb,IAAI,CAAC,OAAO,EAAE,CACf,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,OAAO,CAAC,OAAsB;QACnC,MAAM,aAAa,GAAG,eAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAErD,MAAM,SAAS,GAAG,6BAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAElE,MAAM,aAAa,GAAG,6BAAa,CAAC,sBAAsB,EAAE,CAAC;QAC7D,MAAM,YAAY,GAAG,6BAAa,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QAClE,MAAM,YAAY,GAAG,6BAAa,CAAC,kBAAkB,CACnD,aAAa,EACb,SAAS,CACV,CAAC;QAEF,MAAM,MAAM,GAAG,6BAAa,CAAC,mBAAmB,CAC9C,YAAY,EACZ,YAAY,CACb,CAAC;QAEF,MAAM,EAAE,GAAG,6BAAa,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACzC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,6BAAa,CAAC,gBAAgB,CACxD,MAAM,EACN,EAAE,EACF,aAAa,CACd,CAAC;QAEF,MAAM,MAAM,GAAG;YACb,eAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC5C,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACrB,eAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC1C,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;SACpC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEZ,OAAO,IAAI,mCAAgB,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;;AA1EH,8BA2EC"}
@@ -1,3 +1,4 @@
1
+ import type { Buffer } from 'buffer';
1
2
  import { StringValueObject } from '../StringValueObject';
2
3
  import { ValueObject } from '../ValueObject';
3
4
  export declare class Signature extends ValueObject<string> {
@@ -1 +1 @@
1
- {"version":3,"file":"Signature.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/Signature.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,qBAAa,SAAU,SAAQ,WAAW,CAAC,MAAM,CAAC;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAM;IACpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAA2B;WAE5C,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;gBAIvC,KAAK,EAAE,MAAM,GAAG,iBAAiB;IAU7C,OAAO,CAAC,cAAc;CAGvB"}
1
+ {"version":3,"file":"Signature.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/Signature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,qBAAa,SAAU,SAAQ,WAAW,CAAC,MAAM,CAAC;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAM;IACpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAA2B;WAE5C,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;gBAIvC,KAAK,EAAE,MAAM,GAAG,iBAAiB;IAU7C,OAAO,CAAC,cAAc;CAGvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Signature.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/Signature.ts"],"names":[],"mappings":";;;AAAA,8EAA2E;AAC3E,6CAAwC;AACxC,8CAA2C;AAE3C,gDAA6C;AAE7C,MAAa,SAAU,SAAQ,yBAAmB;IACxC,MAAM,CAAU,MAAM,GAAG,EAAE,CAAC;IAC5B,MAAM,CAAU,OAAO,GAAG,uBAAuB,CAAC;IAEnD,MAAM,CAAC,UAAU,CAAC,MAAc;QACrC,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,YAAY,KAAiC;QAC3C,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAExB,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAA,iBAAM,EAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,6CAAqB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7E,CAAC;IAEO,cAAc;QACpB,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;;AApBH,8BAqBC"}
1
+ {"version":3,"file":"Signature.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/Signature.ts"],"names":[],"mappings":";;;AAEA,8EAA2E;AAC3E,6CAAwC;AACxC,8CAA2C;AAE3C,gDAA6C;AAE7C,MAAa,SAAU,SAAQ,yBAAmB;IACxC,MAAM,CAAU,MAAM,GAAG,EAAE,CAAC;IAC5B,MAAM,CAAU,OAAO,GAAG,uBAAuB,CAAC;IAEnD,MAAM,CAAC,UAAU,CAAC,MAAc;QACrC,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,YAAY,KAAiC;QAC3C,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAExB,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAA,iBAAM,EAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,6CAAqB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7E,CAAC;IAEO,cAAc;QACpB,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;;AApBH,8BAqBC"}
@@ -0,0 +1,21 @@
1
+ import { Buffer } from 'buffer';
2
+ type NodeLikeCrypto = {
3
+ pbkdf2?: (password: string, salt: Buffer, iterations: number, keyLength: number, algorithm: string, callback: (err: Error | null, key: Buffer) => void) => void;
4
+ randomBytes?: (size: number, callback: (err: Error | null, bytes: Buffer) => void) => void;
5
+ scrypt?: (password: string, salt: Buffer, keylen: number, options: {
6
+ N: number;
7
+ r: number;
8
+ p: number;
9
+ }, callback: (err: Error | null, key: Buffer) => void) => void;
10
+ };
11
+ export declare class CryptoDerivation {
12
+ static pbkdf2Async(password: string, salt: Buffer, iterations: number, keyLength: number, algorithm: string, cryptoModule?: NodeLikeCrypto): Promise<Buffer>;
13
+ static scryptAsync(password: string, salt: Buffer, keylen: number, options: {
14
+ N: number;
15
+ r: number;
16
+ p: number;
17
+ }, cryptoModule?: NodeLikeCrypto): Promise<Buffer>;
18
+ static randomBytesAsync(size: number, cryptoModule?: NodeLikeCrypto): Promise<Buffer>;
19
+ }
20
+ export {};
21
+ //# sourceMappingURL=CryptoDerivation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CryptoDerivation.d.ts","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/CryptoDerivation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIhC,KAAK,cAAc,GAAG;IACpB,MAAM,CAAC,EAAE,CACP,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,KAC/C,IAAI,CAAC;IACV,WAAW,CAAC,EAAE,CACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,KACjD,IAAI,CAAC;IACV,MAAM,CAAC,EAAE,CACP,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAC5C,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,KAC/C,IAAI,CAAC;CACX,CAAC;AAEF,qBAAa,gBAAgB;WACP,WAAW,CAC7B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,cAAc,GAC5B,OAAO,CAAC,MAAM,CAAC;WA0BJ,WAAW,CACvB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAC5C,YAAY,CAAC,EAAE,cAAc,GAC5B,OAAO,CAAC,MAAM,CAAC;WAeE,gBAAgB,CAClC,IAAI,EAAE,MAAM,EACZ,YAAY,CAAC,EAAE,cAAc,GAC5B,OAAO,CAAC,MAAM,CAAC;CAYnB"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CryptoDerivation = void 0;
4
+ const pbkdf2_js_1 = require("@noble/hashes/pbkdf2.js");
5
+ const scrypt_js_1 = require("@noble/hashes/scrypt.js");
6
+ const sha2_js_1 = require("@noble/hashes/sha2.js");
7
+ const buffer_1 = require("buffer");
8
+ const CryptoAdapter_1 = require("../CryptoAdapter");
9
+ class CryptoDerivation {
10
+ static async pbkdf2Async(password, salt, iterations, keyLength, algorithm, cryptoModule) {
11
+ if (cryptoModule?.pbkdf2) {
12
+ return new Promise((resolve, reject) => {
13
+ cryptoModule.pbkdf2(password, salt, iterations, keyLength, algorithm, (err, key) => {
14
+ if (err)
15
+ reject(err);
16
+ else
17
+ resolve(key);
18
+ });
19
+ });
20
+ }
21
+ const hash = algorithm === 'sha512' ? sha2_js_1.sha512 : sha2_js_1.sha256;
22
+ const key = await (0, pbkdf2_js_1.pbkdf2Async)(hash, password, salt, {
23
+ c: iterations,
24
+ dkLen: keyLength,
25
+ });
26
+ return buffer_1.Buffer.from(key);
27
+ }
28
+ static scryptAsync(password, salt, keylen, options, cryptoModule) {
29
+ if (cryptoModule?.scrypt) {
30
+ return new Promise((resolve, reject) => {
31
+ cryptoModule.scrypt(password, salt, keylen, options, (err, key) => {
32
+ if (err)
33
+ reject(err);
34
+ else
35
+ resolve(key);
36
+ });
37
+ });
38
+ }
39
+ return (0, scrypt_js_1.scryptAsync)(password, salt, { ...options, dkLen: keylen }).then(buffer_1.Buffer.from);
40
+ }
41
+ static async randomBytesAsync(size, cryptoModule) {
42
+ if (cryptoModule?.randomBytes) {
43
+ return new Promise((resolve, reject) => {
44
+ cryptoModule.randomBytes(size, (err, bytes) => {
45
+ if (err)
46
+ reject(err);
47
+ else
48
+ resolve(bytes);
49
+ });
50
+ });
51
+ }
52
+ return CryptoAdapter_1.CryptoAdapter.randomBytes(size);
53
+ }
54
+ }
55
+ exports.CryptoDerivation = CryptoDerivation;
56
+ //# sourceMappingURL=CryptoDerivation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CryptoDerivation.js","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/CryptoDerivation.ts"],"names":[],"mappings":";;;AAAA,uDAAsD;AACtD,uDAAsD;AACtD,mDAAuD;AACvD,mCAAgC;AAEhC,oDAAiD;AAwBjD,MAAa,gBAAgB;IACpB,MAAM,CAAC,KAAK,CAAC,WAAW,CAC7B,QAAgB,EAChB,IAAY,EACZ,UAAkB,EAClB,SAAiB,EACjB,SAAiB,EACjB,YAA6B;QAE7B,IAAI,YAAY,EAAE,MAAM,EAAE,CAAC;YACzB,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC7C,YAAY,CAAC,MAAO,CAClB,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,SAAS,EACT,SAAS,EACT,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;oBACX,IAAI,GAAG;wBAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;wBAChB,OAAO,CAAC,GAAG,CAAC,CAAC;gBACpB,CAAC,CACF,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,IAAI,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAM,CAAC,CAAC,CAAC,gBAAM,CAAC;QACtD,MAAM,GAAG,GAAG,MAAM,IAAA,uBAAW,EAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;YAClD,CAAC,EAAE,UAAU;YACb,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QAEH,OAAO,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAC,WAAW,CACvB,QAAgB,EAChB,IAAY,EACZ,MAAc,EACd,OAA4C,EAC5C,YAA6B;QAE7B,IAAI,YAAY,EAAE,MAAM,EAAE,CAAC;YACzB,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC7C,YAAY,CAAC,MAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;oBACjE,IAAI,GAAG;wBAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;wBAChB,OAAO,CAAC,GAAG,CAAC,CAAC;gBACpB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAA,uBAAW,EAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CACpE,eAAM,CAAC,IAAI,CACZ,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAClC,IAAY,EACZ,YAA6B;QAE7B,IAAI,YAAY,EAAE,WAAW,EAAE,CAAC;YAC9B,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC7C,YAAY,CAAC,WAAY,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;oBAC7C,IAAI,GAAG;wBAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;wBAChB,OAAO,CAAC,KAAK,CAAC,CAAC;gBACtB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,6BAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CACF;AAtED,4CAsEC"}
@@ -0,0 +1,14 @@
1
+ import { StringValueObject } from '../../StringValueObject';
2
+ import { PrivateKey } from '../PrivateKey';
3
+ import { EncryptedPrivateKeyVersion } from './EncryptedPrivateKeyVersion';
4
+ export declare class EncryptedPrivateKeyLegacy extends EncryptedPrivateKeyVersion {
5
+ private static readonly LEGACY_ITERATIONS;
6
+ private static readonly LEGACY_ALGORITHM;
7
+ private static readonly KEY_LENGTH;
8
+ private static readonly CIPHER;
9
+ private static readonly EXPECTED_PARTS;
10
+ matches(parts: string[]): boolean;
11
+ decrypt(parts: string[], password: string | StringValueObject): Promise<PrivateKey>;
12
+ needsReEncryption(): boolean;
13
+ }
14
+ //# sourceMappingURL=EncryptedPrivateKeyLegacy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EncryptedPrivateKeyLegacy.d.ts","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,qBAAa,yBAA0B,SAAQ,0BAA0B;IACvE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAU;IACnD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAY;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAM;IACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAK;IAEpC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;IAI3B,OAAO,CAClB,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GACnC,OAAO,CAAC,UAAU,CAAC;IAoBf,iBAAiB,IAAI,OAAO;CAGpC"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EncryptedPrivateKeyLegacy = void 0;
4
+ const buffer_1 = require("buffer");
5
+ const CryptoAdapter_1 = require("../CryptoAdapter");
6
+ const PrivateKey_1 = require("../PrivateKey");
7
+ const CryptoDerivation_1 = require("./CryptoDerivation");
8
+ const EncryptedPrivateKeyVersion_1 = require("./EncryptedPrivateKeyVersion");
9
+ class EncryptedPrivateKeyLegacy extends EncryptedPrivateKeyVersion_1.EncryptedPrivateKeyVersion {
10
+ static LEGACY_ITERATIONS = 100000;
11
+ static LEGACY_ALGORITHM = 'sha256';
12
+ static KEY_LENGTH = 32;
13
+ static CIPHER = 'aes-256-gcm';
14
+ static EXPECTED_PARTS = 4;
15
+ matches(parts) {
16
+ return parts.length === EncryptedPrivateKeyLegacy.EXPECTED_PARTS;
17
+ }
18
+ async decrypt(parts, password) {
19
+ const [cipherTextB64, ivB64, saltB64, tagB64] = parts;
20
+ const cipherText = buffer_1.Buffer.from(cipherTextB64, 'base64');
21
+ const iv = buffer_1.Buffer.from(ivB64, 'base64');
22
+ const salt = buffer_1.Buffer.from(saltB64, 'base64');
23
+ const tag = buffer_1.Buffer.from(tagB64, 'base64');
24
+ const key = await CryptoDerivation_1.CryptoDerivation.pbkdf2Async(password.valueOf(), salt, EncryptedPrivateKeyLegacy.LEGACY_ITERATIONS, EncryptedPrivateKeyLegacy.KEY_LENGTH, EncryptedPrivateKeyLegacy.LEGACY_ALGORITHM);
25
+ const decrypted = CryptoAdapter_1.CryptoAdapter.decryptAes256Gcm(key, iv, cipherText, tag);
26
+ return new PrivateKey_1.PrivateKey(decrypted.toString());
27
+ }
28
+ needsReEncryption() {
29
+ return true;
30
+ }
31
+ }
32
+ exports.EncryptedPrivateKeyLegacy = EncryptedPrivateKeyLegacy;
33
+ //# sourceMappingURL=EncryptedPrivateKeyLegacy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EncryptedPrivateKeyLegacy.js","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAGhC,oDAAiD;AACjD,8CAA2C;AAC3C,yDAAsD;AACtD,6EAA0E;AAE1E,MAAa,yBAA0B,SAAQ,uDAA0B;IAC/D,MAAM,CAAU,iBAAiB,GAAG,MAAM,CAAC;IAC3C,MAAM,CAAU,gBAAgB,GAAG,QAAQ,CAAC;IAC5C,MAAM,CAAU,UAAU,GAAG,EAAE,CAAC;IAChC,MAAM,CAAU,MAAM,GAAG,aAAa,CAAC;IACvC,MAAM,CAAU,cAAc,GAAG,CAAC,CAAC;IAEpC,OAAO,CAAC,KAAe;QAC5B,OAAO,KAAK,CAAC,MAAM,KAAK,yBAAyB,CAAC,cAAc,CAAC;IACnE,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,KAAe,EACf,QAAoC;QAEpC,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;QACtD,MAAM,UAAU,GAAG,eAAM,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,EAAE,GAAG,eAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,eAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,eAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAE1C,MAAM,GAAG,GAAG,MAAM,mCAAgB,CAAC,WAAW,CAC5C,QAAQ,CAAC,OAAO,EAAE,EAClB,IAAI,EACJ,yBAAyB,CAAC,iBAAiB,EAC3C,yBAAyB,CAAC,UAAU,EACpC,yBAAyB,CAAC,gBAAgB,CAC3C,CAAC;QAEF,MAAM,SAAS,GAAG,6BAAa,CAAC,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;QAE3E,OAAO,IAAI,uBAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9C,CAAC;IAEM,iBAAiB;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;;AApCH,8DAqCC"}
@@ -0,0 +1,20 @@
1
+ import { StringValueObject } from '../../StringValueObject';
2
+ import { PrivateKey } from '../PrivateKey';
3
+ import { EncryptedPrivateKeyVersion } from './EncryptedPrivateKeyVersion';
4
+ export declare class EncryptedPrivateKeyV2 extends EncryptedPrivateKeyVersion {
5
+ private static readonly VERSION;
6
+ private static readonly KDF;
7
+ private static readonly SCRYPT_N;
8
+ private static readonly SCRYPT_R;
9
+ private static readonly SCRYPT_P;
10
+ private static readonly SALT_ENTROPY;
11
+ private static readonly IV_ENTROPY;
12
+ private static readonly KEY_LENGTH;
13
+ private static readonly CIPHER;
14
+ private static readonly EXPECTED_PARTS;
15
+ private static hasSupportedScryptParameters;
16
+ static encrypt(privateKey: PrivateKey, password: string | StringValueObject): Promise<string>;
17
+ matches(parts: string[]): boolean;
18
+ decrypt(parts: string[], password: string | StringValueObject): Promise<PrivateKey>;
19
+ }
20
+ //# sourceMappingURL=EncryptedPrivateKeyV2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EncryptedPrivateKeyV2.d.ts","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,qBAAa,qBAAsB,SAAQ,0BAA0B;IACnE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAQ;IACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAY;IACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAS;IACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAK;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAK;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAM;IAC1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAM;IACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAM;IACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAK;IAE3C,OAAO,CAAC,MAAM,CAAC,4BAA4B;WAQvB,OAAO,CACzB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GACnC,OAAO,CAAC,MAAM,CAAC;IAoCX,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;IAS3B,OAAO,CAClB,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GACnC,OAAO,CAAC,UAAU,CAAC;CAwBvB"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EncryptedPrivateKeyV2 = void 0;
4
+ const buffer_1 = require("buffer");
5
+ const CryptoAdapter_1 = require("../CryptoAdapter");
6
+ const PrivateKey_1 = require("../PrivateKey");
7
+ const CryptoDerivation_1 = require("./CryptoDerivation");
8
+ const EncryptedPrivateKeyVersion_1 = require("./EncryptedPrivateKeyVersion");
9
+ class EncryptedPrivateKeyV2 extends EncryptedPrivateKeyVersion_1.EncryptedPrivateKeyVersion {
10
+ static VERSION = 'v2';
11
+ static KDF = 'scrypt';
12
+ static SCRYPT_N = 16384;
13
+ static SCRYPT_R = 8;
14
+ static SCRYPT_P = 1;
15
+ static SALT_ENTROPY = 16;
16
+ static IV_ENTROPY = 12;
17
+ static KEY_LENGTH = 32;
18
+ static CIPHER = 'aes-256-gcm';
19
+ static EXPECTED_PARTS = 9;
20
+ static hasSupportedScryptParameters(parts) {
21
+ return (parts[2] === `N${EncryptedPrivateKeyV2.SCRYPT_N}` &&
22
+ parts[3] === `r${EncryptedPrivateKeyV2.SCRYPT_R}` &&
23
+ parts[4] === `p${EncryptedPrivateKeyV2.SCRYPT_P}`);
24
+ }
25
+ static async encrypt(privateKey, password) {
26
+ const salt = await CryptoDerivation_1.CryptoDerivation.randomBytesAsync(EncryptedPrivateKeyV2.SALT_ENTROPY);
27
+ const key = await CryptoDerivation_1.CryptoDerivation.scryptAsync(password.valueOf(), salt, EncryptedPrivateKeyV2.KEY_LENGTH, {
28
+ N: EncryptedPrivateKeyV2.SCRYPT_N,
29
+ p: EncryptedPrivateKeyV2.SCRYPT_P,
30
+ r: EncryptedPrivateKeyV2.SCRYPT_R,
31
+ });
32
+ const iv = await CryptoDerivation_1.CryptoDerivation.randomBytesAsync(EncryptedPrivateKeyV2.IV_ENTROPY);
33
+ const { cipherText, tag } = CryptoAdapter_1.CryptoAdapter.encryptAes256Gcm(key, iv, buffer_1.Buffer.from(privateKey.valueOf()));
34
+ return [
35
+ EncryptedPrivateKeyV2.VERSION,
36
+ EncryptedPrivateKeyV2.KDF,
37
+ `N${EncryptedPrivateKeyV2.SCRYPT_N}`,
38
+ `r${EncryptedPrivateKeyV2.SCRYPT_R}`,
39
+ `p${EncryptedPrivateKeyV2.SCRYPT_P}`,
40
+ salt.toString('base64'),
41
+ iv.toString('base64'),
42
+ buffer_1.Buffer.from(tag).toString('base64'),
43
+ buffer_1.Buffer.from(cipherText).toString('base64'),
44
+ ].join('.');
45
+ }
46
+ matches(parts) {
47
+ return (parts.length === EncryptedPrivateKeyV2.EXPECTED_PARTS &&
48
+ parts[0] === EncryptedPrivateKeyV2.VERSION &&
49
+ parts[1] === EncryptedPrivateKeyV2.KDF &&
50
+ EncryptedPrivateKeyV2.hasSupportedScryptParameters(parts));
51
+ }
52
+ async decrypt(parts, password) {
53
+ if (!EncryptedPrivateKeyV2.hasSupportedScryptParameters(parts)) {
54
+ throw new Error('Unsupported encrypted private key parameters');
55
+ }
56
+ const N = parseInt(parts[2].slice(1), 10);
57
+ const r = parseInt(parts[3].slice(1), 10);
58
+ const p = parseInt(parts[4].slice(1), 10);
59
+ const salt = buffer_1.Buffer.from(parts[5], 'base64');
60
+ const iv = buffer_1.Buffer.from(parts[6], 'base64');
61
+ const tag = buffer_1.Buffer.from(parts[7], 'base64');
62
+ const cipherText = buffer_1.Buffer.from(parts[8], 'base64');
63
+ const key = await CryptoDerivation_1.CryptoDerivation.scryptAsync(password.valueOf(), salt, EncryptedPrivateKeyV2.KEY_LENGTH, { N, p, r });
64
+ const decrypted = CryptoAdapter_1.CryptoAdapter.decryptAes256Gcm(key, iv, cipherText, tag);
65
+ return new PrivateKey_1.PrivateKey(decrypted.toString());
66
+ }
67
+ }
68
+ exports.EncryptedPrivateKeyV2 = EncryptedPrivateKeyV2;
69
+ //# sourceMappingURL=EncryptedPrivateKeyV2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EncryptedPrivateKeyV2.js","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAGhC,oDAAiD;AACjD,8CAA2C;AAC3C,yDAAsD;AACtD,6EAA0E;AAE1E,MAAa,qBAAsB,SAAQ,uDAA0B;IAC3D,MAAM,CAAU,OAAO,GAAG,IAAI,CAAC;IAC/B,MAAM,CAAU,GAAG,GAAG,QAAQ,CAAC;IAC/B,MAAM,CAAU,QAAQ,GAAG,KAAK,CAAC;IACjC,MAAM,CAAU,QAAQ,GAAG,CAAC,CAAC;IAC7B,MAAM,CAAU,QAAQ,GAAG,CAAC,CAAC;IAC7B,MAAM,CAAU,YAAY,GAAG,EAAE,CAAC;IAClC,MAAM,CAAU,UAAU,GAAG,EAAE,CAAC;IAChC,MAAM,CAAU,UAAU,GAAG,EAAE,CAAC;IAChC,MAAM,CAAU,MAAM,GAAG,aAAa,CAAC;IACvC,MAAM,CAAU,cAAc,GAAG,CAAC,CAAC;IAEnC,MAAM,CAAC,4BAA4B,CAAC,KAAe;QACzD,OAAO,CACL,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,qBAAqB,CAAC,QAAQ,EAAE;YACjD,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,qBAAqB,CAAC,QAAQ,EAAE;YACjD,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,qBAAqB,CAAC,QAAQ,EAAE,CAClD,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,OAAO,CACzB,UAAsB,EACtB,QAAoC;QAEpC,MAAM,IAAI,GAAG,MAAM,mCAAgB,CAAC,gBAAgB,CAClD,qBAAqB,CAAC,YAAY,CACnC,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,mCAAgB,CAAC,WAAW,CAC5C,QAAQ,CAAC,OAAO,EAAE,EAClB,IAAI,EACJ,qBAAqB,CAAC,UAAU,EAChC;YACE,CAAC,EAAE,qBAAqB,CAAC,QAAQ;YACjC,CAAC,EAAE,qBAAqB,CAAC,QAAQ;YACjC,CAAC,EAAE,qBAAqB,CAAC,QAAQ;SAClC,CACF,CAAC;QACF,MAAM,EAAE,GAAG,MAAM,mCAAgB,CAAC,gBAAgB,CAChD,qBAAqB,CAAC,UAAU,CACjC,CAAC;QACF,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,6BAAa,CAAC,gBAAgB,CACxD,GAAG,EACH,EAAE,EACF,eAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAClC,CAAC;QAEF,OAAO;YACL,qBAAqB,CAAC,OAAO;YAC7B,qBAAqB,CAAC,GAAG;YACzB,IAAI,qBAAqB,CAAC,QAAQ,EAAE;YACpC,IAAI,qBAAqB,CAAC,QAAQ,EAAE;YACpC,IAAI,qBAAqB,CAAC,QAAQ,EAAE;YACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACvB,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACrB,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACnC,eAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;SAC3C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;IAEM,OAAO,CAAC,KAAe;QAC5B,OAAO,CACL,KAAK,CAAC,MAAM,KAAK,qBAAqB,CAAC,cAAc;YACrD,KAAK,CAAC,CAAC,CAAC,KAAK,qBAAqB,CAAC,OAAO;YAC1C,KAAK,CAAC,CAAC,CAAC,KAAK,qBAAqB,CAAC,GAAG;YACtC,qBAAqB,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAC1D,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,KAAe,EACf,QAAoC;QAEpC,IAAI,CAAC,qBAAqB,CAAC,4BAA4B,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,eAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC7C,MAAM,EAAE,GAAG,eAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,eAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,eAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAEnD,MAAM,GAAG,GAAG,MAAM,mCAAgB,CAAC,WAAW,CAC5C,QAAQ,CAAC,OAAO,EAAE,EAClB,IAAI,EACJ,qBAAqB,CAAC,UAAU,EAChC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CACZ,CAAC;QAEF,MAAM,SAAS,GAAG,6BAAa,CAAC,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;QAE3E,OAAO,IAAI,uBAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9C,CAAC;;AA9FH,sDA+FC"}
@@ -0,0 +1,8 @@
1
+ import { StringValueObject } from '../../StringValueObject';
2
+ import { PrivateKey } from '../PrivateKey';
3
+ export declare abstract class EncryptedPrivateKeyVersion {
4
+ abstract matches(parts: string[]): boolean;
5
+ abstract decrypt(parts: string[], password: string | StringValueObject): Promise<PrivateKey>;
6
+ needsReEncryption(): boolean;
7
+ }
8
+ //# sourceMappingURL=EncryptedPrivateKeyVersion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EncryptedPrivateKeyVersion.d.ts","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,8BAAsB,0BAA0B;aAC9B,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;aACjC,OAAO,CACrB,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GACnC,OAAO,CAAC,UAAU,CAAC;IAEf,iBAAiB,IAAI,OAAO;CAGpC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EncryptedPrivateKeyVersion = void 0;
4
+ class EncryptedPrivateKeyVersion {
5
+ needsReEncryption() {
6
+ return false;
7
+ }
8
+ }
9
+ exports.EncryptedPrivateKeyVersion = EncryptedPrivateKeyVersion;
10
+ //# sourceMappingURL=EncryptedPrivateKeyVersion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EncryptedPrivateKeyVersion.js","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.ts"],"names":[],"mappings":";;;AAGA,MAAsB,0BAA0B;IAOvC,iBAAiB;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAVD,gEAUC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Hash.d.ts","sourceRoot":"","sources":["../../../src/value-objects/hashes/Hash.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,8BAAsB,IAAK,SAAQ,WAAW,CAAC,MAAM,CAAC;gBACxC,MAAM,EAAE,MAAM,GAAG,iBAAiB;IAQvC,QAAQ,IAAI,iBAAiB;CAKrC"}
1
+ {"version":3,"file":"Hash.d.ts","sourceRoot":"","sources":["../../../src/value-objects/hashes/Hash.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,8BAAsB,IAAK,SAAQ,WAAW,CAAC,MAAM,CAAC;gBACxC,MAAM,EAAE,MAAM,GAAG,iBAAiB;IAQvC,QAAQ,IAAI,iBAAiB;CAKrC"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Hash = void 0;
4
+ const buffer_1 = require("buffer");
4
5
  const NullObject_1 = require("../NullObject");
5
6
  const StringValueObject_1 = require("../StringValueObject");
6
7
  const ValueObject_1 = require("../ValueObject");
@@ -12,7 +13,7 @@ class Hash extends ValueObject_1.ValueObject {
12
13
  }
13
14
  }
14
15
  toBase64() {
15
- return new StringValueObject_1.StringValueObject(Buffer.from(this.valueOf(), 'hex').toString('base64'));
16
+ return new StringValueObject_1.StringValueObject(buffer_1.Buffer.from(this.valueOf(), 'hex').toString('base64'));
16
17
  }
17
18
  }
18
19
  exports.Hash = Hash;
@@ -1 +1 @@
1
- {"version":3,"file":"Hash.js","sourceRoot":"","sources":["../../../src/value-objects/hashes/Hash.ts"],"names":[],"mappings":";;;AAAA,8CAA2C;AAC3C,4DAAyD;AACzD,gDAA6C;AAE7C,MAAsB,IAAK,SAAQ,yBAAmB;IACpD,YAAY,MAAkC;QAC5C,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAEzB,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,qCAAiB,CAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACtD,CAAC;IACJ,CAAC;CACF;AAdD,oBAcC"}
1
+ {"version":3,"file":"Hash.js","sourceRoot":"","sources":["../../../src/value-objects/hashes/Hash.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEhC,8CAA2C;AAC3C,4DAAyD;AACzD,gDAA6C;AAE7C,MAAsB,IAAK,SAAQ,yBAAmB;IACpD,YAAY,MAAkC;QAC5C,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAEzB,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,qCAAiB,CAC1B,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACtD,CAAC;IACJ,CAAC;CACF;AAdD,oBAcC"}
@@ -1,3 +1,4 @@
1
+ import { Buffer } from 'buffer';
1
2
  import { Media } from '../media/Media';
2
3
  import { StringValueObject } from '../StringValueObject';
3
4
  import { Hash } from './Hash';
@@ -1 +1 @@
1
- {"version":3,"file":"MD5Hash.d.ts","sourceRoot":"","sources":["../../../src/value-objects/hashes/MD5Hash.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,qBAAa,OAAQ,SAAQ,IAAI;WACjB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,OAAO;WAIlD,IAAI,CAChB,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,KAAK,GAAG,MAAM,GAClD,OAAO;gBAME,MAAM,EAAE,MAAM,GAAG,iBAAiB;CAY/C"}
1
+ {"version":3,"file":"MD5Hash.d.ts","sourceRoot":"","sources":["../../../src/value-objects/hashes/MD5Hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,qBAAa,OAAQ,SAAQ,IAAI;WACjB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,OAAO;WAIlD,IAAI,CAChB,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,KAAK,GAAG,MAAM,GAClD,OAAO;gBAIE,MAAM,EAAE,MAAM,GAAG,iBAAiB;CAY/C"}
@@ -1,10 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MD5Hash = void 0;
4
- const tslib_1 = require("tslib");
5
- const node_crypto_1 = tslib_1.__importDefault(require("node:crypto"));
6
4
  const InvalidHashError_1 = require("../../errors/InvalidHashError");
7
5
  const patterns_1 = require("../../patterns");
6
+ const CryptoAdapter_1 = require("../crypto/CryptoAdapter");
8
7
  const NullObject_1 = require("../NullObject");
9
8
  const Hash_1 = require("./Hash");
10
9
  class MD5Hash extends Hash_1.Hash {
@@ -12,7 +11,7 @@ class MD5Hash extends Hash_1.Hash {
12
11
  return !!hash.valueOf().match(/^[a-f0-9]{32}$/);
13
12
  }
14
13
  static from(buffer) {
15
- return new MD5Hash(node_crypto_1.default.createHash('md5').update(buffer.valueOf()).digest('hex'));
14
+ return new MD5Hash(CryptoAdapter_1.CryptoAdapter.hash('md5', buffer.valueOf()));
16
15
  }
17
16
  constructor(source) {
18
17
  super(source?.valueOf());
@@ -1 +1 @@
1
- {"version":3,"file":"MD5Hash.js","sourceRoot":"","sources":["../../../src/value-objects/hashes/MD5Hash.ts"],"names":[],"mappings":";;;;AAAA,sEAAiC;AAEjC,oEAAiE;AACjE,6CAAwC;AAExC,8CAA2C;AAE3C,iCAA8B;AAE9B,MAAa,OAAQ,SAAQ,WAAI;IACxB,MAAM,CAAC,OAAO,CAAC,IAAgC;QACpD,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAClD,CAAC;IAEM,MAAM,CAAC,IAAI,CAChB,MAAmD;QAEnD,OAAO,IAAI,OAAO,CAChB,qBAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAChE,CAAC;IACJ,CAAC;IAED,YAAY,MAAkC;QAC5C,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAEzB,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAA,iBAAM,EACJ,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAC/B,IAAI,mCAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAC9C,CAAC;IACJ,CAAC;CACF;AAzBD,0BAyBC"}
1
+ {"version":3,"file":"MD5Hash.js","sourceRoot":"","sources":["../../../src/value-objects/hashes/MD5Hash.ts"],"names":[],"mappings":";;;AAEA,oEAAiE;AACjE,6CAAwC;AACxC,2DAAwD;AAExD,8CAA2C;AAE3C,iCAA8B;AAE9B,MAAa,OAAQ,SAAQ,WAAI;IACxB,MAAM,CAAC,OAAO,CAAC,IAAgC;QACpD,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAClD,CAAC;IAEM,MAAM,CAAC,IAAI,CAChB,MAAmD;QAEnD,OAAO,IAAI,OAAO,CAAC,6BAAa,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,YAAY,MAAkC;QAC5C,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAEzB,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAA,iBAAM,EACJ,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAC/B,IAAI,mCAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAC9C,CAAC;IACJ,CAAC;CACF;AAvBD,0BAuBC"}
@@ -1,3 +1,4 @@
1
+ import { Buffer } from 'buffer';
1
2
  import { Media } from '../media/Media';
2
3
  import { StringValueObject } from '../StringValueObject';
3
4
  import { ValueObject } from '../ValueObject';
@@ -1 +1 @@
1
- {"version":3,"file":"SHA256Hash.d.ts","sourceRoot":"","sources":["../../../src/value-objects/hashes/SHA256Hash.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,qBAAa,UAAW,SAAQ,WAAW,CAAC,MAAM,CAAC;WACnC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,OAAO;WAIlD,IAAI,CAChB,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,KAAK,GAAG,MAAM,GAClD,UAAU;gBAMD,MAAM,EAAE,MAAM,GAAG,iBAAiB;IAavC,QAAQ,IAAI,iBAAiB;CAKrC"}
1
+ {"version":3,"file":"SHA256Hash.d.ts","sourceRoot":"","sources":["../../../src/value-objects/hashes/SHA256Hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,qBAAa,UAAW,SAAQ,WAAW,CAAC,MAAM,CAAC;WACnC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,OAAO;WAIlD,IAAI,CAChB,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,KAAK,GAAG,MAAM,GAClD,UAAU;gBAID,MAAM,EAAE,MAAM,GAAG,iBAAiB;IAavC,QAAQ,IAAI,iBAAiB;CAKrC"}
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SHA256Hash = void 0;
4
- const crypto_1 = require("crypto");
4
+ const buffer_1 = require("buffer");
5
5
  const InvalidHashError_1 = require("../../errors/InvalidHashError");
6
6
  const patterns_1 = require("../../patterns");
7
+ const CryptoAdapter_1 = require("../crypto/CryptoAdapter");
7
8
  const NullObject_1 = require("../NullObject");
8
9
  const StringValueObject_1 = require("../StringValueObject");
9
10
  const ValueObject_1 = require("../ValueObject");
@@ -12,7 +13,7 @@ class SHA256Hash extends ValueObject_1.ValueObject {
12
13
  return !!hash.valueOf().match(/^[a-f0-9]{64}$/i);
13
14
  }
14
15
  static from(buffer) {
15
- return new SHA256Hash((0, crypto_1.createHash)('sha256').update(buffer.valueOf()).digest('hex'));
16
+ return new SHA256Hash(CryptoAdapter_1.CryptoAdapter.hash('sha256', buffer.valueOf()));
16
17
  }
17
18
  constructor(source) {
18
19
  super(source?.valueOf());
@@ -22,7 +23,7 @@ class SHA256Hash extends ValueObject_1.ValueObject {
22
23
  (0, patterns_1.assert)(SHA256Hash.isValid(this.valueOf()), new InvalidHashError_1.InvalidHashError('SHA256', source.valueOf()));
23
24
  }
24
25
  toBase64() {
25
- return new StringValueObject_1.StringValueObject(Buffer.from(this.valueOf(), 'hex').toString('base64'));
26
+ return new StringValueObject_1.StringValueObject(buffer_1.Buffer.from(this.valueOf(), 'hex').toString('base64'));
26
27
  }
27
28
  }
28
29
  exports.SHA256Hash = SHA256Hash;
@@ -1 +1 @@
1
- {"version":3,"file":"SHA256Hash.js","sourceRoot":"","sources":["../../../src/value-objects/hashes/SHA256Hash.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AAEpC,oEAAiE;AACjE,6CAAwC;AAExC,8CAA2C;AAC3C,4DAAyD;AACzD,gDAA6C;AAE7C,MAAa,UAAW,SAAQ,yBAAmB;IAC1C,MAAM,CAAC,OAAO,CAAC,IAAgC;QACpD,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACnD,CAAC;IAEM,MAAM,CAAC,IAAI,CAChB,MAAmD;QAEnD,OAAO,IAAI,UAAU,CACnB,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAC5D,CAAC;IACJ,CAAC;IAED,YAAY,MAAkC;QAC5C,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAEzB,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAA,iBAAM,EACJ,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAClC,IAAI,mCAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CACjD,CAAC;IACJ,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,qCAAiB,CAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACtD,CAAC;IACJ,CAAC;CACF;AA/BD,gCA+BC"}
1
+ {"version":3,"file":"SHA256Hash.js","sourceRoot":"","sources":["../../../src/value-objects/hashes/SHA256Hash.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEhC,oEAAiE;AACjE,6CAAwC;AACxC,2DAAwD;AAExD,8CAA2C;AAC3C,4DAAyD;AACzD,gDAA6C;AAE7C,MAAa,UAAW,SAAQ,yBAAmB;IAC1C,MAAM,CAAC,OAAO,CAAC,IAAgC;QACpD,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACnD,CAAC;IAEM,MAAM,CAAC,IAAI,CAChB,MAAmD;QAEnD,OAAO,IAAI,UAAU,CAAC,6BAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,YAAY,MAAkC;QAC5C,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAEzB,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAA,iBAAM,EACJ,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAClC,IAAI,mCAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CACjD,CAAC;IACJ,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,qCAAiB,CAC1B,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACtD,CAAC;IACJ,CAAC;CACF;AA7BD,gCA6BC"}
@@ -1,3 +1,4 @@
1
+ import { Buffer } from 'buffer';
1
2
  import { Media } from '../media/Media';
2
3
  import { StringValueObject } from '../StringValueObject';
3
4
  import { ValueObject } from '../ValueObject';
@@ -1 +1 @@
1
- {"version":3,"file":"SHA512Hash.d.ts","sourceRoot":"","sources":["../../../src/value-objects/hashes/SHA512Hash.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,qBAAa,UAAW,SAAQ,WAAW,CAAC,MAAM,CAAC;WACnC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,OAAO;WAIlD,IAAI,CAChB,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,KAAK,GAAG,MAAM,GAClD,UAAU;gBAMD,MAAM,EAAE,MAAM,GAAG,iBAAiB;IAavC,QAAQ,IAAI,iBAAiB;CAKrC"}
1
+ {"version":3,"file":"SHA512Hash.d.ts","sourceRoot":"","sources":["../../../src/value-objects/hashes/SHA512Hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,qBAAa,UAAW,SAAQ,WAAW,CAAC,MAAM,CAAC;WACnC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,OAAO;WAIlD,IAAI,CAChB,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,KAAK,GAAG,MAAM,GAClD,UAAU;gBAID,MAAM,EAAE,MAAM,GAAG,iBAAiB;IAavC,QAAQ,IAAI,iBAAiB;CAKrC"}
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SHA512Hash = void 0;
4
- const crypto_1 = require("crypto");
4
+ const buffer_1 = require("buffer");
5
5
  const InvalidHashError_1 = require("../../errors/InvalidHashError");
6
6
  const patterns_1 = require("../../patterns");
7
+ const CryptoAdapter_1 = require("../crypto/CryptoAdapter");
7
8
  const NullObject_1 = require("../NullObject");
8
9
  const StringValueObject_1 = require("../StringValueObject");
9
10
  const ValueObject_1 = require("../ValueObject");
@@ -12,7 +13,7 @@ class SHA512Hash extends ValueObject_1.ValueObject {
12
13
  return !!hash.valueOf().match(/^[a-f0-9]{128}$/i);
13
14
  }
14
15
  static from(buffer) {
15
- return new SHA512Hash((0, crypto_1.createHash)('sha512').update(buffer.valueOf()).digest('hex'));
16
+ return new SHA512Hash(CryptoAdapter_1.CryptoAdapter.hash('sha512', buffer.valueOf()));
16
17
  }
17
18
  constructor(source) {
18
19
  super(source?.valueOf());
@@ -22,7 +23,7 @@ class SHA512Hash extends ValueObject_1.ValueObject {
22
23
  (0, patterns_1.assert)(SHA512Hash.isValid(this.valueOf()), new InvalidHashError_1.InvalidHashError('SHA512', source.valueOf()));
23
24
  }
24
25
  toBase64() {
25
- return new StringValueObject_1.StringValueObject(Buffer.from(this.valueOf(), 'hex').toString('base64'));
26
+ return new StringValueObject_1.StringValueObject(buffer_1.Buffer.from(this.valueOf(), 'hex').toString('base64'));
26
27
  }
27
28
  }
28
29
  exports.SHA512Hash = SHA512Hash;
@@ -1 +1 @@
1
- {"version":3,"file":"SHA512Hash.js","sourceRoot":"","sources":["../../../src/value-objects/hashes/SHA512Hash.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AAEpC,oEAAiE;AACjE,6CAAwC;AAExC,8CAA2C;AAC3C,4DAAyD;AACzD,gDAA6C;AAE7C,MAAa,UAAW,SAAQ,yBAAmB;IAC1C,MAAM,CAAC,OAAO,CAAC,IAAgC;QACpD,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACpD,CAAC;IAEM,MAAM,CAAC,IAAI,CAChB,MAAmD;QAEnD,OAAO,IAAI,UAAU,CACnB,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAC5D,CAAC;IACJ,CAAC;IAED,YAAY,MAAkC;QAC5C,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAEzB,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAA,iBAAM,EACJ,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAClC,IAAI,mCAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CACjD,CAAC;IACJ,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,qCAAiB,CAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACtD,CAAC;IACJ,CAAC;CACF;AA/BD,gCA+BC"}
1
+ {"version":3,"file":"SHA512Hash.js","sourceRoot":"","sources":["../../../src/value-objects/hashes/SHA512Hash.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEhC,oEAAiE;AACjE,6CAAwC;AACxC,2DAAwD;AAExD,8CAA2C;AAC3C,4DAAyD;AACzD,gDAA6C;AAE7C,MAAa,UAAW,SAAQ,yBAAmB;IAC1C,MAAM,CAAC,OAAO,CAAC,IAAgC;QACpD,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACpD,CAAC;IAEM,MAAM,CAAC,IAAI,CAChB,MAAmD;QAEnD,OAAO,IAAI,UAAU,CAAC,6BAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,YAAY,MAAkC;QAC5C,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAEzB,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAA,iBAAM,EACJ,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAClC,IAAI,mCAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CACjD,CAAC;IACJ,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,qCAAiB,CAC1B,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACtD,CAAC;IACJ,CAAC;CACF;AA7BD,gCA6BC"}
@@ -12,5 +12,6 @@ export * from './NumberValueObject';
12
12
  export * from './PositiveNumber';
13
13
  export * from './StringValueObject';
14
14
  export * from './NullObject';
15
+ export * from './UniqueObjectArray';
15
16
  export * from './ValueObject';
16
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/value-objects/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/value-objects/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC"}
@@ -15,5 +15,6 @@ tslib_1.__exportStar(require("./NumberValueObject"), exports);
15
15
  tslib_1.__exportStar(require("./PositiveNumber"), exports);
16
16
  tslib_1.__exportStar(require("./StringValueObject"), exports);
17
17
  tslib_1.__exportStar(require("./NullObject"), exports);
18
+ tslib_1.__exportStar(require("./UniqueObjectArray"), exports);
18
19
  tslib_1.__exportStar(require("./ValueObject"), exports);
19
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/value-objects/index.ts"],"names":[],"mappings":";;;AAAA,wDAA8B;AAC9B,mDAAyB;AACzB,mDAAyB;AACzB,gDAAsB;AACtB,kDAAwB;AACxB,iDAAuB;AACvB,kDAAwB;AACxB,kDAAwB;AACxB,iDAAuB;AACvB,oDAA0B;AAC1B,8DAAoC;AACpC,2DAAiC;AACjC,8DAAoC;AACpC,uDAA6B;AAC7B,wDAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/value-objects/index.ts"],"names":[],"mappings":";;;AAAA,wDAA8B;AAC9B,mDAAyB;AACzB,mDAAyB;AACzB,gDAAsB;AACtB,kDAAwB;AACxB,iDAAuB;AACvB,kDAAwB;AACxB,kDAAwB;AACxB,iDAAuB;AACvB,oDAA0B;AAC1B,8DAAoC;AACpC,2DAAiC;AACjC,8DAAoC;AACpC,uDAA6B;AAC7B,8DAAoC;AACpC,wDAA8B"}
@@ -1,3 +1,4 @@
1
+ import { Buffer } from 'buffer';
1
2
  import { ValueObject } from '../ValueObject';
2
3
  export declare class Media extends ValueObject<string> {
3
4
  constructor(value: string | Buffer);