@interop/wallet-core 0.31.0 → 0.33.0

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.
@@ -1,4 +1,5 @@
1
1
  import type { DIDDoc, DIDLog } from '@interop/did-method-webvh';
2
+ import type { ResourceLogHeadPin, ResourceLogPinStore } from '../resourceLog/pin.js';
2
3
  /**
3
4
  * Thrown when the account has published no DID log at all (the resource is
4
5
  * absent). Distinguished from every other failure because it is the one
@@ -9,6 +10,29 @@ import type { DIDDoc, DIDLog } from '@interop/did-method-webvh';
9
10
  export declare class AccountLogMissingError extends Error {
10
11
  constructor(message?: string);
11
12
  }
13
+ /**
14
+ * Refuses a served log that conflicts with the pinned head, and returns the
15
+ * pin the served log establishes. A method or SCID that differs from the pin
16
+ * is a substituted log under the account's location; a served history shorter
17
+ * than the pinned ordinal is a rollback; a differing `versionId` at the pinned
18
+ * ordinal is a fork, whose served entries ride along as evidence (every entry
19
+ * is signed, so a conflicting pair under one SCID is transferable proof of
20
+ * equivocation). A pin whose head does not parse as `N-<hash>` is treated as
21
+ * a fork rather than trusted.
22
+ *
23
+ * Exported for the ceremony-side reads in `didWebvh.ts`, which take the same
24
+ * check on their own read of `did.jsonl`; it is deliberately absent from the
25
+ * module barrel.
26
+ *
27
+ * @param options {object}
28
+ * @param options.log {DIDLog} the served, already-resolved log
29
+ * @param options.pin {ResourceLogHeadPin | null} the pin held for this log
30
+ * @returns {ResourceLogHeadPin} the pin the served log establishes
31
+ */
32
+ export declare function checkAccountLogContinuity({ log, pin }: {
33
+ log: DIDLog;
34
+ pin: ResourceLogHeadPin | null;
35
+ }): ResourceLogHeadPin;
12
36
  /**
13
37
  * Fetches and locally verifies the account's world-readable DID log.
14
38
  *
@@ -16,18 +40,34 @@ export declare class AccountLogMissingError extends Error {
16
40
  * an ordinary error when the fetch fails, the log does not resolve, or it
17
41
  * resolves to a DID other than the one named.
18
42
  *
43
+ * Supplied a `pinStore`, the resolved log is additionally checked for
44
+ * continuity against this client's chain-head pin and refused with a
45
+ * {@link ResourceLogContinuityError} when it is a rollback, a fork, or an
46
+ * SCID/method switch; the pin is established at first contact
47
+ * (trust-on-first-use) and advanced only by a log that verifies past it,
48
+ * never regressed. A `rollback` is the one refusal that may be nothing worse
49
+ * than replication lag, exactly as on a governed resource log: nothing
50
+ * rolled back is ever adopted here, and a caller holding a cached view of the
51
+ * document may treat that reason as a transport hiccup and carry on with what
52
+ * it has. Every other reason is a security signal. No `pinStore`, no
53
+ * continuity check -- the pin lives app-side beside the account-pointer pin,
54
+ * and a caller that has none keeps one-shot verification.
55
+ *
19
56
  * @param options {object}
20
57
  * @param options.did {string} the account's did:webvh, as the caller's
21
58
  * stored account pointer names it
22
59
  * @param options.spaceId {string} the account's Space id
23
60
  * @param options.host {string} the storage server the account lives on
61
+ * @param [options.pinStore] {ResourceLogPinStore} this client's chain-head
62
+ * pin for the account log
24
63
  * @returns {Promise<object>} the resolved document, the raw log, and the
25
64
  * log's effective `updateKeys` / `nextKeyHashes`
26
65
  */
