@hg-ts/rsa 0.2.8 → 0.2.9

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.
@@ -1 +1 @@
1
- {"version":3,"file":"rsa.private-key.d.ts","sourceRoot":"","sources":["../src/rsa.private-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,qBAAa,aAAa;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA2B;gBAE5B,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU;IAIzC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAMlC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAc3B,QAAQ,IAAI,MAAM;WAIX,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;CAKvD"}
1
+ {"version":3,"file":"rsa.private-key.d.ts","sourceRoot":"","sources":["../src/rsa.private-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAO/B,qBAAa,aAAa;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA2B;gBAE5B,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU;IAIzC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAelC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAc3B,QAAQ,IAAI,MAAM;WAIX,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;CAKvD"}
@@ -3,14 +3,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RSAPrivateKey = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const node_forge_1 = tslib_1.__importDefault(require("node-forge"));
6
+ const utils_1 = require("./utils");
6
7
  class RSAPrivateKey {
7
8
  key;
8
9
  constructor(key) {
9
10
  this.key = key;
10
11
  }
11
12
  decrypt(encrypted) {
12
- const value = Buffer.from(encrypted, 'hex').toString('binary');
13
- return this.key.decrypt(value);
13
+ const md = (0, utils_1.getMd)();
14
+ const chunkSize = (0, utils_1.getEncryptedLength)(this.key);
15
+ const chunks = (0, utils_1.chunkString)(encrypted, chunkSize);
16
+ const decryptedChunks = chunks.map(chunk => {
17
+ const value = Buffer.from(chunk, 'hex').toString('binary');
18
+ return this.key.decrypt(value, 'RSA-OAEP', { md });
19
+ });
20
+ return decryptedChunks.join('');
14
21
  }
15
22
  sign(value) {
16
23
  const hash = node_forge_1.default.md.sha512.create();
@@ -1 +1 @@
1
- {"version":3,"file":"rsa.private-key.js","sourceRoot":"","sources":["../src/rsa.private-key.ts"],"names":[],"mappings":";;;;AAAA,oEAA+B;AAE/B,MAAa,aAAa;IACR,GAAG,CAA2B;IAE/C,YAAmB,GAA6B;QAC/C,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,CAAC;IAEM,OAAO,CAAC,SAAiB;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE/D,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAEM,IAAI,CAAC,KAAa;QACxB,MAAM,IAAI,GAAG,oBAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEnB,MAAM,GAAG,GAAG,oBAAK,CAAC,GAAG,CAAC,MAAM,CAAC;YAC5B,EAAE,EAAE,oBAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE;YAC5B,GAAG,EAAE,oBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACpD,UAAU,EAAE,EAAE;SACd,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAE1C,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IAEM,QAAQ;QACd,OAAO,oBAAK,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,MAAc;QACtC,MAAM,GAAG,GAAG,oBAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAEhD,OAAO,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;CACD;AApCD,sCAoCC"}
1
+ {"version":3,"file":"rsa.private-key.js","sourceRoot":"","sources":["../src/rsa.private-key.ts"],"names":[],"mappings":";;;;AAAA,oEAA+B;AAC/B,mCAIiB;AAEjB,MAAa,aAAa;IACR,GAAG,CAA2B;IAE/C,YAAmB,GAA6B;QAC/C,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,CAAC;IAEM,OAAO,CAAC,SAAiB;QAC/B,MAAM,EAAE,GAAG,IAAA,aAAK,GAAE,CAAC;QACnB,MAAM,SAAS,GAAG,IAAA,0BAAkB,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAG/C,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACjD,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAE3D,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,OAAO,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAEM,IAAI,CAAC,KAAa;QACxB,MAAM,IAAI,GAAG,oBAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEnB,MAAM,GAAG,GAAG,oBAAK,CAAC,GAAG,CAAC,MAAM,CAAC;YAC5B,EAAE,EAAE,oBAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE;YAC5B,GAAG,EAAE,oBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACpD,UAAU,EAAE,EAAE;SACd,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAE1C,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IAEM,QAAQ;QACd,OAAO,oBAAK,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,MAAc;QACtC,MAAM,GAAG,GAAG,oBAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAEhD,OAAO,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;CACD;AA7CD,sCA6CC"}
@@ -1 +1 @@
1
- {"version":3,"file":"rsa.public-key.d.ts","sourceRoot":"","sources":["../src/rsa.public-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AACtC,OAAO,KAAK,MAAM,YAAY,CAAC;AAkB/B,qBAAa,YAAY;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA0B;IAE9C,OAAc,MAAM,wEAAU;gBAEX,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS;IAIxC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAM9B,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAejD,QAAQ,IAAI,MAAM;WAIX,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;CAKtD"}
1
+ {"version":3,"file":"rsa.public-key.d.ts","sourceRoot":"","sources":["../src/rsa.public-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AACtC,OAAO,KAAK,MAAM,YAAY,CAAC;AAuB/B,qBAAa,YAAY;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA0B;IAE9C,OAAc,MAAM,wEAAU;gBAEX,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS;IAIxC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAc9B,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAejD,QAAQ,IAAI,MAAM;WAIX,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;CAKtD"}
@@ -4,6 +4,7 @@ exports.RSAPublicKey = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const validation_1 = require("@hg-ts/validation");
6
6
  const node_forge_1 = tslib_1.__importDefault(require("node-forge"));
7
+ const utils_1 = require("./utils");
7
8
  const schema = validation_1.z.string().transform((value, ctx) => {
8
9
  try {
9
10
  const publicKey = node_forge_1.default.pki.publicKeyFromPem(value);
@@ -26,8 +27,14 @@ class RSAPublicKey {
26
27
  this.key = key;
27
28
  }
28
29
  encrypt(value) {
29
- const binarySignature = this.key.encrypt(value);
30
- return Buffer.from(binarySignature, 'binary').toString('hex');
30
+ const md = (0, utils_1.getMd)();
31
+ const chunkSize = (0, utils_1.getMaxLength)(this.key, md);
32
+ const chunks = (0, utils_1.chunkString)(value, chunkSize);
33
+ const encryptedChunks = chunks.map(chunk => {
34
+ const binarySignature = this.key.encrypt(chunk, 'RSA-OAEP', { md });
35
+ return Buffer.from(binarySignature, 'binary').toString('hex');
36
+ });
37
+ return encryptedChunks.join('');
31
38
  }
32
39
  verify(signature, value) {
33
40
  const hash = node_forge_1.default.md.sha512.create();
@@ -1 +1 @@
1
- {"version":3,"file":"rsa.public-key.js","sourceRoot":"","sources":["../src/rsa.public-key.ts"],"names":[],"mappings":";;;;AAAA,kDAAsC;AACtC,oEAA+B;AAE/B,MAAM,MAAM,GAAG,cAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAClD,IAAI,CAAC;QACJ,MAAM,SAAS,GAAG,oBAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAEpD,OAAO,oBAAK,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,GAAG,CAAC,QAAQ,CAAC;YACZ,OAAO,EAAE,oBAAoB;YAC7B,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,gBAAgB;YACtB,UAAU,EAAE,OAAO;SACnB,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,cAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAEpB,MAAa,YAAY;IACP,GAAG,CAA0B;IAEvC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IAE9B,YAAmB,GAA4B;QAC9C,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,CAAC;IAEM,OAAO,CAAC,KAAa;QAC3B,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEhD,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC;IAEM,MAAM,CAAC,SAAiB,EAAE,KAAa;QAC7C,MAAM,IAAI,GAAG,oBAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEnB,MAAM,GAAG,GAAG,oBAAK,CAAC,GAAG,CAAC,MAAM,CAAC;YAC5B,EAAE,EAAE,oBAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE;YAC5B,GAAG,EAAE,oBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACpD,UAAU,EAAE,EAAE;SACd,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEzE,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;IACrE,CAAC;IAEM,QAAQ;QACd,OAAO,oBAAK,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,MAAc;QACtC,MAAM,GAAG,GAAG,oBAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAE/C,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;;AAtCF,oCAuCC"}
1
+ {"version":3,"file":"rsa.public-key.js","sourceRoot":"","sources":["../src/rsa.public-key.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@ import { Suite } from '@hg-ts/tests';
2
2
  export declare class BaseRepositoryTestSuite extends Suite {
3
3
  signature(): Promise<void>;
4
4
  encryption(): Promise<void>;
5
+ longMessageEncryption(): Promise<void>;
6
+ longMessageSignature(): Promise<void>;
5
7
  seeded(): Promise<void>;
6
8
  }
7
9
  //# sourceMappingURL=rsa.test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rsa.test.d.ts","sourceRoot":"","sources":["../src/rsa.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,EAEL,MAAM,cAAc,CAAC;AAGtB,qBACa,uBAAwB,SAAQ,KAAK;IAEpC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAS1B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAQpC"}
1
+ {"version":3,"file":"rsa.test.d.ts","sourceRoot":"","sources":["../src/rsa.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,EAEL,MAAM,cAAc,CAAC;AAGtB,qBACa,uBAAwB,SAAQ,KAAK;IAEpC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAS1B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUtC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IASrC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAQpC"}
package/dist/rsa.test.js CHANGED
@@ -17,6 +17,19 @@ let BaseRepositoryTestSuite = class BaseRepositoryTestSuite extends tests_1.Suit
17
17
  const encrypted = rsa.encrypt(value);
18
18
  (0, tests_1.expect)(rsa.decrypt(encrypted)).toBe(value);
19
19
  }
20
+ async longMessageEncryption() {
21
+ const rsa = new rsa_key_pair_1.RSAKeyPair();
22
+ const rsaToTest = new rsa_key_pair_1.RSAKeyPair();
23
+ const value = rsaToTest.publicKey;
24
+ const encrypted = rsa.encrypt(value);
25
+ (0, tests_1.expect)(rsa.decrypt(encrypted)).toBe(value);
26
+ }
27
+ async longMessageSignature() {
28
+ const rsa = new rsa_key_pair_1.RSAKeyPair();
29
+ const value = rsa.publicKey;
30
+ const signature = rsa.sign(value);
31
+ (0, tests_1.expect)(rsa.verify(signature, value)).toBeTruthy();
32
+ }
20
33
  async seeded() {
21
34
  const seed = Math.random().toString();
22
35
  const rsa1 = new rsa_key_pair_1.RSAKeyPair({ seed });
@@ -38,6 +51,18 @@ tslib_1.__decorate([
38
51
  tslib_1.__metadata("design:paramtypes", []),
39
52
  tslib_1.__metadata("design:returntype", Promise)
40
53
  ], BaseRepositoryTestSuite.prototype, "encryption", null);
54
+ tslib_1.__decorate([
55
+ (0, tests_1.Test)(),
56
+ tslib_1.__metadata("design:type", Function),
57
+ tslib_1.__metadata("design:paramtypes", []),
58
+ tslib_1.__metadata("design:returntype", Promise)
59
+ ], BaseRepositoryTestSuite.prototype, "longMessageEncryption", null);
60
+ tslib_1.__decorate([
61
+ (0, tests_1.Test)(),
62
+ tslib_1.__metadata("design:type", Function),
63
+ tslib_1.__metadata("design:paramtypes", []),
64
+ tslib_1.__metadata("design:returntype", Promise)
65
+ ], BaseRepositoryTestSuite.prototype, "longMessageSignature", null);
41
66
  tslib_1.__decorate([
42
67
  (0, tests_1.Test)(),
43
68
  tslib_1.__metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"rsa.test.js","sourceRoot":"","sources":["../src/rsa.test.ts"],"names":[],"mappings":";;;;AAAA,wCAKsB;AACtB,iDAA4C;AAGrC,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,aAAK;IAEpC,AAAN,KAAK,CAAC,SAAS;QACrB,MAAM,GAAG,GAAG,IAAI,yBAAU,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QAEvC,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,IAAA,cAAM,EAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IACnD,CAAC;IAGY,AAAN,KAAK,CAAC,UAAU;QACtB,MAAM,GAAG,GAAG,IAAI,yBAAU,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QAEvC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrC,IAAA,cAAM,EAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAGY,AAAN,KAAK,CAAC,MAAM;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,yBAAU,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,yBAAU,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAEtC,IAAA,cAAM,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAA,cAAM,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;CACD,CAAA;AA5BY,0DAAuB;AAEtB;IADZ,IAAA,YAAI,GAAE;;;;wDAON;AAGY;IADZ,IAAA,YAAI,GAAE;;;;yDAON;AAGY;IADZ,IAAA,YAAI,GAAE;;;;qDAQN;kCA3BW,uBAAuB;IADnC,IAAA,gBAAQ,GAAE;GACE,uBAAuB,CA4BnC"}
1
+ {"version":3,"file":"rsa.test.js","sourceRoot":"","sources":["../src/rsa.test.ts"],"names":[],"mappings":";;;;AAAA,wCAKsB;AACtB,iDAA4C;AAGrC,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,aAAK;IAEpC,AAAN,KAAK,CAAC,SAAS;QACrB,MAAM,GAAG,GAAG,IAAI,yBAAU,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QAEvC,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,IAAA,cAAM,EAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IACnD,CAAC;IAGY,AAAN,KAAK,CAAC,UAAU;QACtB,MAAM,GAAG,GAAG,IAAI,yBAAU,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QAEvC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrC,IAAA,cAAM,EAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAGY,AAAN,KAAK,CAAC,qBAAqB;QACjC,MAAM,GAAG,GAAG,IAAI,yBAAU,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,yBAAU,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC;QAElC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrC,IAAA,cAAM,EAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAGY,AAAN,KAAK,CAAC,oBAAoB;QAChC,MAAM,GAAG,GAAG,IAAI,yBAAU,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC;QAE5B,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,IAAA,cAAM,EAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IACnD,CAAC;IAGY,AAAN,KAAK,CAAC,MAAM;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,yBAAU,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,yBAAU,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAEtC,IAAA,cAAM,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAA,cAAM,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;CACD,CAAA;AA/CY,0DAAuB;AAEtB;IADZ,IAAA,YAAI,GAAE;;;;wDAON;AAGY;IADZ,IAAA,YAAI,GAAE;;;;yDAON;AAGY;IADZ,IAAA,YAAI,GAAE;;;;oEAQN;AAGY;IADZ,IAAA,YAAI,GAAE;;;;mEAON;AAGY;IADZ,IAAA,YAAI,GAAE;;;;qDAQN;kCA9CW,uBAAuB;IADnC,IAAA,gBAAQ,GAAE;GACE,uBAAuB,CA+CnC"}
@@ -0,0 +1,7 @@
1
+ import forge from 'node-forge';
2
+ export declare function chunkString(value: string, length: number): string[];
3
+ export declare function getMd(): forge.md.MessageDigest;
4
+ export declare function getKeyLength(key: forge.pki.rsa.PrivateKey | forge.pki.rsa.PublicKey): number;
5
+ export declare function getMaxLength(key: forge.pki.rsa.PrivateKey | forge.pki.rsa.PublicKey, md: forge.md.MessageDigest): number;
6
+ export declare function getEncryptedLength(key: forge.pki.rsa.PrivateKey | forge.pki.rsa.PublicKey): number;
7
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAWnE;AAED,wBAAgB,KAAK,IAAI,KAAK,CAAC,EAAE,CAAC,aAAa,CAE9C;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,CAE5F;AAED,wBAAgB,YAAY,CAC3B,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EACvD,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,GACxB,MAAM,CAIR;AAGD,wBAAgB,kBAAkB,CACjC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,GACrD,MAAM,CAIR"}
package/dist/utils.js ADDED
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.chunkString = chunkString;
4
+ exports.getMd = getMd;
5
+ exports.getKeyLength = getKeyLength;
6
+ exports.getMaxLength = getMaxLength;
7
+ exports.getEncryptedLength = getEncryptedLength;
8
+ const tslib_1 = require("tslib");
9
+ const node_forge_1 = tslib_1.__importDefault(require("node-forge"));
10
+ function chunkString(value, length) {
11
+ const chars = value.split('');
12
+ const chunks = [];
13
+ while (chars.length > 0) {
14
+ const chunk = chars.splice(0, length);
15
+ chunks.push(chunk.join(''));
16
+ }
17
+ return chunks;
18
+ }
19
+ function getMd() {
20
+ return node_forge_1.default.md.sha512.create();
21
+ }
22
+ function getKeyLength(key) {
23
+ return Math.ceil(key.n.bitLength() / 8);
24
+ }
25
+ function getMaxLength(key, md) {
26
+ const keyLength = getKeyLength(key);
27
+ return keyLength - (md.digestLength * 2) - 2;
28
+ }
29
+ function getEncryptedLength(key) {
30
+ const keyLength = getKeyLength(key);
31
+ return keyLength * 2;
32
+ }
33
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;AAEA,kCAWC;AAED,sBAEC;AAED,oCAEC;AAED,oCAOC;AAGD,gDAMC;;AAvCD,oEAA+B;AAE/B,SAAgB,WAAW,CAAC,KAAa,EAAE,MAAc;IACxD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAEtC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAgB,KAAK;IACpB,OAAO,oBAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AACjC,CAAC;AAED,SAAgB,YAAY,CAAC,GAAuD;IACnF,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,YAAY,CAC3B,GAAuD,EACvD,EAA0B;IAE1B,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAEpC,OAAO,SAAS,GAAG,CAAC,EAAE,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC;AAGD,SAAgB,kBAAkB,CACjC,GAAuD;IAEvD,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAEpC,OAAO,SAAS,GAAG,CAAC,CAAC;AACtB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hg-ts/rsa",
3
- "version": "0.2.8",
3
+ "version": "0.2.9",
4
4
  "main": "dist/index.js",
5
5
  "exports": {
6
6
  ".": "./dist/index.js"
@@ -17,12 +17,12 @@
17
17
  "test:dev": "yarn build:dev --onSuccess \"yarn test\""
18
18
  },
19
19
  "devDependencies": {
20
- "@hg-ts-config/typescript": "0.2.8",
21
- "@hg-ts/exception": "0.2.8",
22
- "@hg-ts/linter": "0.2.8",
23
- "@hg-ts/tests": "0.2.8",
24
- "@hg-ts/types": "0.2.8",
25
- "@hg-ts/validation": "0.2.8",
20
+ "@hg-ts-config/typescript": "0.2.9",
21
+ "@hg-ts/exception": "0.2.9",
22
+ "@hg-ts/linter": "0.2.9",
23
+ "@hg-ts/tests": "0.2.9",
24
+ "@hg-ts/types": "0.2.9",
25
+ "@hg-ts/validation": "0.2.9",
26
26
  "@types/node": "22.10.6",
27
27
  "@types/node-forge": "^1",
28
28
  "eslint": "9.18.0",
@@ -33,8 +33,8 @@
33
33
  "typescript": "5.7.3"
34
34
  },
35
35
  "peerDependencies": {
36
- "@hg-ts/exception": "0.2.8",
37
- "@hg-ts/validation": "0.2.8",
36
+ "@hg-ts/exception": "0.2.9",
37
+ "@hg-ts/validation": "0.2.9",
38
38
  "reflect-metadata": "*",
39
39
  "tslib": "*"
40
40
  },