@hg-ts/rsa 0.7.22 → 0.7.25

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.
@@ -5,12 +5,13 @@ export declare abstract class RSABaseKey {
5
5
  constructor();
6
6
  protected prepareToEncrypt(data: string | Buffer): string[];
7
7
  protected prepareToDecrypt(data: string | Buffer): string[];
8
- protected formatDecryptedInputToString(data: string | Buffer): string;
8
+ protected formatDecryptedInputToBinary(data: string | Buffer): string;
9
+ protected formatDecryptedOutput(data: string): string;
9
10
  protected formatSignature(data: string | Buffer): string;
10
11
  protected formatEncrypted(data: string[]): Buffer;
11
12
  protected getMd(): forge.md.MessageDigest;
12
13
  protected get maxLength(): number;
13
14
  protected get keyLength(): number;
14
- private splitInput;
15
+ private splitBinaryInput;
15
16
  }
16
17
  //# sourceMappingURL=rsa.base-key.d.ts.map
@@ -1 +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,MAAM,GAAG,MAAM,EAAE;IAM3D,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE;IAW3D,SAAS,CAAC,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAQrE,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAQxD,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM;IAMjD,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"}
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,MAAM,GAAG,MAAM,EAAE;IAM3D,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE;IAW3D,SAAS,CAAC,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAQrE,SAAS,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIrD,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAQxD,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM;IAMjD,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,gBAAgB;CAWxB"}
@@ -5,23 +5,26 @@ export class RSABaseKey {
5
5
  this.mdDigestLength = this.getMd().digestLength;
6
6
  }
7
7
  prepareToEncrypt(data) {
8
- const input = this.formatDecryptedInputToString(data);
9
- return this.splitInput(input, this.maxLength);
8
+ const input = this.formatDecryptedInputToBinary(data);
9
+ return this.splitBinaryInput(input, this.maxLength);
10
10
  }
11
11
  prepareToDecrypt(data) {
12
12
  const encryptedLength = this.keyLength * 2;
13
13
  const encrypted = typeof data === 'string' ? data : data.toString('hex');
14
- return this.splitInput(encrypted, encryptedLength)
14
+ return this.splitBinaryInput(encrypted, encryptedLength)
15
15
  .map(chunk => Buffer
16
16
  .from(chunk, 'hex')
17
17
  .toString('binary'));
18
18
  }
