@kya-os/mcp 1.6.1 → 1.9.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/CHANGELOG.md +117 -0
- package/README.md +228 -3
- package/dist/authz/index.d.ts +1 -0
- package/dist/authz/index.d.ts.map +1 -1
- package/dist/authz/index.js +1 -0
- package/dist/authz/index.js.map +1 -1
- package/dist/authz/oidc/oidc-adapter.d.ts +10 -2
- package/dist/authz/oidc/oidc-adapter.d.ts.map +1 -1
- package/dist/authz/oidc/oidc-adapter.js +18 -9
- package/dist/authz/oidc/oidc-adapter.js.map +1 -1
- package/dist/authz/oidc/pending-flow-store.d.ts +80 -0
- package/dist/authz/oidc/pending-flow-store.d.ts.map +1 -0
- package/dist/authz/oidc/pending-flow-store.js +82 -0
- package/dist/authz/oidc/pending-flow-store.js.map +1 -0
- package/dist/card/build.d.ts +41 -0
- package/dist/card/build.d.ts.map +1 -0
- package/dist/card/build.js +47 -0
- package/dist/card/build.js.map +1 -0
- package/dist/card/builder.d.ts +99 -0
- package/dist/card/builder.d.ts.map +1 -0
- package/dist/card/builder.js +147 -0
- package/dist/card/builder.js.map +1 -0
- package/dist/card/cimd.d.ts +92 -0
- package/dist/card/cimd.d.ts.map +1 -0
- package/dist/card/cimd.js +225 -0
- package/dist/card/cimd.js.map +1 -0
- package/dist/card/delegation.d.ts +145 -0
- package/dist/card/delegation.d.ts.map +1 -0
- package/dist/card/delegation.js +293 -0
- package/dist/card/delegation.js.map +1 -0
- package/dist/card/emit.d.ts +133 -0
- package/dist/card/emit.d.ts.map +1 -0
- package/dist/card/emit.js +127 -0
- package/dist/card/emit.js.map +1 -0
- package/dist/card/index.d.ts +43 -0
- package/dist/card/index.d.ts.map +1 -0
- package/dist/card/index.js +46 -0
- package/dist/card/index.js.map +1 -0
- package/dist/card/middleware.d.ts +112 -0
- package/dist/card/middleware.d.ts.map +1 -0
- package/dist/card/middleware.js +121 -0
- package/dist/card/middleware.js.map +1 -0
- package/dist/card/proof/build.d.ts +22 -0
- package/dist/card/proof/build.d.ts.map +1 -0
- package/dist/card/proof/build.js +55 -0
- package/dist/card/proof/build.js.map +1 -0
- package/dist/card/proof/canonical.d.ts +66 -0
- package/dist/card/proof/canonical.d.ts.map +1 -0
- package/dist/card/proof/canonical.js +131 -0
- package/dist/card/proof/canonical.js.map +1 -0
- package/dist/card/proof/http-sig.d.ts +69 -0
- package/dist/card/proof/http-sig.d.ts.map +1 -0
- package/dist/card/proof/http-sig.js +101 -0
- package/dist/card/proof/http-sig.js.map +1 -0
- package/dist/card/proof/index.d.ts +25 -0
- package/dist/card/proof/index.d.ts.map +1 -0
- package/dist/card/proof/index.js +25 -0
- package/dist/card/proof/index.js.map +1 -0
- package/dist/card/proof/nonce-cache.d.ts +67 -0
- package/dist/card/proof/nonce-cache.d.ts.map +1 -0
- package/dist/card/proof/nonce-cache.js +88 -0
- package/dist/card/proof/nonce-cache.js.map +1 -0
- package/dist/card/proof/signer.d.ts +32 -0
- package/dist/card/proof/signer.d.ts.map +1 -0
- package/dist/card/proof/signer.js +59 -0
- package/dist/card/proof/signer.js.map +1 -0
- package/dist/card/proof/types.d.ts +219 -0
- package/dist/card/proof/types.d.ts.map +1 -0
- package/dist/card/proof/types.js +87 -0
- package/dist/card/proof/types.js.map +1 -0
- package/dist/card/proof/verify.d.ts +27 -0
- package/dist/card/proof/verify.d.ts.map +1 -0
- package/dist/card/proof/verify.js +236 -0
- package/dist/card/proof/verify.js.map +1 -0
- package/dist/card/resolve.d.ts +97 -0
- package/dist/card/resolve.d.ts.map +1 -0
- package/dist/card/resolve.js +223 -0
- package/dist/card/resolve.js.map +1 -0
- package/dist/card/revocation.d.ts +96 -0
- package/dist/card/revocation.d.ts.map +1 -0
- package/dist/card/revocation.js +190 -0
- package/dist/card/revocation.js.map +1 -0
- package/dist/card/schema.d.ts +177 -0
- package/dist/card/schema.d.ts.map +1 -0
- package/dist/card/schema.js +119 -0
- package/dist/card/schema.js.map +1 -0
- package/dist/card/verify.d.ts +144 -0
- package/dist/card/verify.d.ts.map +1 -0
- package/dist/card/verify.js +132 -0
- package/dist/card/verify.js.map +1 -0
- package/dist/delegation/bitstring.d.ts +9 -7
- package/dist/delegation/bitstring.d.ts.map +1 -1
- package/dist/delegation/bitstring.js +70 -37
- package/dist/delegation/bitstring.js.map +1 -1
- package/dist/delegation/did-linkage.d.ts +23 -0
- package/dist/delegation/did-linkage.d.ts.map +1 -0
- package/dist/delegation/did-linkage.js +57 -0
- package/dist/delegation/did-linkage.js.map +1 -0
- package/dist/delegation/did-resolver-registry.d.ts +7 -0
- package/dist/delegation/did-resolver-registry.d.ts.map +1 -0
- package/dist/delegation/did-resolver-registry.js +20 -0
- package/dist/delegation/did-resolver-registry.js.map +1 -0
- package/dist/delegation/did-web-resolver.d.ts +29 -18
- package/dist/delegation/did-web-resolver.d.ts.map +1 -1
- package/dist/delegation/did-web-resolver.js +65 -35
- package/dist/delegation/did-web-resolver.js.map +1 -1
- package/dist/delegation/index.d.ts +3 -0
- package/dist/delegation/index.d.ts.map +1 -1
- package/dist/delegation/index.js +3 -0
- package/dist/delegation/index.js.map +1 -1
- package/dist/delegation/statuslist-manager.d.ts.map +1 -1
- package/dist/delegation/statuslist-manager.js +16 -1
- package/dist/delegation/statuslist-manager.js.map +1 -1
- package/dist/delegation/vc-jwt-verify.d.ts +61 -0
- package/dist/delegation/vc-jwt-verify.d.ts.map +1 -0
- package/dist/delegation/vc-jwt-verify.js +131 -0
- package/dist/delegation/vc-jwt-verify.js.map +1 -0
- package/dist/delegation/vc-verification-checks.d.ts +50 -0
- package/dist/delegation/vc-verification-checks.d.ts.map +1 -0
- package/dist/delegation/vc-verification-checks.js +212 -0
- package/dist/delegation/vc-verification-checks.js.map +1 -0
- package/dist/delegation/vc-verifier.d.ts +24 -61
- package/dist/delegation/vc-verifier.d.ts.map +1 -1
- package/dist/delegation/vc-verifier.js +57 -180
- package/dist/delegation/vc-verifier.js.map +1 -1
- package/dist/delegation/vc-verifier.types.d.ts +88 -0
- package/dist/delegation/vc-verifier.types.d.ts.map +1 -0
- package/dist/delegation/vc-verifier.types.js +9 -0
- package/dist/delegation/vc-verifier.types.js.map +1 -0
- package/dist/index.d.ts +8 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -3
- package/dist/index.js.map +1 -1
- package/dist/integrations/cheqd/dlr.d.ts +44 -0
- package/dist/integrations/cheqd/dlr.d.ts.map +1 -0
- package/dist/integrations/cheqd/dlr.js +86 -0
- package/dist/integrations/cheqd/dlr.js.map +1 -0
- package/dist/integrations/cheqd/index.d.ts +5 -0
- package/dist/integrations/cheqd/index.d.ts.map +1 -0
- package/dist/integrations/cheqd/index.js +5 -0
- package/dist/integrations/cheqd/index.js.map +1 -0
- package/dist/integrations/cheqd/linkage.d.ts +20 -0
- package/dist/integrations/cheqd/linkage.d.ts.map +1 -0
- package/dist/integrations/cheqd/linkage.js +32 -0
- package/dist/integrations/cheqd/linkage.js.map +1 -0
- package/dist/integrations/cheqd/registrar.d.ts +85 -0
- package/dist/integrations/cheqd/registrar.d.ts.map +1 -0
- package/dist/integrations/cheqd/registrar.js +304 -0
- package/dist/integrations/cheqd/registrar.js.map +1 -0
- package/dist/integrations/cheqd/resolver.d.ts +38 -0
- package/dist/integrations/cheqd/resolver.d.ts.map +1 -0
- package/dist/integrations/cheqd/resolver.js +156 -0
- package/dist/integrations/cheqd/resolver.js.map +1 -0
- package/dist/middleware/index.d.ts +2 -0
- package/dist/middleware/index.d.ts.map +1 -1
- package/dist/middleware/index.js +5 -0
- package/dist/middleware/index.js.map +1 -1
- package/dist/middleware/kya-os-transport.d.ts +2 -1
- package/dist/middleware/kya-os-transport.d.ts.map +1 -1
- package/dist/middleware/kya-os-transport.js +2 -1
- package/dist/middleware/kya-os-transport.js.map +1 -1
- package/dist/middleware/with-kya-os-server.d.ts +21 -4
- package/dist/middleware/with-kya-os-server.d.ts.map +1 -1
- package/dist/middleware/with-kya-os-server.js +4 -0
- package/dist/middleware/with-kya-os-server.js.map +1 -1
- package/dist/middleware/with-kya-os.config-types.d.ts +139 -0
- package/dist/middleware/with-kya-os.config-types.d.ts.map +1 -0
- package/dist/middleware/with-kya-os.config-types.js +9 -0
- package/dist/middleware/with-kya-os.config-types.js.map +1 -0
- package/dist/middleware/with-kya-os.d.ts +10 -238
- package/dist/middleware/with-kya-os.d.ts.map +1 -1
- package/dist/middleware/with-kya-os.delegation-gate.d.ts +19 -0
- package/dist/middleware/with-kya-os.delegation-gate.d.ts.map +1 -0
- package/dist/middleware/with-kya-os.delegation-gate.js +175 -0
- package/dist/middleware/with-kya-os.delegation-gate.js.map +1 -0
- package/dist/middleware/with-kya-os.delegation-verify.d.ts +51 -0
- package/dist/middleware/with-kya-os.delegation-verify.d.ts.map +1 -0
- package/dist/middleware/with-kya-os.delegation-verify.js +165 -0
- package/dist/middleware/with-kya-os.delegation-verify.js.map +1 -0
- package/dist/middleware/with-kya-os.deps.d.ts +40 -0
- package/dist/middleware/with-kya-os.deps.d.ts.map +1 -0
- package/dist/middleware/with-kya-os.deps.js +9 -0
- package/dist/middleware/with-kya-os.deps.js.map +1 -0
- package/dist/middleware/with-kya-os.grants.d.ts +30 -0
- package/dist/middleware/with-kya-os.grants.d.ts.map +1 -0
- package/dist/middleware/with-kya-os.grants.js +145 -0
- package/dist/middleware/with-kya-os.grants.js.map +1 -0
- package/dist/middleware/with-kya-os.helpers.d.ts +24 -0
- package/dist/middleware/with-kya-os.helpers.d.ts.map +1 -0
- package/dist/middleware/with-kya-os.helpers.js +57 -0
- package/dist/middleware/with-kya-os.helpers.js.map +1 -0
- package/dist/middleware/with-kya-os.js +65 -703
- package/dist/middleware/with-kya-os.js.map +1 -1
- package/dist/middleware/with-kya-os.policy-gate.d.ts +16 -0
- package/dist/middleware/with-kya-os.policy-gate.d.ts.map +1 -0
- package/dist/middleware/with-kya-os.policy-gate.js +98 -0
- package/dist/middleware/with-kya-os.policy-gate.js.map +1 -0
- package/dist/middleware/with-kya-os.protocol.d.ts +29 -0
- package/dist/middleware/with-kya-os.protocol.d.ts.map +1 -0
- package/dist/middleware/with-kya-os.protocol.js +121 -0
- package/dist/middleware/with-kya-os.protocol.js.map +1 -0
- package/dist/middleware/with-kya-os.session.d.ts +32 -0
- package/dist/middleware/with-kya-os.session.d.ts.map +1 -0
- package/dist/middleware/with-kya-os.session.js +201 -0
- package/dist/middleware/with-kya-os.session.js.map +1 -0
- package/dist/middleware/with-kya-os.types.d.ts +178 -0
- package/dist/middleware/with-kya-os.types.d.ts.map +1 -0
- package/dist/middleware/with-kya-os.types.js +13 -0
- package/dist/middleware/with-kya-os.types.js.map +1 -0
- package/dist/proof/generator.d.ts +21 -0
- package/dist/proof/generator.d.ts.map +1 -1
- package/dist/proof/generator.js +21 -0
- package/dist/proof/generator.js.map +1 -1
- package/dist/proof/index.d.ts +1 -1
- package/dist/proof/index.d.ts.map +1 -1
- package/dist/proof/index.js +1 -1
- package/dist/proof/index.js.map +1 -1
- package/dist/proof/verifier.d.ts +26 -3
- package/dist/proof/verifier.d.ts.map +1 -1
- package/dist/proof/verifier.js +54 -24
- package/dist/proof/verifier.js.map +1 -1
- package/dist/providers/grant-store.d.ts +10 -1
- package/dist/providers/grant-store.d.ts.map +1 -1
- package/dist/providers/grant-store.js.map +1 -1
- package/dist/providers/runtime-fetch.d.ts +8 -0
- package/dist/providers/runtime-fetch.d.ts.map +1 -1
- package/dist/providers/runtime-fetch.js +17 -0
- package/dist/providers/runtime-fetch.js.map +1 -1
- package/dist/providers/web-crypto.d.ts.map +1 -1
- package/dist/providers/web-crypto.js +15 -7
- package/dist/providers/web-crypto.js.map +1 -1
- package/dist/session/index.d.ts +1 -0
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +1 -0
- package/dist/session/index.js.map +1 -1
- package/dist/session/manager.d.ts +17 -6
- package/dist/session/manager.d.ts.map +1 -1
- package/dist/session/manager.js +16 -26
- package/dist/session/manager.js.map +1 -1
- package/dist/session/session-store.d.ts +78 -0
- package/dist/session/session-store.d.ts.map +1 -0
- package/dist/session/session-store.js +79 -0
- package/dist/session/session-store.js.map +1 -0
- package/dist/types/protocol.d.ts +9 -3
- package/dist/types/protocol.d.ts.map +1 -1
- package/dist/types/protocol.js.map +1 -1
- package/dist/utils/guards.d.ts +2 -0
- package/dist/utils/guards.d.ts.map +1 -0
- package/dist/utils/guards.js +4 -0
- package/dist/utils/guards.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/ip-classifier.d.ts +12 -0
- package/dist/utils/ip-classifier.d.ts.map +1 -0
- package/dist/utils/ip-classifier.js +153 -0
- package/dist/utils/ip-classifier.js.map +1 -0
- package/dist/utils/safe-fetch-transports.d.ts +40 -0
- package/dist/utils/safe-fetch-transports.d.ts.map +1 -0
- package/dist/utils/safe-fetch-transports.js +121 -0
- package/dist/utils/safe-fetch-transports.js.map +1 -0
- package/dist/utils/safe-fetch-types.d.ts +66 -0
- package/dist/utils/safe-fetch-types.d.ts.map +1 -0
- package/dist/utils/safe-fetch-types.js +10 -0
- package/dist/utils/safe-fetch-types.js.map +1 -0
- package/dist/utils/safe-fetch.d.ts +40 -0
- package/dist/utils/safe-fetch.d.ts.map +1 -0
- package/dist/utils/safe-fetch.js +188 -0
- package/dist/utils/safe-fetch.js.map +1 -0
- package/dist/utils/statuslist-purpose.d.ts +12 -0
- package/dist/utils/statuslist-purpose.d.ts.map +1 -0
- package/dist/utils/statuslist-purpose.js +19 -0
- package/dist/utils/statuslist-purpose.js.map +1 -0
- package/dist/utils/url.d.ts +2 -0
- package/dist/utils/url.d.ts.map +1 -0
- package/dist/utils/url.js +8 -0
- package/dist/utils/url.js.map +1 -0
- package/package.json +25 -5
- package/schemas/README.md +2 -1
- package/schemas/card-delegation-credential.json +239 -0
- package/schemas/kya-os-card.schema.json +284 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitstring.d.ts","sourceRoot":"","sources":["../../src/delegation/bitstring.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"bitstring.d.ts","sourceRoot":"","sources":["../../src/delegation/bitstring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CACnD;AAaD,qBAAa,gBAAgB;IAMzB,OAAO,CAAC,UAAU;IALpB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,IAAI,CAAS;gBAGnB,IAAI,EAAE,MAAM,EACJ,UAAU,EAAE,mBAAmB,EAIvC,aAAa,EAAE,qBAAqB;IAOtC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAiB3C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAa9B,UAAU,IAAI,MAAM,EAAE;IAUhB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;WAKlB,MAAM,CACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,mBAAmB,EAC/B,YAAY,EAAE,qBAAqB,GAClC,OAAO,CAAC,gBAAgB,CAAC;IAS5B,UAAU,IAAI,UAAU;IAIxB,OAAO,IAAI,MAAM;IAIjB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,aAAa;IAOrB,MAAM,CAAC,WAAW,CAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EAAE,EACjB,UAAU,EAAE,mBAAmB,EAC/B,YAAY,EAAE,qBAAqB,GAClC,gBAAgB;CAOpB;AAmCD,wBAAsB,UAAU,CAC9B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,qBAAqB,GAClC,OAAO,CAAC,OAAO,CAAC,CAelB"}
|
|
@@ -1,45 +1,65 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Bitstring Utilities for StatusList2021
|
|
2
|
+
* Bitstring Utilities for W3C status lists (StatusList2021 / Bitstring Status List v1.0).
|
|
3
3
|
*
|
|
4
4
|
* Implements GZIP compression + base64url encoding for efficient status lists.
|
|
5
|
-
*
|
|
5
|
+
* Each bit represents credential status:
|
|
6
6
|
* - 0: Not revoked/suspended
|
|
7
7
|
* - 1: Revoked/suspended
|
|
8
8
|
*
|
|
9
|
-
*
|
|
9
|
+
* Bit order is MSB-FIRST within each byte (index 0 → the 0x80 bit), matching the W3C spec and
|
|
10
|
+
* the Digital Bazaar reference `Bitstring` (`0x80 >> bit`). This is the SAME order the Entity Card
|
|
11
|
+
* revocation reader (`src/card/revocation.ts`) uses, so both code paths read an identical
|
|
12
|
+
* `encodedList` to the SAME verdict.
|
|
13
|
+
*
|
|
14
|
+
* Related Spec: W3C Bitstring Status List v1.0 (successor to StatusList2021)
|
|
10
15
|
*/
|
|
16
|
+
/** Fixed ceiling on an inflated status bitstring (16 MiB ≈ 134M entries) — fail-closed against a
|
|
17
|
+
* decompression bomb. Mirrors the cap in the card revocation reader (src/card/revocation.ts). */
|
|
18
|
+
const MAX_STATUS_LIST_BYTES = 16 * 1024 * 1024;
|
|
19
|
+
/** The W3C Bitstring Status List `encodedList` multibase prefix (base64url, no padding). `encode`
|
|
20
|
+
* emits it and `base64urlDecode` strips it, so this reader is interoperable with the card
|
|
21
|
+
* revocation reader (src/card/revocation.ts) and any conformant issuer. A gzip stream's fixed
|
|
22
|
+
* magic byte (0x1f) makes its base64url start with `H`, never `u`, so a leading `u` is
|
|
23
|
+
* unambiguously the multibase code rather than payload. */
|
|
24
|
+
const MULTIBASE_BASE64URL = 'u';
|
|
11
25
|
export class BitstringManager {
|
|
12
26
|
compressor;
|
|
13
|
-
decompressor;
|
|
14
27
|
bits;
|
|
15
28
|
size;
|
|
16
|
-
constructor(size, compressor,
|
|
29
|
+
constructor(size, compressor,
|
|
30
|
+
// Accepted for signature symmetry with decode()/fromSetBits() and public
|
|
31
|
+
// back-compat, but the INSTANCE never decompresses: decode() inflates via
|
|
32
|
+
// the shared inflateStatusList() before construction, so no field is stored.
|
|
33
|
+
_decompressor) {
|
|
17
34
|
this.compressor = compressor;
|
|
18
|
-
this.decompressor = decompressor;
|
|
19
35
|
this.size = size;
|
|
20
36
|
const byteCount = Math.ceil(size / 8);
|
|
21
37
|
this.bits = new Uint8Array(byteCount);
|
|
22
38
|
}
|
|
23
39
|
setBit(index, value) {
|
|
24
|
-
if (index < 0 || index >= this.size) {
|
|
40
|
+
if (!Number.isInteger(index) || index < 0 || index >= this.size) {
|
|
41
|
+
// `!Number.isInteger` also rejects NaN — a NaN index (e.g. parseInt("abc") upstream) would
|
|
42
|
+
// otherwise slip past `< 0 || >= size` and read bits[NaN] = undefined = "not set" (fail-open).
|
|
25
43
|
throw new Error(`Bit index ${index} out of range (0-${this.size - 1})`);
|
|
26
44
|
}
|
|
27
45
|
const byteIndex = Math.floor(index / 8);
|
|
28
46
|
const bitIndex = index % 8;
|
|
29
47
|
if (value) {
|
|
30
|
-
this.bits[byteIndex] |=
|
|
48
|
+
this.bits[byteIndex] |= 0x80 >> bitIndex; // MSB-first (W3C): index 0 → 0x80
|
|
31
49
|
}
|
|
32
50
|
else {
|
|
33
|
-
this.bits[byteIndex] &=
|
|
51
|
+
this.bits[byteIndex] &= 0xff ^ (0x80 >> bitIndex);
|
|
34
52
|
}
|
|
35
53
|
}
|
|
36
54
|
getBit(index) {
|
|
37
|
-
if (index < 0 || index >= this.size) {
|
|
55
|
+
if (!Number.isInteger(index) || index < 0 || index >= this.size) {
|
|
56
|
+
// `!Number.isInteger` also rejects NaN — a NaN index (e.g. parseInt("abc") upstream) would
|
|
57
|
+
// otherwise slip past `< 0 || >= size` and read bits[NaN] = undefined = "not set" (fail-open).
|
|
38
58
|
throw new Error(`Bit index ${index} out of range (0-${this.size - 1})`);
|
|
39
59
|
}
|
|
40
60
|
const byteIndex = Math.floor(index / 8);
|
|
41
61
|
const bitIndex = index % 8;
|
|
42
|
-
return (this.bits[byteIndex] & (
|
|
62
|
+
return (this.bits[byteIndex] & (0x80 >> bitIndex)) !== 0; // MSB-first (W3C)
|
|
43
63
|
}
|
|
44
64
|
getSetBits() {
|
|
45
65
|
const setBits = [];
|
|
@@ -52,11 +72,10 @@ export class BitstringManager {
|
|
|
52
72
|
}
|
|
53
73
|
async encode() {
|
|
54
74
|
const compressed = await this.compressor.compress(this.bits);
|
|
55
|
-
return this.base64urlEncode(compressed);
|
|
75
|
+
return MULTIBASE_BASE64URL + this.base64urlEncode(compressed);
|
|
56
76
|
}
|
|
57
77
|
static async decode(encodedList, compressor, decompressor) {
|
|
58
|
-
const
|
|
59
|
-
const decompressed = await decompressor.decompress(compressed);
|
|
78
|
+
const decompressed = await inflateStatusList(encodedList, decompressor);
|
|
60
79
|
const size = decompressed.length * 8;
|
|
61
80
|
const manager = new BitstringManager(size, compressor, decompressor);
|
|
62
81
|
manager.bits = decompressed;
|
|
@@ -72,30 +91,12 @@ export class BitstringManager {
|
|
|
72
91
|
const base64 = this.bytesToBase64(data);
|
|
73
92
|
return base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
|
|
74
93
|
}
|
|
75
|
-
static base64urlDecode(encoded) {
|
|
76
|
-
let base64 = encoded.replace(/-/g, '+').replace(/_/g, '/');
|
|
77
|
-
while (base64.length % 4 !== 0) {
|
|
78
|
-
base64 += '=';
|
|
79
|
-
}
|
|
80
|
-
return BitstringManager.base64ToBytes(base64);
|
|
81
|
-
}
|
|
82
94
|
bytesToBase64(bytes) {
|
|
83
95
|
const binary = Array.from(bytes)
|
|
84
96
|
.map((byte) => String.fromCharCode(byte))
|
|
85
97
|
.join('');
|
|
86
98
|
return btoa(binary);
|
|
87
99
|
}
|
|
88
|
-
static base64ToBytes(base64) {
|
|
89
|
-
let standardBase64 = base64.replace(/-/g, '+').replace(/_/g, '/');
|
|
90
|
-
const paddingNeeded = (4 - (standardBase64.length % 4)) % 4;
|
|
91
|
-
standardBase64 += '='.repeat(paddingNeeded);
|
|
92
|
-
const binary = atob(standardBase64);
|
|
93
|
-
const bytes = new Uint8Array(binary.length);
|
|
94
|
-
for (let i = 0; i < binary.length; i++) {
|
|
95
|
-
bytes[i] = binary.charCodeAt(i);
|
|
96
|
-
}
|
|
97
|
-
return bytes;
|
|
98
|
-
}
|
|
99
100
|
static fromSetBits(size, setBits, compressor, decompressor) {
|
|
100
101
|
const manager = new BitstringManager(size, compressor, decompressor);
|
|
101
102
|
for (const index of setBits) {
|
|
@@ -104,14 +105,46 @@ export class BitstringManager {
|
|
|
104
105
|
return manager;
|
|
105
106
|
}
|
|
106
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Decode a base64url `encodedList`, stripping an optional leading W3C multibase `u` prefix so this
|
|
110
|
+
* module's own `encode` output and a conformant issuer's `encodedList` decode identically (matches
|
|
111
|
+
* src/card/revocation.ts). Standalone so both {@link BitstringManager.decode} and {@link isIndexSet}
|
|
112
|
+
* share ONE reader (no private-visibility casts).
|
|
113
|
+
*/
|
|
114
|
+
function decodeBase64urlMultibase(encoded) {
|
|
115
|
+
const payload = encoded[0] === MULTIBASE_BASE64URL ? encoded.slice(1) : encoded;
|
|
116
|
+
let standard = payload.replace(/-/g, '+').replace(/_/g, '/');
|
|
117
|
+
standard += '='.repeat((4 - (standard.length % 4)) % 4);
|
|
118
|
+
const binary = atob(standard);
|
|
119
|
+
const bytes = new Uint8Array(binary.length);
|
|
120
|
+
for (let i = 0; i < binary.length; i++)
|
|
121
|
+
bytes[i] = binary.charCodeAt(i);
|
|
122
|
+
return bytes;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Decode + decompress a status-list `encodedList`, FAIL-CLOSED against a decompression bomb via a
|
|
126
|
+
* post-inflation size cap. The single reader path shared by {@link BitstringManager.decode} and
|
|
127
|
+
* {@link isIndexSet}, so both bound inflation identically. (Production decompressors SHOULD also
|
|
128
|
+
* bound output DURING inflation.)
|
|
129
|
+
*/
|
|
130
|
+
async function inflateStatusList(encodedList, decompressor) {
|
|
131
|
+
const decompressed = await decompressor.decompress(decodeBase64urlMultibase(encodedList));
|
|
132
|
+
if (decompressed.length > MAX_STATUS_LIST_BYTES) {
|
|
133
|
+
throw new Error(`Status list too large: ${decompressed.length} bytes exceeds ${MAX_STATUS_LIST_BYTES}`);
|
|
134
|
+
}
|
|
135
|
+
return decompressed;
|
|
136
|
+
}
|
|
107
137
|
export async function isIndexSet(encodedList, index, decompressor) {
|
|
108
|
-
const
|
|
109
|
-
const decompressed = await decompressor.decompress(compressed);
|
|
138
|
+
const decompressed = await inflateStatusList(encodedList, decompressor);
|
|
110
139
|
const byteIndex = Math.floor(index / 8);
|
|
111
140
|
const bitIndex = index % 8;
|
|
112
|
-
if (byteIndex >= decompressed.length) {
|
|
113
|
-
|
|
141
|
+
if (!Number.isInteger(index) || index < 0 || byteIndex >= decompressed.length) {
|
|
142
|
+
// Fail-CLOSED: an out-of-range/NaN index cannot be proven clear, so it must NOT read as "not
|
|
143
|
+
// set". `!Number.isInteger` is required because `byteIndex >= length` is FALSE for a NaN index
|
|
144
|
+
// (any comparison with NaN is false), which would otherwise slip past and read bits[NaN] =
|
|
145
|
+
// undefined = live (the fail-open getBit already rejects, but this standalone reader did not).
|
|
146
|
+
throw new Error(`Bit index ${index} out of range for the status list`);
|
|
114
147
|
}
|
|
115
|
-
return (decompressed[byteIndex] & (
|
|
148
|
+
return (decompressed[byteIndex] & (0x80 >> bitIndex)) !== 0; // MSB-first (W3C)
|
|
116
149
|
}
|
|
117
150
|
//# sourceMappingURL=bitstring.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitstring.js","sourceRoot":"","sources":["../../src/delegation/bitstring.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"bitstring.js","sourceRoot":"","sources":["../../src/delegation/bitstring.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { DIDDocument } from './vc-verifier.js';
|
|
2
|
+
export interface VerifyDidLinkageOptions {
|
|
3
|
+
primaryDid: string;
|
|
4
|
+
secondaryDid: string;
|
|
5
|
+
primaryDidDocument: DIDDocument | null | undefined;
|
|
6
|
+
secondaryDidDocument: DIDDocument | null | undefined;
|
|
7
|
+
requireBidirectional?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface DidLinkageVerificationResult {
|
|
10
|
+
valid: boolean;
|
|
11
|
+
reason?: string;
|
|
12
|
+
checks: {
|
|
13
|
+
primaryReferencesSecondary: boolean;
|
|
14
|
+
secondaryReferencesPrimary: boolean;
|
|
15
|
+
primaryDocumentMatches: boolean;
|
|
16
|
+
secondaryDocumentMatches: boolean;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export declare function verifyDidLinkage(options: VerifyDidLinkageOptions): DidLinkageVerificationResult;
|
|
20
|
+
export declare function hasAlsoKnownAs(document: DIDDocument, did: string): boolean;
|
|
21
|
+
export declare function normalizeDid(did: string): string;
|
|
22
|
+
export declare function isDidDocument(value: unknown): value is DIDDocument;
|
|
23
|
+
//# sourceMappingURL=did-linkage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"did-linkage.d.ts","sourceRoot":"","sources":["../../src/delegation/did-linkage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;IACnD,oBAAoB,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;IACrD,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE;QACN,0BAA0B,EAAE,OAAO,CAAC;QACpC,0BAA0B,EAAE,OAAO,CAAC;QACpC,sBAAsB,EAAE,OAAO,CAAC;QAChC,wBAAwB,EAAE,OAAO,CAAC;KACnC,CAAC;CACH;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,uBAAuB,GAC/B,4BAA4B,CA0C9B;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAE1E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAYlE"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { isRecord } from '../utils/index.js';
|
|
2
|
+
export function verifyDidLinkage(options) {
|
|
3
|
+
const requireBidirectional = options.requireBidirectional ?? true;
|
|
4
|
+
const primaryDid = normalizeDid(options.primaryDid);
|
|
5
|
+
const secondaryDid = normalizeDid(options.secondaryDid);
|
|
6
|
+
const primaryDoc = options.primaryDidDocument;
|
|
7
|
+
const secondaryDoc = options.secondaryDidDocument;
|
|
8
|
+
const checks = {
|
|
9
|
+
primaryReferencesSecondary: false,
|
|
10
|
+
secondaryReferencesPrimary: false,
|
|
11
|
+
primaryDocumentMatches: false,
|
|
12
|
+
secondaryDocumentMatches: false,
|
|
13
|
+
};
|
|
14
|
+
if (!isDidDocument(primaryDoc)) {
|
|
15
|
+
return { valid: false, reason: 'Primary DID Document is missing or malformed', checks };
|
|
16
|
+
}
|
|
17
|
+
if (!isDidDocument(secondaryDoc)) {
|
|
18
|
+
return { valid: false, reason: 'Secondary DID Document is missing or malformed', checks };
|
|
19
|
+
}
|
|
20
|
+
checks.primaryDocumentMatches = normalizeDid(primaryDoc.id) === primaryDid;
|
|
21
|
+
checks.secondaryDocumentMatches = normalizeDid(secondaryDoc.id) === secondaryDid;
|
|
22
|
+
if (!checks.primaryDocumentMatches || !checks.secondaryDocumentMatches) {
|
|
23
|
+
return { valid: false, reason: 'DID Document id does not match expected DID', checks };
|
|
24
|
+
}
|
|
25
|
+
checks.primaryReferencesSecondary = hasAlsoKnownAs(primaryDoc, secondaryDid);
|
|
26
|
+
checks.secondaryReferencesPrimary = hasAlsoKnownAs(secondaryDoc, primaryDid);
|
|
27
|
+
if (requireBidirectional) {
|
|
28
|
+
if (!checks.primaryReferencesSecondary || !checks.secondaryReferencesPrimary) {
|
|
29
|
+
return { valid: false, reason: 'Bidirectional alsoKnownAs linkage is not present', checks };
|
|
30
|
+
}
|
|
31
|
+
return { valid: true, checks };
|
|
32
|
+
}
|
|
33
|
+
if (!checks.primaryReferencesSecondary && !checks.secondaryReferencesPrimary) {
|
|
34
|
+
return { valid: false, reason: 'No alsoKnownAs linkage is present', checks };
|
|
35
|
+
}
|
|
36
|
+
return { valid: true, checks };
|
|
37
|
+
}
|
|
38
|
+
export function hasAlsoKnownAs(document, did) {
|
|
39
|
+
return (document.alsoKnownAs ?? []).some((entry) => normalizeDid(entry) === did);
|
|
40
|
+
}
|
|
41
|
+
export function normalizeDid(did) {
|
|
42
|
+
return did.trim();
|
|
43
|
+
}
|
|
44
|
+
export function isDidDocument(value) {
|
|
45
|
+
if (!isRecord(value)) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
if (typeof value['id'] !== 'string' || value['id'].trim().length === 0) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
if (value['alsoKnownAs'] !== undefined) {
|
|
52
|
+
return Array.isArray(value['alsoKnownAs']) &&
|
|
53
|
+
value['alsoKnownAs'].every((entry) => typeof entry === 'string');
|
|
54
|
+
}
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=did-linkage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"did-linkage.js","sourceRoot":"","sources":["../../src/delegation/did-linkage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { FetchProvider } from '../providers/base.js';
|
|
2
|
+
import type { DIDResolver } from './vc-verifier.js';
|
|
3
|
+
export type DIDResolverFactory = (fetchProvider: FetchProvider) => DIDResolver;
|
|
4
|
+
export type DIDResolverRegistryEntry = DIDResolver | DIDResolverFactory;
|
|
5
|
+
export type DIDResolverRegistry = Record<string, DIDResolverRegistryEntry>;
|
|
6
|
+
export declare function buildDidResolverRegistry(entries: DIDResolverRegistry | undefined, fetchProvider: FetchProvider | undefined): Record<string, DIDResolver>;
|
|
7
|
+
//# sourceMappingURL=did-resolver-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"did-resolver-registry.d.ts","sourceRoot":"","sources":["../../src/delegation/did-resolver-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,MAAM,kBAAkB,GAAG,CAAC,aAAa,EAAE,aAAa,KAAK,WAAW,CAAC;AAC/E,MAAM,MAAM,wBAAwB,GAAG,WAAW,GAAG,kBAAkB,CAAC;AACxE,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;AAE3E,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,mBAAmB,GAAG,SAAS,EACxC,aAAa,EAAE,aAAa,GAAG,SAAS,GACvC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAoB7B"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export function buildDidResolverRegistry(entries, fetchProvider) {
|
|
2
|
+
const resolvers = {};
|
|
3
|
+
if (!entries) {
|
|
4
|
+
return resolvers;
|
|
5
|
+
}
|
|
6
|
+
for (const [method, entry] of Object.entries(entries)) {
|
|
7
|
+
if (!/^[a-z0-9]+$/.test(method)) {
|
|
8
|
+
continue;
|
|
9
|
+
}
|
|
10
|
+
if (typeof entry === 'function') {
|
|
11
|
+
if (fetchProvider) {
|
|
12
|
+
resolvers[method] = entry(fetchProvider);
|
|
13
|
+
}
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
resolvers[method] = entry;
|
|
17
|
+
}
|
|
18
|
+
return resolvers;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=did-resolver-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"did-resolver-registry.js","sourceRoot":"","sources":["../../src/delegation/did-resolver-registry.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,wBAAwB,CACtC,OAAwC,EACxC,aAAwC;IAExC,MAAM,SAAS,GAAgC,EAAE,CAAC;IAClD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,SAAS;QACX,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;YAChC,IAAI,aAAa,EAAE,CAAC;gBAClB,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;YAC3C,CAAC;YACD,SAAS;QACX,CAAC;QACD,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -89,33 +89,44 @@ export interface BuildDidWebDocumentOptions {
|
|
|
89
89
|
* service contexts the controller publishes alongside its keys.
|
|
90
90
|
*/
|
|
91
91
|
additionalContexts?: readonly string[];
|
|
92
|
+
/**
|
|
93
|
+
* Related DIDs intentionally associated with this `did:web` subject.
|
|
94
|
+
* For `did:cheqd` linkage, publish the cheqd DID here and verify the
|
|
95
|
+
* reciprocal reference on the cheqd DID Document.
|
|
96
|
+
*/
|
|
97
|
+
alsoKnownAs?: readonly string[];
|
|
92
98
|
}
|
|
93
99
|
/**
|
|
94
100
|
* Build the DID Document a did:web controller serves at its
|
|
95
101
|
* resolution URL (see {@link didWebToUrl}).
|
|
96
102
|
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
*
|
|
103
|
+
* Accepts one identity, or an array of them — one per key the subject
|
|
104
|
+
* controls (e.g. a key per device). Each becomes an Ed25519 verification
|
|
105
|
+
* method derived from its `publicKey` (base64-encoded raw bytes — the
|
|
106
|
+
* {@link Identity} convention), emitting both `publicKeyJwk` and
|
|
107
|
+
* `publicKeyMultibase` for cross-format interop. All keys share the one
|
|
108
|
+
* controller DID and each carries its own `kid` fragment, so a verifier can
|
|
109
|
+
* select the signing key by `kid` — the basis for multi-device identity: a
|
|
110
|
+
* new device adds a method, a lost one is dropped, and every other key is
|
|
111
|
+
* untouched.
|
|
102
112
|
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
113
|
+
* Every method is published in both `authentication` and `assertionMethod`,
|
|
114
|
+
* matching the {@link createDidKeyResolver} output and the most common
|
|
115
|
+
* verifier expectations.
|
|
106
116
|
*
|
|
107
|
-
* The function is purely synchronous and performs no I/O. Hosts
|
|
108
|
-
*
|
|
109
|
-
*
|
|
117
|
+
* The function is purely synchronous and performs no I/O. Hosts publish the
|
|
118
|
+
* returned object verbatim (e.g. as the body of a `/.well-known/did.json`
|
|
119
|
+
* route).
|
|
110
120
|
*
|
|
111
|
-
* @param identity - Subject identity
|
|
112
|
-
* `kid` must reference
|
|
121
|
+
* @param identity - Subject identity, or an array of identities that all
|
|
122
|
+
* share one `did:web:` DID. Each `kid` must reference that DID
|
|
123
|
+
* (`<did>#<fragment>`) and be unique across the set.
|
|
113
124
|
* @param options - Optional context extensions.
|
|
114
125
|
* @returns DID Document satisfying the W3C DID Core data model.
|
|
115
|
-
* @throws Error when
|
|
116
|
-
* `
|
|
117
|
-
* `
|
|
118
|
-
* expected length.
|
|
126
|
+
* @throws Error when the set is empty, when the DID is not a `did:web:` DID,
|
|
127
|
+
* when identities disagree on the DID, when a `kid` does not reference the
|
|
128
|
+
* DID or collides with another, or when a `publicKey` is not a valid base64
|
|
129
|
+
* string of the expected length.
|
|
119
130
|
*
|
|
120
131
|
* @example
|
|
121
132
|
* ```typescript
|
|
@@ -128,6 +139,6 @@ export interface BuildDidWebDocumentOptions {
|
|
|
128
139
|
* // Serve `document` at https://example.com/agents/bot1/did.json
|
|
129
140
|
* ```
|
|
130
141
|
*/
|
|
131
|
-
export declare function buildDidWebDocument(identity: Identity, options?: BuildDidWebDocumentOptions): DIDDocument;
|
|
142
|
+
export declare function buildDidWebDocument(identity: Identity | Identity[], options?: BuildDidWebDocumentOptions): DIDDocument;
|
|
132
143
|
export {};
|
|
133
144
|
//# sourceMappingURL=did-web-resolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"did-web-resolver.d.ts","sourceRoot":"","sources":["../../src/delegation/did-web-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAsB,MAAM,kBAAkB,CAAC;AAMrF;;GAEG;AACH,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AA0DD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE7C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CA0B5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAsBtD;AAED;;GAEG;AACH,qBAAa,cAAe,YAAW,WAAW;IAChD,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,KAAK,CAA4D;IACzE,OAAO,CAAC,QAAQ,CAAS;gBAEb,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;IAMzE;;;;;OAKG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAgEvD;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAGnC;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,aAAa,EAC5B,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9B,WAAW,CAEb;AAeD;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"did-web-resolver.d.ts","sourceRoot":"","sources":["../../src/delegation/did-web-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAsB,MAAM,kBAAkB,CAAC;AAMrF;;GAEG;AACH,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AA0DD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE7C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CA0B5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAsBtD;AAED;;GAEG;AACH,qBAAa,cAAe,YAAW,WAAW;IAChD,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,KAAK,CAA4D;IACzE,OAAO,CAAC,QAAQ,CAAS;gBAEb,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;IAMzE;;;;;OAKG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAgEvD;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAGnC;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,aAAa,EAC5B,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9B,WAAW,CAEb;AAeD;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC;;;;OAIG;IACH,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,EAAE,EAC/B,OAAO,CAAC,EAAE,0BAA0B,GACnC,WAAW,CAwCb"}
|
|
@@ -233,28 +233,33 @@ const DEFAULT_DID_WEB_CONTEXTS = [
|
|
|
233
233
|
* Build the DID Document a did:web controller serves at its
|
|
234
234
|
* resolution URL (see {@link didWebToUrl}).
|
|
235
235
|
*
|
|
236
|
-
*
|
|
237
|
-
*
|
|
238
|
-
*
|
|
239
|
-
*
|
|
240
|
-
*
|
|
236
|
+
* Accepts one identity, or an array of them — one per key the subject
|
|
237
|
+
* controls (e.g. a key per device). Each becomes an Ed25519 verification
|
|
238
|
+
* method derived from its `publicKey` (base64-encoded raw bytes — the
|
|
239
|
+
* {@link Identity} convention), emitting both `publicKeyJwk` and
|
|
240
|
+
* `publicKeyMultibase` for cross-format interop. All keys share the one
|
|
241
|
+
* controller DID and each carries its own `kid` fragment, so a verifier can
|
|
242
|
+
* select the signing key by `kid` — the basis for multi-device identity: a
|
|
243
|
+
* new device adds a method, a lost one is dropped, and every other key is
|
|
244
|
+
* untouched.
|
|
241
245
|
*
|
|
242
|
-
*
|
|
243
|
-
*
|
|
244
|
-
*
|
|
246
|
+
* Every method is published in both `authentication` and `assertionMethod`,
|
|
247
|
+
* matching the {@link createDidKeyResolver} output and the most common
|
|
248
|
+
* verifier expectations.
|
|
245
249
|
*
|
|
246
|
-
* The function is purely synchronous and performs no I/O. Hosts
|
|
247
|
-
*
|
|
248
|
-
*
|
|
250
|
+
* The function is purely synchronous and performs no I/O. Hosts publish the
|
|
251
|
+
* returned object verbatim (e.g. as the body of a `/.well-known/did.json`
|
|
252
|
+
* route).
|
|
249
253
|
*
|
|
250
|
-
* @param identity - Subject identity
|
|
251
|
-
* `kid` must reference
|
|
254
|
+
* @param identity - Subject identity, or an array of identities that all
|
|
255
|
+
* share one `did:web:` DID. Each `kid` must reference that DID
|
|
256
|
+
* (`<did>#<fragment>`) and be unique across the set.
|
|
252
257
|
* @param options - Optional context extensions.
|
|
253
258
|
* @returns DID Document satisfying the W3C DID Core data model.
|
|
254
|
-
* @throws Error when
|
|
255
|
-
* `
|
|
256
|
-
* `
|
|
257
|
-
* expected length.
|
|
259
|
+
* @throws Error when the set is empty, when the DID is not a `did:web:` DID,
|
|
260
|
+
* when identities disagree on the DID, when a `kid` does not reference the
|
|
261
|
+
* DID or collides with another, or when a `publicKey` is not a valid base64
|
|
262
|
+
* string of the expected length.
|
|
258
263
|
*
|
|
259
264
|
* @example
|
|
260
265
|
* ```typescript
|
|
@@ -268,31 +273,56 @@ const DEFAULT_DID_WEB_CONTEXTS = [
|
|
|
268
273
|
* ```
|
|
269
274
|
*/
|
|
270
275
|
export function buildDidWebDocument(identity, options) {
|
|
271
|
-
|
|
272
|
-
|
|
276
|
+
const identities = Array.isArray(identity) ? identity : [identity];
|
|
277
|
+
const first = identities[0];
|
|
278
|
+
if (!first) {
|
|
279
|
+
throw new Error('buildDidWebDocument: at least one identity is required');
|
|
273
280
|
}
|
|
274
|
-
|
|
275
|
-
|
|
281
|
+
const did = first.did;
|
|
282
|
+
if (!isDidWeb(did)) {
|
|
283
|
+
throw new Error(`buildDidWebDocument: identity.did must be a did:web DID (got "${did}")`);
|
|
284
|
+
}
|
|
285
|
+
const verificationMethod = identities.map((id) => toVerificationMethod(id, did));
|
|
286
|
+
// Every device key needs a distinct fragment; duplicate kids would produce
|
|
287
|
+
// two verification methods with the same id — an ambiguous, malformed doc.
|
|
288
|
+
const kids = verificationMethod.map((vm) => vm.id);
|
|
289
|
+
if (new Set(kids).size !== kids.length) {
|
|
290
|
+
throw new Error('buildDidWebDocument: every key needs a unique verification-method id (kid); got a duplicate');
|
|
276
291
|
}
|
|
277
|
-
const publicKeyBytes = decodePublicKey(identity.publicKey);
|
|
278
|
-
const publicKeyJwk = publicKeyToJwk(publicKeyBytes);
|
|
279
|
-
const publicKeyMultibase = encodeEd25519Multibase(publicKeyBytes);
|
|
280
|
-
const verificationMethod = {
|
|
281
|
-
id: identity.kid,
|
|
282
|
-
type: 'Ed25519VerificationKey2020',
|
|
283
|
-
controller: identity.did,
|
|
284
|
-
publicKeyJwk,
|
|
285
|
-
publicKeyMultibase,
|
|
286
|
-
};
|
|
287
292
|
const contexts = options?.additionalContexts?.length
|
|
288
293
|
? [...DEFAULT_DID_WEB_CONTEXTS, ...options.additionalContexts]
|
|
289
294
|
: [...DEFAULT_DID_WEB_CONTEXTS];
|
|
290
295
|
return {
|
|
291
296
|
'@context': contexts,
|
|
292
|
-
id:
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
297
|
+
id: did,
|
|
298
|
+
...(options?.alsoKnownAs?.length ? { alsoKnownAs: [...options.alsoKnownAs] } : {}),
|
|
299
|
+
verificationMethod,
|
|
300
|
+
authentication: kids,
|
|
301
|
+
assertionMethod: kids,
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Build one Ed25519 verification method from a single device key, emitting
|
|
306
|
+
* both `publicKeyJwk` and `publicKeyMultibase` for cross-format interop.
|
|
307
|
+
*
|
|
308
|
+
* Enforces the two invariants a multi-key document depends on: the key must
|
|
309
|
+
* belong to `expectedDid` (a document must never mix keys from different DIDs),
|
|
310
|
+
* and its `kid` must be a fragment of that one controller DID.
|
|
311
|
+
*/
|
|
312
|
+
function toVerificationMethod(identity, expectedDid) {
|
|
313
|
+
if (identity.did !== expectedDid) {
|
|
314
|
+
throw new Error(`buildDidWebDocument: all identities must share one DID; got "${identity.did}" alongside "${expectedDid}"`);
|
|
315
|
+
}
|
|
316
|
+
if (!identity.kid.startsWith(`${expectedDid}#`)) {
|
|
317
|
+
throw new Error(`buildDidWebDocument: identity.kid "${identity.kid}" does not reference identity.did "${expectedDid}"`);
|
|
318
|
+
}
|
|
319
|
+
const publicKeyBytes = decodePublicKey(identity.publicKey);
|
|
320
|
+
return {
|
|
321
|
+
id: identity.kid,
|
|
322
|
+
type: 'Ed25519VerificationKey2020',
|
|
323
|
+
controller: expectedDid,
|
|
324
|
+
publicKeyJwk: publicKeyToJwk(publicKeyBytes),
|
|
325
|
+
publicKeyMultibase: encodeEd25519Multibase(publicKeyBytes),
|
|
296
326
|
};
|
|
297
327
|
}
|
|
298
328
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"did-web-resolver.js","sourceRoot":"","sources":["../../src/delegation/did-web-resolver.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"did-web-resolver.js","sourceRoot":"","sources":["../../src/delegation/did-web-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export * from './vc-issuer.js';
|
|
8
8
|
export * from './vc-verifier.js';
|
|
9
|
+
export * from './vc-jwt-verify.js';
|
|
9
10
|
export * from './bitstring.js';
|
|
10
11
|
export * from './statuslist-manager.js';
|
|
11
12
|
export * from './delegation-graph.js';
|
|
@@ -17,8 +18,10 @@ export * from './audience-validator.js';
|
|
|
17
18
|
export * from './scope-matcher.js';
|
|
18
19
|
export * from './holder-binding.js';
|
|
19
20
|
export * from './chain-enforcement.js';
|
|
21
|
+
export * from './did-resolver-registry.js';
|
|
20
22
|
export { createDidKeyResolver, resolveDidKeySync, isEd25519DidKey, extractPublicKeyFromDidKey, publicKeyToJwk, } from './did-key-resolver.js';
|
|
21
23
|
export { DidWebResolver, createDidWebResolver, isDidWeb, parseDidWeb, didWebToUrl, buildDidWebDocument, } from './did-web-resolver.js';
|
|
24
|
+
export { verifyDidLinkage, type DidLinkageVerificationResult, type VerifyDidLinkageOptions, } from './did-linkage.js';
|
|
22
25
|
export { MemoryStatusListStorage } from './storage/memory-statuslist-storage.js';
|
|
23
26
|
export { MemoryDelegationGraphStorage } from './storage/memory-graph-storage.js';
|
|
24
27
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/delegation/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,0BAA0B,EAC1B,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,QAAQ,EACR,WAAW,EACX,WAAW,EACX,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/delegation/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,0BAA0B,EAC1B,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,QAAQ,EACR,WAAW,EACX,WAAW,EACX,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,gBAAgB,EAChB,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,GAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC"}
|