27
- export declare function verifyAccountLog({ did, spaceId, host }: {
66
+ export declare function verifyAccountLog({ did, spaceId, host, pinStore }: {
28
67
  did: string;
29
68
  spaceId: string;
30
69
  host: string;
70
+ pinStore?: ResourceLogPinStore;
31
71
  }): Promise<{
32
72
  doc: DIDDoc;
33
73
  log: DIDLog;
@@ -1 +1 @@
1
- {"version":3,"file":"verifyLog.d.ts","sourceRoot":"","sources":["../../src/webvh/verifyLog.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAG/D;;;;;;GAMG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,SAA0C;CAI9D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gBAAgB,CAAC,EACrC,GAAG,EACH,OAAO,EACP,IAAI,EACL,EAAE;IACD,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,OAAO,CAAC;IACV,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,aAAa,EAAE,MAAM,EAAE,CAAA;CACxB,CAAC,CAmCD"}
1
+ {"version":3,"file":"verifyLog.d.ts","sourceRoot":"","sources":["../../src/webvh/verifyLog.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAG/D,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,uBAAuB,CAAA;AAE9B;;;;;;GAMG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,SAA0C;CAI9D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,GAAG,EACH,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,kBAAkB,GAAG,IAAI,CAAA;CAC/B,GAAG,kBAAkB,CA4CrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,gBAAgB,CAAC,EACrC,GAAG,EACH,OAAO,EACP,IAAI,EACJ,QAAQ,EACT,EAAE;IACD,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,mBAAmB,CAAA;CAC/B,GAAG,OAAO,CAAC;IACV,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,aAAa,EAAE,MAAM,EAAE,CAAA;CACxB,CAAC,CA4CD"}
@@ -16,9 +16,19 @@
16
16
  * caller supplies the DID it expects; a resolved DID that does not match is
17
17
  * the substituted-account refusal, and the only thing the transport could
18
18
  * ever buy back.
19
+ *
20
+ * Resolution alone is one-shot verification, though: a host serving a valid
21
+ * PREFIX of the real log serves the same SCID and the same DID, so a
22
+ * truncated history passes every check above and a ceremony built on it
23
+ * republishes erased enrollments and undone revocations as durable state. The
24
+ * remedy is the same chain-head pin the governed resource logs carry, and
25
+ * literally the same seam and refusal class: a caller that supplies a
26
+ * {@link ResourceLogPinStore} gets a served log refused when it is a
27
+ * rollback, a fork, or an SCID/method switch relative to the pinned head.
19
28
  */
20
29
  import { readLogFromString, resolveDIDFromLog } from '@interop/did-method-webvh';
21
30
  import { DID_LOG_RESOURCE, ID_COLLECTION } from '../space/collections.js';
31
+ import { ResourceLogContinuityError } from '../resourceLog/errors.js';
22
32
  /**
23
33
  * Thrown when the account has published no DID log at all (the resource is
24
34
  * absent). Distinguished from every other failure because it is the one
@@ -32,6 +42,70 @@ export class AccountLogMissingError extends Error {
32
42
  this.name = 'AccountLogMissingError';
33
43
  }
34
44
  }
45
+ /**
46
+ * Refuses a served log that conflicts with the pinned head, and returns the
47
+ * pin the served log establishes. A method or SCID that differs from the pin
48
+ * is a substituted log under the account's location; a served history shorter
49
+ * than the pinned ordinal is a rollback; a differing `versionId` at the pinned
50
+ * ordinal is a fork, whose served entries ride along as evidence (every entry
51
+ * is signed, so a conflicting pair under one SCID is transferable proof of
52
+ * equivocation). A pin whose head does not parse as `N-<hash>` is treated as
53
+ * a fork rather than trusted.
54
+ *
55
+ * Exported for the ceremony-side reads in `didWebvh.ts`, which take the same
56
+ * check on their own read of `did.jsonl`; it is deliberately absent from the
57
+ * module barrel.
58
+ *
59
+ * @param options {object}
60
+ * @param options.log {DIDLog} the served, already-resolved log
61
+ * @param options.pin {ResourceLogHeadPin | null} the pin held for this log
62
+ * @returns {ResourceLogHeadPin} the pin the served log establishes
63
+ */
64
+ export function checkAccountLogContinuity({ log, pin }) {
65
+ const genesis = log[0];
66
+ const head = log[log.length - 1];
67
+ if (!genesis || !head) {
68
+ throw new Error('The account DID log is empty.');
69
+ }
70
+ const method = genesis.parameters.method ?? '';
71
+ const scid = genesis.parameters.scid ?? '';
72
+ if (pin) {
73
+ if (pin.method !== method) {
74
+ throw new ResourceLogContinuityError({
75
+ reason: 'method-switch',
76
+ pinnedHead: pin.head
77
+ });
78
+ }
79
+ if (pin.scid !== scid) {
80
+ throw new ResourceLogContinuityError({
81
+ reason: 'scid-switch',
82
+ pinnedHead: pin.head
83
+ });
84
+ }
85
+ const pinnedOrdinal = Number.parseInt(pin.head, 10);
86
+ if (!Number.isInteger(pinnedOrdinal) || pinnedOrdinal < 1) {
87
+ throw new ResourceLogContinuityError({
88
+ reason: 'fork',
89
+ pinnedHead: pin.head,
90
+ servedEntries: log
91
+ });
92
+ }
93
+ if (log.length < pinnedOrdinal) {
94
+ throw new ResourceLogContinuityError({
95
+ reason: 'rollback',
96
+ pinnedHead: pin.head
97
+ });
98
+ }
99
+ if (log[pinnedOrdinal - 1].versionId !== pin.head) {
100
+ throw new ResourceLogContinuityError({
101
+ reason: 'fork',
102
+ pinnedHead: pin.head,
103
+ servedEntries: log
104
+ });
105
+ }
106
+ }
107
+ return { method, scid, head: head.versionId };
108
+ }
35
109
  /**
36
110
  * Fetches and locally verifies the account's world-readable DID log.
37
111
  *
@@ -39,15 +113,30 @@ export class AccountLogMissingError extends Error {
39
113
  * an ordinary error when the fetch fails, the log does not resolve, or it
40
114
  * resolves to a DID other than the one named.
41
115
  *
116
+ * Supplied a `pinStore`, the resolved log is additionally checked for
117
+ * continuity against this client's chain-head pin and refused with a
118
+ * {@link ResourceLogContinuityError} when it is a rollback, a fork, or an
119
+ * SCID/method switch; the pin is established at first contact
120
+ * (trust-on-first-use) and advanced only by a log that verifies past it,
121
+ * never regressed. A `rollback` is the one refusal that may be nothing worse
122
+ * than replication lag, exactly as on a governed resource log: nothing
123
+ * rolled back is ever adopted here, and a caller holding a cached view of the
124
+ * document may treat that reason as a transport hiccup and carry on with what
125
+ * it has. Every other reason is a security signal. No `pinStore`, no
126
+ * continuity check -- the pin lives app-side beside the account-pointer pin,
127
+ * and a caller that has none keeps one-shot verification.
128
+ *
42
129
  * @param options {object}
43
130
  * @param options.did {string} the account's did:webvh, as the caller's
44
131
  * stored account pointer names it
45
132
  * @param options.spaceId {string} the account's Space id
46
133
  * @param options.host {string} the storage server the account lives on
134
+ * @param [options.pinStore] {ResourceLogPinStore} this client's chain-head
135
+ * pin for the account log
47
136
  * @returns {Promise<object>} the resolved document, the raw log, and the
48
137
  * log's effective `updateKeys` / `nextKeyHashes`
49
138
  */
50
- export async function verifyAccountLog({ did, spaceId, host }) {
139
+ export async function verifyAccountLog({ did, spaceId, host, pinStore }) {
51
140
  const url = new URL(`/space/${spaceId}/${ID_COLLECTION.id}/${DID_LOG_RESOURCE}`, host);
52
141
  const response = await fetch(url);
53
142
  if (response.status === 404) {
@@ -65,6 +154,15 @@ export async function verifyAccountLog({ did, spaceId, host }) {
65
154
  throw new Error('The published DID log resolves to a different DID than the account ' +
66
155
  'pointer names.');
67
156
  }
157
+ if (pinStore) {
158
+ const pin = await pinStore.read();
159
+ const served = checkAccountLogContinuity({ log, pin });
160
+ // Advanced only when the served head is genuinely ahead of the pin: the
161
+ // checks above have already refused everything that is not.
162
+ if (!pin || pin.head !== served.head) {
163
+ await pinStore.write(served);
164
+ }
165
+ }
68
166
  return {
69
167
  doc: resolved.doc,
70
168
  log,
@@ -1 +1 @@
1
- {"version":3,"file":"verifyLog.js","sourceRoot":"","sources":["../../src/webvh/verifyLog.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAEhF,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAEzE;;;;;;GAMG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,OAAO,GAAG,uCAAuC;QAC3D,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAA;IACtC,CAAC;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,EACrC,GAAG,EACH,OAAO,EACP,IAAI,EAKL;IAMC,MAAM,GAAG,GAAG,IAAI,GAAG,CACjB,UAAU,OAAO,IAAI,aAAa,CAAC,EAAE,IAAI,gBAAgB,EAAE,EAC3D,IAAI,CACL,CAAA;IACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;IACjC,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,MAAM,IAAI,sBAAsB,EAAE,CAAA;IACpC,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,+CAA+C,QAAQ,CAAC,MAAM,IAAI,CACnE,CAAA;IACH,CAAC;IACD,MAAM,GAAG,GAAG,iBAAiB,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IACpD,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAA;IAC7C,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CACb,4CACE,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,uCACzB,IAAI,CACL,CAAA;IACH,CAAC;IACD,IAAI,QAAQ,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,qEAAqE;YACnE,gBAAgB,CACnB,CAAA;IACH,CAAC;IACD,OAAO;QACL,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,GAAG;QACH,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE;QAC1C,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE;KACjD,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"verifyLog.js","sourceRoot":"","sources":["../../src/webvh/verifyLog.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@interop/wallet-core",
3
3
  "description": "Shared wallet-domain logic (WAS sync engine core and wallet Space layout contracts) for Interop wallet apps.",
4
- "version": "0.31.0",
4
+ "version": "0.33.0",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "build": "pnpm run clear && tsc",