@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
@@ -1,50 +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
-
5
- export class RSAPrivateKey extends RSABaseKey {
6
- protected readonly key: forge.pki.rsa.PrivateKey;
7
-
8
- public constructor(key: forge.pki.rsa.PrivateKey) {
9
- super();
10
- this.key = key;
11
- }
12
-
13
- public toPublicKey(): RSAPublicKey {
14
- return new RSAPublicKey(forge.pki.rsa.setPublicKey(this.key.n, this.key.e));
15
- }
16
-
17
- public decrypt(encrypted: string | Buffer): string {
18
- const md = this.getMd();
19
-
20
- const chunks = this.prepareToDecrypt(encrypted);
21
-
22
- const decryptedChunks = chunks.map(chunk => this.key.decrypt(chunk, 'RSAES-PKCS1-V1_5', { md }));
23
-
24
- return this.formatDecryptedOutput(decryptedChunks.join(''));
25
- }
26
-
27
- public sign(value: string): Buffer {
28
- const hash = this.getMd();
29
- hash.update(value, 'utf8');
30
-
31
- const pss = forge.pss.create({
32
- md: this.getMd(),
33
- mgf: forge.mgf.mgf1.create(this.getMd()),
34
- saltLength: 20,
35
- });
36
- const signedId = this.key.sign(hash, pss);
37
-
38
- return Buffer.from(signedId, 'binary');
39
- }
40
-
41
- public override toString(): string {
42
- return forge.pki.privateKeyToPem(this.key);
43
- }
44
-
45
- public static fromString(pemKey: string): RSAPrivateKey {
46
- const key = forge.pki.privateKeyFromPem(pemKey);
47
-
48
- return new RSAPrivateKey(key);
49
- }
50
- }
@@ -1,65 +0,0 @@
1
- import { z } from '@hg-ts/validation';
2
- import forge from 'node-forge';
3
- import { RSABaseKey } from './rsa.base-key.js';
4
-
5
- const schema = z.string().transform((value, ctx) => {
6
- try {
7
- const publicKey = forge.pki.publicKeyFromPem(value);
8
-
9
- return forge.pki.publicKeyToPem(publicKey);
10
- } catch (error) {
11
- ctx.issues.push({
12
- message: 'Invalid public key',
13
- fatal: true,
14
- code: 'invalid_format',
15
- input: value,
16
- format: 'RSA Public Key',
17
- });
18
- return value;
19
- }
20
- }).pipe(z.string());
21
-
22
- export class RSAPublicKey extends RSABaseKey {
23
- protected readonly key: forge.pki.rsa.PublicKey;
24
-
25
- public static schema = schema;
26
-
27
- public constructor(key: forge.pki.rsa.PublicKey) {
28
- super();
29
- this.key = key;
30
- }
31
-
32
- public encrypt(value: string | Buffer): Buffer {
33
- const md = this.getMd();
34
- const chunks = this.prepareToEncrypt(value);
35
-
36
- const encryptedChunks = chunks.map(chunk => this.key.encrypt(chunk, 'RSAES-PKCS1-V1_5', { md }));
37
-
38
- return this.formatEncrypted(encryptedChunks);
39
- }
40
-
41
- public verify(signature: string | Buffer, value: string): boolean {
42
- const hash = this.getMd();
43
- hash.update(value, 'utf8');
44
-
45
- const pss = forge.pss.create({
46
- md: this.getMd(),
47
- mgf: forge.mgf.mgf1.create(this.getMd()),
48
- saltLength: 20,
49
- });
50
-
51
- const formattedSignature = this.formatSignature(signature);
52
-
53
- return this.key.verify(hash.digest().bytes(), formattedSignature, pss);
54
- }
55
-
56
- public override toString(): string {
57
- return forge.pki.publicKeyToPem(this.key);
58
- }
59
-
60
- public static fromString(pemKey: string): RSAPublicKey {
61
- const key = forge.pki.publicKeyFromPem(pemKey);
62
-
63
- return new RSAPublicKey(key);
64
- }
65
- }