@hg-ts/rsa 0.7.25 → 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.
Files changed (118) hide show
  1. package/README.md +331 -0
  2. package/dist/X25519/index.d.ts +4 -0
  3. package/dist/X25519/index.d.ts.map +1 -0
  4. package/dist/X25519/index.js +4 -0
  5. package/dist/X25519/index.js.map +1 -0
  6. package/dist/X25519/key-pair.d.ts +13 -0
  7. package/dist/X25519/key-pair.d.ts.map +1 -0
  8. package/dist/X25519/key-pair.js +39 -0
  9. package/dist/X25519/key-pair.js.map +1 -0
  10. package/dist/X25519/private-key.d.ts +11 -0
  11. package/dist/X25519/private-key.d.ts.map +1 -0
  12. package/dist/X25519/private-key.js +40 -0
  13. package/dist/X25519/private-key.js.map +1 -0
  14. package/dist/X25519/public-key.d.ts +13 -0
  15. package/dist/X25519/public-key.d.ts.map +1 -0
  16. package/dist/X25519/public-key.js +49 -0
  17. package/dist/X25519/public-key.js.map +1 -0
  18. package/dist/X25519/utils.d.ts +2 -0
  19. package/dist/X25519/utils.d.ts.map +1 -0
  20. package/dist/X25519/utils.js +12 -0
  21. package/dist/X25519/utils.js.map +1 -0
  22. package/dist/X25519/x25519.test.d.ts +18 -0
  23. package/dist/X25519/x25519.test.d.ts.map +1 -0
  24. package/dist/X25519/x25519.test.js +183 -0
  25. package/dist/X25519/x25519.test.js.map +1 -0
  26. package/dist/base/index.d.ts +5 -0
  27. package/dist/base/index.d.ts.map +1 -0
  28. package/dist/base/index.js +5 -0
  29. package/dist/base/index.js.map +1 -0
  30. package/dist/base/key-pair.d.ts +27 -0
  31. package/dist/base/key-pair.d.ts.map +1 -0
  32. package/dist/base/key-pair.js +29 -0
  33. package/dist/base/key-pair.js.map +1 -0
  34. package/dist/base/key.d.ts +7 -0
  35. package/dist/base/key.d.ts.map +1 -0
  36. package/dist/base/key.js +10 -0
  37. package/dist/base/key.js.map +1 -0
  38. package/dist/base/private-key.d.ts +11 -0
  39. package/dist/base/private-key.d.ts.map +1 -0
  40. package/dist/base/private-key.js +4 -0
  41. package/dist/base/private-key.js.map +1 -0
  42. package/dist/base/public-key.d.ts +6 -0
  43. package/dist/base/public-key.d.ts.map +1 -0
  44. package/dist/base/public-key.js +4 -0
  45. package/dist/base/public-key.js.map +1 -0
  46. package/dist/exceptions/index.d.ts +2 -0
  47. package/dist/exceptions/index.d.ts.map +1 -0
  48. package/dist/exceptions/index.js +2 -0
  49. package/dist/exceptions/index.js.map +1 -0
  50. package/dist/exceptions/invalid-decryption-key.expection.d.ts +5 -0
  51. package/dist/exceptions/invalid-decryption-key.expection.d.ts.map +1 -0
  52. package/dist/exceptions/invalid-decryption-key.expection.js +7 -0
  53. package/dist/exceptions/invalid-decryption-key.expection.js.map +1 -0
  54. package/dist/index.d.ts +4 -3
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +4 -3
  57. package/dist/index.js.map +1 -1
  58. package/dist/rsa/index.d.ts +4 -0
  59. package/dist/rsa/index.d.ts.map +1 -0
  60. package/dist/rsa/index.js +4 -0
  61. package/dist/rsa/index.js.map +1 -0
  62. package/dist/rsa/key-pair.d.ts +12 -0
  63. package/dist/rsa/key-pair.d.ts.map +1 -0
  64. package/dist/rsa/key-pair.js +40 -0
  65. package/dist/rsa/key-pair.js.map +1 -0
  66. package/dist/rsa/private-key.d.ts +16 -0
  67. package/dist/rsa/private-key.d.ts.map +1 -0
  68. package/dist/rsa/private-key.js +65 -0
  69. package/dist/rsa/private-key.js.map +1 -0
  70. package/dist/rsa/public-key.d.ts +19 -0
  71. package/dist/rsa/public-key.d.ts.map +1 -0
  72. package/dist/{rsa.public-key.js → rsa/public-key.js} +42 -9
  73. package/dist/rsa/public-key.js.map +1 -0
  74. package/dist/{rsa.test.d.ts → rsa/rsa.test.d.ts} +2 -0
  75. package/dist/rsa/rsa.test.d.ts.map +1 -0
  76. package/dist/{rsa.test.js → rsa/rsa.test.js} +56 -29
  77. package/dist/rsa/rsa.test.js.map +1 -0
  78. package/package.json +11 -9
  79. package/src/X25519/index.ts +3 -0
  80. package/src/X25519/key-pair.ts +58 -0
  81. package/src/X25519/private-key.ts +54 -0
  82. package/src/X25519/public-key.ts +68 -0
  83. package/src/X25519/utils.ts +22 -0
  84. package/src/X25519/x25519.test.ts +150 -0
  85. package/src/base/index.ts +4 -0
  86. package/src/base/key-pair.ts +75 -0
  87. package/src/base/key.ts +13 -0
  88. package/src/base/private-key.ts +17 -0
  89. package/src/base/public-key.ts +7 -0
  90. package/src/exceptions/index.ts +1 -0
  91. package/src/exceptions/invalid-decryption-key.expection.ts +7 -0
  92. package/src/index.ts +4 -3
  93. package/src/rsa/index.ts +3 -0
  94. package/src/rsa/key-pair.ts +55 -0
  95. package/src/rsa/private-key.ts +82 -0
  96. package/src/rsa/public-key.ts +110 -0
  97. package/src/{rsa.test.ts → rsa/rsa.test.ts} +52 -31
  98. package/dist/rsa.base-key.d.ts +0 -17
  99. package/dist/rsa.base-key.d.ts.map +0 -1
  100. package/dist/rsa.base-key.js +0 -57
  101. package/dist/rsa.base-key.js.map +0 -1
  102. package/dist/rsa.key-pair.d.ts +0 -19
  103. package/dist/rsa.key-pair.d.ts.map +0 -1
  104. package/dist/rsa.key-pair.js +0 -46
  105. package/dist/rsa.key-pair.js.map +0 -1
  106. package/dist/rsa.private-key.d.ts +0 -13
  107. package/dist/rsa.private-key.d.ts.map +0 -1
  108. package/dist/rsa.private-key.js +0 -38
  109. package/dist/rsa.private-key.js.map +0 -1
  110. package/dist/rsa.public-key.d.ts +0 -13
  111. package/dist/rsa.public-key.d.ts.map +0 -1
  112. package/dist/rsa.public-key.js.map +0 -1
  113. package/dist/rsa.test.d.ts.map +0 -1
  114. package/dist/rsa.test.js.map +0 -1
  115. package/src/rsa.base-key.ts +0 -78
  116. package/src/rsa.key-pair.ts +0 -65
  117. package/src/rsa.private-key.ts +0 -50
  118. package/src/rsa.public-key.ts +0 -65