19
- formatDecryptedInputToString(data) {
19
+ formatDecryptedInputToBinary(data) {
20
20
  if (typeof data === 'string') {
21
- return data;
21
+ return forge.util.encodeUtf8(data);
22
22
  }
23
23
  return Buffer.from(data).toString('hex');
24
24
  }
25
+ formatDecryptedOutput(data) {
26
+ return forge.util.decodeUtf8(data);
27
+ }
25
28
  formatSignature(data) {
26
29
  if (typeof data === 'string') {
27
30
  return data;
@@ -41,12 +44,12 @@ export class RSABaseKey {
41
44
  get keyLength() {
42
45
  return Math.ceil(this.key.n.bitLength() / 8);
43
46
  }
44
- splitInput(value, length) {
45
- const chars = value.split('');
47
+ splitBinaryInput(value, length) {
46
48
  const chunks = [];
47
- while (chars.length > 0) {
48
- const chunk = chars.splice(0, length);
49
- chunks.push(chunk.join(''));
49
+ let index = 0;
50
+ while (index < value.length) {
51
+ chunks.push(value.slice(index, index + length));
52
+ index += length;
50
53
  }
51
54
  return chunks;
52
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"rsa.base-key.js","sourceRoot":"","sources":["../src/rsa.base-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,MAAM,OAAgB,UAAU;IACd,cAAc,CAAS;IAIxC;QACC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC;IACjD,CAAC;IAES,gBAAgB,CAAC,IAAqB;QAC/C,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,IAAqB;QAC/C,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEzE,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,IAAqB;QAC3D,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,IAAqB;QAC9C,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,KAAK,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"}
1
+ {"version":3,"file":"rsa.base-key.js","sourceRoot":"","sources":["../src/rsa.base-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,MAAM,OAAgB,UAAU;IACd,cAAc,CAAS;IAIxC;QACC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC;IACjD,CAAC;IAES,gBAAgB,CAAC,IAAqB;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC;QAEtD,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC;IAES,gBAAgB,CAAC,IAAqB;QAC/C,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEzE,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,CAAC;aACtD,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,IAAqB;QAC3D,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAES,qBAAqB,CAAC,IAAY;QAC3C,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAES,eAAe,CAAC,IAAqB;QAC9C,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,KAAK,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,gBAAgB,CAAC,KAAa,EAAE,MAAc;QACrD,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;YAChD,KAAK,IAAI,MAAM,CAAC;QACjB,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;CACD"}
@@ -1,6 +1,8 @@
1
+ import { RSAPrivateKey } from './rsa.private-key.js';
1
2
  export type RSAKeyPairOptions = {
2
3
  seed?: string;
3
4
  bits?: number;
5
+ privateKey?: RSAPrivateKey | string;
4
6
  };
5
7
  export declare class RSAKeyPair {
6
8
  private readonly publicRsaKey;
@@ -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;IACd,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,GAAG,MAAM;IAIvC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAIvC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI3B,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAIjE,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":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,MAAM,MAAM,iBAAiB,GAAG;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC;CACpC,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,GAAG,MAAM;IAIvC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAIvC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI3B,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAIjE,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED,OAAO,CAAC,YAAY;CAmBpB"}
@@ -28,14 +28,19 @@ export class RSAKeyPair {
28
28
  return this.privateRsaKey.toString();
29
29
  }
30
30
  generateKeys(options) {
31
- const { seed } = options;
31
+ const { seed, privateKey, bits } = options;
32
+ if (privateKey) {
33
+ const key = typeof privateKey === 'string' ? RSAPrivateKey.fromString(privateKey) : privateKey;
34
+ const publicKey = key.toPublicKey();
35
+ return { privateKey: key['key'], publicKey: publicKey['key'] };
36
+ }
32
37
  if (!seed) {
33
- return forge.pki.rsa.generateKeyPair({ bits: options.bits });
38
+ return forge.pki.rsa.generateKeyPair({ bits });
34
39
  }
35
40
  const prng = forge.random.createInstance();
36
41
  prng.seedFileSync = () => seed;
37
42
  prng.seedFile = () => seed;
38
- return forge.pki.rsa.generateKeyPair({ prng, bits: options.bits });
43
+ return forge.pki.rsa.generateKeyPair({ prng, bits });
39
44
  }
40
45
  }
41
46
  //# sourceMappingURL=rsa.key-pair.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rsa.key-pair.js","sourceRoot":"","sources":["../src/rsa.key-pair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAOnD,MAAM,OAAO,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,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;IAEM,OAAO,CAAC,KAAsB;QACpC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAEM,OAAO,CAAC,KAAsB;QACpC,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,SAA0B,EAAE,KAAa;QACtD,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,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,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,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;CACD"}
1
+ {"version":3,"file":"rsa.key-pair.js","sourceRoot":"","sources":["../src/rsa.key-pair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQnD,MAAM,OAAO,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,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;IAEM,OAAO,CAAC,KAAsB;QACpC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAEM,OAAO,CAAC,KAAsB;QACpC,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,SAA0B,EAAE,KAAa;QACtD,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,UAAU,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QAE3C,IAAI,UAAU,EAAE,CAAC;YAChB,MAAM,GAAG,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;YAC/F,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;YAEpC,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,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,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;CACD"}
@@ -1,8 +1,10 @@
1
1
  import forge from 'node-forge';
2
2
  import { RSABaseKey } from './rsa.base-key.js';
3
+ import { RSAPublicKey } from './rsa.public-key.js';
3
4
  export declare class RSAPrivateKey extends RSABaseKey {
4
5
  protected readonly key: forge.pki.rsa.PrivateKey;
5
6
  constructor(key: forge.pki.rsa.PrivateKey);
7
+ toPublicKey(): RSAPublicKey;
6
8
  decrypt(encrypted: string | Buffer): string;
7
9
  sign(value: string): Buffer;
8
10
  toString(): string;
@@ -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;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,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,MAAM,GAAG,MAAM;IAU3C,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAclB,QAAQ,IAAI,MAAM;WAIpB,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,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,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,WAAW,IAAI,YAAY;IAI3B,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAU3C,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAclB,QAAQ,IAAI,MAAM;WAIpB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;CAKvD"}
@@ -1,20 +1,24 @@
1
1
  import forge from 'node-forge';
2
2
  import { RSABaseKey } from './rsa.base-key.js';
3
+ import { RSAPublicKey } from './rsa.public-key.js';
3
4
  export class RSAPrivateKey extends RSABaseKey {
4
5
  key;
5
6
  constructor(key) {
6
7
  super();
7
8
  this.key = key;
8
9
  }
10
+ toPublicKey() {
11
+ return new RSAPublicKey(forge.pki.rsa.setPublicKey(this.key.n, this.key.e));
12
+ }
9
13
  decrypt(encrypted) {
10
14
  const md = this.getMd();
11
15
  const chunks = this.prepareToDecrypt(encrypted);
12
16
  const decryptedChunks = chunks.map(chunk => this.key.decrypt(chunk, 'RSAES-PKCS1-V1_5', { md }));
13
- return decryptedChunks.join('');
17
+ return this.formatDecryptedOutput(decryptedChunks.join(''));
14
18
  }
15
19
  sign(value) {
16
20
  const hash = this.getMd();
17
- hash.update(value);
21
+ hash.update(value, 'utf8');
18
22
  const pss = forge.pss.create({
19
23
  md: this.getMd(),
20
24
  mgf: forge.mgf.mgf1.create(this.getMd()),
@@ -1 +1 @@
1
- {"version":3,"file":"rsa.private-key.js","sourceRoot":"","sources":["../src/rsa.private-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,OAAO,aAAc,SAAQ,UAAU;IACzB,GAAG,CAA2B;IAEjD,YAAmB,GAA6B;QAC/C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,CAAC;IAEM,OAAO,CAAC,SAA0B;QACxC,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,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;YAC5B,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE;YAChB,GAAG,EAAE,KAAK,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,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,MAAc;QACtC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAEhD,OAAO,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;CACD"}
1
+ {"version":3,"file":"rsa.private-key.js","sourceRoot":"","sources":["../src/rsa.private-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,OAAO,aAAc,SAAQ,UAAU;IACzB,GAAG,CAA2B;IAEjD,YAAmB,GAA6B;QAC/C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,CAAC;IAEM,WAAW;QACjB,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;IAEM,OAAO,CAAC,SAA0B;QACxC,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,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IAEM,IAAI,CAAC,KAAa;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAE3B,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;YAC5B,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE;YAChB,GAAG,EAAE,KAAK,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,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,MAAc;QACtC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAEhD,OAAO,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;CACD"}
@@ -32,7 +32,7 @@ export class RSAPublicKey extends RSABaseKey {
32
32
  }
33
33
  verify(signature, value) {
34
34
  const hash = this.getMd();
35
- hash.update(value);
35
+ hash.update(value, 'utf8');
36
36
  const pss = forge.pss.create({
37
37
  md: this.getMd(),
38
38
  mgf: forge.mgf.mgf1.create(this.getMd()),
@@ -1 +1 @@
1
- {"version":3,"file":"rsa.public-key.js","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,mBAAmB,CAAC;AAE/C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAClD,IAAI,CAAC;QACJ,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAEpD,OAAO,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;YACf,OAAO,EAAE,oBAAoB;YAC7B,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,gBAAgB;SACxB,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAEpB,MAAM,OAAO,YAAa,SAAQ,UAAU;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,KAAsB;QACpC,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,SAA0B,EAAE,KAAa;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEnB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;YAC5B,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE;YAChB,GAAG,EAAE,KAAK,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,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,MAAc;QACtC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAE/C,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC"}
1
+ {"version":3,"file":"rsa.public-key.js","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,mBAAmB,CAAC;AAE/C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAClD,IAAI,CAAC;QACJ,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAEpD,OAAO,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;YACf,OAAO,EAAE,oBAAoB;YAC7B,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,gBAAgB;SACxB,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAEpB,MAAM,OAAO,YAAa,SAAQ,UAAU;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,KAAsB;QACpC,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,SAA0B,EAAE,KAAa;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAE3B,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;YAC5B,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE;YAChB,GAAG,EAAE,KAAK,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,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,MAAc;QACtC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAE/C,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC"}
@@ -1,8 +1,14 @@
1
1
  import { Suite } from '@hg-ts/tests';
2
2
  export declare class RsaTest extends Suite {
3
+ keyPairFromPrivateKey(): Promise<void>;
4
+ keyPairFromPrivateKeyString(): Promise<void>;
5
+ keyPairFromPrivateKeyEncryption(): Promise<void>;
3
6
  signature(): Promise<void>;
4
7
  signatureBuffer(): Promise<void>;
5
8
  encryption(): Promise<void>;
9
+ encryptionRu(): Promise<void>;
10
+ encryptionHex(): Promise<void>;
11
+ encryptionEn(): Promise<void>;
6
12
  encryptionBuffer(): Promise<void>;
7
13
  longMessageEncryption(): Promise<void>;
8
14
  longMessageSignature(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"rsa.test.d.ts","sourceRoot":"","sources":["../src/rsa.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAIN,KAAK,EAEL,MAAM,cAAc,CAAC;AAOtB,qBACa,OAAQ,SAAQ,KAAK;IAEpB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAS1B,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAShC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IASjC,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUtC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IASrC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAUvB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQpC,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ1C,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC;CAOvD"}
1
+ {"version":3,"file":"rsa.test.d.ts","sourceRoot":"","sources":["../src/rsa.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAIN,KAAK,EAEL,MAAM,cAAc,CAAC;AAOtB,qBACa,OAAQ,SAAQ,KAAK;IAEpB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtC,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5C,+BAA+B,IAAI,OAAO,CAAC,IAAI,CAAC;IAYhD,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAS1B,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAShC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAS7B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAS7B,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IASjC,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUtC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IASrC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAUvB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQpC,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ1C,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC;CAOvD"}
package/dist/rsa.test.js CHANGED
@@ -5,62 +5,101 @@ import { RSAKeyPair } from './rsa.key-pair.js';
5
5
  import { RSAPrivateKey } from './rsa.private-key.js';
6
6
  import { RSAPublicKey } from './rsa.public-key.js';
7
7
  let RsaTest = class RsaTest extends Suite {
8
+ async keyPairFromPrivateKey() {
9
+ const { privateKey, publicKey } = new RSAKeyPair({ bits: 786 });
10
+ const key = RSAPrivateKey.fromString(privateKey);
11
+ const keyPairFromKey = new RSAKeyPair({ privateKey: key });
12
+ expect(keyPairFromKey.privateKey).toBe(privateKey);
13
+ expect(keyPairFromKey.publicKey).toBe(publicKey);
14
+ }
15
+ async keyPairFromPrivateKeyString() {
16
+ const { privateKey, publicKey } = new RSAKeyPair({ bits: 786 });
17
+ const keyPairFromKey = new RSAKeyPair({ privateKey });
18
+ expect(keyPairFromKey.privateKey).toBe(privateKey);
19
+ expect(keyPairFromKey.publicKey).toBe(publicKey);
20
+ }
21
+ async keyPairFromPrivateKeyEncryption() {
22
+ const { privateKey } = new RSAKeyPair({ bits: 786 });
23
+ const key = RSAPrivateKey.fromString(privateKey);
24
+ const value = Math.random().toString();
25
+ const encrypted = key.toPublicKey().encrypt(value);
26
+ const decrypted = key.decrypt(encrypted);
27
+ expect(value).toBe(decrypted);
28
+ }
8
29
  async signature() {
9
- const rsa = new RSAKeyPair({ bits: 512 });
30
+ const rsa = new RSAKeyPair({ bits: 786 });
10
31
  const value = Math.random().toString();
11
32
  const signature = rsa.sign(value);
12
33
  expect(rsa.verify(signature.toString('binary'), value)).toBeTruthy();
13
34
  }
14
35
  async signatureBuffer() {
15
- const rsa = new RSAKeyPair({ bits: 512 });
36
+ const rsa = new RSAKeyPair({ bits: 786 });
16
37
  const value = Math.random().toString();
17
38
  const signature = rsa.sign(value);
18
39
  expect(rsa.verify(signature, value)).toBeTruthy();
19
40
  }
20
41
  async encryption() {
21
- const rsa = new RSAKeyPair({ bits: 1024 });
42
+ const rsa = new RSAKeyPair({ bits: 786 });
22
43
  const value = Math.random().toString();
23
44
  const encrypted = rsa.encrypt(value);
24
45
  expect(rsa.decrypt(encrypted.toString('hex'))).toBe(value);
25
46
  }
47
+ async encryptionRu() {
48
+ const rsa = new RSAKeyPair({ bits: 786 });
49
+ const value = 'Тестовый текст';
50
+ const encrypted = rsa.encrypt(value);
51
+ expect(rsa.decrypt(encrypted.toString('hex'))).toBe(value);
52
+ }
53
+ async encryptionHex() {
54
+ const rsa = new RSAKeyPair({ bits: 786 });
55
+ const value = Math.floor(Math.random() * 10000).toString(16);
56
+ const encrypted = rsa.encrypt(value);
57
+ expect(rsa.decrypt(encrypted.toString('hex'))).toBe(value);
58
+ }
59
+ async encryptionEn() {
60
+ const rsa = new RSAKeyPair({ bits: 786 });
61
+ const value = 'Test text';
62
+ const encrypted = rsa.encrypt(value);
63
+ expect(rsa.decrypt(encrypted.toString('hex'))).toBe(value);
64
+ }
26
65
  async encryptionBuffer() {
27
- const rsa = new RSAKeyPair({ bits: 1024 });
66
+ const rsa = new RSAKeyPair({ bits: 786 });
28
67
  const value = Buffer.from(Math.random().toString(), 'utf-8');
29
68
  const encrypted = rsa.encrypt(value);
30
69
  expect(Buffer.from(rsa.decrypt(encrypted), 'hex')).toMatchObject(value);
31
70
  }
32
71
  async longMessageEncryption() {
33
- const rsa = new RSAKeyPair({ bits: 1024 });
34
- const rsaToTest = new RSAKeyPair({ bits: 1024 });
72
+ const rsa = new RSAKeyPair({ bits: 786 });
73
+ const rsaToTest = new RSAKeyPair({ bits: 786 });
35
74
  const value = rsaToTest.publicKey;
36
75
  const encrypted = rsa.encrypt(value);
37
76
  expect(rsa.decrypt(encrypted)).toBe(value);
38
77
  }
39
78
  async longMessageSignature() {
40
- const rsa = new RSAKeyPair({ bits: 512 });
79
+ const rsa = new RSAKeyPair({ bits: 786 });
41
80
  const value = rsa.publicKey;
42
81
  const signature = rsa.sign(value);
43
82
  expect(rsa.verify(signature, value)).toBeTruthy();
44
83
  }
45
84
  async seeded() {
46
85
  const seed = Math.random().toString();
47
- const rsa1 = new RSAKeyPair({ seed, bits: 512 });
48
- const rsa2 = new RSAKeyPair({ seed, bits: 512 });
86
+ const rsa1 = new RSAKeyPair({ seed, bits: 786 });
87
+ const rsa2 = new RSAKeyPair({ seed, bits: 786 });
49
88
  expect(rsa1.privateKey).toBe(rsa2.privateKey);
50
89
  expect(rsa1.publicKey).toBe(rsa2.publicKey);
51
90
  }
52
91
  async privateKeyFromString() {
53
- const rsa = new RSAKeyPair({ bits: 512 });
92
+ const rsa = new RSAKeyPair({ bits: 786 });
54
93
  const rsaFromString = RSAPrivateKey.fromString(rsa.privateKey);
55
94
  expect(rsaFromString.toString()).toBe(rsa.privateKey.toString());
56
95
  }
57
96
  async publicKeyFromString() {
58
- const rsa = new RSAKeyPair({ bits: 512 });
97
+ const rsa = new RSAKeyPair({ bits: 786 });
59
98
  const rsaFromString = RSAPublicKey.fromString(rsa.publicKey);
60
99
  expect(rsaFromString.toString()).toBe(rsa.publicKey.toString());
61
100
  }
62
101
  async publicKeyValidationsValid() {
63
- const rsa = new RSAKeyPair({ bits: 512 });
102
+ const rsa = new RSAKeyPair({ bits: 786 });
64
103
  RSAPublicKey.schema.parse(rsa.publicKey.toString());
65
104
  }
66
105
  async publicKeyValidationsFails() {
@@ -70,6 +109,24 @@ MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALnfPJr6J2UXwvZhbPWolBw4UJHAEMd
70
109
  -----END PUBLIC KEY-----`);
71
110
  }
72
111
  };
112
+ __decorate([
113
+ Test(),
114
+ __metadata("design:type", Function),
115
+ __metadata("design:paramtypes", []),
116
+ __metadata("design:returntype", Promise)
117
+ ], RsaTest.prototype, "keyPairFromPrivateKey", null);
118
+ __decorate([
119
+ Test(),
120
+ __metadata("design:type", Function),
121
+ __metadata("design:paramtypes", []),
122
+ __metadata("design:returntype", Promise)
123
+ ], RsaTest.prototype, "keyPairFromPrivateKeyString", null);
124
+ __decorate([
125
+ Test(),
126
+ __metadata("design:type", Function),
127
+ __metadata("design:paramtypes", []),
128
+ __metadata("design:returntype", Promise)
129
+ ], RsaTest.prototype, "keyPairFromPrivateKeyEncryption", null);
73
130
  __decorate([
74
131
  Test(),
75
132
  __metadata("design:type", Function),
@@ -88,6 +145,24 @@ __decorate([
88
145
  __metadata("design:paramtypes", []),
89
146
  __metadata("design:returntype", Promise)
90
147
  ], RsaTest.prototype, "encryption", null);
148
+ __decorate([
149
+ Test(),
150
+ __metadata("design:type", Function),
151
+ __metadata("design:paramtypes", []),
152
+ __metadata("design:returntype", Promise)
153
+ ], RsaTest.prototype, "encryptionRu", null);
154
+ __decorate([
155
+ Test(),
156
+ __metadata("design:type", Function),
157
+ __metadata("design:paramtypes", []),
158
+ __metadata("design:returntype", Promise)
159
+ ], RsaTest.prototype, "encryptionHex", null);
160
+ __decorate([
161
+ Test(),
162
+ __metadata("design:type", Function),
163
+ __metadata("design:paramtypes", []),
164
+ __metadata("design:returntype", Promise)
165
+ ], RsaTest.prototype, "encryptionEn", null);
91
166
  __decorate([
92
167
  Test(),
93
168
  __metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"rsa.test.js","sourceRoot":"","sources":["../src/rsa.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rsa.test.js","sourceRoot":"","sources":["../src/rsa.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hg-ts/rsa",
3
- "version": "0.7.22",
3
+ "version": "0.7.25",
4
4
  "main": "dist/index.js",
5
5
  "type": "module",
6
6
  "exports": {
@@ -18,12 +18,12 @@
18
18
  "test:dev": "vitest watch"
19
19
  },
20
20
  "devDependencies": {
21
- "@hg-ts-config/typescript": "0.7.22",
22
- "@hg-ts/exception": "0.7.22",
23
- "@hg-ts/linter": "0.7.22",
24
- "@hg-ts/tests": "0.7.22",
25
- "@hg-ts/types": "0.7.22",
26
- "@hg-ts/validation": "0.7.22",
21
+ "@hg-ts-config/typescript": "0.7.25",
22
+ "@hg-ts/exception": "0.7.25",
23
+ "@hg-ts/linter": "0.7.25",
24
+ "@hg-ts/tests": "0.7.25",
25
+ "@hg-ts/types": "0.7.25",
26
+ "@hg-ts/validation": "0.7.25",
27
27
  "@types/node": "22.19.1",
28
28
  "@types/node-forge": "^1",
29
29
  "@vitest/coverage-v8": "4.0.14",
@@ -36,8 +36,8 @@
36
36
  "vitest": "4.0.14"
37
37
  },
38
38
  "peerDependencies": {
39
- "@hg-ts/exception": "0.7.22",
40
- "@hg-ts/validation": "0.7.22",
39
+ "@hg-ts/exception": "0.7.25",
40
+ "@hg-ts/validation": "0.7.25",
41
41
  "reflect-metadata": "*",
42
42
  "tslib": "*",
43
43
  "vitest": "*"
@@ -10,30 +10,34 @@ export abstract class RSABaseKey {
10
10
  }
11
11
 
12
12
  protected prepareToEncrypt(data: string | Buffer): string[] {
13
- const input = this.formatDecryptedInputToString(data);
13
+ const input = this.formatDecryptedInputToBinary(data);
14
14
 
15
- return this.splitInput(input, this.maxLength);
15
+ return this.splitBinaryInput(input, this.maxLength);
16
16
  }
17
17
 
18
18
  protected prepareToDecrypt(data: string | Buffer): string[] {
19
19
  const encryptedLength = this.keyLength * 2;
20
20
  const encrypted = typeof data === 'string' ? data : data.toString('hex');
21
21
 
22
- return this.splitInput(encrypted, encryptedLength)
22
+ return this.splitBinaryInput(encrypted, encryptedLength)
23
23
  .map(chunk => Buffer
24
24
  .from(chunk, 'hex')
25
25
  .toString('binary'),
26
26
  );
27
27
  }
28
28
 
29
- protected formatDecryptedInputToString(data: string | Buffer): string {
29
+ protected formatDecryptedInputToBinary(data: string | Buffer): string {
30
30
  if (typeof data === 'string') {
31
- return data;
31
+ return forge.util.encodeUtf8(data);
32
32
  }
33
33
 
34
34
  return Buffer.from(data).toString('hex');
35
35
  }
36
36
 
37
+ protected formatDecryptedOutput(data: string): string {
38
+ return forge.util.decodeUtf8(data);
39
+ }
40
+
37
41
  protected formatSignature(data: string | Buffer): string {
38
42
  if (typeof data === 'string') {
39
43
  return data;
@@ -60,14 +64,13 @@ export abstract class RSABaseKey {
60
64
  return Math.ceil(this.key.n.bitLength() / 8);
61
65
  }
62
66
 
63
- private splitInput(value: string, length: number): string[] {
64
- const chars = value.split('');
67
+ private splitBinaryInput(value: string, length: number): string[] {
65
68
  const chunks: string[] = [];
69
+ let index = 0;
66
70
 
67
- while (chars.length > 0) {
68
- const chunk = chars.splice(0, length);
69
-
70
- chunks.push(chunk.join(''));
71
+ while (index < value.length) {
72
+ chunks.push(value.slice(index, index + length));
73
+ index += length;
71
74
  }
72
75
 
73
76
  return chunks;
@@ -5,6 +5,7 @@ import { RSAPublicKey } from './rsa.public-key.js';
5
5
  export type RSAKeyPairOptions = {
6
6
  seed?: string;
7
7
  bits?: number;
8
+ privateKey?: RSAPrivateKey | string;
8
9
  }
9
10
 
10
11
  export class RSAKeyPair {
@@ -43,15 +44,22 @@ export class RSAKeyPair {
43
44
  }
44
45
 
45
46
  private generateKeys(options: RSAKeyPairOptions): forge.pki.rsa.KeyPair {
46
- const { seed } = options;
47
+ const { seed, privateKey, bits } = options;
48
+
49
+ if (privateKey) {
50
+ const key = typeof privateKey === 'string' ? RSAPrivateKey.fromString(privateKey) : privateKey;
51
+ const publicKey = key.toPublicKey();
52
+
53
+ return { privateKey: key['key'], publicKey: publicKey['key'] };
54
+ }
47
55
  if (!seed) {
48
- return forge.pki.rsa.generateKeyPair({ bits: options.bits });
56
+ return forge.pki.rsa.generateKeyPair({ bits });
49
57
  }
50
58
 
51
59
  const prng = forge.random.createInstance();
52
60
  prng.seedFileSync = (): string => seed;
53
61
  prng.seedFile = (): string => seed;
54
62
 
55
- return forge.pki.rsa.generateKeyPair({ prng, bits: options.bits });
63
+ return forge.pki.rsa.generateKeyPair({ prng, bits });
56
64
  }
57
65
  }
@@ -1,5 +1,6 @@
1
1
  import forge from 'node-forge';
2
2
  import { RSABaseKey } from './rsa.base-key.js';
3
+ import { RSAPublicKey } from './rsa.public-key.js';
3
4
 
4
5
  export class RSAPrivateKey extends RSABaseKey {
5
6
  protected readonly key: forge.pki.rsa.PrivateKey;
@@ -9,6 +10,10 @@ export class RSAPrivateKey extends RSABaseKey {
9
10
  this.key = key;
10
11
  }
11
12
 
13
+ public toPublicKey(): RSAPublicKey {
14
+ return new RSAPublicKey(forge.pki.rsa.setPublicKey(this.key.n, this.key.e));
15
+ }
16
+
12
17
  public decrypt(encrypted: string | Buffer): string {
13
18
  const md = this.getMd();
14
19
 
@@ -16,12 +21,12 @@ export class RSAPrivateKey extends RSABaseKey {
16
21
 
17
22
  const decryptedChunks = chunks.map(chunk => this.key.decrypt(chunk, 'RSAES-PKCS1-V1_5', { md }));
18
23
 
19
- return decryptedChunks.join('');
24
+ return this.formatDecryptedOutput(decryptedChunks.join(''));
20
25
  }
21
26
 
22
27
  public sign(value: string): Buffer {
23
28
  const hash = this.getMd();
24
- hash.update(value);
29
+ hash.update(value, 'utf8');
25
30
 
26
31
  const pss = forge.pss.create({
27
32
  md: this.getMd(),
@@ -40,7 +40,7 @@ export class RSAPublicKey extends RSABaseKey {
40
40
 
41
41
  public verify(signature: string | Buffer, value: string): boolean {
42
42
  const hash = this.getMd();
43
- hash.update(value);
43
+ hash.update(value, 'utf8');
44
44
 
45
45
  const pss = forge.pss.create({
46
46
  md: this.getMd(),
package/src/rsa.test.ts CHANGED
@@ -13,9 +13,42 @@ import { RSAPublicKey } from './rsa.public-key.js';
13
13
 
14
14
  @Describe()
15
15
  export class RsaTest extends Suite {
16
+ @Test()
17
+ public async keyPairFromPrivateKey(): Promise<void> {
18
+ const { privateKey, publicKey } = new RSAKeyPair({ bits: 786 });
19
+ const key = RSAPrivateKey.fromString(privateKey);
20
+
21
+ const keyPairFromKey = new RSAKeyPair({ privateKey: key });
22
+
23
+ expect(keyPairFromKey.privateKey).toBe(privateKey);
24
+ expect(keyPairFromKey.publicKey).toBe(publicKey);
25
+ }
26
+
27
+ @Test()
28
+ public async keyPairFromPrivateKeyString(): Promise<void> {
29
+ const { privateKey, publicKey } = new RSAKeyPair({ bits: 786 });
30
+
31
+ const keyPairFromKey = new RSAKeyPair({ privateKey });
32
+
33
+ expect(keyPairFromKey.privateKey).toBe(privateKey);
34
+ expect(keyPairFromKey.publicKey).toBe(publicKey);
35
+ }
36
+
37
+ @Test()
38
+ public async keyPairFromPrivateKeyEncryption(): Promise<void> {
39
+ const { privateKey } = new RSAKeyPair({ bits: 786 });
40
+ const key = RSAPrivateKey.fromString(privateKey);
41
+
42
+ const value = Math.random().toString();
43
+ const encrypted = key.toPublicKey().encrypt(value);
44
+ const decrypted = key.decrypt(encrypted);
45
+
46
+ expect(value).toBe(decrypted);
47
+ }
48
+
16
49
  @Test()
17
50
  public async signature(): Promise<void> {
18
- const rsa = new RSAKeyPair({ bits: 512 });
51
+ const rsa = new RSAKeyPair({ bits: 786 });
19
52
  const value = Math.random().toString();
20
53
 
21
54
  const signature = rsa.sign(value);
@@ -24,7 +57,7 @@ export class RsaTest extends Suite {
24
57
 
25
58
  @Test()
26
59
  public async signatureBuffer(): Promise<void> {
27
- const rsa = new RSAKeyPair({ bits: 512 });
60
+ const rsa = new RSAKeyPair({ bits: 786 });
28
61
  const value = Math.random().toString();
29
62
 
30
63
  const signature = rsa.sign(value);
@@ -33,16 +66,43 @@ export class RsaTest extends Suite {
33
66
 
34
67
  @Test()
35
68
  public async encryption(): Promise<void> {
36
- const rsa = new RSAKeyPair({ bits: 1024 });
69
+ const rsa = new RSAKeyPair({ bits: 786 });
37
70
  const value = Math.random().toString();
38
71
 
39
72
  const encrypted = rsa.encrypt(value);
40
73
  expect(rsa.decrypt(encrypted.toString('hex'))).toBe(value);
41
74
  }
42
75
 
76
+ @Test()
77
+ public async encryptionRu(): Promise<void> {
78
+ const rsa = new RSAKeyPair({ bits: 786 });
79
+ const value = 'Тестовый текст';
80
+
81
+ const encrypted = rsa.encrypt(value);
82
+ expect(rsa.decrypt(encrypted.toString('hex'))).toBe(value);
83
+ }
84
+
85
+ @Test()
86
+ public async encryptionHex(): Promise<void> {
87
+ const rsa = new RSAKeyPair({ bits: 786 });
88
+ const value = Math.floor(Math.random() * 10000).toString(16);
89
+
90
+ const encrypted = rsa.encrypt(value);
91
+ expect(rsa.decrypt(encrypted.toString('hex'))).toBe(value);
92
+ }
93
+
94
+ @Test()
95
+ public async encryptionEn(): Promise<void> {
96
+ const rsa = new RSAKeyPair({ bits: 786 });
97
+ const value = 'Test text';
98
+
99
+ const encrypted = rsa.encrypt(value);
100
+ expect(rsa.decrypt(encrypted.toString('hex'))).toBe(value);
101
+ }
102
+
43
103
  @Test()
44
104
  public async encryptionBuffer(): Promise<void> {
45
- const rsa = new RSAKeyPair({ bits: 1024 });
105
+ const rsa = new RSAKeyPair({ bits: 786 });
46
106
  const value = Buffer.from(Math.random().toString(), 'utf-8');
47
107
 
48
108
  const encrypted = rsa.encrypt(value);
@@ -51,8 +111,8 @@ export class RsaTest extends Suite {
51
111
 
52
112
  @Test()
53
113
  public async longMessageEncryption(): Promise<void> {
54
- const rsa = new RSAKeyPair({ bits: 1024 });
55
- const rsaToTest = new RSAKeyPair({ bits: 1024 });
114
+ const rsa = new RSAKeyPair({ bits: 786 });
115
+ const rsaToTest = new RSAKeyPair({ bits: 786 });
56
116
  const value = rsaToTest.publicKey;
57
117
 
58
118
  const encrypted = rsa.encrypt(value);
@@ -61,7 +121,7 @@ export class RsaTest extends Suite {
61
121
 
62
122
  @Test()
63
123
  public async longMessageSignature(): Promise<void> {
64
- const rsa = new RSAKeyPair({ bits: 512 });
124
+ const rsa = new RSAKeyPair({ bits: 786 });
65
125
  const value = rsa.publicKey;
66
126
 
67
127
  const signature = rsa.sign(value);
@@ -71,8 +131,8 @@ export class RsaTest extends Suite {
71
131
  @Test()
72
132
  public async seeded(): Promise<void> {
73
133
  const seed = Math.random().toString();
74
- const rsa1 = new RSAKeyPair({ seed, bits: 512 });
75
- const rsa2 = new RSAKeyPair({ seed, bits: 512 });
134
+ const rsa1 = new RSAKeyPair({ seed, bits: 786 });
135
+ const rsa2 = new RSAKeyPair({ seed, bits: 786 });
76
136
 
77
137
  expect(rsa1.privateKey).toBe(rsa2.privateKey);
78
138
  expect(rsa1.publicKey).toBe(rsa2.publicKey);
@@ -80,7 +140,7 @@ export class RsaTest extends Suite {
80
140
 
81
141
  @Test()
82
142
  public async privateKeyFromString(): Promise<void> {
83
- const rsa = new RSAKeyPair({ bits: 512 });
143
+ const rsa = new RSAKeyPair({ bits: 786 });
84
144
  const rsaFromString = RSAPrivateKey.fromString(rsa.privateKey);
85
145
 
86
146
  expect(rsaFromString.toString()).toBe(rsa.privateKey.toString());
@@ -88,7 +148,7 @@ export class RsaTest extends Suite {
88
148
 
89
149
  @Test()
90
150
  public async publicKeyFromString(): Promise<void> {
91
- const rsa = new RSAKeyPair({ bits: 512 });
151
+ const rsa = new RSAKeyPair({ bits: 786 });
92
152
  const rsaFromString = RSAPublicKey.fromString(rsa.publicKey);
93
153
 
94
154
  expect(rsaFromString.toString()).toBe(rsa.publicKey.toString());
@@ -96,7 +156,7 @@ export class RsaTest extends Suite {
96
156
 
97
157
  @Test()
98
158
  public async publicKeyValidationsValid(): Promise<void> {
99
- const rsa = new RSAKeyPair({ bits: 512 });
159
+ const rsa = new RSAKeyPair({ bits: 786 });
100
160
 
101
161
  RSAPublicKey.schema.parse(rsa.publicKey.toString());
102
162
  }
package/dist/utils.d.ts DELETED
@@ -1,7 +0,0 @@
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
@@ -1 +0,0 @@
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 DELETED
@@ -1,25 +0,0 @@
1
- import forge from 'node-forge';
2
- export function chunkString(value, length) {
3
- const chars = value.split('');
4
- const chunks = [];
5
- while (chars.length > 0) {
6
- const chunk = chars.splice(0, length);
7
- chunks.push(chunk.join(''));
8
- }
9
- return chunks;
10
- }
11
- export function getMd() {
12
- return forge.md.sha256.create();
13
- }
14
- export function getKeyLength(key) {
15
- return Math.ceil(key.n.bitLength() / 8);
16
- }
17
- export function getMaxLength(key, md) {
18
- const keyLength = getKeyLength(key);
19
- return keyLength - (md.digestLength * 2) - 2;
20
- }
21
- export function getEncryptedLength(key) {
22
- const keyLength = getKeyLength(key);
23
- return keyLength * 2;
24
- }
25
- //# sourceMappingURL=utils.js.map
package/dist/utils.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,MAAM,UAAU,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,MAAM,UAAU,KAAK;IACpB,OAAO,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAuD;IACnF,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,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,MAAM,UAAU,kBAAkB,CACjC,GAAuD;IAEvD,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAEpC,OAAO,SAAS,GAAG,CAAC,CAAC;AACtB,CAAC"}
package/src/utils.ts DELETED
@@ -1,40 +0,0 @@
1
- import forge from 'node-forge';
2
-
3
- export function chunkString(value: string, length: number): string[] {
4
- const chars = value.split('');
5
- const chunks: string[] = [];
6
-
7
- while (chars.length > 0) {
8
- const chunk = chars.splice(0, length);
9
-
10
- chunks.push(chunk.join(''));
11
- }
12
-
13
- return chunks;
14
- }
15
-
16
- export function getMd(): forge.md.MessageDigest {
17
- return forge.md.sha256.create();
18
- }
19
-
20
- export function getKeyLength(key: forge.pki.rsa.PrivateKey | forge.pki.rsa.PublicKey): number {
21
- return Math.ceil(key.n.bitLength() / 8);
22
- }
23
-
24
- export function getMaxLength(
25
- key: forge.pki.rsa.PrivateKey | forge.pki.rsa.PublicKey,
26
- md: forge.md.MessageDigest,
27
- ): number {
28
- const keyLength = getKeyLength(key);
29
-
30
- return keyLength - (md.digestLength * 2) - 2;
31
- }
32
-
33
-
34
- export function getEncryptedLength(
35
- key: forge.pki.rsa.PrivateKey | forge.pki.rsa.PublicKey,
36
- ): number {
37
- const keyLength = getKeyLength(key);
38
-
39
- return keyLength * 2;
40
- }