@helia/ipns 9.2.0 → 9.2.1-17530ed8

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 (69) hide show
  1. package/README.md +21 -57
  2. package/dist/index.min.js +9 -23
  3. package/dist/index.min.js.map +4 -4
  4. package/dist/src/errors.d.ts +33 -5
  5. package/dist/src/errors.d.ts.map +1 -1
  6. package/dist/src/errors.js +33 -20
  7. package/dist/src/errors.js.map +1 -1
  8. package/dist/src/index.d.ts +62 -99
  9. package/dist/src/index.d.ts.map +1 -1
  10. package/dist/src/index.js +21 -60
  11. package/dist/src/index.js.map +1 -1
  12. package/dist/src/ipns/publisher.d.ts +5 -9
  13. package/dist/src/ipns/publisher.d.ts.map +1 -1
  14. package/dist/src/ipns/publisher.js +30 -22
  15. package/dist/src/ipns/publisher.js.map +1 -1
  16. package/dist/src/ipns/republisher.d.ts +3 -5
  17. package/dist/src/ipns/republisher.d.ts.map +1 -1
  18. package/dist/src/ipns/republisher.js +18 -9
  19. package/dist/src/ipns/republisher.js.map +1 -1
  20. package/dist/src/ipns/resolver.d.ts +6 -5
  21. package/dist/src/ipns/resolver.d.ts.map +1 -1
  22. package/dist/src/ipns/resolver.js +32 -78
  23. package/dist/src/ipns/resolver.js.map +1 -1
  24. package/dist/src/ipns.d.ts +6 -4
  25. package/dist/src/ipns.d.ts.map +1 -1
  26. package/dist/src/ipns.js +33 -4
  27. package/dist/src/ipns.js.map +1 -1
  28. package/dist/src/pb/ipns.d.ts +62 -0
  29. package/dist/src/pb/ipns.d.ts.map +1 -0
  30. package/dist/src/pb/ipns.js +203 -0
  31. package/dist/src/pb/ipns.js.map +1 -0
  32. package/dist/src/pb/metadata.d.ts +1 -1
  33. package/dist/src/pb/metadata.d.ts.map +1 -1
  34. package/dist/src/records.d.ts +155 -0
  35. package/dist/src/records.d.ts.map +1 -0
  36. package/dist/src/records.js +88 -0
  37. package/dist/src/records.js.map +1 -0
  38. package/dist/src/routing/pubsub.d.ts +3 -0
  39. package/dist/src/routing/pubsub.d.ts.map +1 -1
  40. package/dist/src/routing/pubsub.js +15 -10
  41. package/dist/src/routing/pubsub.js.map +1 -1
  42. package/dist/src/selector.d.ts +14 -0
  43. package/dist/src/selector.d.ts.map +1 -0
  44. package/dist/src/selector.js +47 -0
  45. package/dist/src/selector.js.map +1 -0
  46. package/dist/src/utils.d.ts +29 -2
  47. package/dist/src/utils.d.ts.map +1 -1
  48. package/dist/src/utils.js +308 -0
  49. package/dist/src/utils.js.map +1 -1
  50. package/dist/src/validator.d.ts +18 -0
  51. package/dist/src/validator.d.ts.map +1 -0
  52. package/dist/src/validator.js +58 -0
  53. package/dist/src/validator.js.map +1 -0
  54. package/package.json +32 -28
  55. package/src/errors.ts +40 -25
  56. package/src/index.ts +63 -100
  57. package/src/ipns/publisher.ts +34 -29
  58. package/src/ipns/republisher.ts +24 -13
  59. package/src/ipns/resolver.ts +40 -88
  60. package/src/ipns.ts +44 -7
  61. package/src/pb/ipns.proto +39 -0
  62. package/src/pb/ipns.ts +280 -0
  63. package/src/pb/metadata.ts +1 -1
  64. package/src/records.ts +273 -0
  65. package/src/routing/pubsub.ts +17 -10
  66. package/src/selector.ts +55 -0
  67. package/src/utils.ts +371 -2
  68. package/src/validator.ts +67 -0
  69. package/dist/typedoc-urls.json +0 -51
@@ -4,9 +4,6 @@ import { PeerSet } from '@libp2p/peer-collections';
4
4
  import { Queue } from '@libp2p/utils';
5
5
  import { anySignal } from 'any-signal';
6
6
  import delay from 'delay';
