@hg-ts/rsa 0.2.15 → 0.2.16

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.
@@ -0,0 +1,16 @@
1
+ import forge from 'node-forge';
2
+ export declare abstract class RSABaseKey {
3
+ private readonly mdDigestLength;
4
+ protected abstract key: forge.pki.rsa.PrivateKey | forge.pki.rsa.PublicKey;
5
+ constructor();
6
+ protected prepareToEncrypt(data: string | Uint8Array): string[];
7
+ protected prepareToDecrypt(data: string | Uint8Array): string[];
8
+ protected formatDecryptedInputToString(data: string | Uint8Array): string;
9
+ protected formatSignature(data: string | Uint8Array): string;
10
+ protected formatEncrypted(data: string[]): Uint8Array;
11
+ protected getMd(): forge.md.MessageDigest;
12
+ protected get maxLength(): number;
13
+ protected get keyLength(): number;
14
+ private splitInput;
15
+ }
16
+ //# sourceMappingURL=rsa.base-key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rsa.base-key.d.ts","sourceRoot":"","sources":["../src/rsa.base-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,8BAAsB,UAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IAExC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC;;IAM3E,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,EAAE;IAM/D,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,EAAE;IAW/D,SAAS,CAAC,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM;IAQzE,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM;IAQ5D,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU;IAMrD,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,CAAC,aAAa;IAIzC,SAAS,KAAK,SAAS,IAAI,MAAM,CAEhC;IAED,SAAS,KAAK,SAAS,IAAI,MAAM,CAEhC;IAED,OAAO,CAAC,UAAU;CAYlB"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RSABaseKey = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const node_forge_1 = tslib_1.__importDefault(require("node-forge"));
6
+ class RSABaseKey {
7
+ mdDigestLength;
8
+ constructor() {
9
+ this.mdDigestLength = this.getMd().digestLength;
10
+ }
11
+ prepareToEncrypt(data) {
12
+ const input = this.formatDecryptedInputToString(data);
13
+ return this.splitInput(input, this.maxLength);
14
+ }
15
+ prepareToDecrypt(data) {
16
+ const encryptedLength = this.keyLength * 2;
17
+ const encrypted = typeof data === 'string' ? data : Buffer.from(data).toString('hex');
18
+ return this.splitInput(encrypted, encryptedLength)
19
+ .map(chunk => Buffer
20
+ .from(chunk, 'hex')
21
+ .toString('binary'));
22
+ }
23
+ formatDecryptedInputToString(data) {
24
+ if (typeof data === 'string') {
25
+ return data;
26
+ }
27
+ return Buffer.from(data).toString('hex');
28
+ }
29
+ formatSignature(data) {
30
+ if (typeof data === 'string') {
31
+ return data;
32
+ }
33
+ return Buffer.from(data).toString('binary');
34
+ }
35
+ formatEncrypted(data) {
36
+ const chunks = data.map(chunk => Buffer.from(chunk, 'binary').toString('hex'));
37
+ return Buffer.from(chunks.join(''), 'hex');
38
+ }
39
+ getMd() {
40
+ return node_forge_1.default.md.sha256.create();
41
+ }
42
+ get maxLength() {
43
+ return this.keyLength - (this.mdDigestLength * 2) - 2;
44
+ }
45
+ get keyLength() {
46
+ return Math.ceil(this.key.n.bitLength() / 8);
47
+ }
48
+ splitInput(value, length) {
49
+ const chars = value.split('');
50
+ const chunks = [];
51
+ while (chars.length > 0) {
52
+ const chunk = chars.splice(0, length);
53
+ chunks.push(chunk.join(''));
54
+ }
55
+ return chunks;
56
+ }
57
+ }
58
+ exports.RSABaseKey = RSABaseKey;
59
+ //# sourceMappingURL=rsa.base-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rsa.base-key.js","sourceRoot":"","sources":["../src/rsa.base-key.ts"],"names":[],"mappings":";;;;AAAA,oEAA+B;AAE/B,MAAsB,UAAU;IACd,cAAc,CAAS;IAIxC;QACC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC;IACjD,CAAC;IAES,gBAAgB,CAAC,IAAyB;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC;QAEtD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAES,gBAAgB,CAAC,IAAyB;QACnD,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEtF,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,eAAe,CAAC;aAChD,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM;aAClB,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;aAClB,QAAQ,CAAC,QAAQ,CAAC,CACnB,CAAC;IACJ,CAAC;IAES,4BAA4B,CAAC,IAAyB;QAC/D,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACb,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAES,eAAe,CAAC,IAAyB;QAClD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACb,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAES,eAAe,CAAC,IAAc;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAE/E,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAES,KAAK;QACd,OAAO,oBAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACjC,CAAC;IAED,IAAc,SAAS;QACtB,OAAO,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,IAAc,SAAS;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC;IAEO,UAAU,CAAC,KAAa,EAAE,MAAc;QAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;CACD;AAxED,gCAwEC"}
@@ -5,10 +5,10 @@ export declare class RSAKeyPair {
5
5
  private readonly publicRsaKey;
6
6
  private readonly privateRsaKey;
7
7
  constructor(options?: RSAKeyPairOptions);
8
- encrypt(value: string): string;
9
- decrypt(value: string): string;
10
- sign(value: string): string;
11
- verify(signature: string, value: string): boolean;
8
+ encrypt(value: string | Uint8Array): Uint8Array;
9
+ decrypt(value: string | Uint8Array): string;
10
+ sign(value: string): Uint8Array;
11
+ verify(signature: string | Uint8Array, value: string): boolean;
12
12
  get publicKey(): string;
13
13
  get privateKey(): string;
14
14
  private generateKeys;
@@ -1 +1 @@
1
- {"version":3,"file":"rsa.key-pair.d.ts","sourceRoot":"","sources":["../src/rsa.key-pair.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,iBAAiB,GAAG;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAA;AAED,qBAAa,UAAU;IACtB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;gBAE3B,OAAO,GAAE,iBAAsB;IAO3C,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI9B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI9B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI3B,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAIxD,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED,OAAO,CAAC,YAAY;CAYpB"}
1
+ {"version":3,"file":"rsa.key-pair.d.ts","sourceRoot":"","sources":["../src/rsa.key-pair.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,iBAAiB,GAAG;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAA;AAED,qBAAa,UAAU;IACtB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;gBAE3B,OAAO,GAAE,iBAAsB;IAO3C,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU;IAI/C,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM;IAI3C,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAI/B,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAIrE,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED,OAAO,CAAC,YAAY;CAYpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"rsa.key-pair.js","sourceRoot":"","sources":["../src/rsa.key-pair.ts"],"names":[],"mappings":";;;;AAAA,oEAA+B;AAC/B,uDAAkD;AAClD,qDAAgD;AAMhD,MAAa,UAAU;IACL,YAAY,CAAe;IAC3B,aAAa,CAAgB;IAE9C,YAAmB,UAA6B,EAAE;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAE3C,IAAI,CAAC,aAAa,GAAG,IAAI,+BAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,CAAC,YAAY,GAAG,IAAI,6BAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;IAEM,OAAO,CAAC,KAAa;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAEM,OAAO,CAAC,KAAa;QAC3B,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAEM,IAAI,CAAC,KAAa;QACxB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAEM,MAAM,CAAC,SAAiB,EAAE,KAAa;QAC7C,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,IAAW,SAAS;QACnB,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;IACrC,CAAC;IAED,IAAW,UAAU;QACpB,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IACtC,CAAC;IAEO,YAAY,CAAC,OAA0B;QAC9C,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QACzB,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,OAAO,oBAAK,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QACxC,CAAC;QAED,MAAM,IAAI,GAAG,oBAAK,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAC3C,IAAI,CAAC,YAAY,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC;QAEnC,OAAO,oBAAK,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;CACD;AA/CD,gCA+CC"}
1
+ {"version":3,"file":"rsa.key-pair.js","sourceRoot":"","sources":["../src/rsa.key-pair.ts"],"names":[],"mappings":";;;;AAAA,oEAA+B;AAC/B,uDAAkD;AAClD,qDAAgD;AAMhD,MAAa,UAAU;IACL,YAAY,CAAe;IAC3B,aAAa,CAAgB;IAE9C,YAAmB,UAA6B,EAAE;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAE3C,IAAI,CAAC,aAAa,GAAG,IAAI,+BAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,CAAC,YAAY,GAAG,IAAI,6BAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;IAEM,OAAO,CAAC,KAA0B;QACxC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAEM,OAAO,CAAC,KAA0B;QACxC,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAEM,IAAI,CAAC,KAAa;QACxB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAEM,MAAM,CAAC,SAA8B,EAAE,KAAa;QAC1D,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,IAAW,SAAS;QACnB,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;IACrC,CAAC;IAED,IAAW,UAAU;QACpB,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IACtC,CAAC;IAEO,YAAY,CAAC,OAA0B;QAC9C,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QACzB,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,OAAO,oBAAK,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QACxC,CAAC;QAED,MAAM,IAAI,GAAG,oBAAK,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAC3C,IAAI,CAAC,YAAY,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC;QAEnC,OAAO,oBAAK,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;CACD;AA/CD,gCA+CC"}
@@ -1,9 +1,10 @@
1
1
  import forge from 'node-forge';
2
- export declare class RSAPrivateKey {
3
- private readonly key;
2
+ import { RSABaseKey } from './rsa.base-key';
3
+ export declare class RSAPrivateKey extends RSABaseKey {
4
+ protected readonly key: forge.pki.rsa.PrivateKey;
4
5
  constructor(key: forge.pki.rsa.PrivateKey);
5
- decrypt(encrypted: string): string;
6
- sign(value: string): string;
6
+ decrypt(encrypted: string | Uint8Array): string;
7
+ sign(value: string): Uint8Array;
7
8
  toString(): string;
8
9
  static fromString(pemKey: string): RSAPrivateKey;
9
10
  }
@@ -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;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"}
1
+ {"version":3,"file":"rsa.private-key.d.ts","sourceRoot":"","sources":["../src/rsa.private-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,qBAAa,aAAc,SAAQ,UAAU;IAC5C,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC;gBAE9B,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU;IAKzC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM;IAU/C,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IActB,QAAQ,IAAI,MAAM;WAIpB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;CAKvD"}
@@ -3,32 +3,29 @@ 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");
7
- class RSAPrivateKey {
6
+ const rsa_base_key_1 = require("./rsa.base-key");
7
+ class RSAPrivateKey extends rsa_base_key_1.RSABaseKey {
8
8
  key;
9
9
  constructor(key) {
10
+ super();
10
11
  this.key = key;
11
12
  }
12
13
  decrypt(encrypted) {
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, 'RSAES-PKCS1-V1_5', { md });
19
- });
14
+ const md = this.getMd();
15
+ const chunks = this.prepareToDecrypt(encrypted);
16
+ const decryptedChunks = chunks.map(chunk => this.key.decrypt(chunk, 'RSAES-PKCS1-V1_5', { md }));
20
17
  return decryptedChunks.join('');
21
18
  }
22
19
  sign(value) {
23
- const hash = (0, utils_1.getMd)();
20
+ const hash = this.getMd();
24
21
  hash.update(value);
25
22
  const pss = node_forge_1.default.pss.create({
26
- md: (0, utils_1.getMd)(),
27
- mgf: node_forge_1.default.mgf.mgf1.create((0, utils_1.getMd)()),
23
+ md: this.getMd(),
24
+ mgf: node_forge_1.default.mgf.mgf1.create(this.getMd()),
28
25
  saltLength: 20,
29
26
  });
30
27
  const signedId = this.key.sign(hash, pss);
31
- return Buffer.from(signedId, 'binary').toString('hex');
28
+ return Buffer.from(signedId, 'binary');
32
29
  }
33
30
  toString() {
34
31
  return node_forge_1.default.pki.privateKeyToPem(this.key);
@@ -1 +1 @@
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,kBAAkB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,OAAO,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAEM,IAAI,CAAC,KAAa;QACxB,MAAM,IAAI,GAAG,IAAA,aAAK,GAAE,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEnB,MAAM,GAAG,GAAG,oBAAK,CAAC,GAAG,CAAC,MAAM,CAAC;YAC5B,EAAE,EAAE,IAAA,aAAK,GAAE;YACX,GAAG,EAAE,oBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAA,aAAK,GAAE,CAAC;YACnC,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
+ {"version":3,"file":"rsa.private-key.js","sourceRoot":"","sources":["../src/rsa.private-key.ts"],"names":[],"mappings":";;;;AAAA,oEAA+B;AAC/B,iDAA4C;AAE5C,MAAa,aAAc,SAAQ,yBAAU;IACzB,GAAG,CAA2B;IAEjD,YAAmB,GAA6B;QAC/C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,CAAC;IAEM,OAAO,CAAC,SAA8B;QAC5C,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAExB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAEhD,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,kBAAkB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAEjG,OAAO,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAEM,IAAI,CAAC,KAAa;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEnB,MAAM,GAAG,GAAG,oBAAK,CAAC,GAAG,CAAC,MAAM,CAAC;YAC5B,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE;YAChB,GAAG,EAAE,oBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACxC,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;IACxC,CAAC;IAEe,QAAQ;QACvB,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;AAzCD,sCAyCC"}
@@ -1,11 +1,12 @@
1
1
  import { z } from '@hg-ts/validation';
2
2
  import forge from 'node-forge';
3
- export declare class RSAPublicKey {
4
- private readonly key;
3
+ import { RSABaseKey } from './rsa.base-key';
4
+ export declare class RSAPublicKey extends RSABaseKey {
5
+ protected readonly key: forge.pki.rsa.PublicKey;
5
6
  static schema: z.ZodPipeline<z.ZodEffects<z.ZodString, string, string>, z.ZodString>;
6
7
  constructor(key: forge.pki.rsa.PublicKey);
7
- encrypt(value: string): string;
8
- verify(signature: string, value: string): boolean;
8
+ encrypt(value: string | Uint8Array): Uint8Array;
9
+ verify(signature: string | Uint8Array, value: string): boolean;
9
10
  toString(): string;
10
11
  static fromString(pemKey: string): RSAPublicKey;
11
12
  }
@@ -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;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"}
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;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAkB5C,qBAAa,YAAa,SAAQ,UAAU;IAC3C,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC;IAEhD,OAAc,MAAM,wEAAU;gBAEX,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS;IAKxC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU;IAS/C,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAerD,QAAQ,IAAI,MAAM;WAIpB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;CAKtD"}
@@ -4,7 +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
+ const rsa_base_key_1 = require("./rsa.base-key");
8
8
  const schema = validation_1.z.string().transform((value, ctx) => {
9
9
  try {
10
10
  const publicKey = node_forge_1.default.pki.publicKeyFromPem(value);
@@ -20,32 +20,29 @@ const schema = validation_1.z.string().transform((value, ctx) => {
20
20
  return value;
21
21
  }
22
22
  }).pipe(validation_1.z.string());
23
- class RSAPublicKey {
23
+ class RSAPublicKey extends rsa_base_key_1.RSABaseKey {
24
24
  key;
25
25
  static schema = schema;
26
26
  constructor(key) {
27
+ super();
27
28
  this.key = key;
28
29
  }
29
30
  encrypt(value) {
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, 'RSAES-PKCS1-V1_5', { md });
35
- return Buffer.from(binarySignature, 'binary').toString('hex');
36
- });
37
- return encryptedChunks.join('');
31
+ const md = this.getMd();
32
+ const chunks = this.prepareToEncrypt(value);
33
+ const encryptedChunks = chunks.map(chunk => this.key.encrypt(chunk, 'RSAES-PKCS1-V1_5', { md }));
34
+ return this.formatEncrypted(encryptedChunks);
38
35
  }
39
36
  verify(signature, value) {
40
- const hash = (0, utils_1.getMd)();
37
+ const hash = this.getMd();
41
38
  hash.update(value);
42
39
  const pss = node_forge_1.default.pss.create({
43
- md: (0, utils_1.getMd)(),
44
- mgf: node_forge_1.default.mgf.mgf1.create((0, utils_1.getMd)()),
40
+ md: this.getMd(),
41
+ mgf: node_forge_1.default.mgf.mgf1.create(this.getMd()),
45
42
  saltLength: 20,
46
43
  });
47
- const binarySignature = Buffer.from(signature, 'hex').toString('binary');
48
- return this.key.verify(hash.digest().bytes(), binarySignature, pss);
44
+ const formattedSignature = this.formatSignature(signature);
45
+ return this.key.verify(hash.digest().bytes(), formattedSignature, pss);
49
46
  }
50
47
  toString() {
51
48
  return node_forge_1.default.pki.publicKeyToPem(this.key);
@@ -1 +1 @@
1
- {"version":3,"file":"rsa.public-key.js","sourceRoot":"","sources":["../src/rsa.public-key.ts"],"names":[],"mappings":";;;;AAAA,kDAAsC;AACtC,oEAA+B;AAC/B,mCAIiB;AAEjB,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,IAAA,aAAK,GAAE,CAAC;QACnB,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAE7C,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC1C,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,kBAAkB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAE5E,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,OAAO,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAEM,MAAM,CAAC,SAAiB,EAAE,KAAa;QAC7C,MAAM,IAAI,GAAG,IAAA,aAAK,GAAE,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEnB,MAAM,GAAG,GAAG,oBAAK,CAAC,GAAG,CAAC,MAAM,CAAC;YAC5B,EAAE,EAAE,IAAA,aAAK,GAAE;YACX,GAAG,EAAE,oBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAA,aAAK,GAAE,CAAC;YACnC,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;;AA9CF,oCA+CC"}
1
+ {"version":3,"file":"rsa.public-key.js","sourceRoot":"","sources":["../src/rsa.public-key.ts"],"names":[],"mappings":";;;;AAAA,kDAAsC;AACtC,oEAA+B;AAC/B,iDAA4C;AAE5C,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,YAAa,SAAQ,yBAAU;IACxB,GAAG,CAA0B;IAEzC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IAE9B,YAAmB,GAA4B;QAC9C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,CAAC;IAEM,OAAO,CAAC,KAA0B;QACxC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE5C,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,kBAAkB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAEjG,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IAC9C,CAAC;IAEM,MAAM,CAAC,SAA8B,EAAE,KAAa;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEnB,MAAM,GAAG,GAAG,oBAAK,CAAC,GAAG,CAAC,MAAM,CAAC;YAC5B,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE;YAChB,GAAG,EAAE,oBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACxC,UAAU,EAAE,EAAE;SACd,CAAC,CAAC;QAEH,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC;IACxE,CAAC;IAEe,QAAQ;QACvB,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;;AA1CF,oCA2CC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hg-ts/rsa",
3
- "version": "0.2.15",
3
+ "version": "0.2.16",
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.15",
21
- "@hg-ts/exception": "0.2.15",
22
- "@hg-ts/linter": "0.2.15",
23
- "@hg-ts/tests": "0.2.15",
24
- "@hg-ts/types": "0.2.15",
25
- "@hg-ts/validation": "0.2.15",
20
+ "@hg-ts-config/typescript": "0.2.16",
21
+ "@hg-ts/exception": "0.2.16",
22
+ "@hg-ts/linter": "0.2.16",
23
+ "@hg-ts/tests": "0.2.16",
24
+ "@hg-ts/types": "0.2.16",
25
+ "@hg-ts/validation": "0.2.16",
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.15",
37
- "@hg-ts/validation": "0.2.15",
36
+ "@hg-ts/exception": "0.2.16",
37
+ "@hg-ts/validation": "0.2.16",
38
38
  "reflect-metadata": "*",
39
39
  "tslib": "*"
40
40
  },