@waku/enr 0.0.4 → 0.0.6

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 (55) hide show
  1. package/CHANGELOG.md +46 -2
  2. package/bundle/index.js +5367 -5359
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/creator.d.ts +7 -0
  5. package/dist/creator.js +26 -0
  6. package/dist/creator.js.map +1 -0
  7. package/dist/crypto.d.ts +0 -7
  8. package/dist/crypto.js +1 -7
  9. package/dist/crypto.js.map +1 -1
  10. package/dist/decoder.d.ts +5 -0
  11. package/dist/decoder.js +62 -0
  12. package/dist/decoder.js.map +1 -0
  13. package/dist/encoder.d.ts +7 -0
  14. package/dist/encoder.js +38 -0
  15. package/dist/encoder.js.map +1 -0
  16. package/dist/enr.d.ts +19 -68
  17. package/dist/enr.js +43 -336
  18. package/dist/enr.js.map +1 -1
  19. package/dist/get_multiaddr.d.ts +3 -0
  20. package/dist/get_multiaddr.js +31 -0
  21. package/dist/get_multiaddr.js.map +1 -0
  22. package/dist/index.d.ts +3 -1
  23. package/dist/index.js +3 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/peer_id.d.ts +4 -0
  26. package/dist/peer_id.js +25 -0
  27. package/dist/peer_id.js.map +1 -0
  28. package/dist/raw_enr.d.ts +56 -0
  29. package/dist/raw_enr.js +142 -0
  30. package/dist/raw_enr.js.map +1 -0
  31. package/dist/v4.js +1 -1
  32. package/dist/v4.js.map +1 -1
  33. package/package.json +39 -28
  34. package/src/creator.ts +36 -0
  35. package/src/crypto.ts +1 -9
  36. package/src/decoder.ts +84 -0
  37. package/src/encoder.ts +50 -0
  38. package/src/enr.ts +50 -411
  39. package/src/get_multiaddr.ts +47 -0
  40. package/src/index.ts +3 -1
  41. package/src/peer_id.ts +34 -0
  42. package/src/raw_enr.ts +204 -0
  43. package/src/v4.ts +1 -2
  44. package/dist/keypair/index.d.ts +0 -8
  45. package/dist/keypair/index.js +0 -53
  46. package/dist/keypair/index.js.map +0 -1
  47. package/dist/keypair/secp256k1.d.ts +0 -13
  48. package/dist/keypair/secp256k1.js +0 -57
  49. package/dist/keypair/secp256k1.js.map +0 -1
  50. package/dist/keypair/types.d.ts +0 -13
  51. package/dist/keypair/types.js +0 -7
  52. package/dist/keypair/types.js.map +0 -1
  53. package/src/keypair/index.ts +0 -76
  54. package/src/keypair/secp256k1.ts +0 -69
  55. package/src/keypair/types.ts +0 -14
package/dist/enr.js CHANGED
@@ -1,30 +1,34 @@
1
- import * as RLP from "@ethersproject/rlp";
2
- import { convertToBytes, convertToString, } from "@multiformats/multiaddr/convert";
3
- import { bytesToHex, bytesToUtf8, hexToBytes, utf8ToBytes, } from "@waku/byte-utils";
4
1
  import debug from "debug";
5
- import { fromString } from "uint8arrays/from-string";
6
- import { toString } from "uint8arrays/to-string";
7
- import { ERR_INVALID_ID, ERR_NO_SIGNATURE, MAX_RECORD_SIZE, } from "./constants.js";
8
- import { compressPublicKey, keccak256, verifySignature } from "./crypto.js";
9
- import { createKeypair, createKeypairFromPeerId, createPeerIdFromKeypair, KeypairType, } from "./keypair/index.js";
10
- import { multiaddrFromFields } from "./multiaddr_from_fields.js";
11
- import { decodeMultiaddrs, encodeMultiaddrs } from "./multiaddrs_codec.js";
2
+ import { ERR_INVALID_ID } from "./constants.js";
3
+ import { keccak256, verifySignature } from "./crypto.js";
4
+ import { locationMultiaddrFromEnrFields } from "./get_multiaddr.js";
5
+ import { createPeerIdFromPublicKey } from "./peer_id.js";
6
+ import { RawEnr } from "./raw_enr.js";
12
7
  import * as v4 from "./v4.js";