@@ -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,5 @@
1
+ export * from './key.js';
2
+ export * from './private-key.js';
3
+ export * from './public-key.js';
4
+ export * from './key-pair.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -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,5 @@
1
+ export * from './key.js';
2
+ export * from './private-key.js';
3
+ export * from './public-key.js';
4
+ export * from './key-pair.js';
5
+ //# sourceMappingURL=index.js.map
@@ -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,7 @@
1
+ export declare abstract class BaseKey<TKey = unknown> {
2
+ protected readonly key: TKey;
3
+ constructor(key: TKey);
4
+ get nativeKey(): TKey;
5
+ abstract toString(): string;
6
+ }
7
+ //# sourceMappingURL=key.d.ts.map
@@ -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"}
@@ -0,0 +1,10 @@
1
+ export class BaseKey {
2
+ key;
3
+ constructor(key) {
4
+ this.key = key;
5
+ }
6
+ get nativeKey() {
7
+ return this.key;
8
+ }
9
+ }
10
+ //# sourceMappingURL=key.js.map
@@ -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,4 @@
1
+ import { BaseKey } from './key.js';
2
+ export class BasePrivateKey extends BaseKey {
3
+ }
4
+ //# sourceMappingURL=private-key.js.map
@@ -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,4 @@
1
+ import { BaseKey } from './key.js';
2
+ export class BasePublicKey extends BaseKey {
3
+ }
4
+ //# sourceMappingURL=public-key.js.map
@@ -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,2 @@
1
+ export * from './invalid-decryption-key.expection.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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,2 @@
1
+ export * from './invalid-decryption-key.expection.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/exceptions/index.ts"],"names":[],"mappings":"AAAA,cAAc,uCAAuC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { BaseException } from '@hg-ts/exception';
2
+ export declare class InvalidDecryptionKeyExpection extends BaseException {
3
+ constructor();
4
+ }
5
+ //# sourceMappingURL=invalid-decryption-key.expection.d.ts.map
@@ -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,7 @@
1
+ import { BaseException } from '@hg-ts/exception';
2
+ export class InvalidDecryptionKeyExpection extends BaseException {
3
+ constructor() {
4
+ super('Invalid decryption key');
5
+ }
6
+ }
7
+ //# sourceMappingURL=invalid-decryption-key.expection.js.map
@@ -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 './rsa.private-key.js';
2
- export * from './rsa.public-key.js';
3
- export * from './rsa.key-pair.js';
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,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 './rsa.private-key.js';
2
- export * from './rsa.public-key.js';
3
- export * from './rsa.key-pair.js';
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,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,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,4 @@
1
+ export * from './private-key.js';
2
+ export * from './public-key.js';
3
+ export * from './key-pair.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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,4 @@
1
+ export * from './private-key.js';
2
+ export * from './public-key.js';
3
+ export * from './key-pair.js';
4
+ //# sourceMappingURL=index.js.map
@@ -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