@hg-ts/rsa 0.7.25 → 0.7.27
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/README.md +331 -0
- package/dist/X25519/index.d.ts +4 -0
- package/dist/X25519/index.d.ts.map +1 -0
- package/dist/X25519/index.js +4 -0
- package/dist/X25519/index.js.map +1 -0
- package/dist/X25519/key-pair.d.ts +13 -0
- package/dist/X25519/key-pair.d.ts.map +1 -0
- package/dist/X25519/key-pair.js +39 -0
- package/dist/X25519/key-pair.js.map +1 -0
- package/dist/X25519/private-key.d.ts +11 -0
- package/dist/X25519/private-key.d.ts.map +1 -0
- package/dist/X25519/private-key.js +40 -0
- package/dist/X25519/private-key.js.map +1 -0
- package/dist/X25519/public-key.d.ts +13 -0
- package/dist/X25519/public-key.d.ts.map +1 -0
- package/dist/X25519/public-key.js +49 -0
- package/dist/X25519/public-key.js.map +1 -0
- package/dist/X25519/utils.d.ts +2 -0
- package/dist/X25519/utils.d.ts.map +1 -0
- package/dist/X25519/utils.js +12 -0
- package/dist/X25519/utils.js.map +1 -0
- package/dist/X25519/x25519.test.d.ts +18 -0
- package/dist/X25519/x25519.test.d.ts.map +1 -0
- package/dist/X25519/x25519.test.js +183 -0
- package/dist/X25519/x25519.test.js.map +1 -0
- package/dist/base/index.d.ts +5 -0
- package/dist/base/index.d.ts.map +1 -0
- package/dist/base/index.js +5 -0
- package/dist/base/index.js.map +1 -0
- package/dist/base/key-pair.d.ts +27 -0
- package/dist/base/key-pair.d.ts.map +1 -0
- package/dist/base/key-pair.js +29 -0
- package/dist/base/key-pair.js.map +1 -0
- package/dist/base/key.d.ts +7 -0
- package/dist/base/key.d.ts.map +1 -0
- package/dist/base/key.js +10 -0
- package/dist/base/key.js.map +1 -0
- package/dist/base/private-key.d.ts +11 -0
- package/dist/base/private-key.d.ts.map +1 -0
- package/dist/base/private-key.js +4 -0
- package/dist/base/private-key.js.map +1 -0
- package/dist/base/public-key.d.ts +6 -0
- package/dist/base/public-key.d.ts.map +1 -0
- package/dist/base/public-key.js +4 -0
- package/dist/base/public-key.js.map +1 -0
- package/dist/exceptions/index.d.ts +2 -0
- package/dist/exceptions/index.d.ts.map +1 -0
- package/dist/exceptions/index.js +2 -0
- package/dist/exceptions/index.js.map +1 -0
- package/dist/exceptions/invalid-decryption-key.expection.d.ts +5 -0
- package/dist/exceptions/invalid-decryption-key.expection.d.ts.map +1 -0
- package/dist/exceptions/invalid-decryption-key.expection.js +7 -0
- package/dist/exceptions/invalid-decryption-key.expection.js.map +1 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/rsa/index.d.ts +4 -0
- package/dist/rsa/index.d.ts.map +1 -0
- package/dist/rsa/index.js +4 -0
- package/dist/rsa/index.js.map +1 -0
- package/dist/rsa/key-pair.d.ts +12 -0
- package/dist/rsa/key-pair.d.ts.map +1 -0
- package/dist/rsa/key-pair.js +40 -0
- package/dist/rsa/key-pair.js.map +1 -0
- package/dist/rsa/private-key.d.ts +16 -0
- package/dist/rsa/private-key.d.ts.map +1 -0
- package/dist/rsa/private-key.js +65 -0
- package/dist/rsa/private-key.js.map +1 -0
- package/dist/rsa/public-key.d.ts +19 -0
- package/dist/rsa/public-key.d.ts.map +1 -0
- package/dist/{rsa.public-key.js → rsa/public-key.js} +42 -9
- package/dist/rsa/public-key.js.map +1 -0
- package/dist/{rsa.test.d.ts → rsa/rsa.test.d.ts} +2 -0
- package/dist/rsa/rsa.test.d.ts.map +1 -0
- package/dist/{rsa.test.js → rsa/rsa.test.js} +56 -29
- package/dist/rsa/rsa.test.js.map +1 -0
- package/package.json +11 -9
- package/src/X25519/index.ts +3 -0
- package/src/X25519/key-pair.ts +58 -0
- package/src/X25519/private-key.ts +54 -0
- package/src/X25519/public-key.ts +68 -0
- package/src/X25519/utils.ts +22 -0
- package/src/X25519/x25519.test.ts +150 -0
- package/src/base/index.ts +4 -0
- package/src/base/key-pair.ts +75 -0
- package/src/base/key.ts +13 -0
- package/src/base/private-key.ts +17 -0
- package/src/base/public-key.ts +7 -0
- package/src/exceptions/index.ts +1 -0
- package/src/exceptions/invalid-decryption-key.expection.ts +7 -0
- package/src/index.ts +4 -3
- package/src/rsa/index.ts +3 -0
- package/src/rsa/key-pair.ts +55 -0
- package/src/rsa/private-key.ts +82 -0
- package/src/rsa/public-key.ts +110 -0
- package/src/{rsa.test.ts → rsa/rsa.test.ts} +52 -31
- package/dist/rsa.base-key.d.ts +0 -17
- package/dist/rsa.base-key.d.ts.map +0 -1
- package/dist/rsa.base-key.js +0 -57
- package/dist/rsa.base-key.js.map +0 -1
- package/dist/rsa.key-pair.d.ts +0 -19
- package/dist/rsa.key-pair.d.ts.map +0 -1
- package/dist/rsa.key-pair.js +0 -46
- package/dist/rsa.key-pair.js.map +0 -1
- package/dist/rsa.private-key.d.ts +0 -13
- package/dist/rsa.private-key.d.ts.map +0 -1
- package/dist/rsa.private-key.js +0 -38
- package/dist/rsa.private-key.js.map +0 -1
- package/dist/rsa.public-key.d.ts +0 -13
- package/dist/rsa.public-key.d.ts.map +0 -1
- package/dist/rsa.public-key.js.map +0 -1
- package/dist/rsa.test.d.ts.map +0 -1
- package/dist/rsa.test.js.map +0 -1
- package/src/rsa.base-key.ts +0 -78
- package/src/rsa.key-pair.ts +0 -65
- package/src/rsa.private-key.ts +0 -50
- package/src/rsa.public-key.ts +0 -65
|
@@ -6,19 +6,28 @@ import {
|
|
|
6
6
|
Test,
|
|
7
7
|
} from '@hg-ts/tests';
|
|
8
8
|
import { z } from '@hg-ts/validation';
|
|
9
|
-
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
9
|
+
import forge from 'node-forge';
|
|
10
|
+
import { InvalidDecryptionKeyExpection } from '../exceptions/index.js';
|
|
11
|
+
import { RsaKeyPair } from './key-pair.js';
|
|
12
|
+
import { RsaPrivateKey } from './private-key.js';
|
|
13
|
+
import { RsaPublicKey } from './public-key.js';
|
|
13
14
|
|
|
14
15
|
@Describe()
|
|
15
16
|
export class RsaTest extends Suite {
|
|
17
|
+
@Test()
|
|
18
|
+
public async nativeKey(): Promise<void> {
|
|
19
|
+
const { privateKeyInstance, privateKey, publicKeyInstance, publicKey } = new RsaKeyPair({ bits: 786 });
|
|
20
|
+
|
|
21
|
+
expect(privateKey).toBe(forge.pki.privateKeyToPem(privateKeyInstance.nativeKey));
|
|
22
|
+
expect(publicKey).toBe(forge.pki.publicKeyToPem(publicKeyInstance.nativeKey));
|
|
23
|
+
}
|
|
24
|
+
|
|
16
25
|
@Test()
|
|
17
26
|
public async keyPairFromPrivateKey(): Promise<void> {
|
|
18
|
-
const { privateKey, publicKey } = new
|
|
19
|
-
const key =
|
|
27
|
+
const { privateKey, publicKey } = new RsaKeyPair();
|
|
28
|
+
const key = RsaPrivateKey.fromString(privateKey);
|
|
20
29
|
|
|
21
|
-
const keyPairFromKey = new
|
|
30
|
+
const keyPairFromKey = new RsaKeyPair({ privateKey: key });
|
|
22
31
|
|
|
23
32
|
expect(keyPairFromKey.privateKey).toBe(privateKey);
|
|
24
33
|
expect(keyPairFromKey.publicKey).toBe(publicKey);
|
|
@@ -26,9 +35,9 @@ export class RsaTest extends Suite {
|
|
|
26
35
|
|
|
27
36
|
@Test()
|
|
28
37
|
public async keyPairFromPrivateKeyString(): Promise<void> {
|
|
29
|
-
const { privateKey, publicKey } = new
|
|
38
|
+
const { privateKey, publicKey } = new RsaKeyPair({ bits: 786 });
|
|
30
39
|
|
|
31
|
-
const keyPairFromKey = new
|
|
40
|
+
const keyPairFromKey = new RsaKeyPair({ privateKey });
|
|
32
41
|
|
|
33
42
|
expect(keyPairFromKey.privateKey).toBe(privateKey);
|
|
34
43
|
expect(keyPairFromKey.publicKey).toBe(publicKey);
|
|
@@ -36,8 +45,8 @@ export class RsaTest extends Suite {
|
|
|
36
45
|
|
|
37
46
|
@Test()
|
|
38
47
|
public async keyPairFromPrivateKeyEncryption(): Promise<void> {
|
|
39
|
-
const { privateKey } = new
|
|
40
|
-
const key =
|
|
48
|
+
const { privateKey } = new RsaKeyPair({ bits: 786 });
|
|
49
|
+
const key = RsaPrivateKey.fromString(privateKey);
|
|
41
50
|
|
|
42
51
|
const value = Math.random().toString();
|
|
43
52
|
const encrypted = key.toPublicKey().encrypt(value);
|
|
@@ -48,7 +57,7 @@ export class RsaTest extends Suite {
|
|
|
48
57
|
|
|
49
58
|
@Test()
|
|
50
59
|
public async signature(): Promise<void> {
|
|
51
|
-
const rsa = new
|
|
60
|
+
const rsa = new RsaKeyPair({ bits: 786 });
|
|
52
61
|
const value = Math.random().toString();
|
|
53
62
|
|
|
54
63
|
const signature = rsa.sign(value);
|
|
@@ -57,7 +66,7 @@ export class RsaTest extends Suite {
|
|
|
57
66
|
|
|
58
67
|
@Test()
|
|
59
68
|
public async signatureBuffer(): Promise<void> {
|
|
60
|
-
const rsa = new
|
|
69
|
+
const rsa = new RsaKeyPair({ bits: 786 });
|
|
61
70
|
const value = Math.random().toString();
|
|
62
71
|
|
|
63
72
|
const signature = rsa.sign(value);
|
|
@@ -66,16 +75,28 @@ export class RsaTest extends Suite {
|
|
|
66
75
|
|
|
67
76
|
@Test()
|
|
68
77
|
public async encryption(): Promise<void> {
|
|
69
|
-
const rsa = new
|
|
78
|
+
const rsa = new RsaKeyPair({ bits: 786 });
|
|
70
79
|
const value = Math.random().toString();
|
|
71
80
|
|
|
72
81
|
const encrypted = rsa.encrypt(value);
|
|
73
82
|
expect(rsa.decrypt(encrypted.toString('hex'))).toBe(value);
|
|
74
83
|
}
|
|
75
84
|
|
|
85
|
+
@Test()
|
|
86
|
+
@ExpectException(InvalidDecryptionKeyExpection)
|
|
87
|
+
public async encryptionFailsForAnotherRecipient(): Promise<void> {
|
|
88
|
+
const rsa = new RsaKeyPair({ bits: 786 });
|
|
89
|
+
const anotherRecipient = new RsaKeyPair({ bits: 786 });
|
|
90
|
+
const value = Math.random().toString();
|
|
91
|
+
|
|
92
|
+
const encrypted = rsa.encrypt(value);
|
|
93
|
+
|
|
94
|
+
anotherRecipient.decrypt(encrypted.toString('hex'));
|
|
95
|
+
}
|
|
96
|
+
|
|
76
97
|
@Test()
|
|
77
98
|
public async encryptionRu(): Promise<void> {
|
|
78
|
-
const rsa = new
|
|
99
|
+
const rsa = new RsaKeyPair({ bits: 786 });
|
|
79
100
|
const value = 'Тестовый текст';
|
|
80
101
|
|
|
81
102
|
const encrypted = rsa.encrypt(value);
|
|
@@ -84,7 +105,7 @@ export class RsaTest extends Suite {
|
|
|
84
105
|
|
|
85
106
|
@Test()
|
|
86
107
|
public async encryptionHex(): Promise<void> {
|
|
87
|
-
const rsa = new
|
|
108
|
+
const rsa = new RsaKeyPair({ bits: 786 });
|
|
88
109
|
const value = Math.floor(Math.random() * 10000).toString(16);
|
|
89
110
|
|
|
90
111
|
const encrypted = rsa.encrypt(value);
|
|
@@ -93,7 +114,7 @@ export class RsaTest extends Suite {
|
|
|
93
114
|
|
|
94
115
|
@Test()
|
|
95
116
|
public async encryptionEn(): Promise<void> {
|
|
96
|
-
const rsa = new
|
|
117
|
+
const rsa = new RsaKeyPair({ bits: 786 });
|
|
97
118
|
const value = 'Test text';
|
|
98
119
|
|
|
99
120
|
const encrypted = rsa.encrypt(value);
|
|
@@ -102,7 +123,7 @@ export class RsaTest extends Suite {
|
|
|
102
123
|
|
|
103
124
|
@Test()
|
|
104
125
|
public async encryptionBuffer(): Promise<void> {
|
|
105
|
-
const rsa = new
|
|
126
|
+
const rsa = new RsaKeyPair({ bits: 786 });
|
|
106
127
|
const value = Buffer.from(Math.random().toString(), 'utf-8');
|
|
107
128
|
|
|
108
129
|
const encrypted = rsa.encrypt(value);
|
|
@@ -111,8 +132,8 @@ export class RsaTest extends Suite {
|
|
|
111
132
|
|
|
112
133
|
@Test()
|
|
113
134
|
public async longMessageEncryption(): Promise<void> {
|
|
114
|
-
const rsa = new
|
|
115
|
-
const rsaToTest = new
|
|
135
|
+
const rsa = new RsaKeyPair({ bits: 786 });
|
|
136
|
+
const rsaToTest = new RsaKeyPair({ bits: 786 });
|
|
116
137
|
const value = rsaToTest.publicKey;
|
|
117
138
|
|
|
118
139
|
const encrypted = rsa.encrypt(value);
|
|
@@ -121,7 +142,7 @@ export class RsaTest extends Suite {
|
|
|
121
142
|
|
|
122
143
|
@Test()
|
|
123
144
|
public async longMessageSignature(): Promise<void> {
|
|
124
|
-
const rsa = new
|
|
145
|
+
const rsa = new RsaKeyPair({ bits: 786 });
|
|
125
146
|
const value = rsa.publicKey;
|
|
126
147
|
|
|
127
148
|
const signature = rsa.sign(value);
|
|
@@ -131,8 +152,8 @@ export class RsaTest extends Suite {
|
|
|
131
152
|
@Test()
|
|
132
153
|
public async seeded(): Promise<void> {
|
|
133
154
|
const seed = Math.random().toString();
|
|
134
|
-
const rsa1 = new
|
|
135
|
-
const rsa2 = new
|
|
155
|
+
const rsa1 = new RsaKeyPair({ seed, bits: 786 });
|
|
156
|
+
const rsa2 = new RsaKeyPair({ seed, bits: 786 });
|
|
136
157
|
|
|
137
158
|
expect(rsa1.privateKey).toBe(rsa2.privateKey);
|
|
138
159
|
expect(rsa1.publicKey).toBe(rsa2.publicKey);
|
|
@@ -140,32 +161,32 @@ export class RsaTest extends Suite {
|
|
|
140
161
|
|
|
141
162
|
@Test()
|
|
142
163
|
public async privateKeyFromString(): Promise<void> {
|
|
143
|
-
const rsa = new
|
|
144
|
-
const rsaFromString =
|
|
164
|
+
const rsa = new RsaKeyPair({ bits: 786 });
|
|
165
|
+
const rsaFromString = RsaPrivateKey.fromString(rsa.privateKey);
|
|
145
166
|
|
|
146
167
|
expect(rsaFromString.toString()).toBe(rsa.privateKey.toString());
|
|
147
168
|
}
|
|
148
169
|
|
|
149
170
|
@Test()
|
|
150
171
|
public async publicKeyFromString(): Promise<void> {
|
|
151
|
-
const rsa = new
|
|
152
|
-
const rsaFromString =
|
|
172
|
+
const rsa = new RsaKeyPair({ bits: 786 });
|
|
173
|
+
const rsaFromString = RsaPublicKey.fromString(rsa.publicKey);
|
|
153
174
|
|
|
154
175
|
expect(rsaFromString.toString()).toBe(rsa.publicKey.toString());
|
|
155
176
|
}
|
|
156
177
|
|
|
157
178
|
@Test()
|
|
158
179
|
public async publicKeyValidationsValid(): Promise<void> {
|
|
159
|
-
const rsa = new
|
|
180
|
+
const rsa = new RsaKeyPair({ bits: 786 });
|
|
160
181
|
|
|
161
|
-
|
|
182
|
+
RsaPublicKey.schema.parse(rsa.publicKey.toString());
|
|
162
183
|
}
|
|
163
184
|
|
|
164
185
|
@Test()
|
|
165
186
|
@ExpectException(z.ZodError)
|
|
166
187
|
public async publicKeyValidationsFails(): Promise<void> {
|
|
167
|
-
// Тут убран
|
|
168
|
-
|
|
188
|
+
// Тут убран один случайный символ из ключа
|
|
189
|
+
RsaPublicKey.schema.parse(`-----BEGIN PUBLIC KEY-----
|
|
169
190
|
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALnfPJr6J2UXwvZhbPWolBw4UJHAEMd
|
|
170
191
|
/FvIyIYADhT/k+2TIFixs4pxM5VaGMP7Tny+5WAouv9ulh4tACPxKoMCAwEAAQ==
|
|
171
192
|
-----END PUBLIC KEY-----`);
|
package/dist/rsa.base-key.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
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 | Buffer): string[];
|
|
7
|
-
protected prepareToDecrypt(data: string | Buffer): string[];
|
|
8
|
-
protected formatDecryptedInputToBinary(data: string | Buffer): string;
|
|
9
|
-
protected formatDecryptedOutput(data: string): string;
|
|
10
|
-
protected formatSignature(data: string | Buffer): string;
|
|
11
|
-
protected formatEncrypted(data: string[]): Buffer;
|
|
12
|
-
protected getMd(): forge.md.MessageDigest;
|
|
13
|
-
protected get maxLength(): number;
|
|
14
|
-
protected get keyLength(): number;
|
|
15
|
-
private splitBinaryInput;
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=rsa.base-key.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import forge from 'node-forge';
|
|
2
|
-
export class RSABaseKey {
|
|
3
|
-
mdDigestLength;
|
|
4
|
-
constructor() {
|
|
5
|
-
this.mdDigestLength = this.getMd().digestLength;
|
|
6
|
-
}
|
|
7
|
-
prepareToEncrypt(data) {
|
|
8
|
-
const input = this.formatDecryptedInputToBinary(data);
|
|
9
|
-
return this.splitBinaryInput(input, this.maxLength);
|
|
10
|
-
}
|
|
11
|
-
prepareToDecrypt(data) {
|
|
12
|
-
const encryptedLength = this.keyLength * 2;
|
|
13
|
-
const encrypted = typeof data === 'string' ? data : data.toString('hex');
|
|
14
|
-
return this.splitBinaryInput(encrypted, encryptedLength)
|
|
15
|
-
.map(chunk => Buffer
|
|
16
|
-
.from(chunk, 'hex')
|
|
17
|
-
.toString('binary'));
|
|
18
|
-
}
|
|
19
|
-
formatDecryptedInputToBinary(data) {
|
|
20
|
-
if (typeof data === 'string') {
|
|
21
|
-
return forge.util.encodeUtf8(data);
|
|
22
|
-
}
|
|
23
|
-
return Buffer.from(data).toString('hex');
|
|
24
|
-
}
|
|
25
|
-
formatDecryptedOutput(data) {
|
|
26
|
-
return forge.util.decodeUtf8(data);
|
|
27
|
-
}
|
|
28
|
-
formatSignature(data) {
|
|
29
|
-
if (typeof data === 'string') {
|
|
30
|
-
return data;
|
|
31
|
-
}
|
|
32
|
-
return Buffer.from(data).toString('binary');
|
|
33
|
-
}
|
|
34
|
-
formatEncrypted(data) {
|
|
35
|
-
const chunks = data.map(chunk => Buffer.from(chunk, 'binary').toString('hex'));
|
|
36
|
-
return Buffer.from(chunks.join(''), 'hex');
|
|
37
|
-
}
|
|
38
|
-
getMd() {
|
|
39
|
-
return forge.md.sha256.create();
|
|
40
|
-
}
|
|
41
|
-
get maxLength() {
|
|
42
|
-
return this.keyLength - (this.mdDigestLength * 2) - 2;
|
|
43
|
-
}
|
|
44
|
-
get keyLength() {
|
|
45
|
-
return Math.ceil(this.key.n.bitLength() / 8);
|
|
46
|
-
}
|
|
47
|
-
splitBinaryInput(value, length) {
|
|
48
|
-
const chunks = [];
|
|
49
|
-
let index = 0;
|
|
50
|
-
while (index < value.length) {
|
|
51
|
-
chunks.push(value.slice(index, index + length));
|
|
52
|
-
index += length;
|
|
53
|
-
}
|
|
54
|
-
return chunks;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=rsa.base-key.js.map
|
package/dist/rsa.base-key.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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.key-pair.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { RSAPrivateKey } from './rsa.private-key.js';
|
|
2
|
-
export type RSAKeyPairOptions = {
|
|
3
|
-
seed?: string;
|
|
4
|
-
bits?: number;
|
|
5
|
-
privateKey?: RSAPrivateKey | string;
|
|
6
|
-
};
|
|
7
|
-
export declare class RSAKeyPair {
|
|
8
|
-
private readonly publicRsaKey;
|
|
9
|
-
private readonly privateRsaKey;
|
|
10
|
-
constructor(options?: RSAKeyPairOptions);
|
|
11
|
-
encrypt(value: string | Buffer): Buffer;
|
|
12
|
-
decrypt(value: string | Buffer): string;
|
|
13
|
-
sign(value: string): Buffer;
|
|
14
|
-
verify(signature: string | Buffer, value: string): boolean;
|
|
15
|
-
get publicKey(): string;
|
|
16
|
-
get privateKey(): string;
|
|
17
|
-
private generateKeys;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=rsa.key-pair.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/rsa.key-pair.js
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import forge from 'node-forge';
|
|
2
|
-
import { RSAPrivateKey } from './rsa.private-key.js';
|
|
3
|
-
import { RSAPublicKey } from './rsa.public-key.js';
|
|
4
|
-
export class RSAKeyPair {
|
|
5
|
-
publicRsaKey;
|
|
6
|
-
privateRsaKey;
|
|
7
|
-
constructor(options = {}) {
|
|
8
|
-
const keyPair = this.generateKeys(options);
|
|
9
|
-
this.privateRsaKey = new RSAPrivateKey(keyPair.privateKey);
|
|
10
|
-
this.publicRsaKey = new RSAPublicKey(keyPair.publicKey);
|
|
11
|
-
}
|
|
12
|
-
encrypt(value) {
|
|
13
|
-
return this.publicRsaKey.encrypt(value);
|
|
14
|
-
}
|
|
15
|
-
decrypt(value) {
|
|
16
|
-
return this.privateRsaKey.decrypt(value);
|
|
17
|
-
}
|
|
18
|
-
sign(value) {
|
|
19
|
-
return this.privateRsaKey.sign(value);
|
|
20
|
-
}
|
|
21
|
-
verify(signature, value) {
|
|
22
|
-
return this.publicRsaKey.verify(signature, value);
|
|
23
|
-
}
|
|
24
|
-
get publicKey() {
|
|
25
|
-
return this.publicRsaKey.toString();
|
|
26
|
-
}
|
|
27
|
-
get privateKey() {
|
|
28
|
-
return this.privateRsaKey.toString();
|
|
29
|
-
}
|
|
30
|
-
generateKeys(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
|
-
}
|
|
37
|
-
if (!seed) {
|
|
38
|
-
return forge.pki.rsa.generateKeyPair({ bits });
|
|
39
|
-
}
|
|
40
|
-
const prng = forge.random.createInstance();
|
|
41
|
-
prng.seedFileSync = () => seed;
|
|
42
|
-
prng.seedFile = () => seed;
|
|
43
|
-
return forge.pki.rsa.generateKeyPair({ prng, bits });
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=rsa.key-pair.js.map
|
package/dist/rsa.key-pair.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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,13 +0,0 @@
|
|
|
1
|
-
import forge from 'node-forge';
|
|
2
|
-
import { RSABaseKey } from './rsa.base-key.js';
|
|
3
|
-
import { RSAPublicKey } from './rsa.public-key.js';
|
|
4
|
-
export declare class RSAPrivateKey extends RSABaseKey {
|
|
5
|
-
protected readonly key: forge.pki.rsa.PrivateKey;
|
|
6
|
-
constructor(key: forge.pki.rsa.PrivateKey);
|
|
7
|
-
toPublicKey(): RSAPublicKey;
|
|
8
|
-
decrypt(encrypted: string | Buffer): string;
|
|
9
|
-
sign(value: string): Buffer;
|
|
10
|
-
toString(): string;
|
|
11
|
-
static fromString(pemKey: string): RSAPrivateKey;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=rsa.private-key.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/rsa.private-key.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import forge from 'node-forge';
|
|
2
|
-
import { RSABaseKey } from './rsa.base-key.js';
|
|
3
|
-
import { RSAPublicKey } from './rsa.public-key.js';
|
|
4
|
-
export class RSAPrivateKey extends RSABaseKey {
|
|
5
|
-
key;
|
|
6
|
-
constructor(key) {
|
|
7
|
-
super();
|
|
8
|
-
this.key = key;
|
|
9
|
-
}
|
|
10
|
-
toPublicKey() {
|
|
11
|
-
return new RSAPublicKey(forge.pki.rsa.setPublicKey(this.key.n, this.key.e));
|
|
12
|
-
}
|
|
13
|
-
decrypt(encrypted) {
|
|
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 }));
|
|
17
|
-
return this.formatDecryptedOutput(decryptedChunks.join(''));
|
|
18
|
-
}
|
|
19
|
-
sign(value) {
|
|
20
|
-
const hash = this.getMd();
|
|
21
|
-
hash.update(value, 'utf8');
|
|
22
|
-
const pss = forge.pss.create({
|
|
23
|
-
md: this.getMd(),
|
|
24
|
-
mgf: forge.mgf.mgf1.create(this.getMd()),
|
|
25
|
-
saltLength: 20,
|
|
26
|
-
});
|
|
27
|
-
const signedId = this.key.sign(hash, pss);
|
|
28
|
-
return Buffer.from(signedId, 'binary');
|
|
29
|
-
}
|
|
30
|
-
toString() {
|
|
31
|
-
return forge.pki.privateKeyToPem(this.key);
|
|
32
|
-
}
|
|
33
|
-
static fromString(pemKey) {
|
|
34
|
-
const key = forge.pki.privateKeyFromPem(pemKey);
|
|
35
|
-
return new RSAPrivateKey(key);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=rsa.private-key.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { z } from '@hg-ts/validation';
|
|
2
|
-
import forge from 'node-forge';
|
|
3
|
-
import { RSABaseKey } from './rsa.base-key.js';
|
|
4
|
-
export declare class RSAPublicKey extends RSABaseKey {
|
|
5
|
-
protected readonly key: forge.pki.rsa.PublicKey;
|
|
6
|
-
static schema: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodString>;
|
|
7
|
-
constructor(key: forge.pki.rsa.PublicKey);
|
|
8
|
-
encrypt(value: string | Buffer): Buffer;
|
|
9
|
-
verify(signature: string | Buffer, value: string): boolean;
|
|
10
|
-
toString(): string;
|
|
11
|
-
static fromString(pemKey: string): RSAPublicKey;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=rsa.public-key.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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,mBAAmB,CAAC;AAmB/C,qBAAa,YAAa,SAAQ,UAAU;IAC3C,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC;IAEhD,OAAc,MAAM,iFAAU;gBAEX,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS;IAKxC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IASvC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAejD,QAAQ,IAAI,MAAM;WAIpB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;CAKtD"}
|
|
@@ -1 +0,0 @@
|
|
|
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.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rsa.test.js","sourceRoot":"","sources":["../src/rsa.test.ts"],"names":[],"mappings":"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"}
|
package/src/rsa.base-key.ts
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import forge from 'node-forge';
|
|
2
|
-
|
|
3
|
-
export abstract class RSABaseKey {
|
|
4
|
-
private readonly mdDigestLength: number;
|
|
5
|
-
|
|
6
|
-
protected abstract key: forge.pki.rsa.PrivateKey | forge.pki.rsa.PublicKey;
|
|
7
|
-
|
|
8
|
-
public constructor() {
|
|
9
|
-
this.mdDigestLength = this.getMd().digestLength;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
protected prepareToEncrypt(data: string | Buffer): string[] {
|
|
13
|
-
const input = this.formatDecryptedInputToBinary(data);
|
|
14
|
-
|
|
15
|
-
return this.splitBinaryInput(input, this.maxLength);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
protected prepareToDecrypt(data: string | Buffer): string[] {
|
|
19
|
-
const encryptedLength = this.keyLength * 2;
|
|
20
|
-
const encrypted = typeof data === 'string' ? data : data.toString('hex');
|
|
21
|
-
|
|
22
|
-
return this.splitBinaryInput(encrypted, encryptedLength)
|
|
23
|
-
.map(chunk => Buffer
|
|
24
|
-
.from(chunk, 'hex')
|
|
25
|
-
.toString('binary'),
|
|
26
|
-
);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
protected formatDecryptedInputToBinary(data: string | Buffer): string {
|
|
30
|
-
if (typeof data === 'string') {
|
|
31
|
-
return forge.util.encodeUtf8(data);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return Buffer.from(data).toString('hex');
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
protected formatDecryptedOutput(data: string): string {
|
|
38
|
-
return forge.util.decodeUtf8(data);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
protected formatSignature(data: string | Buffer): string {
|
|
42
|
-
if (typeof data === 'string') {
|
|
43
|
-
return data;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return Buffer.from(data).toString('binary');
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
protected formatEncrypted(data: string[]): Buffer {
|
|
50
|
-
const chunks = data.map(chunk => Buffer.from(chunk, 'binary').toString('hex'));
|
|
51
|
-
|
|
52
|
-
return Buffer.from(chunks.join(''), 'hex');
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
protected getMd(): forge.md.MessageDigest {
|
|
56
|
-
return forge.md.sha256.create();
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
protected get maxLength(): number {
|
|
60
|
-
return this.keyLength - (this.mdDigestLength * 2) - 2;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
protected get keyLength(): number {
|
|
64
|
-
return Math.ceil(this.key.n.bitLength() / 8);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
private splitBinaryInput(value: string, length: number): string[] {
|
|
68
|
-
const chunks: string[] = [];
|
|
69
|
-
let index = 0;
|
|
70
|
-
|
|
71
|
-
while (index < value.length) {
|
|
72
|
-
chunks.push(value.slice(index, index + length));
|
|
73
|
-
index += length;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
return chunks;
|
|
77
|
-
}
|
|
78
|
-
}
|
package/src/rsa.key-pair.ts
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import forge from 'node-forge';
|
|
2
|
-
import { RSAPrivateKey } from './rsa.private-key.js';
|
|
3
|
-
import { RSAPublicKey } from './rsa.public-key.js';
|
|
4
|
-
|
|
5
|
-
export type RSAKeyPairOptions = {
|
|
6
|
-
seed?: string;
|
|
7
|
-
bits?: number;
|
|
8
|
-
privateKey?: RSAPrivateKey | string;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export class RSAKeyPair {
|
|
12
|
-
private readonly publicRsaKey: RSAPublicKey;
|
|
13
|
-
private readonly privateRsaKey: RSAPrivateKey;
|
|
14
|
-
|
|
15
|
-
public constructor(options: RSAKeyPairOptions = {}) {
|
|
16
|
-
const keyPair = this.generateKeys(options);
|
|
17
|
-
|
|
18
|
-
this.privateRsaKey = new RSAPrivateKey(keyPair.privateKey);
|
|
19
|
-
this.publicRsaKey = new RSAPublicKey(keyPair.publicKey);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
public encrypt(value: string | Buffer): Buffer {
|
|
23
|
-
return this.publicRsaKey.encrypt(value);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
public decrypt(value: string | Buffer): string {
|
|
27
|
-
return this.privateRsaKey.decrypt(value);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
public sign(value: string): Buffer {
|
|
31
|
-
return this.privateRsaKey.sign(value);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
public verify(signature: string | Buffer, value: string): boolean {
|
|
35
|
-
return this.publicRsaKey.verify(signature, value);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
public get publicKey(): string {
|
|
39
|
-
return this.publicRsaKey.toString();
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
public get privateKey(): string {
|
|
43
|
-
return this.privateRsaKey.toString();
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
private generateKeys(options: RSAKeyPairOptions): forge.pki.rsa.KeyPair {
|
|
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
|
-
}
|
|
55
|
-
if (!seed) {
|
|
56
|
-
return forge.pki.rsa.generateKeyPair({ bits });
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
const prng = forge.random.createInstance();
|
|
60
|
-
prng.seedFileSync = (): string => seed;
|
|
61
|
-
prng.seedFile = (): string => seed;
|
|
62
|
-
|
|
63
|
-
return forge.pki.rsa.generateKeyPair({ prng, bits });
|
|
64
|
-
}
|
|
65
|
-
}
|