13
- import { decodeWaku2, encodeWaku2 } from "./waku2_codec.js";
14
8
  const log = debug("waku:enr");
15
- export class ENR extends Map {
16
- constructor(kvs = {}, seq = BigInt(1), signature) {
17
- super(Object.entries(kvs));
18
- this.seq = seq;
19
- this.signature = signature;
9
+ export var TransportProtocol;
10
+ (function (TransportProtocol) {
11
+ TransportProtocol["TCP"] = "tcp";
12
+ TransportProtocol["UDP"] = "udp";
13
+ })(TransportProtocol || (TransportProtocol = {}));
14
+ export var TransportProtocolPerIpVersion;
15
+ (function (TransportProtocolPerIpVersion) {
16
+ TransportProtocolPerIpVersion["TCP4"] = "tcp4";
17
+ TransportProtocolPerIpVersion["UDP4"] = "udp4";
18
+ TransportProtocolPerIpVersion["TCP6"] = "tcp6";
19
+ TransportProtocolPerIpVersion["UDP6"] = "udp6";
20
+ })(TransportProtocolPerIpVersion || (TransportProtocolPerIpVersion = {}));
21
+ export class ENR extends RawEnr {
22
+ constructor() {
23
+ super(...arguments);
24
+ this.getLocationMultiaddr = locationMultiaddrFromEnrFields.bind({}, this);
20
25
  }
21
26
  static async create(kvs = {}, seq = BigInt(1), signature) {
22
27
  const enr = new ENR(kvs, seq, signature);
23
28
  try {
24
29
  const publicKey = enr.publicKey;
25
30
  if (publicKey) {
26
- const keypair = createKeypair(enr.keypairType, undefined, publicKey);
27
- enr.peerId = await createPeerIdFromKeypair(keypair);
31
+ enr.peerId = await createPeerIdFromPublicKey(publicKey);
28
32
  }
29
33
  }
30
34
  catch (e) {
@@ -32,102 +36,6 @@ export class ENR extends Map {
32
36
  }
33
37
  return enr;
34
38
  }
35
- static createV4(publicKey, kvs = {}) {
36
- // EIP-778 specifies that the key must be in compressed format, 33 bytes
37
- if (publicKey.length !== 33) {
38
- publicKey = compressPublicKey(publicKey);
39
- }
40
- return ENR.create({
41
- ...kvs,
42
- id: utf8ToBytes("v4"),
43
- secp256k1: publicKey,
44
- });
45
- }
46
- static async createFromPeerId(peerId, kvs = {}) {
47
- const keypair = await createKeypairFromPeerId(peerId);
48
- switch (keypair.type) {
49
- case KeypairType.secp256k1:
50
- return ENR.createV4(keypair.publicKey, kvs);
51
- default:
52
- throw new Error();
53
- }
54
- }
55
- static async decodeFromValues(decoded) {
56
- if (!Array.isArray(decoded)) {
57
- throw new Error("Decoded ENR must be an array");
58
- }
59
- if (decoded.length % 2 !== 0) {
60
- throw new Error("Decoded ENR must have an even number of elements");
61
- }
62
- const [signature, seq, ...kvs] = decoded;
63
- if (!signature || Array.isArray(signature)) {
64
- throw new Error("Decoded ENR invalid signature: must be a byte array");
65
- }
66
- if (!seq || Array.isArray(seq)) {
67
- throw new Error("Decoded ENR invalid sequence number: must be a byte array");
68
- }
69
- const obj = {};
70
- for (let i = 0; i < kvs.length; i += 2) {
71
- try {
72
- obj[bytesToUtf8(kvs[i])] = kvs[i + 1];
73
- }
74
- catch (e) {
75
- log("Failed to decode ENR key to UTF-8, skipping it", kvs[i], e);
76
- }
77
- }
78
- // If seq is an empty array, translate as value 0
79
- const hexSeq = "0x" + (seq.length ? bytesToHex(seq) : "00");
80
- const enr = await ENR.create(obj, BigInt(hexSeq), signature);
81
- const rlpEncodedBytes = hexToBytes(RLP.encode([seq, ...kvs]));
82
- if (!enr.verify(rlpEncodedBytes, signature)) {
83
- throw new Error("Unable to verify ENR signature");
84
- }
85
- return enr;
86
- }
87
- static decode(encoded) {
88
- const decoded = RLP.decode(encoded).map(hexToBytes);
89
- return ENR.decodeFromValues(decoded);
90
- }
91
- static decodeTxt(encoded) {
92
- if (!encoded.startsWith(this.RECORD_PREFIX)) {
93
- throw new Error(`"string encoded ENR must start with '${this.RECORD_PREFIX}'`);
94
- }
95
- return ENR.decode(fromString(encoded.slice(4), "base64url"));
96
- }
97
- set(k, v) {
98
- this.signature = undefined;
99
- this.seq++;
100
- return super.set(k, v);
101
- }
102
- get id() {
103
- const id = this.get("id");
104
- if (!id)
105
- throw new Error("id not found.");
106
- return bytesToUtf8(id);
107
- }
108
- get keypairType() {
109
- switch (this.id) {
110
- case "v4":
111
- return KeypairType.secp256k1;
112
- default:
113
- throw new Error(ERR_INVALID_ID);
114
- }
115
- }
116
- get publicKey() {
117
- switch (this.id) {
118
- case "v4":
119
- return this.get("secp256k1");
120
- default:
121
- throw new Error(ERR_INVALID_ID);
122
- }
123
- }
124
- get keypair() {
125
- if (this.publicKey) {
126
- const publicKey = this.publicKey;
127
- return createKeypair(this.keypairType, undefined, publicKey);
128
- }
129
- return;
130
- }
131
39
  get nodeId() {
132
40
  switch (this.id) {
133
41
  case "v4":
@@ -136,178 +44,6 @@ export class ENR extends Map {
136
44
  throw new Error(ERR_INVALID_ID);
137
45
  }
138
46
  }
139
- get ip() {
140
- const raw = this.get("ip");
141
- if (raw) {
142
- return convertToString("ip4", raw);
143
- }
144
- else {
145
- return undefined;
146
- }
147
- }
148
- set ip(ip) {
149
- if (ip) {
150
- this.set("ip", convertToBytes("ip4", ip));
151
- }
152
- else {
153
- this.delete("ip");
154
- }
155
- }
156
- get tcp() {
157
- const raw = this.get("tcp");
158
- if (raw) {
159
- return Number(convertToString("tcp", raw));
160
- }
161
- else {
162
- return undefined;
163
- }
164
- }
165
- set tcp(port) {
166
- if (port === undefined) {
167
- this.delete("tcp");
168
- }
169
- else {
170
- this.set("tcp", convertToBytes("tcp", port.toString(10)));
171
- }
172
- }
173
- get udp() {
174
- const raw = this.get("udp");
175
- if (raw) {
176
- return Number(convertToString("udp", raw));
177
- }
178
- else {
179
- return undefined;
180
- }
181
- }
182
- set udp(port) {
183
- if (port === undefined) {
184
- this.delete("udp");
185
- }
186
- else {
187
- this.set("udp", convertToBytes("udp", port.toString(10)));
188
- }
189
- }
190
- get ip6() {
191
- const raw = this.get("ip6");
192
- if (raw) {
193
- return convertToString("ip6", raw);
194
- }
195
- else {
196
- return undefined;
197
- }
198
- }
199
- set ip6(ip) {
200
- if (ip) {
201
- this.set("ip6", convertToBytes("ip6", ip));
202
- }
203
- else {
204
- this.delete("ip6");
205
- }
206
- }
207
- get tcp6() {
208
- const raw = this.get("tcp6");
209
- if (raw) {
210
- return Number(convertToString("tcp", raw));
211
- }
212
- else {
213
- return undefined;
214
- }
215
- }
216
- set tcp6(port) {
217
- if (port === undefined) {
218
- this.delete("tcp6");
219
- }
220
- else {
221
- this.set("tcp6", convertToBytes("tcp", port.toString(10)));
222
- }
223
- }
224
- get udp6() {
225
- const raw = this.get("udp6");
226
- if (raw) {
227
- return Number(convertToString("udp", raw));
228
- }
229
- else {
230
- return undefined;
231
- }
232
- }
233
- set udp6(port) {
234
- if (port === undefined) {
235
- this.delete("udp6");
236
- }
237
- else {
238
- this.set("udp6", convertToBytes("udp", port.toString(10)));
239
- }
240
- }
241
- /**
242
- * Get the `multiaddrs` field from ENR.
243
- *
244
- * This field is used to store multiaddresses that cannot be stored with the current ENR pre-defined keys.
245
- * These can be a multiaddresses that include encapsulation (e.g. wss) or do not use `ip4` nor `ip6` for the host
246
- * address (e.g. `dns4`, `dnsaddr`, etc)..
247
- *
248
- * If the peer information only contains information that can be represented with the ENR pre-defined keys
249
- * (ip, tcp, etc) then the usage of { @link getLocationMultiaddr } should be preferred.
250
- *
251
- * The multiaddresses stored in this field are expected to be location multiaddresses, ie, peer id less.
252
- */
253
- get multiaddrs() {
254
- const raw = this.get("multiaddrs");
255
- if (raw)
256
- return decodeMultiaddrs(raw);
257
- return;
258
- }
259
- /**
260
- * Set the `multiaddrs` field on the ENR.
261
- *
262
- * This field is used to store multiaddresses that cannot be stored with the current ENR pre-defined keys.
263
- * These can be a multiaddresses that include encapsulation (e.g. wss) or do not use `ip4` nor `ip6` for the host
264
- * address (e.g. `dns4`, `dnsaddr`, etc)..
265
- *
266
- * If the peer information only contains information that can be represented with the ENR pre-defined keys
267
- * (ip, tcp, etc) then the usage of { @link setLocationMultiaddr } should be preferred.
268
- * The multiaddresses stored in this field must be location multiaddresses,
269
- * ie, without a peer id.
270
- */
271
- set multiaddrs(multiaddrs) {
272
- if (multiaddrs === undefined) {
273
- this.delete("multiaddrs");
274
- }
275
- else {
276
- const multiaddrsBuf = encodeMultiaddrs(multiaddrs);
277
- this.set("multiaddrs", multiaddrsBuf);
278
- }
279
- }
280
- getLocationMultiaddr(protocol) {
281
- if (protocol === "udp") {
282
- return (this.getLocationMultiaddr("udp4") || this.getLocationMultiaddr("udp6"));
283
- }
284
- if (protocol === "tcp") {
285
- return (this.getLocationMultiaddr("tcp4") || this.getLocationMultiaddr("tcp6"));
286
- }
287
- const isIpv6 = protocol.endsWith("6");
288
- const ipVal = this.get(isIpv6 ? "ip6" : "ip");
289
- if (!ipVal) {
290
- return;
291
- }
292
- const isUdp = protocol.startsWith("udp");
293
- const isTcp = protocol.startsWith("tcp");
294
- let protoName, protoVal;
295
- if (isUdp) {
296
- protoName = "udp";
297
- protoVal = isIpv6 ? this.get("udp6") : this.get("udp");
298
- }
299
- else if (isTcp) {
300
- protoName = "tcp";
301
- protoVal = isIpv6 ? this.get("tcp6") : this.get("tcp");
302
- }
303
- else {
304
- return;
305
- }
306
- if (!protoVal) {
307
- return;
308
- }
309
- return multiaddrFromFields(isIpv6 ? "ip6" : "ip4", protoName, ipVal, protoVal);
310
- }
311
47
  setLocationMultiaddr(multiaddr) {
312
48
  const protoNames = multiaddr.protoNames();
313
49
  if (protoNames.length !== 2 &&
@@ -329,6 +65,27 @@ export class ENR extends Map {
329
65
  this.set(protoNames[1] + "6", tuples[1][1]);
330
66
  }
331
67
  }
68
+ getAllLocationMultiaddrs() {
69
+ const multiaddrs = [];
70
+ for (const protocol of Object.values(TransportProtocolPerIpVersion)) {
71
+ const ma = this.getLocationMultiaddr(protocol);
72
+ if (ma)
73
+ multiaddrs.push(ma);
74
+ }
75
+ const _multiaddrs = this.multiaddrs ?? [];
76
+ multiaddrs.concat(_multiaddrs);
77
+ return multiaddrs;
78
+ }
79
+ get peerInfo() {
80
+ const id = this.peerId;
81
+ if (!id)
82
+ return;
83
+ return {
84
+ id,
85
+ multiaddrs: this.getAllLocationMultiaddrs(),
86
+ protocols: [],
87
+ };
88
+ }
332
89
  /**
333
90
  * Returns the full multiaddr from the ENR fields matching the provided
334
91
  * `protocol` parameter.
@@ -358,27 +115,6 @@ export class ENR extends Map {
358
115
  }
359
116
  return [];
360
117
  }
361
- /**
362
- * Get the `waku2` field from ENR.
363
- */
364
- get waku2() {
365
- const raw = this.get("waku2");
366
- if (raw)
367
- return decodeWaku2(raw[0]);
368
- return;
369
- }
370
- /**
371
- * Set the `waku2` field on the ENR.
372
- */
373
- set waku2(waku2) {
374
- if (waku2 === undefined) {
375
- this.delete("waku2");
376
- }
377
- else {
378
- const byte = encodeWaku2(waku2);
379
- this.set("waku2", new Uint8Array([byte]));
380
- }
381
- }
382
118
  verify(data, signature) {
383
119
  if (!this.get("id") || this.id !== "v4") {
384
120
  throw new Error(ERR_INVALID_ID);
@@ -398,35 +134,6 @@ export class ENR extends Map {
398
134
  }
399
135
  return this.signature;
400
136
  }
401
- async encodeToValues(privateKey) {
402
- // sort keys and flatten into [k, v, k, v, ...]
403
- const content = Array.from(this.keys())
404
- .sort((a, b) => a.localeCompare(b))
405
- .map((k) => [k, this.get(k)])
406
- .map(([k, v]) => [utf8ToBytes(k), v])
407
- .flat();
408
- content.unshift(new Uint8Array([Number(this.seq)]));
409
- if (privateKey) {
410
- content.unshift(await this.sign(hexToBytes(RLP.encode(content)), privateKey));
411
- }
412
- else {
413
- if (!this.signature) {
414
- throw new Error(ERR_NO_SIGNATURE);
415
- }
416
- content.unshift(this.signature);
417
- }
418
- return content;
419
- }
420
- async encode(privateKey) {
421
- const encoded = hexToBytes(RLP.encode(await this.encodeToValues(privateKey)));
422
- if (encoded.length >= MAX_RECORD_SIZE) {
423
- throw new Error("ENR must be less than 300 bytes");
424
- }
425
- return encoded;
426
- }
427
- async encodeTxt(privateKey) {
428
- return (ENR.RECORD_PREFIX + toString(await this.encode(privateKey), "base64url"));
429
- }
430
137
  }
431
138
  ENR.RECORD_PREFIX = "enr:";
432
139
  //# sourceMappingURL=enr.js.map
package/dist/enr.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"enr.js","sourceRoot":"","sources":["../src/enr.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"enr.js","sourceRoot":"","sources":["../src/enr.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Multiaddr } from "@multiformats/multiaddr";
2
+ import type { IEnr } from "@waku/interfaces";
3
+ export declare function locationMultiaddrFromEnrFields(enr: IEnr, protocol: "udp" | "udp4" | "udp6" | "tcp" | "tcp4" | "tcp6"): Multiaddr | undefined;
@@ -0,0 +1,31 @@
1
+ import { multiaddrFromFields } from "./multiaddr_from_fields.js";
2
+ export function locationMultiaddrFromEnrFields(enr, protocol) {
3
+ switch (protocol) {
4
+ case "udp":
5
+ return (locationMultiaddrFromEnrFields(enr, "udp4") ||
6
+ locationMultiaddrFromEnrFields(enr, "udp6"));
7
+ case "tcp":
8
+ return (locationMultiaddrFromEnrFields(enr, "tcp4") ||
9
+ locationMultiaddrFromEnrFields(enr, "tcp6"));
10
+ }
11
+ const isIpv6 = protocol.endsWith("6");
12
+ const ipVal = enr.get(isIpv6 ? "ip6" : "ip");
13
+ if (!ipVal)
14
+ return;
15
+ const protoName = protocol.slice(0, 3);
16
+ let protoVal;
17
+ switch (protoName) {
18
+ case "udp":
19
+ protoVal = isIpv6 ? enr.get("udp6") : enr.get("udp");
20
+ break;
21
+ case "tcp":
22
+ protoVal = isIpv6 ? enr.get("tcp6") : enr.get("tcp");
23
+ break;
24
+ default:
25
+ return;
26
+ }
27
+ if (!protoVal)
28
+ return;
29
+ return multiaddrFromFields(isIpv6 ? "ip6" : "ip4", protoName, ipVal, protoVal);
30
+ }
31
+ //# sourceMappingURL=get_multiaddr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get_multiaddr.js","sourceRoot":"","sources":["../src/get_multiaddr.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,UAAU,8BAA8B,CAC5C,GAAS,EACT,QAA2D;IAE3D,QAAQ,QAAQ,EAAE;QAChB,KAAK,KAAK;YACR,OAAO,CACL,8BAA8B,CAAC,GAAG,EAAE,MAAM,CAAC;gBAC3C,8BAA8B,CAAC,GAAG,EAAE,MAAM,CAAC,CAC5C,CAAC;QACJ,KAAK,KAAK;YACR,OAAO,CACL,8BAA8B,CAAC,GAAG,EAAE,MAAM,CAAC;gBAC3C,8BAA8B,CAAC,GAAG,EAAE,MAAM,CAAC,CAC5C,CAAC;KACL;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,IAAI,QAAQ,CAAC;IACb,QAAQ,SAAS,EAAE;QACjB,KAAK,KAAK;YACR,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACrD,MAAM;QACR,KAAK,KAAK;YACR,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACrD,MAAM;QACR;YACE,OAAO;KACV;IAED,IAAI,CAAC,QAAQ;QAAE,OAAO;IAEtB,OAAO,mBAAmB,CACxB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EACtB,SAAS,EACT,KAAK,EACL,QAAQ,CACT,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  export * from "./constants.js";
2
+ export * from "./creator.js";
3
+ export * from "./decoder.js";
2
4
  export * from "./enr.js";
3
- export * from "./keypair/index.js";
5
+ export * from "./peer_id.js";
4
6
  export * from "./waku2_codec.js";
5
7
  export * from "./crypto.js";
package/dist/index.js CHANGED
@@ -1,6 +1,8 @@
1
1
  export * from "./constants.js";
2
+ export * from "./creator.js";
3
+ export * from "./decoder.js";
2
4
  export * from "./enr.js";
3
- export * from "./keypair/index.js";
5
+ export * from "./peer_id.js";
4
6
  export * from "./waku2_codec.js";
5
7
  export * from "./crypto.js";
6
8
  //# 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,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { PeerId } from "@libp2p/interface-peer-id";
2
+ export declare function createPeerIdFromPublicKey(publicKey: Uint8Array): Promise<PeerId>;
3
+ export declare function getPublicKeyFromPeerId(peerId: PeerId): Uint8Array;
4
+ export declare function getPrivateKeyFromPeerId(peerId: PeerId): Promise<Uint8Array>;
@@ -0,0 +1,25 @@
1
+ import { unmarshalPrivateKey, unmarshalPublicKey } from "@libp2p/crypto/keys";
2
+ import { supportedKeys } from "@libp2p/crypto/keys";
3
+ import { peerIdFromKeys } from "@libp2p/peer-id";
4
+ export function createPeerIdFromPublicKey(publicKey) {
5
+ const _publicKey = new supportedKeys.secp256k1.Secp256k1PublicKey(publicKey);
6
+ return peerIdFromKeys(_publicKey.bytes, undefined);
7
+ }
8
+ export function getPublicKeyFromPeerId(peerId) {
9
+ if (peerId.type !== "secp256k1") {
10
+ throw new Error("Unsupported peer id type");
11
+ }
12
+ return unmarshalPublicKey(peerId.publicKey).marshal();
13
+ }
14
+ // Only used in tests
15
+ export async function getPrivateKeyFromPeerId(peerId) {
16
+ if (peerId.type !== "secp256k1") {
17
+ throw new Error("Unsupported peer id type");
18
+ }
19
+ if (!peerId.privateKey) {
20
+ throw new Error("Private key not present on peer id");
21
+ }
22
+ const privateKey = await unmarshalPrivateKey(peerId.privateKey);
23
+ return privateKey.marshal();
24
+ }
25
+ //# sourceMappingURL=peer_id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peer_id.js","sourceRoot":"","sources":["../src/peer_id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,UAAU,yBAAyB,CACvC,SAAqB;IAErB,MAAM,UAAU,GAAG,IAAI,aAAa,CAAC,SAAS,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC7E,OAAO,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAc;IACnD,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;KAC7C;IAED,OAAO,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;AACxD,CAAC;AAED,qBAAqB;AACrB,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAc;IAEd,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;KAC7C;IACD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;QACtB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;KACvD;IAED,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAChE,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,56 @@
1
+ import type { Multiaddr } from "@multiformats/multiaddr";
2
+ import type { ENRKey, ENRValue, SequenceNumber, Waku2 } from "@waku/interfaces";
3
+ export declare class RawEnr extends Map<ENRKey, ENRValue> {
4
+ seq: SequenceNumber;
5
+ signature?: Uint8Array;
6
+ protected constructor(kvs?: Record<ENRKey, ENRValue>, seq?: SequenceNumber, signature?: Uint8Array);
7
+ set(k: ENRKey, v: ENRValue): this;
8
+ get id(): string;
9
+ get publicKey(): Uint8Array | undefined;
10
+ get ip(): string | undefined;
11
+ set ip(ip: string | undefined);
12
+ get tcp(): number | undefined;
13
+ set tcp(port: number | undefined);
14
+ get udp(): number | undefined;
15
+ set udp(port: number | undefined);
16
+ get ip6(): string | undefined;
17
+ set ip6(ip: string | undefined);
18
+ get tcp6(): number | undefined;
19
+ set tcp6(port: number | undefined);
20
+ get udp6(): number | undefined;
21
+ set udp6(port: number | undefined);
22
+ /**
23
+ * Get the `multiaddrs` field from ENR.
24
+ *
25
+ * This field is used to store multiaddresses that cannot be stored with the current ENR pre-defined keys.
26
+ * These can be a multiaddresses that include encapsulation (e.g. wss) or do not use `ip4` nor `ip6` for the host
27
+ * address (e.g. `dns4`, `dnsaddr`, etc)..
28
+ *
29
+ * If the peer information only contains information that can be represented with the ENR pre-defined keys
30
+ * (ip, tcp, etc) then the usage of { @link ENR.getLocationMultiaddr } should be preferred.
31
+ *
32
+ * The multiaddresses stored in this field are expected to be location multiaddresses, ie, peer id less.
33
+ */
34
+ get multiaddrs(): Multiaddr[] | undefined;
35
+ /**
36
+ * Set the `multiaddrs` field on the ENR.
37
+ *
38
+ * This field is used to store multiaddresses that cannot be stored with the current ENR pre-defined keys.
39
+ * These can be a multiaddresses that include encapsulation (e.g. wss) or do not use `ip4` nor `ip6` for the host
40
+ * address (e.g. `dns4`, `dnsaddr`, etc)..
41
+ *
42
+ * If the peer information only contains information that can be represented with the ENR pre-defined keys
43
+ * (ip, tcp, etc) then the usage of { @link ENR.setLocationMultiaddr } should be preferred.
44
+ * The multiaddresses stored in this field must be location multiaddresses,
45
+ * ie, without a peer id.
46
+ */
47
+ set multiaddrs(multiaddrs: Multiaddr[] | undefined);
48
+ /**
49
+ * Get the `waku2` field from ENR.
50
+ */
51
+ get waku2(): Waku2 | undefined;
52
+ /**
53
+ * Set the `waku2` field on the ENR.
54
+ */
55
+ set waku2(waku2: Waku2 | undefined);
56
+ }