7
- import { multihashToIPNSRoutingKey } from 'ipns';
8
- import { ipnsSelector } from 'ipns/selector';
9
- import { ipnsValidator } from 'ipns/validator';
10
7
  import { CustomProgressEvent } from 'progress-events';
11
8
  import { raceSignal } from 'race-signal';
12
9
  import { equals as uint8ArrayEquals } from 'uint8arrays/equals';
@@ -14,7 +11,10 @@ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
14
11
  import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
15
12
  import { InvalidTopicError } from "../errors.js";
16
13
  import { localStore } from "../local-store.js";
17
- import { IPNS_STRING_PREFIX } from "../utils.js";
14
+ import { multihashToIPNSRoutingKey } from "../records.js";
15
+ import { ipnsSelector } from "../selector.js";
16
+ import { IPNS_STRING_PREFIX, unmarshalIPNSRecord } from "../utils.js";
17
+ import { ipnsValidator } from "../validator.js";
18
18
  const log = logger('helia:ipns:routing:pubsub');
19
19
  export class PubSubRouting {
20
20
  subscriptions;
@@ -27,6 +27,7 @@ export class PubSubRouting {
27
27
  fetchPeers;
28
28
  shutdownController;
29
29
  fetchTopologyId;
30
+ keychain;
30
31
  constructor(components, init = {}) {
31
32
  this.subscriptions = new Set();
32
33
  this.shutdownController = new AbortController();
@@ -36,6 +37,7 @@ export class PubSubRouting {
36
37
  this.libp2p = components.libp2p;
37
38
  this.fetchConcurrency = init.fetchConcurrency ?? 8;
38
39
  this.fetchDelay = init.fetchDelay ?? 0;
40
+ this.keychain = components.keychain;
39
41
  // default libp2p-fetch timeout is 10 seconds - we should have an existing
40
42
  // connection to the peer so this can be shortened
41
43
  this.fetchTimeout = init.fetchTimeout ?? 2_500;
@@ -138,19 +140,21 @@ export class PubSubRouting {
138
140
  return this.#handleRecord(topic, routingKey, marshalledRecord, true, options);
139
141
  }
140
142
  async #handleRecord(topic, routingKey, marshalledRecord, publish, options) {
141
- await ipnsValidator(routingKey, marshalledRecord);
143
+ const record = await unmarshalIPNSRecord(routingKey, marshalledRecord, this.keychain, options);
144
+ await ipnsValidator(record, options);
142
145
  this.shutdownController.signal.throwIfAborted();
143
146
  if (await this.localStore.has(routingKey)) {
144
- const { record: currentRecord } = await this.localStore.get(routingKey, options);
145
- if (uint8ArrayEquals(currentRecord, marshalledRecord)) {
147
+ const { record: marshaledCurrentRecord } = await this.localStore.get(routingKey, options);
148
+ const currentRecord = await unmarshalIPNSRecord(routingKey, marshaledCurrentRecord, this.keychain, options);
149
+ if (uint8ArrayEquals(marshaledCurrentRecord, record.bytes)) {
146
150
  log.trace('found identical record for %m', routingKey);
147
- return currentRecord;
151
+ return currentRecord.bytes;
148
152
  }
149
- const records = [currentRecord, marshalledRecord];
153
+ const records = [currentRecord, record];
150
154
  const index = ipnsSelector(routingKey, records);
151
155
  if (index === 0) {
152
156
  log.trace('found old record for %m', routingKey);
153
- return currentRecord;
157
+ return currentRecord.bytes;
154
158
  }
155
159
  }
156
160
  log('found new record for %m', routingKey);
@@ -244,6 +248,7 @@ export class PubSubRouting {
244
248
  */
245
249
  cancel(key) {
246
250
  const digest = isPublicKey(key) ? key.toMultihash() : key;
251
+ // @ ts-expect-error @libp2p/crypto needs new multiformats
247
252
  const routingKey = multihashToIPNSRoutingKey(digest);
248
253
  const topic = keyToTopic(routingKey);
249
254
  // Not found topic
@@ -1 +1 @@
1
- {"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../../../src/routing/pubsub.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../../../src/routing/pubsub.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { IPNSRecord } from './records.ts';
2
+ /**
3
+ * Selects the latest valid IPNS record from an array of marshalled IPNS records.
4
+ *
5
+ * Records are sorted by:
6
+ * 1. Sequence number (higher takes precedence)
7
+ * 2. Validity time for EOL records with same sequence number (longer lived record takes precedence)
8
+ *
9
+ * @param key - The routing key for the IPNS record
10
+ * @param data - Array of marshalled IPNS records to select from
11
+ * @returns The index of the most valid record from the input array
12
+ */
13
+ export declare function ipnsSelector(key: Uint8Array, data: IPNSRecord[]): number;
14
+ //# sourceMappingURL=selector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../../src/selector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAuCzE"}
@@ -0,0 +1,47 @@
1
+ import NanoDate from 'timestamp-nano';
2
+ import { IpnsEntry } from "./pb/ipns.js";
3
+ /**
4
+ * Selects the latest valid IPNS record from an array of marshalled IPNS records.
5
+ *
6
+ * Records are sorted by:
7
+ * 1. Sequence number (higher takes precedence)
8
+ * 2. Validity time for EOL records with same sequence number (longer lived record takes precedence)
9
+ *
10
+ * @param key - The routing key for the IPNS record
11
+ * @param data - Array of marshalled IPNS records to select from
12
+ * @returns The index of the most valid record from the input array
13
+ */
14
+ export function ipnsSelector(key, data) {
15
+ const entries = data.map((record, index) => ({
16
+ record,
17
+ index
18
+ }));
19
+ entries.sort((a, b) => {
20
+ // Before we'd sort based on the signature version. Unmarshal now fails if
21
+ // a record does not have SignatureV2, so that is no longer needed. V1-only
22
+ // records haven't been issues in a long time.
23
+ const aSeq = a.record.sequence;
24
+ const bSeq = b.record.sequence;
25
+ // choose later sequence number
26
+ if (aSeq > bSeq) {
27
+ return -1;
28
+ }
29
+ else if (aSeq < bSeq) {
30
+ return 1;
31
+ }
32
+ if (a.record.validityType === IpnsEntry.ValidityType.EOL && b.record.validityType === IpnsEntry.ValidityType.EOL) {
33
+ // choose longer lived record if sequence numbers the same
34
+ const recordAValidityDate = NanoDate.fromString(a.record.validity).toDate();
35
+ const recordBValidityDate = NanoDate.fromString(b.record.validity).toDate();
36
+ if (recordAValidityDate.getTime() > recordBValidityDate.getTime()) {
37
+ return -1;
38
+ }
39
+ if (recordAValidityDate.getTime() < recordBValidityDate.getTime()) {
40
+ return 1;
41
+ }
42
+ }
43
+ return 0;
44
+ });
45
+ return entries[0].index;
46
+ }
47
+ //# sourceMappingURL=selector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selector.js","sourceRoot":"","sources":["../../src/selector.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAGxC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAE,GAAe,EAAE,IAAkB;IAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC3C,MAAM;QACN,KAAK;KACN,CAAC,CAAC,CAAA;IAEH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpB,0EAA0E;QAC1E,2EAA2E;QAC3E,8CAA8C;QAE9C,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAA;QAC9B,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAA;QAE9B,+BAA+B;QAC/B,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;YAChB,OAAO,CAAC,CAAC,CAAA;QACX,CAAC;aAAM,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;YACvB,OAAO,CAAC,CAAA;QACV,CAAC;QAED,IAAI,CAAC,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;YACjH,0DAA0D;YAC1D,MAAM,mBAAmB,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAA;YAC3E,MAAM,mBAAmB,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAA;YAE3E,IAAI,mBAAmB,CAAC,OAAO,EAAE,GAAG,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC;gBAClE,OAAO,CAAC,CAAC,CAAA;YACX,CAAC;YAED,IAAI,mBAAmB,CAAC,OAAO,EAAE,GAAG,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC;gBAClE,OAAO,CAAC,CAAA;YACV,CAAC;QACH,CAAC;QAED,OAAO,CAAC,CAAA;IACV,CAAC,CAAC,CAAA;IAEF,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;AACzB,CAAC"}
@@ -1,6 +1,9 @@
1
1
  import { Key } from 'interface-datastore';
2
- import type { IPNSRecord } from 'ipns';
3
- import type { CID } from 'multiformats/cid';
2
+ import { CID } from 'multiformats/cid';
3
+ import { IpnsEntry } from './pb/ipns.ts';
4
+ import type { IPNSRecord, IPNSRecordV2, IPNSRecordData } from './records.ts';
5
+ import type { PublicKey, Keychain } from '@helia/interface';
6
+ import type { AbortOptions } from '@libp2p/interface';
4
7
  import type { MultihashDigest } from 'multiformats/hashes/interface';
5
8
  export declare const LIBP2P_KEY_CODEC = 114;
6
9
  export declare const IDENTITY_CODEC = 0;
@@ -27,4 +30,28 @@ export declare function dhtRoutingKey(key: Uint8Array): Key;
27
30
  export declare function ipnsMetadataKey(key: Uint8Array): Key;
28
31
  export declare function shouldRepublish(ipnsRecord: IPNSRecord, created: Date): boolean;
29
32
  export declare function isLibp2pCID(obj?: any): obj is CID<unknown, 0x72, 0x00 | 0x12, 1>;
33
+ /**
34
+ * Utility for creating the record data for being signed
35
+ */
36
+ export declare function ipnsRecordDataForV1Sig(value: string, validityType: IpnsEntry.ValidityType, validity: Uint8Array): Uint8Array;
37
+ /**
38
+ * Utility for creating the record data for being signed
39
+ */
40
+ export declare function ipnsRecordDataForV2Sig(data: Uint8Array): Uint8Array;
41
+ export declare function marshalIPNSRecord(obj: IPNSRecord | IPNSRecordV2): Uint8Array;
42
+ export declare function unmarshalIPNSRecord(routingKey: Uint8Array, marshalledRecord: Uint8Array, keychain: Keychain, options?: AbortOptions): Promise<IPNSRecord>;
43
+ export declare function multihashToIPNSRoutingKey(digest: MultihashDigest): Uint8Array;
44
+ export declare function multihashFromIPNSRoutingKey(key: Uint8Array): MultihashDigest;
45
+ export declare function createCborData(value: string, validityType: IpnsEntry.ValidityType, validity: Uint8Array, sequence: bigint, ttl: bigint): Uint8Array;
46
+ export declare function parseCborData(buf: Uint8Array): IPNSRecordData;
47
+ /**
48
+ * Normalizes the given record value. It ensures it is a PeerID, a CID or a
49
+ * string starting with '/'. PeerIDs become `/ipns/${cidV1Libp2pKey}`,
50
+ * CIDs become `/ipfs/${cidAsV1}`.
51
+ */
52
+ export declare function normalizeValue(value?: PublicKey | CID | MultihashDigest | string): string;
53
+ export declare function normalizeKey(key?: PublicKey | CID<unknown, 0x72> | MultihashDigest | string): {
54
+ digest: MultihashDigest;
55
+ path: string;
56
+ };
30
57
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAGzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AACtC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpE,eAAO,MAAM,gBAAgB,MAAO,CAAA;AACpC,eAAO,MAAM,cAAc,IAAM,CAAA;AACjC,eAAO,MAAM,cAAc,KAAO,CAAA;AAElC,eAAO,MAAM,kBAAkB,WAAW,CAAA;AAE1C,wBAAgB,OAAO,CAAE,CAAC,SAAS,MAAM,EAAG,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,IAAI,eAAe,CAAC,CAAC,CAAC,CAE3G;AAED,eAAO,MAAM,iBAAiB,iBAAiB,CAAA;AAC/C,eAAO,MAAM,oBAAoB,oBAAoB,CAAA;AAErD,wBAAgB,aAAa,CAAE,GAAG,EAAE,UAAU,GAAG,GAAG,CAEnD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAE,GAAG,EAAE,UAAU,GAAG,GAAG,CAErD;AAED,wBAAgB,eAAe,CAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO,CAgB/E;AAMD,wBAAgB,WAAW,CAAE,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,CAcjF"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAGzC,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAQtC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpE,eAAO,MAAM,gBAAgB,MAAO,CAAA;AACpC,eAAO,MAAM,cAAc,IAAM,CAAA;AACjC,eAAO,MAAM,cAAc,KAAO,CAAA;AAQlC,eAAO,MAAM,kBAAkB,WAAW,CAAA;AAE1C,wBAAgB,OAAO,CAAE,CAAC,SAAS,MAAM,EAAG,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,IAAI,eAAe,CAAC,CAAC,CAAC,CAE3G;AAED,eAAO,MAAM,iBAAiB,iBAAiB,CAAA;AAC/C,eAAO,MAAM,oBAAoB,oBAAoB,CAAA;AAErD,wBAAgB,aAAa,CAAE,GAAG,EAAE,UAAU,GAAG,GAAG,CAEnD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAE,GAAG,EAAE,UAAU,GAAG,GAAG,CAErD;AAED,wBAAgB,eAAe,CAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO,CAgB/E;AAMD,wBAAgB,WAAW,CAAE,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,CAcjF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,UAAU,GAAG,UAAU,CAS7H;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAIpE;AAED,wBAAgB,iBAAiB,CAAE,GAAG,EAAE,UAAU,GAAG,YAAY,GAAG,UAAU,CA4B7E;AAcD,wBAAsB,mBAAmB,CAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAoEhK;AAED,wBAAgB,yBAAyB,CAAE,MAAM,EAAE,eAAe,GAAG,UAAU,CAK9E;AAED,wBAAgB,2BAA2B,CAAE,GAAG,EAAE,UAAU,GAAG,eAAe,CAE7E;AAED,wBAAgB,cAAc,CAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,CAkBpJ;AAED,wBAAgB,aAAa,CAAE,GAAG,EAAE,UAAU,GAAG,cAAc,CAoB9D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAE,KAAK,CAAC,EAAE,SAAS,GAAG,GAAG,GAAG,eAAe,GAAG,MAAM,GAAG,MAAM,CAsC1F;AAMD,wBAAgB,YAAY,CAAE,GAAG,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,eAAe,GAAG,MAAM,GAAG;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CA4DxI"}
package/dist/src/utils.js CHANGED
@@ -1,10 +1,26 @@
1
+ import { isPublicKey } from '@helia/interface';
1
2
  import { InvalidParametersError } from '@libp2p/interface';
3
+ import * as cborg from 'cborg';
2
4
  import { Key } from 'interface-datastore';
5
+ import { base36 } from 'multiformats/bases/base36';
6
+ import { base58btc } from 'multiformats/bases/base58';
7
+ import { CID } from 'multiformats/cid';
8
+ import * as Digest from 'multiformats/hashes/digest';
9
+ import { concat as uint8ArrayConcat } from 'uint8arrays/concat';
10
+ import { equals as uint8ArrayEquals } from 'uint8arrays/equals';
11
+ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
3
12
  import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
4
13
  import { DHT_EXPIRY_MS, REPUBLISH_THRESHOLD } from "./constants.js";
14
+ import { InvalidEmbeddedPublicKeyError, InvalidRecordDataError, InvalidValueError, RecordTooLargeError, SignatureVerificationError, UnsupportedValidityError } from "./errors.js";
15
+ import { IpnsEntry } from "./pb/ipns.js";
5
16
  export const LIBP2P_KEY_CODEC = 0x72;
6
17
  export const IDENTITY_CODEC = 0x0;
7
18
  export const SHA2_256_CODEC = 0x12;
19
+ /**
20
+ * Limit valid IPNS record sizes to 10kb
21
+ */
22
+ const MAX_RECORD_SIZE = 1024 * 10;
23
+ const IPNS_PREFIX = uint8ArrayFromString('/ipns/');
8
24
  export const IPNS_STRING_PREFIX = '/ipns/';
9
25
  export function isCodec(digest, codec) {
10
26
  return digest.code === codec;
@@ -60,4 +76,296 @@ export function isLibp2pCID(obj) {
60
76
  }
61
77
  return true;
62
78
  }
79
+ /**
80
+ * Utility for creating the record data for being signed
81
+ */
82
+ export function ipnsRecordDataForV1Sig(value, validityType, validity) {
83
+ const validityTypeBuffer = uint8ArrayFromString(validityType);
84
+ const valueBytes = uint8ArrayFromString(value);
85
+ return uint8ArrayConcat([
86
+ valueBytes,
87
+ validity,
88
+ validityTypeBuffer
89
+ ], valueBytes.byteLength + validity.byteLength + validityTypeBuffer.byteLength);
90
+ }
91
+ /**
92
+ * Utility for creating the record data for being signed
93
+ */
94
+ export function ipnsRecordDataForV2Sig(data) {
95
+ const entryData = uint8ArrayFromString('ipns-signature:');
96
+ return uint8ArrayConcat([entryData, data]);
97
+ }
98
+ export function marshalIPNSRecord(obj) {
99
+ let publicKey = obj.publicKey?.toProtobuf();
100
+ // do not embed public keys whose multihash is an identity hash as these can
101
+ // be derived from the routing key
102
+ if (obj.publicKey?.toMultihash().code === 0x00) {
103
+ publicKey = undefined;
104
+ }
105
+ if ('signatureV1' in obj) {
106
+ return IpnsEntry.encode({
107
+ value: uint8ArrayFromString(obj.value),
108
+ signatureV1: obj.signatureV1,
109
+ validityType: obj.validityType,
110
+ validity: uint8ArrayFromString(obj.validity),
111
+ sequence: obj.sequence,
112
+ ttl: obj.ttl,
113
+ publicKey,
114
+ signatureV2: obj.signatureV2,
115
+ data: obj.data
116
+ });
117
+ }
118
+ else {
119
+ return IpnsEntry.encode({
120
+ publicKey,
121
+ signatureV2: obj.signatureV2,
122
+ data: obj.data
123
+ });
124
+ }
125
+ }
126
+ function valueToString(value) {
127
+ // handle legacy case where record value is raw CID bytes
128
+ try {
129
+ const cid = CID.decode(value);
130
+ return `/ipfs/${cid}`;
131
+ }
132
+ catch {
133
+ // ignore error
134
+ }
135
+ return uint8ArrayToString(value);
136
+ }
137
+ export async function unmarshalIPNSRecord(routingKey, marshalledRecord, keychain, options) {
138
+ if (marshalledRecord.byteLength > MAX_RECORD_SIZE) {
139
+ throw new RecordTooLargeError('The record is too large');
140
+ }
141
+ const message = IpnsEntry.decode(marshalledRecord);
142
+ // Check if we have the data field. If we don't, we fail. We've been producing
143
+ // V1+V2 records for quite a while and we don't support V1-only records during
144
+ // validation any more
145
+ if (message.signatureV2 == null || message.data == null) {
146
+ throw new SignatureVerificationError('Missing data or signatureV2');
147
+ }
148
+ const data = parseCborData(message.data);
149
+ const validity = uint8ArrayToString(data.Validity);
150
+ let publicKey;
151
+ // try to extract public key from routing key
152
+ const routingMultihash = multihashFromIPNSRoutingKey(routingKey);
153
+ // identity hash
154
+ if (isCodec(routingMultihash, 0x0)) {
155
+ publicKey = await keychain.loadPublicKeyFromProtobuf(routingMultihash.digest, options);
156
+ }
157
+ // otherwise try to load key from message
158
+ if (publicKey == null && message.publicKey != null) {
159
+ publicKey = await keychain.loadPublicKeyFromProtobuf(message.publicKey, options);
160
+ }
161
+ if (publicKey == null) {
162
+ throw new InvalidEmbeddedPublicKeyError('Could not extract public key from IPNS record or routing key');
163
+ }
164
+ if (message.value != null && message.signatureV1 != null) {
165
+ // V1+V2
166
+ validateCborDataMatchesPbData(message);
167
+ return {
168
+ value: valueToString(data.Value),
169
+ validityType: IpnsEntry.ValidityType.EOL,
170
+ validity,
171
+ sequence: data.Sequence,
172
+ ttl: data.TTL,
173
+ publicKey,
174
+ signatureV1: message.signatureV1,
175
+ signatureV2: message.signatureV2,
176
+ data: message.data,
177
+ bytes: marshalledRecord
178
+ };
179
+ }
180
+ else if (message.signatureV2 != null) {
181
+ // V2-only
182
+ return {
183
+ value: valueToString(data.Value),
184
+ validityType: IpnsEntry.ValidityType.EOL,
185
+ validity,
186
+ sequence: data.Sequence,
187
+ ttl: data.TTL,
188
+ publicKey,
189
+ signatureV2: message.signatureV2,
190
+ data: message.data,
191
+ bytes: marshalledRecord
192
+ };
193
+ }
194
+ else {
195
+ throw new Error('invalid record: does not include signatureV1 or signatureV2');
196
+ }
197
+ }
198
+ export function multihashToIPNSRoutingKey(digest) {
199
+ return uint8ArrayConcat([
200
+ IPNS_PREFIX,
201
+ digest.bytes
202
+ ]);
203
+ }
204
+ export function multihashFromIPNSRoutingKey(key) {
205
+ return Digest.decode(key.slice(IPNS_PREFIX.length));
206
+ }
207
+ export function createCborData(value, validityType, validity, sequence, ttl) {
208
+ let ValidityType;
209
+ if (validityType === IpnsEntry.ValidityType.EOL) {
210
+ ValidityType = 0;
211
+ }
212
+ else {
213
+ throw new UnsupportedValidityError('The validity type is unsupported');
214
+ }
215
+ const data = {
216
+ Value: uint8ArrayFromString(value),
217
+ Validity: validity,
218
+ ValidityType,
219
+ Sequence: sequence,
220
+ TTL: ttl
221
+ };
222
+ return cborg.encode(data);
223
+ }
224
+ export function parseCborData(buf) {
225
+ const data = cborg.decode(buf);
226
+ if (data.ValidityType === 0) {
227
+ data.ValidityType = IpnsEntry.ValidityType.EOL;
228
+ }
229
+ else {
230
+ throw new UnsupportedValidityError('The validity type is unsupported');
231
+ }
232
+ if (Number.isInteger(data.Sequence)) {
233
+ // sequence must be a BigInt, but DAG-CBOR doesn't preserve this for Numbers within the safe-integer range
234
+ data.Sequence = BigInt(data.Sequence);
235
+ }
236
+ if (Number.isInteger(data.TTL)) {
237
+ // ttl must be a BigInt, but DAG-CBOR doesn't preserve this for Numbers within the safe-integer range
238
+ data.TTL = BigInt(data.TTL);
239
+ }
240
+ return data;
241
+ }
242
+ /**
243
+ * Normalizes the given record value. It ensures it is a PeerID, a CID or a
244
+ * string starting with '/'. PeerIDs become `/ipns/${cidV1Libp2pKey}`,
245
+ * CIDs become `/ipfs/${cidAsV1}`.
246
+ */
247
+ export function normalizeValue(value) {
248
+ if (value != null) {
249
+ if (isPublicKey(value)) {
250
+ return `/ipns/${value.toCID().toV1().toString(base36)}`;
251
+ }
252
+ const cid = asCID(value);
253
+ // if we have a CID, turn it into an ipfs path
254
+ if (cid != null) {
255
+ // PeerID encoded as a CID
256
+ if (cid.code === LIBP2P_KEY_CODEC) {
257
+ return `/ipns/${cid.toV1().toString(base36)}`;
258
+ }
259
+ return `/ipfs/${cid.toV1()}`;
260
+ }
261
+ if (hasBytes(value)) {
262
+ return `/ipns/${base36.encode(value.bytes)}`;
263
+ }
264
+ // if we have a path, check it is a valid path
265
+ const string = value.toString().trim();
266
+ if (string.startsWith('/ipfs/')) {
267
+ const [, name, ...rest] = string.split('/')
268
+ .filter(component => component.trim() !== '');
269
+ return `/ipfs/${CID.parse(name).toV1()}${rest.length > 0 ? `/${rest.join('/')}` : ''}`;
270
+ }
271
+ if (string.startsWith('/') && string.length > 1) {
272
+ return string;
273
+ }
274
+ }
275
+ throw new InvalidValueError('Value must be a valid content path starting with /');
276
+ }
277
+ function isMultihashDigest(obj) {
278
+ return typeof obj.code === 'number' && obj.digest instanceof Uint8Array && typeof obj.size === 'number' && obj.bytes instanceof Uint8Array;
279
+ }
280
+ export function normalizeKey(key) {
281
+ if (key != null) {
282
+ if (isPublicKey(key)) {
283
+ return {
284
+ digest: key.toMultihash(),
285
+ path: '/'
286
+ };
287
+ }
288
+ const cid = asCID(key);
289
+ // if we have a CID, turn it into an ipfs path
290
+ if (cid != null) {
291
+ // PeerID encoded as a CID
292
+ if (cid.code !== LIBP2P_KEY_CODEC) {
293
+ throw new InvalidValueError('CIDs must have the `libp2p-key` codec');
294
+ }
295
+ return {
296
+ digest: cid.multihash,
297
+ path: '/'
298
+ };
299
+ }
300
+ if (isMultihashDigest(key)) {
301
+ return {
302
+ digest: key,
303
+ path: '/'
304
+ };
305
+ }
306
+ key = key.toString();
307
+ if (key.startsWith('/ipns/')) {
308
+ let [, , name, ...rest] = key.split('/');
309
+ let codec = base36;
310
+ // base58btc encoded public key hash or protobuf in identity hash
311
+ if (name.startsWith('1') || name.startsWith('Q')) {
312
+ name = `z${name}`;
313
+ codec = base58btc;
314
+ }
315
+ const buf = codec.decode(name);
316
+ let digest;
317
+ try {
318
+ digest = CID.decode(buf).multihash;
319
+ }
320
+ catch {
321
+ digest = Digest.decode(buf);
322
+ }
323
+ return {
324
+ digest,
325
+ path: `/${rest.join('/')}`
326
+ };
327
+ }
328
+ }
329
+ throw new InvalidValueError('Value must be a valid IPNS path starting with /');
330
+ }
331
+ function validateCborDataMatchesPbData(entry) {
332
+ if (entry.data == null) {
333
+ throw new InvalidRecordDataError('Record data is missing');
334
+ }
335
+ const data = parseCborData(entry.data);
336
+ if (!uint8ArrayEquals(data.Value, entry.value ?? new Uint8Array(0))) {
337
+ throw new SignatureVerificationError('Field "value" did not match between protobuf and CBOR');
338
+ }
339
+ if (!uint8ArrayEquals(data.Validity, entry.validity ?? new Uint8Array(0))) {
340
+ throw new SignatureVerificationError('Field "validity" did not match between protobuf and CBOR');
341
+ }
342
+ if (data.ValidityType !== entry.validityType) {
343
+ throw new SignatureVerificationError('Field "validityType" did not match between protobuf and CBOR');
344
+ }
345
+ if (data.Sequence !== entry.sequence) {
346
+ throw new SignatureVerificationError('Field "sequence" did not match between protobuf and CBOR');
347
+ }
348
+ if (data.TTL !== entry.ttl) {
349
+ throw new SignatureVerificationError('Field "ttl" did not match between protobuf and CBOR');
350
+ }
351
+ }
352
+ function hasBytes(obj) {
353
+ return obj.bytes instanceof Uint8Array;
354
+ }
355
+ function hasToCID(obj) {
356
+ return typeof obj?.toCID === 'function';
357
+ }
358
+ function asCID(obj) {
359
+ if (hasToCID(obj)) {
360
+ return obj.toCID();
361
+ }
362
+ // try parsing as a CID string
363
+ try {
364
+ return CID.parse(obj);
365
+ }
366
+ catch {
367
+ // fall through
368
+ }
369
+ return CID.asCID(obj);
370
+ }
63
371
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AACzC,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAKnE,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAA;AACpC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAA;AACjC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAA;AAElC,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAA;AAE1C,MAAM,UAAU,OAAO,CAAqB,MAAuB,EAAE,KAAQ;IAC3E,OAAO,MAAM,CAAC,IAAI,KAAK,KAAK,CAAA;AAC9B,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAA;AAC/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAA;AAErD,MAAM,UAAU,aAAa,CAAE,GAAe;IAC5C,OAAO,IAAI,GAAG,CAAC,iBAAiB,GAAG,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAA;AAC9E,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAAE,GAAe;IAC9C,OAAO,IAAI,GAAG,CAAC,oBAAoB,GAAG,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAA;AACjF,CAAC;AAED,MAAM,UAAU,eAAe,CAAE,UAAsB,EAAE,OAAa;IACpE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACtB,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,aAAa,CAAA;IACnD,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAA;IAE5D,0DAA0D;IAC1D,IAAI,SAAS,GAAG,GAAG,GAAG,mBAAmB,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,0FAA0F;IAC1F,IAAI,YAAY,GAAG,GAAG,GAAG,mBAAmB,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,KAAK,CAAE,GAAS;IACvB,OAAO,GAAG,EAAE,KAAK,KAAK,GAAG,CAAA;AAC3B,CAAC;AAED,MAAM,UAAU,WAAW,CAAE,GAAS;IACpC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAChB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QAClC,MAAM,IAAI,sBAAsB,CAAC,aAAa,GAAG,CAAC,IAAI,qBAAqB,CAAC,CAAA;IAC9E,CAAC;IAED,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACnF,MAAM,IAAI,sBAAsB,CAAC,6BAA6B,GAAG,CAAC,SAAS,CAAC,IAAI,kCAAkC,CAAC,CAAA;IACrH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { IPNSRecord } from './index.ts';
2
+ import type { AbortOptions } from '@libp2p/interface';
3
+ /**
4
+ * Validate the given IPNS record against the given routing key.
5
+ *
6
+ * @see https://specs.ipfs.tech/ipns/ipns-record/#routing-record for the binary
7
+ * format of the routing key
8
+ */
9
+ export declare function ipnsValidator(record: IPNSRecord, options?: AbortOptions): Promise<void>;
10
+ /**
11
+ * Returns the number of milliseconds until the record expires.
12
+ * If the record is already expired, returns 0.
13
+ *
14
+ * @param record - The IPNS record to validate.
15
+ * @returns The number of milliseconds until the record expires, or 0 if the record is already expired.
16
+ */
17
+ export declare function validFor(record: IPNSRecord): number;
18
+ //# sourceMappingURL=validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/validator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD;;;;;GAKG;AACH,wBAAsB,aAAa,CAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B9F;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAiBpD"}