@libp2p/crypto 4.1.9 → 5.0.0-18dd3cb26

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 (192) hide show
  1. package/dist/index.min.js +4 -5
  2. package/dist/src/ciphers/aes-gcm.browser.js +1 -1
  3. package/dist/src/ciphers/aes-gcm.browser.js.map +1 -1
  4. package/dist/src/ciphers/index.d.ts +2 -0
  5. package/dist/src/ciphers/index.d.ts.map +1 -0
  6. package/dist/src/ciphers/index.js +2 -0
  7. package/dist/src/ciphers/index.js.map +1 -0
  8. package/dist/src/errors.d.ts +19 -0
  9. package/dist/src/errors.d.ts.map +1 -0
  10. package/dist/src/errors.js +28 -0
  11. package/dist/src/errors.js.map +1 -0
  12. package/dist/src/hmac/{index-browser.d.ts → index.browser.d.ts} +1 -1
  13. package/dist/src/hmac/{index-browser.d.ts.map → index.browser.d.ts.map} +1 -1
  14. package/dist/src/hmac/{index-browser.js → index.browser.js} +2 -2
  15. package/dist/src/hmac/{index-browser.js.map → index.browser.js.map} +1 -1
  16. package/dist/src/keys/ecdh/index.browser.d.ts +4 -0
  17. package/dist/src/keys/ecdh/index.browser.d.ts.map +1 -0
  18. package/dist/src/keys/{ecdh-browser.js → ecdh/index.browser.js} +13 -11
  19. package/dist/src/keys/ecdh/index.browser.js.map +1 -0
  20. package/dist/src/keys/{ecdh.d.ts → ecdh/index.d.ts} +4 -3
  21. package/dist/src/keys/ecdh/index.d.ts.map +1 -0
  22. package/dist/src/keys/{ecdh.js → ecdh/index.js} +4 -4
  23. package/dist/src/keys/ecdh/index.js.map +1 -0
  24. package/dist/src/keys/ed25519/ed25519.d.ts +23 -0
  25. package/dist/src/keys/ed25519/ed25519.d.ts.map +1 -0
  26. package/dist/src/keys/ed25519/ed25519.js +54 -0
  27. package/dist/src/keys/ed25519/ed25519.js.map +1 -0
  28. package/dist/src/keys/{ed25519-browser.d.ts → ed25519/index.browser.d.ts} +2 -2
  29. package/dist/src/keys/ed25519/index.browser.d.ts.map +1 -0
  30. package/dist/src/keys/{ed25519-browser.js → ed25519/index.browser.js} +1 -1
  31. package/dist/src/keys/ed25519/index.browser.js.map +1 -0
  32. package/dist/src/keys/{ed25519.d.ts → ed25519/index.d.ts} +2 -2
  33. package/dist/src/keys/ed25519/index.d.ts.map +1 -0
  34. package/dist/src/keys/{ed25519.js → ed25519/index.js} +1 -1
  35. package/dist/src/keys/ed25519/index.js.map +1 -0
  36. package/dist/src/keys/ed25519/utils.d.ts +7 -0
  37. package/dist/src/keys/ed25519/utils.d.ts.map +1 -0
  38. package/dist/src/keys/ed25519/utils.js +36 -0
  39. package/dist/src/keys/ed25519/utils.js.map +1 -0
  40. package/dist/src/keys/ephemeral-keys.d.ts +2 -2
  41. package/dist/src/keys/ephemeral-keys.d.ts.map +1 -1
  42. package/dist/src/keys/ephemeral-keys.js +2 -2
  43. package/dist/src/keys/ephemeral-keys.js.map +1 -1
  44. package/dist/src/keys/index.d.ts +33 -36
  45. package/dist/src/keys/index.d.ts.map +1 -1
  46. package/dist/src/keys/index.js +93 -83
  47. package/dist/src/keys/index.js.map +1 -1
  48. package/dist/src/keys/key-stretcher.d.ts.map +1 -1
  49. package/dist/src/keys/key-stretcher.js +9 -7
  50. package/dist/src/keys/key-stretcher.js.map +1 -1
  51. package/dist/src/keys/keys.d.ts +4 -4
  52. package/dist/src/keys/keys.d.ts.map +1 -1
  53. package/dist/src/keys/keys.js +21 -15
  54. package/dist/src/keys/keys.js.map +1 -1
  55. package/dist/src/keys/rsa/index.browser.d.ts +11 -0
  56. package/dist/src/keys/rsa/index.browser.d.ts.map +1 -0
  57. package/dist/src/keys/{rsa-browser.js → rsa/index.browser.js} +10 -39
  58. package/dist/src/keys/rsa/index.browser.js.map +1 -0
  59. package/dist/src/keys/rsa/index.d.ts +11 -0
  60. package/dist/src/keys/rsa/index.d.ts.map +1 -0
  61. package/dist/src/keys/{rsa.js → rsa/index.js} +8 -22
  62. package/dist/src/keys/rsa/index.js.map +1 -0
  63. package/dist/src/keys/rsa/rsa.d.ts +28 -0
  64. package/dist/src/keys/rsa/rsa.d.ts.map +1 -0
  65. package/dist/src/keys/rsa/rsa.js +65 -0
  66. package/dist/src/keys/rsa/rsa.js.map +1 -0
  67. package/dist/src/keys/rsa/utils.d.ts +34 -0
  68. package/dist/src/keys/rsa/utils.d.ts.map +1 -0
  69. package/dist/src/keys/rsa/utils.js +193 -0
  70. package/dist/src/keys/rsa/utils.js.map +1 -0
  71. package/dist/src/keys/secp256k1/index.browser.d.ts +10 -0
  72. package/dist/src/keys/secp256k1/index.browser.d.ts.map +1 -0
  73. package/dist/src/keys/secp256k1/index.browser.js +41 -0
  74. package/dist/src/keys/secp256k1/index.browser.js.map +1 -0
  75. package/dist/src/keys/secp256k1/index.d.ts +10 -0
  76. package/dist/src/keys/secp256k1/index.d.ts.map +1 -0
  77. package/dist/src/keys/secp256k1/index.js +47 -0
  78. package/dist/src/keys/secp256k1/index.js.map +1 -0
  79. package/dist/src/keys/secp256k1/secp256k1.d.ts +24 -0
  80. package/dist/src/keys/secp256k1/secp256k1.d.ts.map +1 -0
  81. package/dist/src/keys/secp256k1/secp256k1.js +53 -0
  82. package/dist/src/keys/secp256k1/secp256k1.js.map +1 -0
  83. package/dist/src/keys/secp256k1/utils.d.ts +13 -0
  84. package/dist/src/keys/secp256k1/utils.d.ts.map +1 -0
  85. package/dist/src/keys/secp256k1/utils.js +53 -0
  86. package/dist/src/keys/secp256k1/utils.js.map +1 -0
  87. package/dist/src/pbkdf2.js +2 -2
  88. package/dist/src/pbkdf2.js.map +1 -1
  89. package/dist/src/random-bytes.js +2 -2
  90. package/dist/src/random-bytes.js.map +1 -1
  91. package/dist/src/webcrypto/index.d.ts +3 -0
  92. package/dist/src/webcrypto/index.d.ts.map +1 -0
  93. package/dist/src/webcrypto/index.js +3 -0
  94. package/dist/src/webcrypto/index.js.map +1 -0
  95. package/dist/src/{webcrypto-browser.d.ts → webcrypto/webcrypto.browser.d.ts} +1 -1
  96. package/dist/src/webcrypto/webcrypto.browser.d.ts.map +1 -0
  97. package/dist/src/{webcrypto-browser.js → webcrypto/webcrypto.browser.js} +4 -3
  98. package/dist/src/webcrypto/webcrypto.browser.js.map +1 -0
  99. package/dist/src/webcrypto/webcrypto.d.ts.map +1 -0
  100. package/dist/src/webcrypto/webcrypto.js.map +1 -0
  101. package/package.json +16 -8
  102. package/src/ciphers/aes-gcm.browser.ts +1 -1
  103. package/src/ciphers/index.ts +1 -0
  104. package/src/errors.ts +29 -0
  105. package/src/hmac/{index-browser.ts → index.browser.ts} +1 -1
  106. package/src/keys/{ecdh-browser.ts → ecdh/index.browser.ts} +16 -13
  107. package/src/keys/{ecdh.ts → ecdh/index.ts} +6 -4
  108. package/src/keys/ed25519/ed25519.ts +68 -0
  109. package/src/keys/{ed25519-browser.ts → ed25519/index.browser.ts} +1 -1
  110. package/src/keys/{ed25519.ts → ed25519/index.ts} +1 -1
  111. package/src/keys/ed25519/utils.ts +42 -0
  112. package/src/keys/ephemeral-keys.ts +2 -2
  113. package/src/keys/index.ts +110 -92
  114. package/src/keys/key-stretcher.ts +15 -8
  115. package/src/keys/keys.proto +1 -1
  116. package/src/keys/keys.ts +21 -16
  117. package/src/keys/{rsa-browser.ts → rsa/index.browser.ts} +10 -56
  118. package/src/keys/{rsa.ts → rsa/index.ts} +8 -23
  119. package/src/keys/rsa/rsa.ts +83 -0
  120. package/src/keys/rsa/utils.ts +235 -0
  121. package/src/keys/secp256k1/index.browser.ts +45 -0
  122. package/src/keys/secp256k1/index.ts +51 -0
  123. package/src/keys/secp256k1/secp256k1.ts +68 -0
  124. package/src/keys/secp256k1/utils.ts +63 -0
  125. package/src/pbkdf2.ts +2 -2
  126. package/src/random-bytes.ts +2 -2
  127. package/src/webcrypto/index.ts +3 -0
  128. package/src/webcrypto/webcrypto.browser.ts +23 -0
  129. package/dist/src/keys/ecdh-browser.d.ts +0 -3
  130. package/dist/src/keys/ecdh-browser.d.ts.map +0 -1
  131. package/dist/src/keys/ecdh-browser.js.map +0 -1
  132. package/dist/src/keys/ecdh.d.ts.map +0 -1
  133. package/dist/src/keys/ecdh.js.map +0 -1
  134. package/dist/src/keys/ed25519-browser.d.ts.map +0 -1
  135. package/dist/src/keys/ed25519-browser.js.map +0 -1
  136. package/dist/src/keys/ed25519-class.d.ts +0 -42
  137. package/dist/src/keys/ed25519-class.d.ts.map +0 -1
  138. package/dist/src/keys/ed25519-class.js +0 -133
  139. package/dist/src/keys/ed25519-class.js.map +0 -1
  140. package/dist/src/keys/ed25519.d.ts.map +0 -1
  141. package/dist/src/keys/ed25519.js.map +0 -1
  142. package/dist/src/keys/exporter.d.ts +0 -8
  143. package/dist/src/keys/exporter.d.ts.map +0 -1
  144. package/dist/src/keys/exporter.js +0 -13
  145. package/dist/src/keys/exporter.js.map +0 -1
  146. package/dist/src/keys/importer.d.ts +0 -7
  147. package/dist/src/keys/importer.d.ts.map +0 -1
  148. package/dist/src/keys/importer.js +0 -13
  149. package/dist/src/keys/importer.js.map +0 -1
  150. package/dist/src/keys/rsa-browser.d.ts +0 -12
  151. package/dist/src/keys/rsa-browser.d.ts.map +0 -1
  152. package/dist/src/keys/rsa-browser.js.map +0 -1
  153. package/dist/src/keys/rsa-class.d.ts +0 -46
  154. package/dist/src/keys/rsa-class.d.ts.map +0 -1
  155. package/dist/src/keys/rsa-class.js +0 -135
  156. package/dist/src/keys/rsa-class.js.map +0 -1
  157. package/dist/src/keys/rsa-utils.d.ts +0 -20
  158. package/dist/src/keys/rsa-utils.d.ts.map +0 -1
  159. package/dist/src/keys/rsa-utils.js +0 -330
  160. package/dist/src/keys/rsa-utils.js.map +0 -1
  161. package/dist/src/keys/rsa.d.ts +0 -12
  162. package/dist/src/keys/rsa.d.ts.map +0 -1
  163. package/dist/src/keys/rsa.js.map +0 -1
  164. package/dist/src/keys/secp256k1-browser.d.ts +0 -18
  165. package/dist/src/keys/secp256k1-browser.d.ts.map +0 -1
  166. package/dist/src/keys/secp256k1-browser.js +0 -78
  167. package/dist/src/keys/secp256k1-browser.js.map +0 -1
  168. package/dist/src/keys/secp256k1-class.d.ts +0 -39
  169. package/dist/src/keys/secp256k1-class.d.ts.map +0 -1
  170. package/dist/src/keys/secp256k1-class.js +0 -109
  171. package/dist/src/keys/secp256k1-class.js.map +0 -1
  172. package/dist/src/keys/secp256k1.d.ts +0 -18
  173. package/dist/src/keys/secp256k1.d.ts.map +0 -1
  174. package/dist/src/keys/secp256k1.js +0 -84
  175. package/dist/src/keys/secp256k1.js.map +0 -1
  176. package/dist/src/webcrypto-browser.d.ts.map +0 -1
  177. package/dist/src/webcrypto-browser.js.map +0 -1
  178. package/dist/src/webcrypto.d.ts.map +0 -1
  179. package/dist/src/webcrypto.js.map +0 -1
  180. package/dist/typedoc-urls.json +0 -40
  181. package/src/keys/ed25519-class.ts +0 -160
  182. package/src/keys/exporter.ts +0 -14
  183. package/src/keys/importer.ts +0 -13
  184. package/src/keys/rsa-class.ts +0 -172
  185. package/src/keys/rsa-utils.ts +0 -408
  186. package/src/keys/secp256k1-browser.ts +0 -87
  187. package/src/keys/secp256k1-class.ts +0 -133
  188. package/src/keys/secp256k1.ts +0 -93
  189. package/src/webcrypto-browser.ts +0 -24
  190. /package/dist/src/{webcrypto.d.ts → webcrypto/webcrypto.d.ts} +0 -0
  191. /package/dist/src/{webcrypto.js → webcrypto/webcrypto.js} +0 -0
  192. /package/src/{webcrypto.ts → webcrypto/webcrypto.ts} +0 -0
