@hg-ts/rsa 0.7.24 → 0.7.26
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 +85 -0
- package/dist/rsa/public-key.js.map +1 -0
- package/dist/{rsa.test.d.ts → rsa/rsa.test.d.ts} +6 -0
- package/dist/rsa/rsa.test.d.ts.map +1 -0
- package/dist/{rsa.test.js → rsa/rsa.test.js} +101 -24
- 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/rsa.test.ts +194 -0
- package/dist/rsa.base-key.d.ts +0 -16
- package/dist/rsa.base-key.d.ts.map +0 -1
- package/dist/rsa.base-key.js +0 -54
- 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 +0 -52
- 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 -75
- package/src/rsa.key-pair.ts +0 -65
- package/src/rsa.private-key.ts +0 -50
- package/src/rsa.public-key.ts +0 -65
- package/src/rsa.test.ts +0 -134
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { NotImplementedException } from '@hg-ts/exception';
|
|
3
|
+
import { Describe, expect, ExpectException, Suite, Test, } from '@hg-ts/tests';
|
|
4
|
+
import { z } from '@hg-ts/validation';
|
|
5
|
+
import sodium from 'libsodium-wrappers';
|
|
6
|
+
import { InvalidDecryptionKeyExpection } from '../exceptions/index.js';
|
|
7
|
+
import { X25519KeyPair } from './key-pair.js';
|
|
8
|
+
import { X25519PrivateKey } from './private-key.js';
|
|
9
|
+
import { X25519PublicKey } from './public-key.js';
|
|
10
|
+
let X25519Test = class X25519Test extends Suite {
|
|
11
|
+
async encryption() {
|
|
12
|
+
const bob = new X25519KeyPair();
|
|
13
|
+
const alice = new X25519KeyPair();
|
|
14
|
+
const value = Math.random().toString();
|
|
15
|
+
const encrypted = alice.encrypt(value, bob.publicKeyInstance);
|
|
16
|
+
expect(bob.decrypt(encrypted.toString('base64'), alice.publicKeyInstance)).toBe(value);
|
|
17
|
+
}
|
|
18
|
+
async duplicateEncryptionDifferences() {
|
|
19
|
+
const alice = new X25519KeyPair();
|
|
20
|
+
const bob = new X25519KeyPair();
|
|
21
|
+
const value = Math.random().toString();
|
|
22
|
+
const encryptedA = alice.publicKeyInstance.encrypt(value, bob.privateKeyInstance);
|
|
23
|
+
const encryptedB = alice.publicKeyInstance.encrypt(value, bob.privateKeyInstance);
|
|
24
|
+
expect(encryptedA).not.toMatchObject(encryptedB);
|
|
25
|
+
expect(alice.decrypt(encryptedA, bob.publicKeyInstance)).toBe(value);
|
|
26
|
+
expect(alice.decrypt(encryptedB, bob.publicKeyInstance)).toBe(value);
|
|
27
|
+
}
|
|
28
|
+
async encryptionFailsForAnotherRecipient() {
|
|
29
|
+
const bob = new X25519KeyPair();
|
|
30
|
+
const alice = new X25519KeyPair();
|
|
31
|
+
const anotherRecipient = new X25519KeyPair();
|
|
32
|
+
const value = Math.random().toString();
|
|
33
|
+
const encrypted = alice.encrypt(value, bob.publicKeyInstance);
|
|
34
|
+
anotherRecipient.decrypt(encrypted, alice.publicKeyInstance);
|
|
35
|
+
}
|
|
36
|
+
async encryptionBuffer() {
|
|
37
|
+
const bob = new X25519KeyPair();
|
|
38
|
+
const alice = new X25519KeyPair();
|
|
39
|
+
const value = Buffer.from(Math.random().toString(), 'utf8');
|
|
40
|
+
const encrypted = alice.encrypt(value, bob.publicKeyInstance);
|
|
41
|
+
expect(Buffer.from(bob.decrypt(encrypted, alice.publicKeyInstance))).toMatchObject(value);
|
|
42
|
+
}
|
|
43
|
+
async signature() {
|
|
44
|
+
const x25519 = new X25519KeyPair();
|
|
45
|
+
const value = Math.random().toString();
|
|
46
|
+
x25519.sign(value);
|
|
47
|
+
}
|
|
48
|
+
async verify() {
|
|
49
|
+
const x25519 = new X25519KeyPair();
|
|
50
|
+
const value = Math.random().toString();
|
|
51
|
+
x25519.verify(Buffer.from(value), value);
|
|
52
|
+
}
|
|
53
|
+
async keyPairFromPrivateKeyString() {
|
|
54
|
+
const x25519 = new X25519KeyPair();
|
|
55
|
+
const keyPairFromKey = new X25519KeyPair({ privateKey: x25519.privateKey });
|
|
56
|
+
expect(keyPairFromKey.privateKey).toBe(x25519.privateKey);
|
|
57
|
+
expect(keyPairFromKey.publicKey).toBe(x25519.publicKey);
|
|
58
|
+
}
|
|
59
|
+
async seededWithNonScalarBytesLength() {
|
|
60
|
+
const seed = Math.random().toString();
|
|
61
|
+
const x25519A = new X25519KeyPair({ seed });
|
|
62
|
+
const x25519B = new X25519KeyPair({ seed });
|
|
63
|
+
expect(Buffer.from(seed, 'utf8').length !== sodium.crypto_scalarmult_SCALARBYTES).toBeTruthy();
|
|
64
|
+
expect(x25519A.privateKey).toBe(x25519B.privateKey);
|
|
65
|
+
expect(x25519A.publicKey).toBe(x25519B.publicKey);
|
|
66
|
+
}
|
|
67
|
+
async seededWithScalarBytesLength() {
|
|
68
|
+
const seed = 'a'.repeat(sodium.crypto_scalarmult_SCALARBYTES);
|
|
69
|
+
const x25519A = new X25519KeyPair({ seed });
|
|
70
|
+
const x25519B = new X25519KeyPair({ seed });
|
|
71
|
+
expect(Buffer.from(seed, 'utf8').length).toBe(sodium.crypto_scalarmult_SCALARBYTES);
|
|
72
|
+
expect(x25519A.privateKey).toBe(Buffer.from(seed, 'utf8').toString('base64'));
|
|
73
|
+
expect(x25519A.privateKey).toBe(x25519B.privateKey);
|
|
74
|
+
expect(x25519A.publicKey).toBe(x25519B.publicKey);
|
|
75
|
+
}
|
|
76
|
+
async privateKeyFromString() {
|
|
77
|
+
const x25519 = new X25519KeyPair();
|
|
78
|
+
const privateKey = X25519PrivateKey.fromString(x25519.privateKey);
|
|
79
|
+
expect(privateKey.toString()).toBe(x25519.privateKey);
|
|
80
|
+
}
|
|
81
|
+
async publicKeyFromString() {
|
|
82
|
+
const x25519 = new X25519KeyPair();
|
|
83
|
+
const publicKey = X25519PublicKey.fromString(x25519.publicKey);
|
|
84
|
+
expect(publicKey.toString()).toBe(x25519.publicKey);
|
|
85
|
+
}
|
|
86
|
+
async publicKeyValidationValid() {
|
|
87
|
+
const x25519 = new X25519KeyPair();
|
|
88
|
+
X25519PublicKey.schema.parse(x25519.publicKey);
|
|
89
|
+
}
|
|
90
|
+
async publicKeyValidationFails() {
|
|
91
|
+
X25519PublicKey.schema.parse('{}');
|
|
92
|
+
}
|
|
93
|
+
async setUp() {
|
|
94
|
+
await sodium.ready;
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
__decorate([
|
|
98
|
+
Test(),
|
|
99
|
+
__metadata("design:type", Function),
|
|
100
|
+
__metadata("design:paramtypes", []),
|
|
101
|
+
__metadata("design:returntype", Promise)
|
|
102
|
+
], X25519Test.prototype, "encryption", null);
|
|
103
|
+
__decorate([
|
|
104
|
+
Test(),
|
|
105
|
+
__metadata("design:type", Function),
|
|
106
|
+
__metadata("design:paramtypes", []),
|
|
107
|
+
__metadata("design:returntype", Promise)
|
|
108
|
+
], X25519Test.prototype, "duplicateEncryptionDifferences", null);
|
|
109
|
+
__decorate([
|
|
110
|
+
Test(),
|
|
111
|
+
ExpectException(InvalidDecryptionKeyExpection),
|
|
112
|
+
__metadata("design:type", Function),
|
|
113
|
+
__metadata("design:paramtypes", []),
|
|
114
|
+
__metadata("design:returntype", Promise)
|
|
115
|
+
], X25519Test.prototype, "encryptionFailsForAnotherRecipient", null);
|
|
116
|
+
__decorate([
|
|
117
|
+
Test(),
|
|
118
|
+
__metadata("design:type", Function),
|
|
119
|
+
__metadata("design:paramtypes", []),
|
|
120
|
+
__metadata("design:returntype", Promise)
|
|
121
|
+
], X25519Test.prototype, "encryptionBuffer", null);
|
|
122
|
+
__decorate([
|
|
123
|
+
Test(),
|
|
124
|
+
ExpectException(NotImplementedException),
|
|
125
|
+
__metadata("design:type", Function),
|
|
126
|
+
__metadata("design:paramtypes", []),
|
|
127
|
+
__metadata("design:returntype", Promise)
|
|
128
|
+
], X25519Test.prototype, "signature", null);
|
|
129
|
+
__decorate([
|
|
130
|
+
Test(),
|
|
131
|
+
ExpectException(NotImplementedException),
|
|
132
|
+
__metadata("design:type", Function),
|
|
133
|
+
__metadata("design:paramtypes", []),
|
|
134
|
+
__metadata("design:returntype", Promise)
|
|
135
|
+
], X25519Test.prototype, "verify", null);
|
|
136
|
+
__decorate([
|
|
137
|
+
Test(),
|
|
138
|
+
__metadata("design:type", Function),
|
|
139
|
+
__metadata("design:paramtypes", []),
|
|
140
|
+
__metadata("design:returntype", Promise)
|
|
141
|
+
], X25519Test.prototype, "keyPairFromPrivateKeyString", null);
|
|
142
|
+
__decorate([
|
|
143
|
+
Test(),
|
|
144
|
+
__metadata("design:type", Function),
|
|
145
|
+
__metadata("design:paramtypes", []),
|
|
146
|
+
__metadata("design:returntype", Promise)
|
|
147
|
+
], X25519Test.prototype, "seededWithNonScalarBytesLength", null);
|
|
148
|
+
__decorate([
|
|
149
|
+
Test(),
|
|
150
|
+
__metadata("design:type", Function),
|
|
151
|
+
__metadata("design:paramtypes", []),
|
|
152
|
+
__metadata("design:returntype", Promise)
|
|
153
|
+
], X25519Test.prototype, "seededWithScalarBytesLength", null);
|
|
154
|
+
__decorate([
|
|
155
|
+
Test(),
|
|
156
|
+
__metadata("design:type", Function),
|
|
157
|
+
__metadata("design:paramtypes", []),
|
|
158
|
+
__metadata("design:returntype", Promise)
|
|
159
|
+
], X25519Test.prototype, "privateKeyFromString", null);
|
|
160
|
+
__decorate([
|
|
161
|
+
Test(),
|
|
162
|
+
__metadata("design:type", Function),
|
|
163
|
+
__metadata("design:paramtypes", []),
|
|
164
|
+
__metadata("design:returntype", Promise)
|
|
165
|
+
], X25519Test.prototype, "publicKeyFromString", null);
|
|
166
|
+
__decorate([
|
|
167
|
+
Test(),
|
|
168
|
+
__metadata("design:type", Function),
|
|
169
|
+
__metadata("design:paramtypes", []),
|
|
170
|
+
__metadata("design:returntype", Promise)
|
|
171
|
+
], X25519Test.prototype, "publicKeyValidationValid", null);
|
|
172
|
+
__decorate([
|
|
173
|
+
Test(),
|
|
174
|
+
ExpectException(z.ZodError),
|
|
175
|
+
__metadata("design:type", Function),
|
|
176
|
+
__metadata("design:paramtypes", []),
|
|
177
|
+
__metadata("design:returntype", Promise)
|
|
178
|
+
], X25519Test.prototype, "publicKeyValidationFails", null);
|
|
179
|
+
X25519Test = __decorate([
|
|
180
|
+
Describe()
|
|
181
|
+
], X25519Test);
|
|
182
|
+
export { X25519Test };
|
|
183
|
+
//# sourceMappingURL=x25519.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x25519.test.js","sourceRoot":"","sources":["../../src/X25519/x25519.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/base/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/base/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { BasePrivateKey, StaticPrivateKey } from './private-key.js';
|
|
2
|
+
import { BasePublicKey } from './public-key.js';
|
|
3
|
+
export type NewKeyPairOptions = {
|
|
4
|
+
seed?: string;
|
|
5
|
+
bits?: number;
|
|
6
|
+
};
|
|
7
|
+
export type KeyPairOptions<TPrivateKey extends BasePrivateKey> = NewKeyPairOptions & {
|
|
8
|
+
privateKey?: TPrivateKey | string;
|
|
9
|
+
};
|
|
10
|
+
export type KeyPairResult<TPrivateKey extends BasePrivateKey<unknown, TPublicKey>, TPublicKey extends BasePublicKey> = {
|
|
11
|
+
privateKey: TPrivateKey;
|
|
12
|
+
publicKey: TPublicKey;
|
|
13
|
+
};
|
|
14
|
+
export declare abstract class BaseKeyPair<TPrivateKey extends BasePrivateKey<unknown, TPublicKey>, TPublicKey extends BasePublicKey, TOptions extends KeyPairOptions<TPrivateKey> = KeyPairOptions<TPrivateKey>> {
|
|
15
|
+
readonly privateKeyInstance: TPrivateKey;
|
|
16
|
+
readonly publicKeyInstance: TPublicKey;
|
|
17
|
+
protected constructor(options: TOptions, privateKeyCtor: StaticPrivateKey<TPrivateKey>);
|
|
18
|
+
abstract encrypt(value: string | Buffer, ...additionalArguments: unknown[]): Buffer;
|
|
19
|
+
abstract decrypt(value: string | Buffer, ...additionalArguments: unknown[]): string;
|
|
20
|
+
abstract sign(value: string): Buffer;
|
|
21
|
+
abstract verify(signature: string | Buffer, value: string): boolean;
|
|
22
|
+
get publicKey(): string;
|
|
23
|
+
get privateKey(): string;
|
|
24
|
+
protected generateKeys(options: TOptions, privateKeyCtor: StaticPrivateKey<TPrivateKey>): KeyPairResult<TPrivateKey, TPublicKey>;
|
|
25
|
+
protected abstract generateNewKeys(options: NewKeyPairOptions): KeyPairResult<TPrivateKey, TPublicKey>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=key-pair.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-pair.d.ts","sourceRoot":"","sources":["../../src/base/key-pair.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,cAAc,EACd,gBAAgB,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,iBAAiB,GAAG;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,WAAW,SAAS,cAAc,IAAI,iBAAiB,GAAG;IACpF,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,aAAa,CACxB,WAAW,SAAS,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,EACvD,UAAU,SAAS,aAAa,IAC7B;IACH,UAAU,EAAE,WAAW,CAAC;IACxB,SAAS,EAAE,UAAU,CAAC;CACtB,CAAC;AAEF,8BAAsB,WAAW,CAChC,WAAW,SAAS,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,EACvD,UAAU,SAAS,aAAa,EAChC,QAAQ,SAAS,cAAc,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC;IAE1E,SAAgB,kBAAkB,EAAE,WAAW,CAAC;IAChD,SAAgB,iBAAiB,EAAE,UAAU,CAAC;IAE9C,SAAS,aAAa,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,gBAAgB,CAAC,WAAW,CAAC;aAOtE,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,mBAAmB,EAAE,OAAO,EAAE,GAAG,MAAM;aAE1E,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,mBAAmB,EAAE,OAAO,EAAE,GAAG,MAAM;aAE1E,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;aAE3B,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAE1E,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED,SAAS,CAAC,YAAY,CACrB,OAAO,EAAE,QAAQ,EACjB,cAAc,EAAE,gBAAgB,CAAC,WAAW,CAAC,GAC3C,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC;IAgBzC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC;CACtG"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export class BaseKeyPair {
|
|
2
|
+
privateKeyInstance;
|
|
3
|
+
publicKeyInstance;
|
|
4
|
+
constructor(options, privateKeyCtor) {
|
|
5
|
+
const keyPair = this.generateKeys(options, privateKeyCtor);
|
|
6
|
+
this.privateKeyInstance = keyPair.privateKey;
|
|
7
|
+
this.publicKeyInstance = keyPair.publicKey;
|
|
8
|
+
}
|
|
9
|
+
get publicKey() {
|
|
10
|
+
return this.publicKeyInstance.toString();
|
|
11
|
+
}
|
|
12
|
+
get privateKey() {
|
|
13
|
+
return this.privateKeyInstance.toString();
|
|
14
|
+
}
|
|
15
|
+
generateKeys(options, privateKeyCtor) {
|
|
16
|
+
const { privateKey, ...newKeyOptions } = options;
|
|
17
|
+
if (privateKey) {
|
|
18
|
+
const copyPrivateKey = typeof privateKey === 'string'
|
|
19
|
+
? privateKeyCtor.fromString(privateKey)
|
|
20
|
+
: privateKey;
|
|
21
|
+
return {
|
|
22
|
+
privateKey: copyPrivateKey,
|
|
23
|
+
publicKey: copyPrivateKey.toPublicKey(),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
return this.generateNewKeys(newKeyOptions);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=key-pair.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-pair.js","sourceRoot":"","sources":["../../src/base/key-pair.ts"],"names":[],"mappings":"AAuBA,MAAM,OAAgB,WAAW;IAKhB,kBAAkB,CAAc;IAChC,iBAAiB,CAAa;IAE9C,YAAsB,OAAiB,EAAE,cAA6C;QACrF,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAE3D,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC;QAC7C,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC;IAC5C,CAAC;IAUD,IAAW,SAAS;QACnB,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC;IAED,IAAW,UAAU;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;IAC3C,CAAC;IAES,YAAY,CACrB,OAAiB,EACjB,cAA6C;QAE7C,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC;QAEjD,IAAI,UAAU,EAAE,CAAC;YAChB,MAAM,cAAc,GAAG,OAAO,UAAU,KAAK,QAAQ;gBACpD,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC;gBACvC,CAAC,CAAC,UAAU,CAAC;YAEd,OAAO;gBACN,UAAU,EAAE,cAAc;gBAC1B,SAAS,EAAE,cAAc,CAAC,WAAW,EAAE;aACvC,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,eAAe,CAAC,aAAkC,CAAC,CAAC;IACjE,CAAC;CAED"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key.d.ts","sourceRoot":"","sources":["../../src/base/key.ts"],"names":[],"mappings":"AAAA,8BAAsB,OAAO,CAAC,IAAI,GAAG,OAAO;IAC3C,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;gBAEV,GAAG,EAAE,IAAI;IAI5B,IAAW,SAAS,IAAI,IAAI,CAE3B;aAEe,QAAQ,IAAI,MAAM;CAClC"}
|
package/dist/base/key.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key.js","sourceRoot":"","sources":["../../src/base/key.ts"],"names":[],"mappings":"AAAA,MAAM,OAAgB,OAAO;IACT,GAAG,CAAO;IAE7B,YAAmB,GAAS;QAC3B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,CAAC;IAED,IAAW,SAAS;QACnB,OAAO,IAAI,CAAC,GAAG,CAAC;IACjB,CAAC;CAGD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BaseKey } from './key.js';
|
|
2
|
+
import { BasePublicKey } from './public-key.js';
|
|
3
|
+
export type StaticPrivateKey<T extends BasePrivateKey> = Class<T, any[]> & {
|
|
4
|
+
fromString(privateKey: string): T;
|
|
5
|
+
};
|
|
6
|
+
export declare abstract class BasePrivateKey<TNativeKey = unknown, TPublicKey extends BasePublicKey = BasePublicKey> extends BaseKey<TNativeKey> {
|
|
7
|
+
abstract decrypt(encrypted: string | Buffer, ...additionalArguments: unknown[]): string;
|
|
8
|
+
abstract sign(value: string): Buffer;
|
|
9
|
+
abstract toPublicKey(): TPublicKey;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=private-key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"private-key.d.ts","sourceRoot":"","sources":["../../src/base/private-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,cAAc,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG;IAC1E,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,CAAC;CAClC,CAAA;AAED,8BAAsB,cAAc,CACnC,UAAU,GAAG,OAAO,EACpB,UAAU,SAAS,aAAa,GAAG,aAAa,CAC/C,SAAQ,OAAO,CAAC,UAAU,CAAC;aACZ,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,mBAAmB,EAAE,OAAO,EAAE,GAAG,MAAM;aAE9E,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;aAE3B,WAAW,IAAI,UAAU;CACzC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"private-key.js","sourceRoot":"","sources":["../../src/base/private-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAOnC,MAAM,OAAgB,cAGpB,SAAQ,OAAmB;CAM5B"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { BaseKey } from './key.js';
|
|
2
|
+
export declare abstract class BasePublicKey<TNativeKey = unknown> extends BaseKey<TNativeKey> {
|
|
3
|
+
abstract encrypt(value: string | Buffer, ...additionalArguments: unknown[]): Buffer;
|
|
4
|
+
abstract verify(signature: string | Buffer, value: string): boolean;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=public-key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-key.d.ts","sourceRoot":"","sources":["../../src/base/public-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,8BAAsB,aAAa,CAAC,UAAU,GAAG,OAAO,CAAE,SAAQ,OAAO,CAAC,UAAU,CAAC;aACpE,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,mBAAmB,EAAE,OAAO,EAAE,GAAG,MAAM;aAE1E,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAC1E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-key.js","sourceRoot":"","sources":["../../src/base/public-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,MAAM,OAAgB,aAAoC,SAAQ,OAAmB;CAIpF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/exceptions/index.ts"],"names":[],"mappings":"AAAA,cAAc,uCAAuC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/exceptions/index.ts"],"names":[],"mappings":"AAAA,cAAc,uCAAuC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invalid-decryption-key.expection.d.ts","sourceRoot":"","sources":["../../src/exceptions/invalid-decryption-key.expection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBAAa,6BAA8B,SAAQ,aAAa;;CAI/D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invalid-decryption-key.expection.js","sourceRoot":"","sources":["../../src/exceptions/invalid-decryption-key.expection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,OAAO,6BAA8B,SAAQ,aAAa;IAC/D;QACC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACjC,CAAC;CACD"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './
|
|
3
|
-
export * from './rsa.
|
|
1
|
+
export * from './base/index.js';
|
|
2
|
+
export * from './exceptions/index.js';
|
|
3
|
+
export * from './rsa/index.js';
|
|
4
|
+
export * from './X25519/index.js';
|
|
4
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './
|
|
3
|
-
export * from './rsa.
|
|
1
|
+
export * from './base/index.js';
|
|
2
|
+
export * from './exceptions/index.js';
|
|
3
|
+
export * from './rsa/index.js';
|
|
4
|
+
export * from './X25519/index.js';
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rsa/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rsa/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BaseKeyPair, KeyPairOptions, KeyPairResult, NewKeyPairOptions } from '../base/index.js';
|
|
2
|
+
import { RsaPrivateKey } from './private-key.js';
|
|
3
|
+
import { RsaPublicKey } from './public-key.js';
|
|
4
|
+
export declare class RsaKeyPair extends BaseKeyPair<RsaPrivateKey, RsaPublicKey> {
|
|
5
|
+
constructor(options?: KeyPairOptions<RsaPrivateKey>);
|
|
6
|
+
encrypt(value: string | Buffer): Buffer;
|
|
7
|
+
decrypt(value: string | Buffer): string;
|
|
8
|
+
sign(value: string): Buffer;
|
|
9
|
+
verify(signature: string | Buffer, value: string): boolean;
|
|
10
|
+
protected generateNewKeys(options: NewKeyPairOptions): KeyPairResult<RsaPrivateKey, RsaPublicKey>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=key-pair.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-pair.d.ts","sourceRoot":"","sources":["../../src/rsa/key-pair.ts"],"names":[],"mappings":"AACA,OAAO,EACN,WAAW,EACX,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,qBAAa,UAAW,SAAQ,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC;gBACpD,OAAO,GAAE,cAAc,CAAC,aAAa,CAAM;IAI9C,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;IAI1E,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC;CAuBjG"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import forge from 'node-forge';
|
|
2
|
+
import { BaseKeyPair, } from '../base/index.js';
|
|
3
|
+
import { RsaPrivateKey } from './private-key.js';
|
|
4
|
+
import { RsaPublicKey } from './public-key.js';
|
|
5
|
+
export class RsaKeyPair extends BaseKeyPair {
|
|
6
|
+
constructor(options = {}) {
|
|
7
|
+
super(options, RsaPrivateKey);
|
|
8
|
+
}
|
|
9
|
+
encrypt(value) {
|
|
10
|
+
return this.publicKeyInstance.encrypt(value);
|
|
11
|
+
}
|
|
12
|
+
decrypt(value) {
|
|
13
|
+
return this.privateKeyInstance.decrypt(value);
|
|
14
|
+
}
|
|
15
|
+
sign(value) {
|
|
16
|
+
return this.privateKeyInstance.sign(value);
|
|
17
|
+
}
|
|
18
|
+
verify(signature, value) {
|
|
19
|
+
return this.publicKeyInstance.verify(signature, value);
|
|
20
|
+
}
|
|
21
|
+
generateNewKeys(options) {
|
|
22
|
+
const { seed, bits } = options;
|
|
23
|
+
const keyPairOptions = {};
|
|
24
|
+
if (bits) {
|
|
25
|
+
keyPairOptions.bits = bits;
|
|
26
|
+
}
|
|
27
|
+
if (seed) {
|
|
28
|
+
const prng = forge.random.createInstance();
|
|
29
|
+
prng.seedFileSync = () => seed;
|
|
30
|
+
prng.seedFile = () => seed;
|
|
31
|
+
keyPairOptions.prng = prng;
|
|
32
|
+
}
|
|
33
|
+
const keyPair = forge.pki.rsa.generateKeyPair(keyPairOptions);
|
|
34
|
+
return {
|
|
35
|
+
privateKey: new RsaPrivateKey(keyPair.privateKey),
|
|
36
|
+
publicKey: new RsaPublicKey(keyPair.publicKey),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=key-pair.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-pair.js","sourceRoot":"","sources":["../../src/rsa/key-pair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EACN,WAAW,GAIX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,OAAO,UAAW,SAAQ,WAAwC;IACvE,YAAmB,UAAyC,EAAE;QAC7D,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC/B,CAAC;IAEe,OAAO,CAAC,KAAsB;QAC7C,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAEe,OAAO,CAAC,KAAsB;QAC7C,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAEe,IAAI,CAAC,KAAa;QACjC,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAEe,MAAM,CAAC,SAA0B,EAAE,KAAa;QAC/D,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAES,eAAe,CAAC,OAA0B;QACnD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QAC/B,MAAM,cAAc,GAAyC,EAAE,CAAC;QAEhE,IAAI,IAAI,EAAE,CAAC;YACV,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC;QAC5B,CAAC;QAED,IAAI,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC3C,IAAI,CAAC,YAAY,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC;YACvC,IAAI,CAAC,QAAQ,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC;YAEnC,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC;QAC5B,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QAE9D,OAAO;YACN,UAAU,EAAE,IAAI,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC;YACjD,SAAS,EAAE,IAAI,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC;SAC9C,CAAC;IACH,CAAC;CACD"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import forge from 'node-forge';
|
|
2
|
+
import { BasePrivateKey } from '../base/index.js';
|
|
3
|
+
import { RsaPublicKey } from './public-key.js';
|
|
4
|
+
export declare class RsaPrivateKey extends BasePrivateKey<forge.pki.rsa.PrivateKey, RsaPublicKey> {
|
|
5
|
+
decrypt(encrypted: string | Buffer): string;
|
|
6
|
+
sign(value: string): Buffer;
|
|
7
|
+
toPublicKey(): RsaPublicKey;
|
|
8
|
+
toString(): string;
|
|
9
|
+
static fromString(pemKey: string): RsaPrivateKey;
|
|
10
|
+
private prepareToDecrypt;
|
|
11
|
+
private formatDecryptedOutput;
|
|
12
|
+
private getMd;
|
|
13
|
+
private get keyLength();
|
|
14
|
+
private splitBinaryInput;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=private-key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"private-key.d.ts","sourceRoot":"","sources":["../../src/rsa/private-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,qBAAa,aAAc,SAAQ,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC;IACjF,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAa3C,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAc3B,WAAW,IAAI,YAAY;IAIlB,QAAQ,IAAI,MAAM;WAIpB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;IAMvD,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,KAAK;IAIb,OAAO,KAAK,SAAS,GAEpB;IAED,OAAO,CAAC,gBAAgB;CAWxB"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import forge from 'node-forge';
|
|
2
|
+
import { BasePrivateKey } from '../base/index.js';
|
|
3
|
+
import { InvalidDecryptionKeyExpection } from '../exceptions/index.js';
|
|
4
|
+
import { RsaPublicKey } from './public-key.js';
|
|
5
|
+
export class RsaPrivateKey extends BasePrivateKey {
|
|
6
|
+
decrypt(encrypted) {
|
|
7
|
+
const md = this.getMd();
|
|
8
|
+
const chunks = this.prepareToDecrypt(encrypted);
|
|
9
|
+
try {
|
|
10
|
+
const decryptedChunks = chunks.map(chunk => this.key.decrypt(chunk, 'RSAES-PKCS1-V1_5', { md }));
|
|
11
|
+
return this.formatDecryptedOutput(decryptedChunks.join(''));
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
throw new InvalidDecryptionKeyExpection();
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
sign(value) {
|
|
18
|
+
const hash = this.getMd();
|
|
19
|
+
hash.update(value, 'utf8');
|
|
20
|
+
const pss = forge.pss.create({
|
|
21
|
+
md: this.getMd(),
|
|
22
|
+
mgf: forge.mgf.mgf1.create(this.getMd()),
|
|
23
|
+
saltLength: 20,
|
|
24
|
+
});
|
|
25
|
+
const signedId = this.key.sign(hash, pss);
|
|
26
|
+
return Buffer.from(signedId, 'binary');
|
|
27
|
+
}
|
|
28
|
+
toPublicKey() {
|
|
29
|
+
return new RsaPublicKey(forge.pki.rsa.setPublicKey(this.key.n, this.key.e));
|
|
30
|
+
}
|
|
31
|
+
toString() {
|
|
32
|
+
return forge.pki.privateKeyToPem(this.key);
|
|
33
|
+
}
|
|
34
|
+
static fromString(pemKey) {
|
|
35
|
+
const key = forge.pki.privateKeyFromPem(pemKey);
|
|
36
|
+
return new RsaPrivateKey(key);
|
|
37
|
+
}
|
|
38
|
+
prepareToDecrypt(data) {
|
|
39
|
+
const encryptedLength = this.keyLength * 2;
|
|
40
|
+
const encrypted = typeof data === 'string' ? data : data.toString('hex');
|
|
41
|
+
return this.splitBinaryInput(encrypted, encryptedLength)
|
|
42
|
+
.map(chunk => Buffer
|
|
43
|
+
.from(chunk, 'hex')
|
|
44
|
+
.toString('binary'));
|
|
45
|
+
}
|
|
46
|
+
formatDecryptedOutput(data) {
|
|
47
|
+
return forge.util.decodeUtf8(data);
|
|
48
|
+
}
|
|
49
|
+
getMd() {
|
|
50
|
+
return forge.md.sha256.create();
|
|
51
|
+
}
|
|
52
|
+
get keyLength() {
|
|
53
|
+
return Math.ceil(this.key.n.bitLength() / 8);
|
|
54
|
+
}
|
|
55
|
+
splitBinaryInput(value, length) {
|
|
56
|
+
const chunks = [];
|
|
57
|
+
let index = 0;
|
|
58
|
+
while (index < value.length) {
|
|
59
|
+
chunks.push(value.slice(index, index + length));
|
|
60
|
+
index += length;
|
|
61
|
+
}
|
|
62
|
+
return chunks;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=private-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"private-key.js","sourceRoot":"","sources":["../../src/rsa/private-key.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from '@hg-ts/validation';
|
|
2
|
+
import forge from 'node-forge';
|
|
3
|
+
import { BasePublicKey } from '../base/index.js';
|
|
4
|
+
export declare class RsaPublicKey extends BasePublicKey<forge.pki.rsa.PublicKey> {
|
|
5
|
+
static schema: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodString>;
|
|
6
|
+
encrypt(value: string | Buffer): Buffer;
|
|
7
|
+
verify(signature: string | Buffer, value: string): boolean;
|
|
8
|
+
toString(): string;
|
|
9
|
+
static fromString(pemKey: string): RsaPublicKey;
|
|
10
|
+
private prepareToEncrypt;
|
|
11
|
+
private formatDecryptedInputToBinary;
|
|
12
|
+
private formatSignature;
|
|
13
|
+
private formatEncrypted;
|
|
14
|
+
private getMd;
|
|
15
|
+
private get maxLength();
|
|
16
|
+
private get keyLength();
|
|
17
|
+
private splitBinaryInput;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=public-key.d.ts.map
|