@hg-ts/rsa 0.7.24 → 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.
- package/dist/rsa.base-key.d.ts +3 -2
- package/dist/rsa.base-key.d.ts.map +1 -1
- package/dist/rsa.base-key.js +13 -10
- package/dist/rsa.base-key.js.map +1 -1
- package/dist/rsa.private-key.js +2 -2
- package/dist/rsa.private-key.js.map +1 -1
- package/dist/rsa.public-key.js +1 -1
- package/dist/rsa.public-key.js.map +1 -1
- package/dist/rsa.test.d.ts +4 -0
- package/dist/rsa.test.d.ts.map +1 -1
- package/dist/rsa.test.js +64 -14
- package/dist/rsa.test.js.map +1 -1
- package/package.json +9 -9
- package/src/rsa.base-key.ts +14 -11
- package/src/rsa.private-key.ts +2 -2
- package/src/rsa.public-key.ts +1 -1
- package/src/rsa.test.ts +53 -14
package/dist/rsa.base-key.d.ts
CHANGED
|
@@ -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
|
|
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
|
|
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,
|
|
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"}
|
package/dist/rsa.base-key.js
CHANGED
|
@@ -5,23 +5,26 @@ export class RSABaseKey {
|
|
|
5
5
|
this.mdDigestLength = this.getMd().digestLength;
|
|
6
6
|
}
|
|
7
7
|
prepareToEncrypt(data) {
|
|
8
|
-
const input = this.
|
|
9
|
-
return this.
|
|
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.
|
|
14
|
+
return this.splitBinaryInput(encrypted, encryptedLength)
|
|
15
15
|
.map(chunk => Buffer
|
|
16
16
|
.from(chunk, 'hex')
|
|
17
17
|
.toString('binary'));
|
|
18
18
|
}
|
|
19
|
-
|
|
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
|
-
|
|
45
|
-
const chars = value.split('');
|
|
47
|
+
splitBinaryInput(value, length) {
|
|
46
48
|
const chunks = [];
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
chunks.push(
|
|
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
|
}
|
package/dist/rsa.base-key.js.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/rsa.private-key.js
CHANGED
|
@@ -14,11 +14,11 @@ export class RSAPrivateKey extends RSABaseKey {
|
|
|
14
14
|
const md = this.getMd();
|
|
15
15
|
const chunks = this.prepareToDecrypt(encrypted);
|
|
16
16
|
const decryptedChunks = chunks.map(chunk => this.key.decrypt(chunk, 'RSAES-PKCS1-V1_5', { md }));
|
|
17
|
-
return decryptedChunks.join('');
|
|
17
|
+
return this.formatDecryptedOutput(decryptedChunks.join(''));
|
|
18
18
|
}
|
|
19
19
|
sign(value) {
|
|
20
20
|
const hash = this.getMd();
|
|
21
|
-
hash.update(value);
|
|
21
|
+
hash.update(value, 'utf8');
|
|
22
22
|
const pss = forge.pss.create({
|
|
23
23
|
md: this.getMd(),
|
|
24
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;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,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;
|
|
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"}
|
package/dist/rsa.public-key.js
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/rsa.test.d.ts
CHANGED
|
@@ -2,9 +2,13 @@ import { Suite } from '@hg-ts/tests';
|
|
|
2
2
|
export declare class RsaTest extends Suite {
|
|
3
3
|
keyPairFromPrivateKey(): Promise<void>;
|
|
4
4
|
keyPairFromPrivateKeyString(): Promise<void>;
|
|
5
|
+
keyPairFromPrivateKeyEncryption(): Promise<void>;
|
|
5
6
|
signature(): Promise<void>;
|
|
6
7
|
signatureBuffer(): Promise<void>;
|
|
7
8
|
encryption(): Promise<void>;
|
|
9
|
+
encryptionRu(): Promise<void>;
|
|
10
|
+
encryptionHex(): Promise<void>;
|
|
11
|
+
encryptionEn(): Promise<void>;
|
|
8
12
|
encryptionBuffer(): Promise<void>;
|
|
9
13
|
longMessageEncryption(): Promise<void>;
|
|
10
14
|
longMessageSignature(): Promise<void>;
|
package/dist/rsa.test.d.ts.map
CHANGED
|
@@ -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,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtC,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5C,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
|
@@ -6,74 +6,100 @@ 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
8
|
async keyPairFromPrivateKey() {
|
|
9
|
-
const { privateKey, publicKey } = new RSAKeyPair({ bits:
|
|
9
|
+
const { privateKey, publicKey } = new RSAKeyPair({ bits: 786 });
|
|
10
10
|
const key = RSAPrivateKey.fromString(privateKey);
|
|
11
11
|
const keyPairFromKey = new RSAKeyPair({ privateKey: key });
|
|
12
12
|
expect(keyPairFromKey.privateKey).toBe(privateKey);
|
|
13
13
|
expect(keyPairFromKey.publicKey).toBe(publicKey);
|
|
14
14
|
}
|
|
15
15
|
async keyPairFromPrivateKeyString() {
|
|
16
|
-
const { privateKey, publicKey } = new RSAKeyPair({ bits:
|
|
16
|
+
const { privateKey, publicKey } = new RSAKeyPair({ bits: 786 });
|
|
17
17
|
const keyPairFromKey = new RSAKeyPair({ privateKey });
|
|
18
18
|
expect(keyPairFromKey.privateKey).toBe(privateKey);
|
|
19
19
|
expect(keyPairFromKey.publicKey).toBe(publicKey);
|
|
20
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
|
+
}
|
|
21
29
|
async signature() {
|
|
22
|
-
const rsa = new RSAKeyPair({ bits:
|
|
30
|
+
const rsa = new RSAKeyPair({ bits: 786 });
|
|
23
31
|
const value = Math.random().toString();
|
|
24
32
|
const signature = rsa.sign(value);
|
|
25
33
|
expect(rsa.verify(signature.toString('binary'), value)).toBeTruthy();
|
|
26
34
|
}
|
|
27
35
|
async signatureBuffer() {
|
|
28
|
-
const rsa = new RSAKeyPair({ bits:
|
|
36
|
+
const rsa = new RSAKeyPair({ bits: 786 });
|
|
29
37
|
const value = Math.random().toString();
|
|
30
38
|
const signature = rsa.sign(value);
|
|
31
39
|
expect(rsa.verify(signature, value)).toBeTruthy();
|
|
32
40
|
}
|
|
33
41
|
async encryption() {
|
|
34
|
-
const rsa = new RSAKeyPair({ bits:
|
|
42
|
+
const rsa = new RSAKeyPair({ bits: 786 });
|
|
35
43
|
const value = Math.random().toString();
|
|
36
44
|
const encrypted = rsa.encrypt(value);
|
|
37
45
|
expect(rsa.decrypt(encrypted.toString('hex'))).toBe(value);
|
|
38
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
|
+
}
|
|
39
65
|
async encryptionBuffer() {
|
|
40
|
-
const rsa = new RSAKeyPair({ bits:
|
|
66
|
+
const rsa = new RSAKeyPair({ bits: 786 });
|
|
41
67
|
const value = Buffer.from(Math.random().toString(), 'utf-8');
|
|
42
68
|
const encrypted = rsa.encrypt(value);
|
|
43
69
|
expect(Buffer.from(rsa.decrypt(encrypted), 'hex')).toMatchObject(value);
|
|
44
70
|
}
|
|
45
71
|
async longMessageEncryption() {
|
|
46
|
-
const rsa = new RSAKeyPair({ bits:
|
|
47
|
-
const rsaToTest = new RSAKeyPair({ bits:
|
|
72
|
+
const rsa = new RSAKeyPair({ bits: 786 });
|
|
73
|
+
const rsaToTest = new RSAKeyPair({ bits: 786 });
|
|
48
74
|
const value = rsaToTest.publicKey;
|
|
49
75
|
const encrypted = rsa.encrypt(value);
|
|
50
76
|
expect(rsa.decrypt(encrypted)).toBe(value);
|
|
51
77
|
}
|
|
52
78
|
async longMessageSignature() {
|
|
53
|
-
const rsa = new RSAKeyPair({ bits:
|
|
79
|
+
const rsa = new RSAKeyPair({ bits: 786 });
|
|
54
80
|
const value = rsa.publicKey;
|
|
55
81
|
const signature = rsa.sign(value);
|
|
56
82
|
expect(rsa.verify(signature, value)).toBeTruthy();
|
|
57
83
|
}
|
|
58
84
|
async seeded() {
|
|
59
85
|
const seed = Math.random().toString();
|
|
60
|
-
const rsa1 = new RSAKeyPair({ seed, bits:
|
|
61
|
-
const rsa2 = new RSAKeyPair({ seed, bits:
|
|
86
|
+
const rsa1 = new RSAKeyPair({ seed, bits: 786 });
|
|
87
|
+
const rsa2 = new RSAKeyPair({ seed, bits: 786 });
|
|
62
88
|
expect(rsa1.privateKey).toBe(rsa2.privateKey);
|
|
63
89
|
expect(rsa1.publicKey).toBe(rsa2.publicKey);
|
|
64
90
|
}
|
|
65
91
|
async privateKeyFromString() {
|
|
66
|
-
const rsa = new RSAKeyPair({ bits:
|
|
92
|
+
const rsa = new RSAKeyPair({ bits: 786 });
|
|
67
93
|
const rsaFromString = RSAPrivateKey.fromString(rsa.privateKey);
|
|
68
94
|
expect(rsaFromString.toString()).toBe(rsa.privateKey.toString());
|
|
69
95
|
}
|
|
70
96
|
async publicKeyFromString() {
|
|
71
|
-
const rsa = new RSAKeyPair({ bits:
|
|
97
|
+
const rsa = new RSAKeyPair({ bits: 786 });
|
|
72
98
|
const rsaFromString = RSAPublicKey.fromString(rsa.publicKey);
|
|
73
99
|
expect(rsaFromString.toString()).toBe(rsa.publicKey.toString());
|
|
74
100
|
}
|
|
75
101
|
async publicKeyValidationsValid() {
|
|
76
|
-
const rsa = new RSAKeyPair({ bits:
|
|
102
|
+
const rsa = new RSAKeyPair({ bits: 786 });
|
|
77
103
|
RSAPublicKey.schema.parse(rsa.publicKey.toString());
|
|
78
104
|
}
|
|
79
105
|
async publicKeyValidationsFails() {
|
|
@@ -95,6 +121,12 @@ __decorate([
|
|
|
95
121
|
__metadata("design:paramtypes", []),
|
|
96
122
|
__metadata("design:returntype", Promise)
|
|
97
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);
|
|
98
130
|
__decorate([
|
|
99
131
|
Test(),
|
|
100
132
|
__metadata("design:type", Function),
|
|
@@ -113,6 +145,24 @@ __decorate([
|
|
|
113
145
|
__metadata("design:paramtypes", []),
|
|
114
146
|
__metadata("design:returntype", Promise)
|
|
115
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);
|
|
116
166
|
__decorate([
|
|
117
167
|
Test(),
|
|
118
168
|
__metadata("design:type", Function),
|
package/dist/rsa.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsa.test.js","sourceRoot":"","sources":["../src/rsa.test.ts"],"names":[],"mappings":";AAAA,OAAO,EACN,QAAQ,EACR,MAAM,EACN,eAAe,EACf,KAAK,EACL,IAAI,GACJ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAG5C,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,KAAK;IAEpB,AAAN,KAAK,CAAC,qBAAqB;QACjC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAEjD,MAAM,cAAc,GAAG,IAAI,UAAU,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;QAE3D,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;IAGY,AAAN,KAAK,CAAC,2BAA2B;QACvC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAEhE,MAAM,cAAc,GAAG,IAAI,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;QAEtD,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;IAGY,AAAN,KAAK,CAAC,SAAS;QACrB,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QAEvC,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IACtE,CAAC;IAGY,AAAN,KAAK,CAAC,eAAe;QAC3B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QAEvC,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,CAAC,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,UAAU,CAAC,EAAE,IAAI,EAAE,
|
|
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.
|
|
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
|
-
"@hg-ts/exception": "0.7.
|
|
23
|
-
"@hg-ts/linter": "0.7.
|
|
24
|
-
"@hg-ts/tests": "0.7.
|
|
25
|
-
"@hg-ts/types": "0.7.
|
|
26
|
-
"@hg-ts/validation": "0.7.
|
|
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.
|
|
40
|
-
"@hg-ts/validation": "0.7.
|
|
39
|
+
"@hg-ts/exception": "0.7.25",
|
|
40
|
+
"@hg-ts/validation": "0.7.25",
|
|
41
41
|
"reflect-metadata": "*",
|
|
42
42
|
"tslib": "*",
|
|
43
43
|
"vitest": "*"
|
package/src/rsa.base-key.ts
CHANGED
|
@@ -10,30 +10,34 @@ export abstract class RSABaseKey {
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
protected prepareToEncrypt(data: string | Buffer): string[] {
|
|
13
|
-
const input = this.
|
|
13
|
+
const input = this.formatDecryptedInputToBinary(data);
|
|
14
14
|
|
|
15
|
-
return this.
|
|
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.
|
|
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
|
|
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
|
|
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 (
|
|
68
|
-
|
|
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;
|
package/src/rsa.private-key.ts
CHANGED
|
@@ -21,12 +21,12 @@ export class RSAPrivateKey extends RSABaseKey {
|
|
|
21
21
|
|
|
22
22
|
const decryptedChunks = chunks.map(chunk => this.key.decrypt(chunk, 'RSAES-PKCS1-V1_5', { md }));
|
|
23
23
|
|
|
24
|
-
return decryptedChunks.join('');
|
|
24
|
+
return this.formatDecryptedOutput(decryptedChunks.join(''));
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
public sign(value: string): Buffer {
|
|
28
28
|
const hash = this.getMd();
|
|
29
|
-
hash.update(value);
|
|
29
|
+
hash.update(value, 'utf8');
|
|
30
30
|
|
|
31
31
|
const pss = forge.pss.create({
|
|
32
32
|
md: this.getMd(),
|
package/src/rsa.public-key.ts
CHANGED
|
@@ -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
|
@@ -15,7 +15,7 @@ import { RSAPublicKey } from './rsa.public-key.js';
|
|
|
15
15
|
export class RsaTest extends Suite {
|
|
16
16
|
@Test()
|
|
17
17
|
public async keyPairFromPrivateKey(): Promise<void> {
|
|
18
|
-
const { privateKey, publicKey } = new RSAKeyPair({ bits:
|
|
18
|
+
const { privateKey, publicKey } = new RSAKeyPair({ bits: 786 });
|
|
19
19
|
const key = RSAPrivateKey.fromString(privateKey);
|
|
20
20
|
|
|
21
21
|
const keyPairFromKey = new RSAKeyPair({ privateKey: key });
|
|
@@ -26,7 +26,7 @@ export class RsaTest extends Suite {
|
|
|
26
26
|
|
|
27
27
|
@Test()
|
|
28
28
|
public async keyPairFromPrivateKeyString(): Promise<void> {
|
|
29
|
-
const { privateKey, publicKey } = new RSAKeyPair({ bits:
|
|
29
|
+
const { privateKey, publicKey } = new RSAKeyPair({ bits: 786 });
|
|
30
30
|
|
|
31
31
|
const keyPairFromKey = new RSAKeyPair({ privateKey });
|
|
32
32
|
|
|
@@ -34,9 +34,21 @@ export class RsaTest extends Suite {
|
|
|
34
34
|
expect(keyPairFromKey.publicKey).toBe(publicKey);
|
|
35
35
|
}
|
|
36
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
|
+
|
|
37
49
|
@Test()
|
|
38
50
|
public async signature(): Promise<void> {
|
|
39
|
-
const rsa = new RSAKeyPair({ bits:
|
|
51
|
+
const rsa = new RSAKeyPair({ bits: 786 });
|
|
40
52
|
const value = Math.random().toString();
|
|
41
53
|
|
|
42
54
|
const signature = rsa.sign(value);
|
|
@@ -45,7 +57,7 @@ export class RsaTest extends Suite {
|
|
|
45
57
|
|
|
46
58
|
@Test()
|
|
47
59
|
public async signatureBuffer(): Promise<void> {
|
|
48
|
-
const rsa = new RSAKeyPair({ bits:
|
|
60
|
+
const rsa = new RSAKeyPair({ bits: 786 });
|
|
49
61
|
const value = Math.random().toString();
|
|
50
62
|
|
|
51
63
|
const signature = rsa.sign(value);
|
|
@@ -54,16 +66,43 @@ export class RsaTest extends Suite {
|
|
|
54
66
|
|
|
55
67
|
@Test()
|
|
56
68
|
public async encryption(): Promise<void> {
|
|
57
|
-
const rsa = new RSAKeyPair({ bits:
|
|
69
|
+
const rsa = new RSAKeyPair({ bits: 786 });
|
|
58
70
|
const value = Math.random().toString();
|
|
59
71
|
|
|
60
72
|
const encrypted = rsa.encrypt(value);
|
|
61
73
|
expect(rsa.decrypt(encrypted.toString('hex'))).toBe(value);
|
|
62
74
|
}
|
|
63
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
|
+
|
|
64
103
|
@Test()
|
|
65
104
|
public async encryptionBuffer(): Promise<void> {
|
|
66
|
-
const rsa = new RSAKeyPair({ bits:
|
|
105
|
+
const rsa = new RSAKeyPair({ bits: 786 });
|
|
67
106
|
const value = Buffer.from(Math.random().toString(), 'utf-8');
|
|
68
107
|
|
|
69
108
|
const encrypted = rsa.encrypt(value);
|
|
@@ -72,8 +111,8 @@ export class RsaTest extends Suite {
|
|
|
72
111
|
|
|
73
112
|
@Test()
|
|
74
113
|
public async longMessageEncryption(): Promise<void> {
|
|
75
|
-
const rsa = new RSAKeyPair({ bits:
|
|
76
|
-
const rsaToTest = new RSAKeyPair({ bits:
|
|
114
|
+
const rsa = new RSAKeyPair({ bits: 786 });
|
|
115
|
+
const rsaToTest = new RSAKeyPair({ bits: 786 });
|
|
77
116
|
const value = rsaToTest.publicKey;
|
|
78
117
|
|
|
79
118
|
const encrypted = rsa.encrypt(value);
|
|
@@ -82,7 +121,7 @@ export class RsaTest extends Suite {
|
|
|
82
121
|
|
|
83
122
|
@Test()
|
|
84
123
|
public async longMessageSignature(): Promise<void> {
|
|
85
|
-
const rsa = new RSAKeyPair({ bits:
|
|
124
|
+
const rsa = new RSAKeyPair({ bits: 786 });
|
|
86
125
|
const value = rsa.publicKey;
|
|
87
126
|
|
|
88
127
|
const signature = rsa.sign(value);
|
|
@@ -92,8 +131,8 @@ export class RsaTest extends Suite {
|
|
|
92
131
|
@Test()
|
|
93
132
|
public async seeded(): Promise<void> {
|
|
94
133
|
const seed = Math.random().toString();
|
|
95
|
-
const rsa1 = new RSAKeyPair({ seed, bits:
|
|
96
|
-
const rsa2 = new RSAKeyPair({ seed, bits:
|
|
134
|
+
const rsa1 = new RSAKeyPair({ seed, bits: 786 });
|
|
135
|
+
const rsa2 = new RSAKeyPair({ seed, bits: 786 });
|
|
97
136
|
|
|
98
137
|
expect(rsa1.privateKey).toBe(rsa2.privateKey);
|
|
99
138
|
expect(rsa1.publicKey).toBe(rsa2.publicKey);
|
|
@@ -101,7 +140,7 @@ export class RsaTest extends Suite {
|
|
|
101
140
|
|
|
102
141
|
@Test()
|
|
103
142
|
public async privateKeyFromString(): Promise<void> {
|
|
104
|
-
const rsa = new RSAKeyPair({ bits:
|
|
143
|
+
const rsa = new RSAKeyPair({ bits: 786 });
|
|
105
144
|
const rsaFromString = RSAPrivateKey.fromString(rsa.privateKey);
|
|
106
145
|
|
|
107
146
|
expect(rsaFromString.toString()).toBe(rsa.privateKey.toString());
|
|
@@ -109,7 +148,7 @@ export class RsaTest extends Suite {
|
|
|
109
148
|
|
|
110
149
|
@Test()
|
|
111
150
|
public async publicKeyFromString(): Promise<void> {
|
|
112
|
-
const rsa = new RSAKeyPair({ bits:
|
|
151
|
+
const rsa = new RSAKeyPair({ bits: 786 });
|
|
113
152
|
const rsaFromString = RSAPublicKey.fromString(rsa.publicKey);
|
|
114
153
|
|
|
115
154
|
expect(rsaFromString.toString()).toBe(rsa.publicKey.toString());
|
|
@@ -117,7 +156,7 @@ export class RsaTest extends Suite {
|
|
|
117
156
|
|
|
118
157
|
@Test()
|
|
119
158
|
public async publicKeyValidationsValid(): Promise<void> {
|
|
120
|
-
const rsa = new RSAKeyPair({ bits:
|
|
159
|
+
const rsa = new RSAKeyPair({ bits: 786 });
|
|
121
160
|
|
|
122
161
|
RSAPublicKey.schema.parse(rsa.publicKey.toString());
|
|
123
162
|
}
|