@interop/wallet-core 0.44.0 → 0.46.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.
- package/dist/clients/revocation.d.ts +2 -25
- package/dist/clients/revocation.d.ts.map +1 -1
- package/dist/clients/revocation.js +25 -96
- package/dist/clients/revocation.js.map +1 -1
- package/dist/keyring/record.d.ts +4 -3
- package/dist/keyring/record.d.ts.map +1 -1
- package/dist/keyring/record.js.map +1 -1
- package/dist/keys/index.d.ts +7 -0
- package/dist/keys/index.d.ts.map +1 -1
- package/dist/keys/index.js +6 -0
- package/dist/keys/index.js.map +1 -1
- package/dist/keys/rosterLogStore.d.ts.map +1 -1
- package/dist/keys/rosterLogStore.js +18 -1
- package/dist/keys/rosterLogStore.js.map +1 -1
- package/dist/keys/userKeyRosterCascade.d.ts +121 -0
- package/dist/keys/userKeyRosterCascade.d.ts.map +1 -0
- package/dist/keys/userKeyRosterCascade.js +125 -0
- package/dist/keys/userKeyRosterCascade.js.map +1 -0
- package/dist/recovery/index.d.ts +1 -1
- package/dist/recovery/index.d.ts.map +1 -1
- package/dist/recovery/index.js +1 -1
- package/dist/recovery/index.js.map +1 -1
- package/dist/recovery/recoveryDelegation.d.ts +27 -40
- package/dist/recovery/recoveryDelegation.d.ts.map +1 -1
- package/dist/recovery/recoveryDelegation.js +119 -53
- package/dist/recovery/recoveryDelegation.js.map +1 -1
- package/dist/recovery/recoveryWebvh.d.ts +9 -2
- package/dist/recovery/recoveryWebvh.d.ts.map +1 -1
- package/dist/recovery/recoveryWebvh.js +4 -2
- package/dist/recovery/recoveryWebvh.js.map +1 -1
- package/dist/resourceLog/controller.d.ts +38 -3
- package/dist/resourceLog/controller.d.ts.map +1 -1
- package/dist/resourceLog/controller.js +106 -10
- package/dist/resourceLog/controller.js.map +1 -1
- package/dist/resourceLog/errors.d.ts +22 -1
- package/dist/resourceLog/errors.d.ts.map +1 -1
- package/dist/resourceLog/errors.js +23 -1
- package/dist/resourceLog/errors.js.map +1 -1
- package/dist/resourceLog/index.d.ts +8 -6
- package/dist/resourceLog/index.d.ts.map +1 -1
- package/dist/resourceLog/index.js +7 -5
- package/dist/resourceLog/index.js.map +1 -1
- package/dist/resourceLog/license.d.ts +44 -0
- package/dist/resourceLog/license.d.ts.map +1 -0
- package/dist/resourceLog/license.js +63 -0
- package/dist/resourceLog/license.js.map +1 -0
- package/dist/resourceLog/verify.d.ts +3 -2
- package/dist/resourceLog/verify.d.ts.map +1 -1
- package/dist/resourceLog/verify.js +30 -8
- package/dist/resourceLog/verify.js.map +1 -1
- package/dist/unlock/index.d.ts +22 -8
- package/dist/unlock/index.d.ts.map +1 -1
- package/dist/unlock/index.js +21 -8
- package/dist/unlock/index.js.map +1 -1
- package/dist/unlock/ladder.d.ts +76 -0
- package/dist/unlock/ladder.d.ts.map +1 -1
- package/dist/unlock/ladder.js +111 -1
- package/dist/unlock/ladder.js.map +1 -1
- package/dist/unlock/retire.d.ts +126 -0
- package/dist/unlock/retire.d.ts.map +1 -0
- package/dist/unlock/retire.js +83 -0
- package/dist/unlock/retire.js.map +1 -0
- package/dist/unlock/standingWebvh.d.ts +50 -3
- package/dist/unlock/standingWebvh.d.ts.map +1 -1
- package/dist/unlock/standingWebvh.js +78 -9
- package/dist/unlock/standingWebvh.js.map +1 -1
- package/dist/unlock/unlockRecord.d.ts +28 -8
- package/dist/unlock/unlockRecord.d.ts.map +1 -1
- package/dist/unlock/unlockRecord.js +93 -13
- package/dist/unlock/unlockRecord.js.map +1 -1
- package/dist/webvh/companion.d.ts +681 -0
- package/dist/webvh/companion.d.ts.map +1 -0
- package/dist/webvh/companion.js +1151 -0
- package/dist/webvh/companion.js.map +1 -0
- package/dist/webvh/delegatedLogStore.d.ts +67 -0
- package/dist/webvh/delegatedLogStore.d.ts.map +1 -0
- package/dist/webvh/delegatedLogStore.js +104 -0
- package/dist/webvh/delegatedLogStore.js.map +1 -0
- package/dist/webvh/didWebvh.d.ts +109 -5
- package/dist/webvh/didWebvh.d.ts.map +1 -1
- package/dist/webvh/didWebvh.js +186 -21
- package/dist/webvh/didWebvh.js.map +1 -1
- package/dist/webvh/index.d.ts +34 -5
- package/dist/webvh/index.d.ts.map +1 -1
- package/dist/webvh/index.js +31 -5
- package/dist/webvh/index.js.map +1 -1
- package/dist/webvh/listClients.d.ts +33 -0
- package/dist/webvh/listClients.d.ts.map +1 -1
- package/dist/webvh/listClients.js +27 -0
- package/dist/webvh/listClients.js.map +1 -1
- package/dist/webvh/standingZcap.d.ts +48 -0
- package/dist/webvh/standingZcap.d.ts.map +1 -0
- package/dist/webvh/standingZcap.js +54 -0
- package/dist/webvh/standingZcap.js.map +1 -0
- package/dist/webvh/wasIdStore.d.ts +36 -6
- package/dist/webvh/wasIdStore.d.ts.map +1 -1
- package/dist/webvh/wasIdStore.js +32 -13
- package/dist/webvh/wasIdStore.js.map +1 -1
- package/dist/webvh/zcap.d.ts +24 -0
- package/dist/webvh/zcap.d.ts.map +1 -1
- package/dist/webvh/zcap.js +42 -0
- package/dist/webvh/zcap.js.map +1 -1
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recoveryWebvh.js","sourceRoot":"","sources":["../../src/recovery/recoveryWebvh.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"recoveryWebvh.js","sourceRoot":"","sources":["../../src/recovery/recoveryWebvh.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAMxE,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,oBAAoB,EACrB,MAAM,sBAAsB,CAAA;AAO7B,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE9E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAAC,EAC3B,GAAG,EACH,wBAAwB,EAIzB;IACC,OAAO,GAAG,GAAG,IAAI,wBAAwB,EAAE,CAAA;AAC7C,CAAC;AAYD;;;;GAIG;AACH,MAAM,OAAO,4BAA6B,SAAQ,KAAK;IACrD,YACE,OAAO,GAAG,4DAA4D;QACpE,4CAA4C;QAE9C,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAA;IAC5C,CAAC;CACF;AAYD;;;;;;;;GAQG;AACH,KAAK,UAAU,cAAc,CAAC,EAC5B,KAAK,EACL,WAAW,EAIZ;IACC,4EAA4E;IAC5E,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC;QACvC,OAAO,EAAE,KAAqB;QAC9B,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAC,CAAA;IACF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;IACzE,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,cAAc,CAAC,EAC5B,KAAK,EACL,GAAG,EACH,OAAO,EAKR;IACC,MAAM,cAAc,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;AAC/C,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EACvC,OAAO,EACP,UAAU,EACV,QAAQ,EACR,WAAW,EAMZ;IACC,OAAO,gBAAgB,CAAC;QACtB,OAAO;QACP,UAAU;QACV,UAAU,EAAE;YACV,YAAY,EAAE;gBACZ,kBAAkB,EAAE,QAAQ,CAAC,wBAAwB;aACtD;YACD,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;SAChD;QACD,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,IAAI,EAAE,yBAAyB;KAChC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EACtC,OAAO,EACP,UAAU,EACV,QAAQ,EACR,WAAW,EAMZ;IACC,OAAO,eAAe,CAAC;QACrB,OAAO;QACP,UAAU;QACV,UAAU,EAAE;YACV,YAAY,EAAE;gBACZ,kBAAkB,EAAE,QAAQ,CAAC,wBAAwB;aACtD;YACD,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;SAChD;QACD,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,IAAI,EAAE,0BAA0B;KACjC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAOxC;IACC,OAAO,oBAAoB,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAA;AACpE,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,sBAAsB,CAAC,EACpC,KAAK,EACL,QAAQ,EACR,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,WAAW,EAQZ;IACC,IAAI,SAAS,GAAG,MAAM,cAAc,CAAC;QACnC,KAAK;QACL,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAC,CAAA;IAEF,wEAAwE;IACxE,sEAAsE;IACtE,IAAI,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACpE,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,CAAA;IAC/B,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;IACzE,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAC3C,aAAa,CAAC,kBAAkB,CACjC,CAAA;IACD,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAC3C,aAAa,CAAC,wBAAwB,CACvC,CAAA;IACD,MAAM,eAAe,GAAG,MAAM,iBAAiB,CAC7C,WAAW,CAAC,kBAAkB,CAC/B,CAAA;IAED,uEAAuE;IACvE,kEAAkE;IAClE,cAAc;IACd,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;IAC3E,MAAM,SAAS,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC,KAAK,CACrE,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC/C,CAAA;IACD,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACjE,MAAM,IAAI,4BAA4B,EAAE,CAAA;QAC1C,CAAC;QACD,MAAM,0BAA0B,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;QAC/C,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;QACnE,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC;YAC9B,GAAG,EAAE,SAAS,CAAC,GAAG;YAClB,MAAM;YACN,cAAc,EAAE,IAAI;YACpB,UAAU,EAAE;gBACV,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;aACnE;YACD,qEAAqE;YACrE,iEAAiE;YACjE,aAAa,EAAE;gBACb,GAAG,IAAI,GAAG,CAAC;oBACT,GAAG,SAAS,CAAC,aAAa;oBAC1B,YAAY;oBACZ,aAAa;oBACb,aAAa;oBACb,eAAe;iBAChB,CAAC;aACH;SACF,CAAC,CAAA;QACF,MAAM,cAAc,CAAC;YACnB,KAAK;YACL,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,OAAO,EAAE,SAAS,CAAC,IAAI;SACxB,CAAC,CAAA;QACF,mDAAmD;QACnD,SAAS,GAAG,MAAM,cAAc,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,CAAA;IACzE,CAAC;IAED,sEAAsE;IACtE,oEAAoE;IACpE,yEAAyE;IACzE,wCAAwC;IACxC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,SAAS,CAAA;IAC9B,MAAM,IAAI,GAAG,CAAC,kBAA0B,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,kBAAkB,EAAE,CAAA;IAC3E,MAAM,SAAS,GAAG,YAAY,CAAC;QAC7B,GAAG;QACH,wBAAwB,EAAE,QAAQ,CAAC,wBAAwB;KAC5D,CAAC,CAAA;IACF,MAAM,eAAe,GAAG,YAAY,CAAC;QACnC,GAAG;QACH,wBAAwB,EAAE,WAAW,CAAC,wBAAwB;KAC/D,CAAC,CAAA;IACF,wEAAwE;IACxE,yEAAyE;IACzE,4EAA4E;IAC5E,4EAA4E;IAC5E,4EAA4E;IAC5E,6EAA6E;IAC7E,sEAAsE;IACtE,wCAAwC;IACxC,MAAM,YAAY,GAAyB;QACzC,GAAG,4BAA4B,CAAC;YAC9B,UAAU,EAAE,GAAG;YACf,mBAAmB,EAAE,aAAa,CAAC,mBAAmB;YACtD,wBAAwB,EAAE,aAAa,CAAC,wBAAwB;SACjE,CAAC;QACF;YACE,EAAE,EAAE,eAAe;YACnB,IAAI,EAAE,gBAAgB;YACtB,UAAU,EAAE,GAAG;YACf,kBAAkB,EAAE,WAAW,CAAC,wBAAwB;SACzD;KACF,CAAA;IACD,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAyB,CAAA;IAC9E,MAAM,mBAAmB,GAAG;QAC1B,GAAG,eAAe,CAAC,MAAM,CACvB,MAAM,CAAC,EAAE,CACP,MAAM,CAAC,EAAE,KAAK,SAAS;YACvB,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CACtD;QACD,GAAG,YAAY;KAChB,CAAA;IACD,MAAM,aAAa,GAAG,CACpB,QAAqD,EACrD,EAAU,EACV,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IACjD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAA;IAE3D,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;QACnC,IAAI,EAAE,oBAAoB,CAAC,UAAU;KACtC,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC;QAC9B,GAAG,EAAE,SAAS,CAAC,GAAG;QAClB,MAAM;QACN,cAAc,EAAE,IAAI;QACpB,UAAU,EAAE;YACV,GAAG,IAAI,GAAG,CAAC;gBACT,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAC5B,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,kBAAkB,CAC3C;gBACD,aAAa,CAAC,kBAAkB;aACjC,CAAC;SACH;QACD,aAAa,EAAE,SAAS,CAAC,aAAa,CAAC,MAAM,CAC3C,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,YAAY,CAC9B;QACD,mBAAmB;QACnB,cAAc,EAAE,aAAa,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC;QAC9D,eAAe,EAAE,aAAa,CAAC,GAAG,CAAC,eAAe,EAAE,WAAW,CAAC;QAChE,YAAY,EAAE;YACZ,GAAG,IAAI,GAAG,CAAC;gBACT,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC;gBAC/D,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC;gBAC5C,eAAe;aAChB,CAAC;SACH;QACD,oBAAoB,EAAE,aAAa,CAAC,GAAG,CAAC,oBAAoB,EAAE,WAAW,CAAC;QAC1E,oBAAoB,EAAE,aAAa,CAAC,GAAG,CAAC,oBAAoB,EAAE,WAAW,CAAC;KAC3E,CAAC,CAAA;IACF,0EAA0E;IAC1E,iEAAiE;IACjE,MAAM,cAAc,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;IAC1E,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAA;AACrD,CAAC"}
|
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
* the profile's root of authority, resolved and verified by the reader
|
|
7
7
|
* independently of the host serving the log. The interface is the seam --
|
|
8
8
|
* verification consumes only the account DID, the ordered controller-log
|
|
9
|
-
* version list,
|
|
9
|
+
* version list, per-version `assertionMethod` membership, and the
|
|
10
|
+
* per-version credential-posture view the ceremony-tail license reads -- and
|
|
11
|
+
* the
|
|
10
12
|
* did:webvh adapter builds it from an already-verified account log (the
|
|
11
13
|
* `verifyAccountLog` output), answering anchored-version lookups from that
|
|
12
14
|
* verified history rather than from any wire fetch. Handing the verifier a
|
|
@@ -15,15 +17,38 @@
|
|
|
15
17
|
* from.
|
|
16
18
|
*/
|
|
17
19
|
import type { DIDLog } from '@interop/did-method-webvh';
|
|
20
|
+
/**
|
|
21
|
+
* The credential-posture view at one controller-log version, consumed by the
|
|
22
|
+
* ceremony-tail license on ladder-signed appends (clause B of the ladder
|
|
23
|
+
* VM's authority clauses). `ladderKeys` holds the ladder VMs' signing-key
|
|
24
|
+
* multibases, recognized by relation asymmetry -- a `capabilityDelegation`
|
|
25
|
+
* member absent from `capabilityInvocation` is the ladder VM -- and is how a
|
|
26
|
+
* verifier tells a ladder-signed proof from an enrolled client's.
|
|
27
|
+
* `postureKeys` is S(V), the credential-posture key set: the `keyAgreement`
|
|
28
|
+
* methods whose `controller` is the account DID (the deliberately unmarked
|
|
29
|
+
* credential entries -- verbatim `Multikey` keys and `MultikeyCommitment`
|
|
30
|
+
* commitments alike, keyed by their key material), union the ladder VMs. A
|
|
31
|
+
* document entry is posture-changing iff S(V) differs from S(V-1) in either
|
|
32
|
+
* direction; ordinary client enrollment and revocation are excluded
|
|
33
|
+
* structurally, because a client's `keyAgreement` twin carries the `did:key`
|
|
34
|
+
* controller marker rather than the account DID.
|
|
35
|
+
*/
|
|
36
|
+
export interface ControllerPosture {
|
|
37
|
+
ladderKeys: Set<string>;
|
|
38
|
+
postureKeys: Set<string>;
|
|
39
|
+
}
|
|
18
40
|
/**
|
|
19
41
|
* What log verification consumes of the independently verified controller
|
|
20
42
|
* document: the DID the entry proofs must sign under, the verified controller
|
|
21
43
|
* log's `versionId` list in order (empty for an unversioned static
|
|
22
44
|
* controller, degrading every anchor rule to current-document verification),
|
|
23
|
-
*
|
|
45
|
+
* the set of `assertionMethod` key multibases at a given version --
|
|
24
46
|
* membership there is the whole authorization rule, so `keyAgreement`-only
|
|
25
47
|
* recovery keys and `authentication`-only convenience keys are excluded
|
|
26
|
-
* structurally
|
|
48
|
+
* structurally -- and the credential-posture view at a given version, which
|
|
49
|
+
* is what evaluating the ceremony-tail license and recognizing a
|
|
50
|
+
* ladder-signed append require (both invisible through the
|
|
51
|
+
* `assertionMethod` accessor alone).
|
|
27
52
|
*/
|
|
28
53
|
export interface ResourceLogController {
|
|
29
54
|
did: string;
|
|
@@ -37,6 +62,16 @@ export interface ResourceLogController {
|
|
|
37
62
|
* @returns {Promise<Set<string>>}
|
|
38
63
|
*/
|
|
39
64
|
assertionKeysAt(versionId?: string): Promise<Set<string>>;
|
|
65
|
+
/**
|
|
66
|
+
* Resolves the credential-posture view at a controller-log version
|
|
67
|
+
* (`undefined`: the current document): the ladder VM key multibases and
|
|
68
|
+
* the posture set S(V) the ceremony-tail license compares across
|
|
69
|
+
* versions.
|
|
70
|
+
*
|
|
71
|
+
* @param [versionId] {string}
|
|
72
|
+
* @returns {Promise<ControllerPosture>}
|
|
73
|
+
*/
|
|
74
|
+
postureAt(versionId?: string): Promise<ControllerPosture>;
|
|
40
75
|
}
|
|
41
76
|
/**
|
|
42
77
|
* Builds the controller view over an already-verified did:webvh account log
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/resourceLog/controller.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/resourceLog/controller.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAGvD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACvB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACzB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB;;;;;;;OAOG;IACH,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IACzD;;;;;;;;OAQG;IACH,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;CAC1D;AA6ID;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CAAC,EACzC,GAAG,EACH,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,qBAAqB,CAwCxB"}
|
|
@@ -1,28 +1,109 @@
|
|
|
1
1
|
import { ResourceLogIntegrityError } from './errors.js';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* `verificationMethod`.
|
|
3
|
+
* Resolves one relation entry: an embedded verification method verbatim, a
|
|
4
|
+
* string reference through the given `verificationMethod` index.
|
|
6
5
|
*
|
|
7
|
-
* @param
|
|
8
|
-
* @
|
|
6
|
+
* @param entry {string | ControllerVerificationMethod}
|
|
7
|
+
* @param byId {Map<string, ControllerVerificationMethod>}
|
|
8
|
+
* @returns {ControllerVerificationMethod | undefined}
|
|
9
9
|
*/
|
|
10
|
-
function
|
|
10
|
+
function resolveMethod(entry, byId) {
|
|
11
|
+
return typeof entry === 'string' ? byId.get(entry) : entry;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Indexes a document's `verificationMethod` array by id.
|
|
15
|
+
*
|
|
16
|
+
* @param doc {ControllerDocument}
|
|
17
|
+
* @returns {Map<string, ControllerVerificationMethod>}
|
|
18
|
+
*/
|
|
19
|
+
function methodsById(doc) {
|
|
11
20
|
const byId = new Map();
|
|
12
21
|
for (const method of doc.verificationMethod ?? []) {
|
|
13
22
|
if (typeof method?.id === 'string') {
|
|
14
23
|
byId.set(method.id, method);
|
|
15
24
|
}
|
|
16
25
|
}
|
|
26
|
+
return byId;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* A relation entry's verification-method id: the string reference itself, or
|
|
30
|
+
* an embedded method's `id`.
|
|
31
|
+
*
|
|
32
|
+
* @param entry {string | ControllerVerificationMethod}
|
|
33
|
+
* @returns {string | undefined}
|
|
34
|
+
*/
|
|
35
|
+
function relationIdOf(entry) {
|
|
36
|
+
return typeof entry === 'string' ? entry : entry?.id;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Collects a document's `assertionMethod` key multibases: embedded
|
|
40
|
+
* verification methods verbatim, string references resolved against
|
|
41
|
+
* `verificationMethod`.
|
|
42
|
+
*
|
|
43
|
+
* @param doc {ControllerDocument}
|
|
44
|
+
* @returns {Set<string>}
|
|
45
|
+
*/
|
|
46
|
+
function assertionKeysOf(doc) {
|
|
47
|
+
const byId = methodsById(doc);
|
|
17
48
|
const keys = new Set();
|
|
18
49
|
for (const entry of doc.assertionMethod ?? []) {
|
|
19
|
-
const method =
|
|
50
|
+
const method = resolveMethod(entry, byId);
|
|
20
51
|
if (method && typeof method.publicKeyMultibase === 'string') {
|
|
21
52
|
keys.add(method.publicKeyMultibase);
|
|
22
53
|
}
|
|
23
54
|
}
|
|
24
55
|
return keys;
|
|
25
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Collects a document's credential-posture view (see
|
|
59
|
+
* {@link ControllerPosture}): the ladder VMs by relation asymmetry
|
|
60
|
+
* (`capabilityDelegation` members absent from `capabilityInvocation`,
|
|
61
|
+
* compared by verification-method id), and S(V) as the account-controlled
|
|
62
|
+
* `keyAgreement` methods' key material -- `publicKeyCommitment` where the
|
|
63
|
+
* entry is a commitment, `publicKeyMultibase` where it is verbatim (the two
|
|
64
|
+
* value spaces are disjoint) -- union the ladder keys. A `keyAgreement`
|
|
65
|
+
* method carrying neither is skipped: an unidentifiable entry must not make
|
|
66
|
+
* two distinct postures compare equal.
|
|
67
|
+
*
|
|
68
|
+
* @param doc {ControllerDocument}
|
|
69
|
+
* @param did {string} the account DID posture entries are controlled by
|
|
70
|
+
* @returns {ControllerPosture}
|
|
71
|
+
*/
|
|
72
|
+
function postureOf(doc, did) {
|
|
73
|
+
const byId = methodsById(doc);
|
|
74
|
+
const invocable = new Set();
|
|
75
|
+
for (const entry of doc.capabilityInvocation ?? []) {
|
|
76
|
+
const id = relationIdOf(entry);
|
|
77
|
+
if (id !== undefined) {
|
|
78
|
+
invocable.add(id);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
const ladderKeys = new Set();
|
|
82
|
+
for (const entry of doc.capabilityDelegation ?? []) {
|
|
83
|
+
const id = relationIdOf(entry);
|
|
84
|
+
if (id !== undefined && invocable.has(id)) {
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
const method = resolveMethod(entry, byId);
|
|
88
|
+
if (method && typeof method.publicKeyMultibase === 'string') {
|
|
89
|
+
ladderKeys.add(method.publicKeyMultibase);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
const postureKeys = new Set(ladderKeys);
|
|
93
|
+
for (const entry of doc.keyAgreement ?? []) {
|
|
94
|
+
const method = resolveMethod(entry, byId);
|
|
95
|
+
if (!method || method.controller !== did) {
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
if (typeof method.publicKeyCommitment === 'string') {
|
|
99
|
+
postureKeys.add(method.publicKeyCommitment);
|
|
100
|
+
}
|
|
101
|
+
else if (typeof method.publicKeyMultibase === 'string') {
|
|
102
|
+
postureKeys.add(method.publicKeyMultibase);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return { ladderKeys, postureKeys };
|
|
106
|
+
}
|
|
26
107
|
/**
|
|
27
108
|
* Builds the controller view over an already-verified did:webvh account log
|
|
28
109
|
* (the `verifyAccountLog` output -- callers never hand this a log they have
|
|
@@ -41,10 +122,17 @@ function assertionKeysOf(doc) {
|
|
|
41
122
|
export function webvhResourceLogController({ did, log }) {
|
|
42
123
|
const versionIds = log.map(entry => entry.versionId);
|
|
43
124
|
const keysByVersion = new Map();
|
|
125
|
+
const postureByVersion = new Map();
|
|
44
126
|
for (const entry of log) {
|
|
45
|
-
|
|
127
|
+
const doc = entry.state;
|
|
128
|
+
keysByVersion.set(entry.versionId, assertionKeysOf(doc));
|
|
129
|
+
postureByVersion.set(entry.versionId, postureOf(doc, did));
|
|
46
130
|
}
|
|
47
131
|
const head = log.length === 0 ? undefined : log[log.length - 1];
|
|
132
|
+
function versionRefusal(versionId) {
|
|
133
|
+
return new ResourceLogIntegrityError(`The controller document did not resolve at version ` +
|
|
134
|
+
`"${versionId ?? '<head>'}" (no document returned).`);
|
|
135
|
+
}
|
|
48
136
|
return {
|
|
49
137
|
did,
|
|
50
138
|
versionIds,
|
|
@@ -53,8 +141,16 @@ export function webvhResourceLogController({ did, log }) {
|
|
|
53
141
|
? head && keysByVersion.get(head.versionId)
|
|
54
142
|
: keysByVersion.get(versionId);
|
|
55
143
|
if (!resolved) {
|
|
56
|
-
return Promise.reject(
|
|
57
|
-
|
|
144
|
+
return Promise.reject(versionRefusal(versionId));
|
|
145
|
+
}
|
|
146
|
+
return Promise.resolve(resolved);
|
|
147
|
+
},
|
|
148
|
+
postureAt(versionId) {
|
|
149
|
+
const resolved = versionId === undefined
|
|
150
|
+
? head && postureByVersion.get(head.versionId)
|
|
151
|
+
: postureByVersion.get(versionId);
|
|
152
|
+
if (!resolved) {
|
|
153
|
+
return Promise.reject(versionRefusal(versionId));
|
|
58
154
|
}
|
|
59
155
|
return Promise.resolve(resolved);
|
|
60
156
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/resourceLog/controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/resourceLog/controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
/**
|
|
5
5
|
* The resource-log refusal taxonomy, carried over from the roster's WC-1
|
|
6
6
|
* detached-signature design onto the log design. Two adversarial classes plus
|
|
7
|
-
*
|
|
7
|
+
* two admission refusals:
|
|
8
8
|
*
|
|
9
9
|
* - {@link ResourceLogIntegrityError} -- fabrication: the served log fails
|
|
10
10
|
* verification on its own terms (parse shape, SCID, chain hashes, proofs,
|
|
@@ -19,6 +19,12 @@
|
|
|
19
19
|
* head is a terminal handover entry. Not an attack: the log's own authors
|
|
20
20
|
* closed it, and a verifier of this profile must refuse to extend a closed
|
|
21
21
|
* log even though nothing currently emits terminal entries.
|
|
22
|
+
* - {@link ResourceLogLicenseError} -- a ladder-signed append outside the
|
|
23
|
+
* ceremony-tail license. An admission refusal, not log corruption: the
|
|
24
|
+
* append (attempted, or already served) is not licensed, and the same
|
|
25
|
+
* append can become licensed after a posture-changing controller-document
|
|
26
|
+
* entry -- callers must not treat it with the reject-the-whole-log
|
|
27
|
+
* severity of the integrity class.
|
|
22
28
|
*/
|
|
23
29
|
/**
|
|
24
30
|
* A served log failed verification: malformed entries, a non-verifying SCID,
|
|
@@ -55,6 +61,21 @@ export declare class ResourceLogContinuityError extends Error {
|
|
|
55
61
|
servedEntries?: unknown[];
|
|
56
62
|
});
|
|
57
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* A ladder-signed append outside the ceremony-tail license: it is not the
|
|
66
|
+
* log's first entry, and it does not anchor at a posture-changing controller
|
|
67
|
+
* document version no verified entry already anchors at or past. Above all
|
|
68
|
+
* this refuses the silent-rekey shape -- a ladder-signed rotation against an
|
|
69
|
+
* unchanged document. Write-time admission class: the log is not corrupt and
|
|
70
|
+
* whoever signed the append genuinely holds the credential; the append is
|
|
71
|
+
* merely unlicensed, and a retry after a posture-changing document entry may
|
|
72
|
+
* succeed.
|
|
73
|
+
*/
|
|
74
|
+
export declare class ResourceLogLicenseError extends Error {
|
|
75
|
+
constructor(message: string, options?: {
|
|
76
|
+
cause?: unknown;
|
|
77
|
+
});
|
|
78
|
+
}
|
|
58
79
|
/**
|
|
59
80
|
* An append was refused because the log's verified head is a terminal
|
|
60
81
|
* handover entry: the log is closed and names a successor, and this profile
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/resourceLog/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/resourceLog/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;;GAKG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI3D;AAED;;;;;;;;GAQG;AACH,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,aAAa,GAAG,eAAe,CAAA;IAC7D,UAAU,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,EAAE,CAAA;gBACb,EACV,MAAM,EACN,UAAU,EACV,aAAa,EACd,EAAE;QACD,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,aAAa,GAAG,eAAe,CAAA;QAC7D,UAAU,EAAE,MAAM,CAAA;QAClB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAA;KAC1B;CAUF;AAED;;;;;;;;;GASG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI3D;AAED;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;gBAC7B,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE;CAQvE"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
/**
|
|
5
5
|
* The resource-log refusal taxonomy, carried over from the roster's WC-1
|
|
6
6
|
* detached-signature design onto the log design. Two adversarial classes plus
|
|
7
|
-
*
|
|
7
|
+
* two admission refusals:
|
|
8
8
|
*
|
|
9
9
|
* - {@link ResourceLogIntegrityError} -- fabrication: the served log fails
|
|
10
10
|
* verification on its own terms (parse shape, SCID, chain hashes, proofs,
|
|
@@ -19,6 +19,12 @@
|
|
|
19
19
|
* head is a terminal handover entry. Not an attack: the log's own authors
|
|
20
20
|
* closed it, and a verifier of this profile must refuse to extend a closed
|
|
21
21
|
* log even though nothing currently emits terminal entries.
|
|
22
|
+
* - {@link ResourceLogLicenseError} -- a ladder-signed append outside the
|
|
23
|
+
* ceremony-tail license. An admission refusal, not log corruption: the
|
|
24
|
+
* append (attempted, or already served) is not licensed, and the same
|
|
25
|
+
* append can become licensed after a posture-changing controller-document
|
|
26
|
+
* entry -- callers must not treat it with the reject-the-whole-log
|
|
27
|
+
* severity of the integrity class.
|
|
22
28
|
*/
|
|
23
29
|
/**
|
|
24
30
|
* A served log failed verification: malformed entries, a non-verifying SCID,
|
|
@@ -59,6 +65,22 @@ export class ResourceLogContinuityError extends Error {
|
|
|
59
65
|
this.servedEntries = servedEntries;
|
|
60
66
|
}
|
|
61
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* A ladder-signed append outside the ceremony-tail license: it is not the
|
|
70
|
+
* log's first entry, and it does not anchor at a posture-changing controller
|
|
71
|
+
* document version no verified entry already anchors at or past. Above all
|
|
72
|
+
* this refuses the silent-rekey shape -- a ladder-signed rotation against an
|
|
73
|
+
* unchanged document. Write-time admission class: the log is not corrupt and
|
|
74
|
+
* whoever signed the append genuinely holds the credential; the append is
|
|
75
|
+
* merely unlicensed, and a retry after a posture-changing document entry may
|
|
76
|
+
* succeed.
|
|
77
|
+
*/
|
|
78
|
+
export class ResourceLogLicenseError extends Error {
|
|
79
|
+
constructor(message, options) {
|
|
80
|
+
super(message, options);
|
|
81
|
+
this.name = 'ResourceLogLicenseError';
|
|
82
|
+
}
|
|
83
|
+
}
|
|
62
84
|
/**
|
|
63
85
|
* An append was refused because the log's verified head is a terminal
|
|
64
86
|
* handover entry: the log is closed and names a successor, and this profile
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/resourceLog/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/resourceLog/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;;GAKG;AACH,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAClD,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAA;IACzC,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IACnD,MAAM,CAAuD;IAC7D,UAAU,CAAQ;IAClB;;;;OAIG;IACH,aAAa,CAAY;IACzB,YAAY,EACV,MAAM,EACN,UAAU,EACV,aAAa,EAKd;QACC,KAAK,CACH,sEAAsE;YACpE,IAAI,MAAM,iBAAiB,UAAU,IAAI,CAC5C,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAA;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;IACpC,CAAC;CACF;AAED;;;;;;;;;GASG;AACH,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChD,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAA;IACvC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,OAAO,CAAkC;IACzC,YAAY,EAAE,OAAO,EAAiD;QACpE,KAAK,CACH,wEAAwE;YACtE,0BAA0B,CAC7B,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAA;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;CACF"}
|
|
@@ -7,17 +7,19 @@
|
|
|
7
7
|
* chain verification against an adversarial host (parse shape, SCID and
|
|
8
8
|
* entry-hash recomputation, entry proofs, the external-authorization rule
|
|
9
9
|
* against the independently verified did:webvh controller document, terminal
|
|
10
|
-
* entries), the
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
10
|
+
* entries), the ceremony-tail license on ladder-signed appends, the
|
|
11
|
+
* chain-head pin with its continuity rules, the append path (verified-head
|
|
12
|
+
* build, CAS with rebase-and-retry, read-back confirmation), and the sealing
|
|
13
|
+
* sweep (the idempotent backstop append that re-anchors a log's head past
|
|
14
|
+
* the controller's latest membership change).
|
|
14
15
|
* Transport (JSON Lines, the store seam, the projection write) lives in
|
|
15
16
|
* `@interop/was-client/log`; the hashing and proof kernel in
|
|
16
17
|
* `@interop/did-method-webvh`. Kept out of the root export: this subpath
|
|
17
18
|
* pulls the did:webvh and ed25519 dependency graph.
|
|
18
19
|
*/
|
|
19
|
-
export { webvhResourceLogController, type ResourceLogController } from './controller.js';
|
|
20
|
-
export { ResourceLogClosedError, ResourceLogContinuityError, ResourceLogIntegrityError } from './errors.js';
|
|
20
|
+
export { webvhResourceLogController, type ControllerPosture, type ResourceLogController } from './controller.js';
|
|
21
|
+
export { ResourceLogClosedError, ResourceLogContinuityError, ResourceLogIntegrityError, ResourceLogLicenseError } from './errors.js';
|
|
22
|
+
export { assertLadderAppendLicensed } from './license.js';
|
|
21
23
|
export { buildResourceLogEntry, buildResourceLogGenesis, type ResourceLogSigner } from './entry.js';
|
|
22
24
|
export { memoryResourceLogPinStore, resourceLogPinId, type ResourceLogHeadPin, type ResourceLogPinStore } from './pin.js';
|
|
23
25
|
export { isTerminalResourceLogEntry, verifyResourceLog, verifyResourceLogHandover, type VerifiedResourceLog } from './verify.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resourceLog/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resourceLog/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EACL,0BAA0B,EAC1B,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC3B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACzB,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,yBAAyB,EACzB,KAAK,mBAAmB,EACzB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EAChB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,2BAA2B,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA"}
|
|
@@ -7,17 +7,19 @@
|
|
|
7
7
|
* chain verification against an adversarial host (parse shape, SCID and
|
|
8
8
|
* entry-hash recomputation, entry proofs, the external-authorization rule
|
|
9
9
|
* against the independently verified did:webvh controller document, terminal
|
|
10
|
-
* entries), the
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
10
|
+
* entries), the ceremony-tail license on ladder-signed appends, the
|
|
11
|
+
* chain-head pin with its continuity rules, the append path (verified-head
|
|
12
|
+
* build, CAS with rebase-and-retry, read-back confirmation), and the sealing
|
|
13
|
+
* sweep (the idempotent backstop append that re-anchors a log's head past
|
|
14
|
+
* the controller's latest membership change).
|
|
14
15
|
* Transport (JSON Lines, the store seam, the projection write) lives in
|
|
15
16
|
* `@interop/was-client/log`; the hashing and proof kernel in
|
|
16
17
|
* `@interop/did-method-webvh`. Kept out of the root export: this subpath
|
|
17
18
|
* pulls the did:webvh and ed25519 dependency graph.
|
|
18
19
|
*/
|
|
19
20
|
export { webvhResourceLogController } from './controller.js';
|
|
20
|
-
export { ResourceLogClosedError, ResourceLogContinuityError, ResourceLogIntegrityError } from './errors.js';
|
|
21
|
+
export { ResourceLogClosedError, ResourceLogContinuityError, ResourceLogIntegrityError, ResourceLogLicenseError } from './errors.js';
|
|
22
|
+
export { assertLadderAppendLicensed } from './license.js';
|
|
21
23
|
export { buildResourceLogEntry, buildResourceLogGenesis } from './entry.js';
|
|
22
24
|
export { memoryResourceLogPinStore, resourceLogPinId } from './pin.js';
|
|
23
25
|
export { isTerminalResourceLogEntry, verifyResourceLog, verifyResourceLogHandover } from './verify.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resourceLog/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resourceLog/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EACL,0BAA0B,EAG3B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EAExB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAGjB,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,yBAAyB,EAE1B,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EAChB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,2BAA2B,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2026 Interop Alliance. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* The ceremony-tail license on ladder-signed resource-log appends (clause B
|
|
6
|
+
* of the ladder VM's authority clauses). A ladder-signed append is accepted
|
|
7
|
+
* in exactly two shapes: the log's first entry (creation, never extension --
|
|
8
|
+
* callers admit that shape by not calling this check on a genesis entry),
|
|
9
|
+
* or a rotation anchored at a posture-changing controller-document version,
|
|
10
|
+
* one-shot -- refused when the verified log head already carries an entry
|
|
11
|
+
* anchored at that version or later. Everything else, above all a rotation
|
|
12
|
+
* against an unchanged document (the silent-rekey shape), is refused with
|
|
13
|
+
* {@link ResourceLogLicenseError}. Anchors compare by position in the
|
|
14
|
+
* controller's verified version history, the structural twin of the sealing
|
|
15
|
+
* sweep's `headAnchorIndex >= removalIndex` check.
|
|
16
|
+
*/
|
|
17
|
+
import type { ResourceLogController } from './controller.js';
|
|
18
|
+
/**
|
|
19
|
+
* Evaluates the ceremony-tail license's second shape for one ladder-signed
|
|
20
|
+
* append: the append must anchor at a posture-changing document version V --
|
|
21
|
+
* S(V) differs from S(V-1) in either direction, with S(-1) empty for a
|
|
22
|
+
* genesis-version anchor -- and no verified entry may already anchor at V or
|
|
23
|
+
* later (`headAnchorIndex >= anchorIndex` refuses; the license is one-shot,
|
|
24
|
+
* so a torn ceremony's late-arriving tail still passes while a second
|
|
25
|
+
* rotation against the same anchor does not). A `null` anchor index (an
|
|
26
|
+
* unversioned controller, where no anchor exists to license against) is
|
|
27
|
+
* refused fail-closed.
|
|
28
|
+
*
|
|
29
|
+
* @param options {object}
|
|
30
|
+
* @param options.controller {ResourceLogController} the verified controller
|
|
31
|
+
* view
|
|
32
|
+
* @param options.anchorIndex {number | null} the append's anchor as an
|
|
33
|
+
* index into `controller.versionIds` (`null`: unanchored)
|
|
34
|
+
* @param options.headAnchorIndex {number | null} the verified log head's
|
|
35
|
+
* effective anchor before this append (`null`: the log has no anchored
|
|
36
|
+
* entries yet)
|
|
37
|
+
* @returns {Promise<void>}
|
|
38
|
+
*/
|
|
39
|
+
export declare function assertLadderAppendLicensed({ controller, anchorIndex, headAnchorIndex }: {
|
|
40
|
+
controller: ResourceLogController;
|
|
41
|
+
anchorIndex: number | null;
|
|
42
|
+
headAnchorIndex: number | null;
|
|
43
|
+
}): Promise<void>;
|
|
44
|
+
//# sourceMappingURL=license.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../src/resourceLog/license.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAsB5D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,0BAA0B,CAAC,EAC/C,UAAU,EACV,WAAW,EACX,eAAe,EAChB,EAAE;IACD,UAAU,EAAE,qBAAqB,CAAA;IACjC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B,GAAG,OAAO,CAAC,IAAI,CAAC,CAgChB"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { ResourceLogLicenseError } from './errors.js';
|
|
2
|
+
/**
|
|
3
|
+
* Set equality over posture members.
|
|
4
|
+
*
|
|
5
|
+
* @param left {Set<string>}
|
|
6
|
+
* @param right {Set<string>}
|
|
7
|
+
* @returns {boolean}
|
|
8
|
+
*/
|
|
9
|
+
function setsEqual(left, right) {
|
|
10
|
+
if (left.size !== right.size) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
for (const member of left) {
|
|
14
|
+
if (!right.has(member)) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Evaluates the ceremony-tail license's second shape for one ladder-signed
|
|
22
|
+
* append: the append must anchor at a posture-changing document version V --
|
|
23
|
+
* S(V) differs from S(V-1) in either direction, with S(-1) empty for a
|
|
24
|
+
* genesis-version anchor -- and no verified entry may already anchor at V or
|
|
25
|
+
* later (`headAnchorIndex >= anchorIndex` refuses; the license is one-shot,
|
|
26
|
+
* so a torn ceremony's late-arriving tail still passes while a second
|
|
27
|
+
* rotation against the same anchor does not). A `null` anchor index (an
|
|
28
|
+
* unversioned controller, where no anchor exists to license against) is
|
|
29
|
+
* refused fail-closed.
|
|
30
|
+
*
|
|
31
|
+
* @param options {object}
|
|
32
|
+
* @param options.controller {ResourceLogController} the verified controller
|
|
33
|
+
* view
|
|
34
|
+
* @param options.anchorIndex {number | null} the append's anchor as an
|
|
35
|
+
* index into `controller.versionIds` (`null`: unanchored)
|
|
36
|
+
* @param options.headAnchorIndex {number | null} the verified log head's
|
|
37
|
+
* effective anchor before this append (`null`: the log has no anchored
|
|
38
|
+
* entries yet)
|
|
39
|
+
* @returns {Promise<void>}
|
|
40
|
+
*/
|
|
41
|
+
export async function assertLadderAppendLicensed({ controller, anchorIndex, headAnchorIndex }) {
|
|
42
|
+
if (anchorIndex === null ||
|
|
43
|
+
anchorIndex < 0 ||
|
|
44
|
+
anchorIndex >= controller.versionIds.length) {
|
|
45
|
+
throw new ResourceLogLicenseError('A ladder-signed append past the genesis entry cannot be licensed ' +
|
|
46
|
+
'without an anchor into the controller document version history.');
|
|
47
|
+
}
|
|
48
|
+
const current = (await controller.postureAt(controller.versionIds[anchorIndex])).postureKeys;
|
|
49
|
+
const previous = anchorIndex === 0
|
|
50
|
+
? new Set()
|
|
51
|
+
: (await controller.postureAt(controller.versionIds[anchorIndex - 1]))
|
|
52
|
+
.postureKeys;
|
|
53
|
+
if (setsEqual(current, previous)) {
|
|
54
|
+
throw new ResourceLogLicenseError('The ladder-signed append anchors at a controller document version ' +
|
|
55
|
+
'that did not change the credential posture (a rotation against an ' +
|
|
56
|
+
'unchanged document is never licensed).');
|
|
57
|
+
}
|
|
58
|
+
if (headAnchorIndex !== null && headAnchorIndex >= anchorIndex) {
|
|
59
|
+
throw new ResourceLogLicenseError('The verified log head already carries an entry anchored at or past ' +
|
|
60
|
+
'this posture-changing document version (the license is one-shot).');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=license.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/resourceLog/license.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAErD;;;;;;GAMG;AACH,SAAS,SAAS,CAAC,IAAiB,EAAE,KAAkB;IACtD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,EAC/C,UAAU,EACV,WAAW,EACX,eAAe,EAKhB;IACC,IACE,WAAW,KAAK,IAAI;QACpB,WAAW,GAAG,CAAC;QACf,WAAW,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,EAC3C,CAAC;QACD,MAAM,IAAI,uBAAuB,CAC/B,mEAAmE;YACjE,iEAAiE,CACpE,CAAA;IACH,CAAC;IACD,MAAM,OAAO,GAAG,CACd,MAAM,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAE,CAAC,CAChE,CAAC,WAAW,CAAA;IACb,MAAM,QAAQ,GACZ,WAAW,KAAK,CAAC;QACf,CAAC,CAAC,IAAI,GAAG,EAAU;QACnB,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,GAAG,CAAC,CAAE,CAAC,CAAC;aAClE,WAAW,CAAA;IACpB,IAAI,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,uBAAuB,CAC/B,oEAAoE;YAClE,oEAAoE;YACpE,wCAAwC,CAC3C,CAAA;IACH,CAAC;IACD,IAAI,eAAe,KAAK,IAAI,IAAI,eAAe,IAAI,WAAW,EAAE,CAAC;QAC/D,MAAM,IAAI,uBAAuB,CAC/B,qEAAqE;YACnE,mEAAmE,CACtE,CAAA;IACH,CAAC;AACH,CAAC"}
|
|
@@ -46,8 +46,9 @@ export declare function isTerminalResourceLogEntry(entry: ResourceLogEntry): boo
|
|
|
46
46
|
* recomputation, per-entry proofs, the external-authorization rule with
|
|
47
47
|
* anchor monotonicity, termination, and continuity against the chain-head
|
|
48
48
|
* pin. Throws {@link ResourceLogIntegrityError} on fabrication-class
|
|
49
|
-
* failures, {@link ResourceLogContinuityError} on pin conflicts
|
|
50
|
-
*
|
|
49
|
+
* failures, {@link ResourceLogContinuityError} on pin conflicts, and
|
|
50
|
+
* `ResourceLogLicenseError` on a ladder-signed append outside the
|
|
51
|
+
* ceremony-tail license; any failure rejects the whole log.
|
|
51
52
|
*
|
|
52
53
|
* The controller view is the independently verified controller document --
|
|
53
54
|
* never material served beside the log. An unversioned controller (empty
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/resourceLog/verify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/resourceLog/verify.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EACV,gBAAgB,EAEjB,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAO5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAclD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,gBAAgB,CAAA;IACtB,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAChC,GAAG,EAAE,kBAAkB,CAAA;IACvB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IACjD,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;CACnD;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAM3E;AA0OD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,iBAAiB,CAAC,EACtC,OAAO,EACP,UAAU,EACV,cAAc,EACd,GAAG,EACJ,EAAE;IACD,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B,UAAU,EAAE,qBAAqB,CAAA;IACjC,cAAc,EAAE,MAAM,CAAA;IACtB,GAAG,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAA;CAChC,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAqP/B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,KAAK,EACL,SAAS,EACV,EAAE;IACD,KAAK,EAAE,mBAAmB,CAAA;IAC1B,SAAS,EAAE,mBAAmB,CAAA;CAC/B,GAAG,IAAI,CAqBP"}
|