@@ -1,330 +0,0 @@
1
- import { CodeError } from '@libp2p/interface';
2
- import { pbkdf2Async } from '@noble/hashes/pbkdf2';
3
- import { sha512 } from '@noble/hashes/sha512';
4
- import * as asn1js from 'asn1js';
5
- import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
6
- import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
7
- import randomBytes from '../random-bytes.js';
8
- import webcrypto from '../webcrypto.js';
9
- import { unmarshalRsaPrivateKey } from './rsa-class.js';
10
- /**
11
- * Convert a PKCS#1 in ASN1 DER format to a JWK key
12
- */
13
- export function pkcs1ToJwk(bytes) {
14
- const { result } = asn1js.fromBER(bytes);
15
- // @ts-expect-error this looks fragile but DER is a canonical format so we are
16
- // safe to have deeply property chains like this
17
- const values = result.valueBlock.value;
18
- const key = {
19
- n: uint8ArrayToString(bnToBuf(values[1].toBigInt()), 'base64url'),
20
- e: uint8ArrayToString(bnToBuf(values[2].toBigInt()), 'base64url'),
21
- d: uint8ArrayToString(bnToBuf(values[3].toBigInt()), 'base64url'),
22
- p: uint8ArrayToString(bnToBuf(values[4].toBigInt()), 'base64url'),
23
- q: uint8ArrayToString(bnToBuf(values[5].toBigInt()), 'base64url'),
24
- dp: uint8ArrayToString(bnToBuf(values[6].toBigInt()), 'base64url'),
25
- dq: uint8ArrayToString(bnToBuf(values[7].toBigInt()), 'base64url'),
26
- qi: uint8ArrayToString(bnToBuf(values[8].toBigInt()), 'base64url'),
27
- kty: 'RSA',
28
- alg: 'RS256'
29
- };
30
- return key;
31
- }
32
- /**
33
- * Convert a JWK key into PKCS#1 in ASN1 DER format
34
- */
35
- export function jwkToPkcs1(jwk) {
36
- if (jwk.n == null || jwk.e == null || jwk.d == null || jwk.p == null || jwk.q == null || jwk.dp == null || jwk.dq == null || jwk.qi == null) {
37
- throw new CodeError('JWK was missing components', 'ERR_INVALID_PARAMETERS');
38
- }
39
- const root = new asn1js.Sequence({
40
- value: [
41
- new asn1js.Integer({ value: 0 }),
42
- asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.n, 'base64url'))),
43
- asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.e, 'base64url'))),
44
- asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.d, 'base64url'))),
45
- asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.p, 'base64url'))),
46
- asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.q, 'base64url'))),
47
- asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.dp, 'base64url'))),
48
- asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.dq, 'base64url'))),
49
- asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.qi, 'base64url')))
50
- ]
51
- });
52
- const der = root.toBER();
53
- return new Uint8Array(der, 0, der.byteLength);
54
- }
55
- /**
56
- * Convert a PKCIX in ASN1 DER format to a JWK key
57
- */
58
- export function pkixToJwk(bytes) {
59
- const { result } = asn1js.fromBER(bytes);
60
- // @ts-expect-error this looks fragile but DER is a canonical format so we are
61
- // safe to have deeply property chains like this
62
- const values = result.valueBlock.value[1].valueBlock.value[0].valueBlock.value;
63
- return {
64
- kty: 'RSA',
65
- n: uint8ArrayToString(bnToBuf(values[0].toBigInt()), 'base64url'),
66
- e: uint8ArrayToString(bnToBuf(values[1].toBigInt()), 'base64url')
67
- };
68
- }
69
- /**
70
- * Convert a JWK key to PKCIX in ASN1 DER format
71
- */
72
- export function jwkToPkix(jwk) {
73
- if (jwk.n == null || jwk.e == null) {
74
- throw new CodeError('JWK was missing components', 'ERR_INVALID_PARAMETERS');
75
- }
76
- const root = new asn1js.Sequence({
77
- value: [
78
- new asn1js.Sequence({
79
- value: [
80
- // rsaEncryption
81
- new asn1js.ObjectIdentifier({
82
- value: '1.2.840.113549.1.1.1'
83
- }),
84
- new asn1js.Null()
85
- ]
86
- }),
87
- // this appears to be a bug in asn1js.js - this should really be a Sequence
88
- // and not a BitString but it generates the same bytes as node-forge so 🤷‍♂️
89
- new asn1js.BitString({
90
- valueHex: new asn1js.Sequence({
91
- value: [
92
- asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.n, 'base64url'))),
93
- asn1js.Integer.fromBigInt(bufToBn(uint8ArrayFromString(jwk.e, 'base64url')))
94
- ]
95
- }).toBER()
96
- })
97
- ]
98
- });
99
- const der = root.toBER();
100
- return new Uint8Array(der, 0, der.byteLength);
101
- }
102
- function bnToBuf(bn) {
103
- let hex = bn.toString(16);
104
- if (hex.length % 2 > 0) {
105
- hex = `0${hex}`;
106
- }
107
- const len = hex.length / 2;
108
- const u8 = new Uint8Array(len);
109
- let i = 0;
110
- let j = 0;
111
- while (i < len) {
112
- u8[i] = parseInt(hex.slice(j, j + 2), 16);
113
- i += 1;
114
- j += 2;
115
- }
116
- return u8;
117
- }
118
- function bufToBn(u8) {
119
- const hex = [];
120
- u8.forEach(function (i) {
121
- let h = i.toString(16);
122
- if (h.length % 2 > 0) {
123
- h = `0${h}`;
124
- }
125
- hex.push(h);
126
- });
127
- return BigInt('0x' + hex.join(''));
128
- }
129
- const SALT_LENGTH = 16;
130
- const KEY_SIZE = 32;
131
- const ITERATIONS = 10000;
132
- export async function exportToPem(privateKey, password) {
133
- const crypto = webcrypto.get();
134
- // PrivateKeyInfo
135
- const keyWrapper = new asn1js.Sequence({
136
- value: [
137
- // version (0)
138
- new asn1js.Integer({ value: 0 }),
139
- // privateKeyAlgorithm
140
- new asn1js.Sequence({
141
- value: [
142
- // rsaEncryption OID
143
- new asn1js.ObjectIdentifier({
144
- value: '1.2.840.113549.1.1.1'
145
- }),
146
- new asn1js.Null()
147
- ]
148
- }),
149
- // PrivateKey
150
- new asn1js.OctetString({
151
- valueHex: privateKey.marshal()
152
- })
153
- ]
154
- });
155
- const keyBuf = keyWrapper.toBER();
156
- const keyArr = new Uint8Array(keyBuf, 0, keyBuf.byteLength);
157
- const salt = randomBytes(SALT_LENGTH);
158
- const encryptionKey = await pbkdf2Async(sha512, password, salt, {
159
- c: ITERATIONS,
160
- dkLen: KEY_SIZE
161
- });
162
- const iv = randomBytes(16);
163
- const cryptoKey = await crypto.subtle.importKey('raw', encryptionKey, 'AES-CBC', false, ['encrypt']);
164
- const encrypted = await crypto.subtle.encrypt({
165
- name: 'AES-CBC',
166
- iv
167
- }, cryptoKey, keyArr);
168
- const pbkdf2Params = new asn1js.Sequence({
169
- value: [
170
- // salt
171
- new asn1js.OctetString({ valueHex: salt }),
172
- // iteration count
173
- new asn1js.Integer({ value: ITERATIONS }),
174
- // key length
175
- new asn1js.Integer({ value: KEY_SIZE }),
176
- // AlgorithmIdentifier
177
- new asn1js.Sequence({
178
- value: [
179
- // hmacWithSHA512
180
- new asn1js.ObjectIdentifier({ value: '1.2.840.113549.2.11' }),
181
- new asn1js.Null()
182
- ]
183
- })
184
- ]
185
- });
186
- const encryptionAlgorithm = new asn1js.Sequence({
187
- value: [
188
- // pkcs5PBES2
189
- new asn1js.ObjectIdentifier({
190
- value: '1.2.840.113549.1.5.13'
191
- }),
192
- new asn1js.Sequence({
193
- value: [
194
- // keyDerivationFunc
195
- new asn1js.Sequence({
196
- value: [
197
- // pkcs5PBKDF2
198
- new asn1js.ObjectIdentifier({
199
- value: '1.2.840.113549.1.5.12'
200
- }),
201
- // PBKDF2-params
202
- pbkdf2Params
203
- ]
204
- }),
205
- // encryptionScheme
206
- new asn1js.Sequence({
207
- value: [
208
- // aes256-CBC
209
- new asn1js.ObjectIdentifier({
210
- value: '2.16.840.1.101.3.4.1.42'
211
- }),
212
- // iv
213
- new asn1js.OctetString({
214
- valueHex: iv
215
- })
216
- ]
217
- })
218
- ]
219
- })
220
- ]
221
- });
222
- const finalWrapper = new asn1js.Sequence({
223
- value: [
224
- encryptionAlgorithm,
225
- new asn1js.OctetString({ valueHex: encrypted })
226
- ]
227
- });
228
- const finalWrapperBuf = finalWrapper.toBER();
229
- const finalWrapperArr = new Uint8Array(finalWrapperBuf, 0, finalWrapperBuf.byteLength);
230
- return [
231
- '-----BEGIN ENCRYPTED PRIVATE KEY-----',
232
- ...uint8ArrayToString(finalWrapperArr, 'base64pad').split(/(.{64})/).filter(Boolean),
233
- '-----END ENCRYPTED PRIVATE KEY-----'
234
- ].join('\n');
235
- }
236
- export async function importFromPem(pem, password) {
237
- const crypto = webcrypto.get();
238
- let plaintext;
239
- if (pem.includes('-----BEGIN ENCRYPTED PRIVATE KEY-----')) {
240
- const key = uint8ArrayFromString(pem
241
- .replace('-----BEGIN ENCRYPTED PRIVATE KEY-----', '')
242
- .replace('-----END ENCRYPTED PRIVATE KEY-----', '')
243
- .replace(/\n/g, '')
244
- .trim(), 'base64pad');
245
- const { result } = asn1js.fromBER(key);
246
- const { iv, salt, iterations, keySize, cipherText } = findEncryptedPEMData(result);
247
- const encryptionKey = await pbkdf2Async(sha512, password, salt, {
248
- c: iterations,
249
- dkLen: keySize
250
- });
251
- const cryptoKey = await crypto.subtle.importKey('raw', encryptionKey, 'AES-CBC', false, ['decrypt']);
252
- const decrypted = toUint8Array(await crypto.subtle.decrypt({
253
- name: 'AES-CBC',
254
- iv
255
- }, cryptoKey, cipherText));
256
- const { result: decryptedResult } = asn1js.fromBER(decrypted);
257
- plaintext = findPEMData(decryptedResult);
258
- }
259
- else if (pem.includes('-----BEGIN PRIVATE KEY-----')) {
260
- const key = uint8ArrayFromString(pem
261
- .replace('-----BEGIN PRIVATE KEY-----', '')
262
- .replace('-----END PRIVATE KEY-----', '')
263
- .replace(/\n/g, '')
264
- .trim(), 'base64pad');
265
- const { result } = asn1js.fromBER(key);
266
- plaintext = findPEMData(result);
267
- }
268
- else {
269
- throw new CodeError('Could not parse private key from PEM data', 'ERR_INVALID_PARAMETERS');
270
- }
271
- return unmarshalRsaPrivateKey(plaintext);
272
- }
273
- function findEncryptedPEMData(root) {
274
- const encryptionAlgorithm = root.valueBlock.value[0];
275
- const scheme = encryptionAlgorithm.valueBlock.value[0].toString();
276
- if (scheme !== 'OBJECT IDENTIFIER : 1.2.840.113549.1.5.13') {
277
- throw new CodeError('Only pkcs5PBES2 encrypted private keys are supported', 'ERR_INVALID_PARAMS');
278
- }
279
- const keyDerivationFunc = encryptionAlgorithm.valueBlock.value[1].valueBlock.value[0];
280
- const keyDerivationFuncName = keyDerivationFunc.valueBlock.value[0].toString();
281
- if (keyDerivationFuncName !== 'OBJECT IDENTIFIER : 1.2.840.113549.1.5.12') {
282
- throw new CodeError('Only pkcs5PBKDF2 key derivation functions are supported', 'ERR_INVALID_PARAMS');
283
- }
284
- const pbkdf2Params = keyDerivationFunc.valueBlock.value[1];
285
- const salt = toUint8Array(pbkdf2Params.valueBlock.value[0].getValue());
286
- let iterations = ITERATIONS;
287
- let keySize = KEY_SIZE;
288
- if (pbkdf2Params.valueBlock.value.length === 3) {
289
- iterations = Number(pbkdf2Params.valueBlock.value[1].toBigInt());
290
- keySize = Number((pbkdf2Params.valueBlock.value[2]).toBigInt());
291
- }
292
- else if (pbkdf2Params.valueBlock.value.length === 2) {
293
- throw new CodeError('Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key', 'ERR_INVALID_PARAMS');
294
- }
295
- const encryptionScheme = encryptionAlgorithm.valueBlock.value[1].valueBlock.value[1];
296
- const encryptionSchemeName = encryptionScheme.valueBlock.value[0].toString();
297
- if (encryptionSchemeName === 'OBJECT IDENTIFIER : 1.2.840.113549.3.7') {
298
- // des-EDE3-CBC
299
- }
300
- else if (encryptionSchemeName === 'OBJECT IDENTIFIER : 1.3.14.3.2.7') {
301
- // des-CBC
302
- }
303
- else if (encryptionSchemeName === 'OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2') {
304
- // aes128-CBC
305
- }
306
- else if (encryptionSchemeName === 'OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22') {
307
- // aes192-CBC
308
- }
309
- else if (encryptionSchemeName === 'OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42') {
310
- // aes256-CBC
311
- }
312
- else {
313
- throw new CodeError('Only AES-CBC encryption schemes are supported', 'ERR_INVALID_PARAMS');
314
- }
315
- const iv = toUint8Array(encryptionScheme.valueBlock.value[1].getValue());
316
- return {
317
- cipherText: toUint8Array(root.valueBlock.value[1].getValue()),
318
- salt,
319
- iterations,
320
- keySize,
321
- iv
322
- };
323
- }
324
- function findPEMData(seq) {
325
- return toUint8Array(seq.valueBlock.value[2].getValue());
326
- }
327
- function toUint8Array(buf) {
328
- return new Uint8Array(buf, 0, buf.byteLength);
329
- }
330
- //# sourceMappingURL=rsa-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rsa-utils.js","sourceRoot":"","sources":["../../../src/keys/rsa-utils.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import randomBytes from '../random-bytes.js';
2
- import * as utils from './rsa-utils.js';
3
- import type { JWKKeyPair } from './interface.js';
4
- import type { Uint8ArrayList } from 'uint8arraylist';
5
- export { utils };
6
- export declare function generateKey(bits: number): Promise<JWKKeyPair>;
7
- export declare function unmarshalPrivateKey(key: JsonWebKey): Promise<JWKKeyPair>;
8
- export { randomBytes as getRandomValues };
9
- export declare function hashAndSign(key: JsonWebKey, msg: Uint8Array | Uint8ArrayList): Promise<Uint8Array>;
10
- export declare function hashAndVerify(key: JsonWebKey, sig: Uint8Array, msg: Uint8Array | Uint8ArrayList): Promise<boolean>;
11
- export declare function keySize(jwk: JsonWebKey): number;
12
- //# sourceMappingURL=rsa.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rsa.d.ts","sourceRoot":"","sources":["../../../src/keys/rsa.ts"],"names":[],"mappings":"AAIA,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAIpD,OAAO,EAAE,KAAK,EAAE,CAAA;AAEhB,wBAAsB,WAAW,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAcpE;AAGD,wBAAsB,mBAAmB,CAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAY/E;AAED,OAAO,EAAE,WAAW,IAAI,eAAe,EAAE,CAAA;AAEzC,wBAAsB,WAAW,CAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CAazG;AAED,wBAAsB,aAAa,CAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAazH;AAED,wBAAgB,OAAO,CAAE,GAAG,EAAE,UAAU,GAAG,MAAM,CAQhD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"rsa.js","sourceRoot":"","sources":["../../../src/keys/rsa.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import type { Uint8ArrayList } from 'uint8arraylist';
2
- declare const PRIVATE_KEY_BYTE_LENGTH = 32;
3
- export { PRIVATE_KEY_BYTE_LENGTH as privateKeyLength };
4
- export declare function generateKey(): Uint8Array;
5
- /**
6
- * Hash and sign message with private key
7
- */
8
- export declare function hashAndSign(key: Uint8Array, msg: Uint8Array | Uint8ArrayList): Uint8Array | Promise<Uint8Array>;
9
- /**
10
- * Hash message and verify signature with public key
11
- */
12
- export declare function hashAndVerify(key: Uint8Array, sig: Uint8Array, msg: Uint8Array | Uint8ArrayList): boolean | Promise<boolean>;
13
- export declare function compressPublicKey(key: Uint8Array): Uint8Array;
14
- export declare function decompressPublicKey(key: Uint8Array): Uint8Array;
15
- export declare function validatePrivateKey(key: Uint8Array): void;
16
- export declare function validatePublicKey(key: Uint8Array): void;
17
- export declare function computePublicKey(privateKey: Uint8Array): Uint8Array;
18
- //# sourceMappingURL=secp256k1-browser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"secp256k1-browser.d.ts","sourceRoot":"","sources":["../../../src/keys/secp256k1-browser.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,QAAA,MAAM,uBAAuB,KAAK,CAAA;AAElC,OAAO,EAAE,uBAAuB,IAAI,gBAAgB,EAAE,CAAA;AAEtD,wBAAgB,WAAW,IAAK,UAAU,CAEzC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,cAAc,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAehH;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,cAAc,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAe7H;AAED,wBAAgB,iBAAiB,CAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAG9D;AAED,wBAAgB,mBAAmB,CAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAGhE;AAED,wBAAgB,kBAAkB,CAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAMzD;AAED,wBAAgB,iBAAiB,CAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAMxD;AAED,wBAAgB,gBAAgB,CAAE,UAAU,EAAE,UAAU,GAAG,UAAU,CAMpE"}
@@ -1,78 +0,0 @@
1
- import { CodeError } from '@libp2p/interface';
2
- import { secp256k1 as secp } from '@noble/curves/secp256k1';
3
- import { sha256 } from 'multiformats/hashes/sha2';
4
- import { isPromise } from '../util.js';
5
- const PRIVATE_KEY_BYTE_LENGTH = 32;
6
- export { PRIVATE_KEY_BYTE_LENGTH as privateKeyLength };
7
- export function generateKey() {
8
- return secp.utils.randomPrivateKey();
9
- }
10
- /**
11
- * Hash and sign message with private key
12
- */
13
- export function hashAndSign(key, msg) {
14
- const p = sha256.digest(msg instanceof Uint8Array ? msg : msg.subarray());
15
- if (isPromise(p)) {
16
- return p.then(({ digest }) => secp.sign(digest, key).toDERRawBytes())
17
- .catch(err => {
18
- throw new CodeError(String(err), 'ERR_INVALID_INPUT');
19
- });
20
- }
21
- try {
22
- return secp.sign(p.digest, key).toDERRawBytes();
23
- }
24
- catch (err) {
25
- throw new CodeError(String(err), 'ERR_INVALID_INPUT');
26
- }
27
- }
28
- /**
29
- * Hash message and verify signature with public key
30
- */
31
- export function hashAndVerify(key, sig, msg) {
32
- const p = sha256.digest(msg instanceof Uint8Array ? msg : msg.subarray());
33
- if (isPromise(p)) {
34
- return p.then(({ digest }) => secp.verify(sig, digest, key))
35
- .catch(err => {
36
- throw new CodeError(String(err), 'ERR_INVALID_INPUT');
37
- });
38
- }
39
- try {
40
- return secp.verify(sig, p.digest, key);
41
- }
42
- catch (err) {
43
- throw new CodeError(String(err), 'ERR_INVALID_INPUT');
44
- }
45
- }
46
- export function compressPublicKey(key) {
47
- const point = secp.ProjectivePoint.fromHex(key).toRawBytes(true);
48
- return point;
49
- }
50
- export function decompressPublicKey(key) {
51
- const point = secp.ProjectivePoint.fromHex(key).toRawBytes(false);
52
- return point;
53
- }
54
- export function validatePrivateKey(key) {
55
- try {
56
- secp.getPublicKey(key, true);
57
- }
58
- catch (err) {
59
- throw new CodeError(String(err), 'ERR_INVALID_PRIVATE_KEY');
60
- }
61
- }
62
- export function validatePublicKey(key) {
63
- try {
64
- secp.ProjectivePoint.fromHex(key);
65
- }
66
- catch (err) {
67
- throw new CodeError(String(err), 'ERR_INVALID_PUBLIC_KEY');
68
- }
69
- }
70
- export function computePublicKey(privateKey) {
71
- try {
72
- return secp.getPublicKey(privateKey, true);
73
- }
74
- catch (err) {
75
- throw new CodeError(String(err), 'ERR_INVALID_PRIVATE_KEY');
76
- }
77
- }
78
- //# sourceMappingURL=secp256k1-browser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"secp256k1-browser.js","sourceRoot":"","sources":["../../../src/keys/secp256k1-browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,SAAS,IAAI,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAGtC,MAAM,uBAAuB,GAAG,EAAE,CAAA;AAElC,OAAO,EAAE,uBAAuB,IAAI,gBAAgB,EAAE,CAAA;AAEtD,MAAM,UAAU,WAAW;IACzB,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAA;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAE,GAAe,EAAE,GAAgC;IAC5E,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,YAAY,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;IAEzE,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACjB,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;aAClE,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,mBAAmB,CAAC,CAAA;QACvD,CAAC,CAAC,CAAA;IACN,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,aAAa,EAAE,CAAA;IACjD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,mBAAmB,CAAC,CAAA;IACvD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAE,GAAe,EAAE,GAAe,EAAE,GAAgC;IAC/F,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,YAAY,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;IAEzE,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACjB,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;aACzD,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,mBAAmB,CAAC,CAAA;QACvD,CAAC,CAAC,CAAA;IACN,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,mBAAmB,CAAC,CAAA;IACvD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAE,GAAe;IAChD,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAChE,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAE,GAAe;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IACjE,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAE,GAAe;IACjD,IAAI,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,yBAAyB,CAAC,CAAA;IAC7D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAE,GAAe;IAChD,IAAI,CAAC;QACH,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,wBAAwB,CAAC,CAAA;IAC5D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAE,UAAsB;IACtD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IAC5C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,yBAAyB,CAAC,CAAA;IAC7D,CAAC;AACH,CAAC"}
@@ -1,39 +0,0 @@
1
- import type { PublicKey, PrivateKey } from '@libp2p/interface';
2
- import type { Multibase } from 'multiformats';
3
- import type { Uint8ArrayList } from 'uint8arraylist';
4
- export declare class Secp256k1PublicKey implements PublicKey<'secp256k1'> {
5
- private readonly _key;
6
- constructor(key: Uint8Array);
7
- verify(data: Uint8Array | Uint8ArrayList, sig: Uint8Array): boolean;
8
- marshal(): Uint8Array;
9
- get bytes(): Uint8Array;
10
- equals(key: any): boolean;
11
- hash(): Promise<Uint8Array>;
12
- }
13
- export declare class Secp256k1PrivateKey implements PrivateKey<'secp256k1'> {
14
- private readonly _key;
15
- private readonly _publicKey;
16
- constructor(key: Uint8Array, publicKey?: Uint8Array);
17
- sign(message: Uint8Array | Uint8ArrayList): Uint8Array | Promise<Uint8Array>;
18
- get public(): Secp256k1PublicKey;
19
- marshal(): Uint8Array;
20
- get bytes(): Uint8Array;
21
- equals(key: any): boolean;
22
- hash(): Uint8Array | Promise<Uint8Array>;
23
- /**
24
- * Gets the ID of the key.
25
- *
26
- * The key id is the base58 encoding of the SHA-256 multihash of its public key.
27
- * The public key is a protobuf encoding containing a type and the DER encoding
28
- * of the PKCS SubjectPublicKeyInfo.
29
- */
30
- id(): Promise<string>;
31
- /**
32
- * Exports the key into a password protected `format`
33
- */
34
- export(password: string, format?: string): Promise<Multibase<'m'>>;
35
- }
36
- export declare function unmarshalSecp256k1PrivateKey(bytes: Uint8Array): Secp256k1PrivateKey;
37
- export declare function unmarshalSecp256k1PublicKey(bytes: Uint8Array): Secp256k1PublicKey;
38
- export declare function generateKeyPair(): Promise<Secp256k1PrivateKey>;
39
- //# sourceMappingURL=secp256k1-class.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"secp256k1-class.d.ts","sourceRoot":"","sources":["../../../src/keys/secp256k1-class.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,qBAAa,kBAAmB,YAAW,SAAS,CAAC,WAAW,CAAC;IAC/D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAY;gBAEpB,GAAG,EAAE,UAAU;IAK5B,MAAM,CAAE,IAAI,EAAE,UAAU,GAAG,cAAc,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO;IAIpE,OAAO,IAAK,UAAU;IAItB,IAAI,KAAK,IAAK,UAAU,CAKvB;IAED,MAAM,CAAE,GAAG,EAAE,GAAG,GAAG,OAAO;IAIpB,IAAI,IAAK,OAAO,CAAC,UAAU,CAAC;CAYnC;AAED,qBAAa,mBAAoB,YAAW,UAAU,CAAC,WAAW,CAAC;IACjE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAY;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;gBAE1B,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,UAAU;IAOpD,IAAI,CAAE,OAAO,EAAE,UAAU,GAAG,cAAc,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAI7E,IAAI,MAAM,IAAK,kBAAkB,CAEhC;IAED,OAAO,IAAK,UAAU;IAItB,IAAI,KAAK,IAAK,UAAU,CAKvB;IAED,MAAM,CAAE,GAAG,EAAE,GAAG,GAAG,OAAO;IAI1B,IAAI,IAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAUzC;;;;;;OAMG;IACG,EAAE,IAAK,OAAO,CAAC,MAAM,CAAC;IAK5B;;OAEG;IACG,MAAM,CAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAe,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;CAOhF;AAED,wBAAgB,4BAA4B,CAAE,KAAK,EAAE,UAAU,GAAG,mBAAmB,CAEpF;AAED,wBAAgB,2BAA2B,CAAE,KAAK,EAAE,UAAU,GAAG,kBAAkB,CAElF;AAED,wBAAsB,eAAe,IAAK,OAAO,CAAC,mBAAmB,CAAC,CAGrE"}
@@ -1,109 +0,0 @@
1
- import { CodeError } from '@libp2p/interface';
2
- import { sha256 } from 'multiformats/hashes/sha2';
3
- import { equals as uint8ArrayEquals } from 'uint8arrays/equals';
4
- import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
5
- import { isPromise } from '../util.js';
6
- import { exporter } from './exporter.js';
7
- import * as keysProtobuf from './keys.js';
8
- import * as crypto from './secp256k1.js';
9
- export class Secp256k1PublicKey {
10
- _key;
11
- constructor(key) {
12
- crypto.validatePublicKey(key);
13
- this._key = key;
14
- }
15
- verify(data, sig) {
16
- return crypto.hashAndVerify(this._key, sig, data);
17
- }
18
- marshal() {
19
- return crypto.compressPublicKey(this._key);
20
- }
21
- get bytes() {
22
- return keysProtobuf.PublicKey.encode({
23
- Type: keysProtobuf.KeyType.Secp256k1,
24
- Data: this.marshal()
25
- }).subarray();
26
- }
27
- equals(key) {
28
- return uint8ArrayEquals(this.bytes, key.bytes);
29
- }
30
- async hash() {
31
- const p = sha256.digest(this.bytes);
32
- let bytes;
33
- if (isPromise(p)) {
34
- ({ bytes } = await p);
35
- }
36
- else {
37
- bytes = p.bytes;
38
- }
39
- return bytes;
40
- }
41
- }
42
- export class Secp256k1PrivateKey {
43
- _key;
44
- _publicKey;
45
- constructor(key, publicKey) {
46
- this._key = key;
47
- this._publicKey = publicKey ?? crypto.computePublicKey(key);
48
- crypto.validatePrivateKey(this._key);
49
- crypto.validatePublicKey(this._publicKey);
50
- }
51
- sign(message) {
52
- return crypto.hashAndSign(this._key, message);
53
- }
54
- get public() {
55
- return new Secp256k1PublicKey(this._publicKey);
56
- }
57
- marshal() {
58
- return this._key;
59
- }
60
- get bytes() {
61
- return keysProtobuf.PrivateKey.encode({
62
- Type: keysProtobuf.KeyType.Secp256k1,
63
- Data: this.marshal()
64
- }).subarray();
65
- }
66
- equals(key) {
67
- return uint8ArrayEquals(this.bytes, key.bytes);
68
- }
69
- hash() {
70
- const p = sha256.digest(this.bytes);
71
- if (isPromise(p)) {
72
- return p.then(({ bytes }) => bytes);
73
- }
74
- return p.bytes;
75
- }
76
- /**
77
- * Gets the ID of the key.
78
- *
79
- * The key id is the base58 encoding of the SHA-256 multihash of its public key.
80
- * The public key is a protobuf encoding containing a type and the DER encoding
81
- * of the PKCS SubjectPublicKeyInfo.
82
- */
83
- async id() {
84
- const hash = await this.public.hash();
85
- return uint8ArrayToString(hash, 'base58btc');
86
- }
87
- /**
88
- * Exports the key into a password protected `format`
89
- */
90
- async export(password, format = 'libp2p-key') {
91
- if (format === 'libp2p-key') {
92
- return exporter(this.bytes, password);
93
- }
94
- else {
95
- throw new CodeError(`export format '${format}' is not supported`, 'ERR_INVALID_EXPORT_FORMAT');
96
- }
97
- }
98
- }
99
- export function unmarshalSecp256k1PrivateKey(bytes) {
100
- return new Secp256k1PrivateKey(bytes);
101
- }
102
- export function unmarshalSecp256k1PublicKey(bytes) {
103
- return new Secp256k1PublicKey(bytes);
104
- }
105
- export async function generateKeyPair() {
106
- const privateKeyBytes = crypto.generateKey();
107
- return new Secp256k1PrivateKey(privateKeyBytes);
108
- }
109
- //# sourceMappingURL=secp256k1-class.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"secp256k1-class.js","sourceRoot":"","sources":["../../../src/keys/secp256k1-class.ts"],"names":[],"mappings":"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"}