@hg-ts/rsa 0.2.15 → 0.2.17
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 +16 -0
- package/dist/rsa.base-key.d.ts.map +1 -0
- package/dist/rsa.base-key.js +59 -0
- package/dist/rsa.base-key.js.map +1 -0
- package/dist/rsa.key-pair.d.ts +4 -4
- package/dist/rsa.key-pair.d.ts.map +1 -1
- package/dist/rsa.key-pair.js.map +1 -1
- package/dist/rsa.private-key.d.ts +5 -4
- package/dist/rsa.private-key.d.ts.map +1 -1
- package/dist/rsa.private-key.js +10 -13
- package/dist/rsa.private-key.js.map +1 -1
- package/dist/rsa.public-key.d.ts +5 -4
- package/dist/rsa.public-key.d.ts.map +1 -1
- package/dist/rsa.public-key.js +12 -15
- package/dist/rsa.public-key.js.map +1 -1
- package/package.json +9 -9
|
@@ -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"}
|
package/dist/rsa.key-pair.d.ts
CHANGED
|
@@ -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):
|
|
9
|
-
decrypt(value: string): string;
|
|
10
|
-
sign(value: 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,
|
|
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"}
|
package/dist/rsa.key-pair.js.map
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
3
|
-
|
|
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):
|
|
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;
|
|
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"}
|
package/dist/rsa.private-key.js
CHANGED
|
@@ -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
|
|
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 =
|
|
14
|
-
const
|
|
15
|
-
const
|
|
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 =
|
|
20
|
+
const hash = this.getMd();
|
|
24
21
|
hash.update(value);
|
|
25
22
|
const pss = node_forge_1.default.pss.create({
|
|
26
|
-
md:
|
|
27
|
-
mgf: node_forge_1.default.mgf.mgf1.create(
|
|
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')
|
|
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,
|
|
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"}
|
package/dist/rsa.public-key.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { z } from '@hg-ts/validation';
|
|
2
2
|
import forge from 'node-forge';
|
|
3
|
-
|
|
4
|
-
|
|
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):
|
|
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;
|
|
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"}
|
package/dist/rsa.public-key.js
CHANGED
|
@@ -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
|
|
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 =
|
|
31
|
-
const
|
|
32
|
-
const
|
|
33
|
-
|
|
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 =
|
|
37
|
+
const hash = this.getMd();
|
|
41
38
|
hash.update(value);
|
|
42
39
|
const pss = node_forge_1.default.pss.create({
|
|
43
|
-
md:
|
|
44
|
-
mgf: node_forge_1.default.mgf.mgf1.create(
|
|
40
|
+
md: this.getMd(),
|
|
41
|
+
mgf: node_forge_1.default.mgf.mgf1.create(this.getMd()),
|
|
45
42
|
saltLength: 20,
|
|
46
43
|
});
|
|
47
|
-
const
|
|
48
|
-
return this.key.verify(hash.digest().bytes(),
|
|
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,
|
|
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.
|
|
3
|
+
"version": "0.2.17",
|
|
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.
|
|
21
|
-
"@hg-ts/exception": "0.2.
|
|
22
|
-
"@hg-ts/linter": "0.2.
|
|
23
|
-
"@hg-ts/tests": "0.2.
|
|
24
|
-
"@hg-ts/types": "0.2.
|
|
25
|
-
"@hg-ts/validation": "0.2.
|
|
20
|
+
"@hg-ts-config/typescript": "0.2.17",
|
|
21
|
+
"@hg-ts/exception": "0.2.17",
|
|
22
|
+
"@hg-ts/linter": "0.2.17",
|
|
23
|
+
"@hg-ts/tests": "0.2.17",
|
|
24
|
+
"@hg-ts/types": "0.2.17",
|
|
25
|
+
"@hg-ts/validation": "0.2.17",
|
|
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.
|
|
37
|
-
"@hg-ts/validation": "0.2.
|
|
36
|
+
"@hg-ts/exception": "0.2.17",
|
|
37
|
+
"@hg-ts/validation": "0.2.17",
|
|
38
38
|
"reflect-metadata": "*",
|
|
39
39
|
"tslib": "*"
|
|
40
40
|
},
|