@kya-os/mcp 1.12.0 → 1.14.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 +79 -0
- package/CONFORMANCE.md +6 -0
- package/SPEC.md +1 -1
- package/dist/card/delegation.d.ts +4 -4
- package/dist/card/delegation.d.ts.map +1 -1
- package/dist/card/delegation.js +2 -2
- package/dist/card/delegation.js.map +1 -1
- package/dist/card/revocation.d.ts +9 -3
- package/dist/card/revocation.d.ts.map +1 -1
- package/dist/card/revocation.js +6 -53
- package/dist/card/revocation.js.map +1 -1
- package/dist/card/verify.d.ts +2 -2
- package/dist/card/verify.d.ts.map +1 -1
- package/dist/card/verify.js.map +1 -1
- package/dist/delegation/bitstring.d.ts +6 -0
- package/dist/delegation/bitstring.d.ts.map +1 -1
- package/dist/delegation/bitstring.js +8 -48
- package/dist/delegation/bitstring.js.map +1 -1
- package/dist/delegation/did-key-resolver.d.ts +4 -0
- package/dist/delegation/did-key-resolver.d.ts.map +1 -1
- package/dist/delegation/did-key-resolver.js +2 -2
- package/dist/delegation/did-key-resolver.js.map +1 -1
- package/dist/delegation/index.d.ts +2 -0
- package/dist/delegation/index.d.ts.map +1 -1
- package/dist/delegation/index.js +2 -0
- package/dist/delegation/index.js.map +1 -1
- package/dist/delegation/status-cache.d.ts +9 -0
- package/dist/delegation/status-cache.d.ts.map +1 -0
- package/dist/delegation/status-cache.js +20 -0
- package/dist/delegation/status-cache.js.map +1 -0
- package/dist/delegation/statuslist-manager.d.ts.map +1 -1
- package/dist/delegation/statuslist-manager.js +4 -11
- package/dist/delegation/statuslist-manager.js.map +1 -1
- package/dist/delegation/vc-jwt-verify.d.ts.map +1 -1
- package/dist/delegation/vc-jwt-verify.js +5 -3
- package/dist/delegation/vc-jwt-verify.js.map +1 -1
- package/dist/delegation/vc-verification-checks.d.ts.map +1 -1
- package/dist/delegation/vc-verification-checks.js +3 -2
- package/dist/delegation/vc-verification-checks.js.map +1 -1
- package/dist/delegation/vc-verifier.d.ts +31 -15
- package/dist/delegation/vc-verifier.d.ts.map +1 -1
- package/dist/delegation/vc-verifier.js +71 -78
- package/dist/delegation/vc-verifier.js.map +1 -1
- package/dist/delegation/vc-verifier.types.d.ts +18 -0
- package/dist/delegation/vc-verifier.types.d.ts.map +1 -1
- package/dist/delegation/verification-method-key.d.ts +15 -0
- package/dist/delegation/verification-method-key.d.ts.map +1 -0
- package/dist/delegation/verification-method-key.js +56 -0
- package/dist/delegation/verification-method-key.js.map +1 -0
- package/dist/integrations/cheqd/dlr.d.ts +9 -1
- package/dist/integrations/cheqd/dlr.d.ts.map +1 -1
- package/dist/integrations/cheqd/dlr.js +25 -0
- package/dist/integrations/cheqd/dlr.js.map +1 -1
- package/dist/integrations/cheqd/index.d.ts +1 -0
- package/dist/integrations/cheqd/index.d.ts.map +1 -1
- package/dist/integrations/cheqd/index.js +1 -0
- package/dist/integrations/cheqd/index.js.map +1 -1
- package/dist/integrations/cheqd/statuslist-resolver.d.ts +74 -0
- package/dist/integrations/cheqd/statuslist-resolver.d.ts.map +1 -0
- package/dist/integrations/cheqd/statuslist-resolver.js +138 -0
- package/dist/integrations/cheqd/statuslist-resolver.js.map +1 -0
- package/dist/middleware/with-kya-os.config-types.d.ts +13 -0
- package/dist/middleware/with-kya-os.config-types.d.ts.map +1 -1
- package/dist/middleware/with-kya-os.delegation-verify.d.ts.map +1 -1
- package/dist/middleware/with-kya-os.delegation-verify.js +2 -0
- package/dist/middleware/with-kya-os.delegation-verify.js.map +1 -1
- package/dist/utils/statuslist-bits.d.ts +51 -0
- package/dist/utils/statuslist-bits.d.ts.map +1 -0
- package/dist/utils/statuslist-bits.js +106 -0
- package/dist/utils/statuslist-bits.js.map +1 -0
- package/dist/utils/ttl-cache.d.ts +26 -0
- package/dist/utils/ttl-cache.d.ts.map +1 -0
- package/dist/utils/ttl-cache.js +68 -0
- package/dist/utils/ttl-cache.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"did-key-resolver.js","sourceRoot":"","sources":["../../src/delegation/did-key-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,4CAA4C;AAC5C,MAAM,yBAAyB,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"did-key-resolver.js","sourceRoot":"","sources":["../../src/delegation/did-key-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export * from './vc-issuer.js';
|
|
8
8
|
export * from './vc-verifier.js';
|
|
9
|
+
export * from './status-cache.js';
|
|
10
|
+
export * from './verification-method-key.js';
|
|
9
11
|
export * from './vc-jwt-verify.js';
|
|
10
12
|
export * from './bitstring.js';
|
|
11
13
|
export * from './statuslist-manager.js';
|
|
@@ -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,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"}
|
|
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,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,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"}
|
package/dist/delegation/index.js
CHANGED
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export * from './vc-issuer.js';
|
|
8
8
|
export * from './vc-verifier.js';
|
|
9
|
+
export * from './status-cache.js';
|
|
10
|
+
export * from './verification-method-key.js';
|
|
9
11
|
export * from './vc-jwt-verify.js';
|
|
10
12
|
export * from './bitstring.js';
|
|
11
13
|
export * from './statuslist-manager.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","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,GAGjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/delegation/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,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,GAGjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { StatusListResolver } from './vc-verifier.types.js';
|
|
2
|
+
export interface StatusCacheOptions {
|
|
3
|
+
/** Upper bound on served staleness, in ms — your declared revocation SLA. `<= 0` disables caching. */
|
|
4
|
+
maxStalenessMs: number;
|
|
5
|
+
/** Maximum cached entries (FIFO eviction). Default 1000. */
|
|
6
|
+
maxEntries?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function withStatusCache(resolver: StatusListResolver, options: StatusCacheOptions): StatusListResolver;
|
|
9
|
+
//# sourceMappingURL=status-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-cache.d.ts","sourceRoot":"","sources":["../../src/delegation/status-cache.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGjE,MAAM,WAAW,kBAAkB;IACjC,sGAAsG;IACtG,cAAc,EAAE,MAAM,CAAC;IACvB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,kBAAkB,GAC1B,kBAAkB,CAiBpB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { TtlCache } from '../utils/ttl-cache.js';
|
|
2
|
+
export function withStatusCache(resolver, options) {
|
|
3
|
+
const cache = new TtlCache({
|
|
4
|
+
ttlMs: options.maxStalenessMs,
|
|
5
|
+
maxEntries: options.maxEntries ?? 1000,
|
|
6
|
+
});
|
|
7
|
+
return {
|
|
8
|
+
async checkStatus(status) {
|
|
9
|
+
const key = `${status.statusListCredential}\0${status.statusListIndex}\0${status.statusPurpose}`;
|
|
10
|
+
const hit = cache.get(key);
|
|
11
|
+
if (hit !== undefined)
|
|
12
|
+
return hit;
|
|
13
|
+
// A throw propagates uncached — fail-closed deny now, retry next call.
|
|
14
|
+
const revoked = await resolver.checkStatus(status);
|
|
15
|
+
cache.set(key, revoked);
|
|
16
|
+
return revoked;
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=status-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-cache.js","sourceRoot":"","sources":["../../src/delegation/status-cache.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AASjD,MAAM,UAAU,eAAe,CAC7B,QAA4B,EAC5B,OAA2B;IAE3B,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAU;QAClC,KAAK,EAAE,OAAO,CAAC,cAAc;QAC7B,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;KACvC,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,CAAC,WAAW,CAAC,MAAwB;YACxC,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,oBAAoB,KAAK,MAAM,CAAC,eAAe,KAAK,MAAM,CAAC,aAAa,EAAE,CAAC;YACjG,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,GAAG,KAAK,SAAS;gBAAE,OAAO,GAAG,CAAC;YAClC,uEAAuE;YACvE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACnD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACxB,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statuslist-manager.d.ts","sourceRoot":"","sources":["../../src/delegation/statuslist-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,wBAAwB,EACxB,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAoB,KAAK,mBAAmB,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"statuslist-manager.d.ts","sourceRoot":"","sources":["../../src/delegation/statuslist-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,wBAAwB,EACxB,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAoB,KAAK,mBAAmB,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAExG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAIxD,MAAM,WAAW,yBAAyB;IACxC,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAAC;IAC9E,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzF,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACtD;AAED,iFAAiF;AACjF,MAAM,WAAW,mCAAoC,SAAQ,yBAAyB;IACpF,oBAAoB,CAClB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAAC;IAC5C,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAClE;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,IAAI,MAAM,CAAC;IACjB,QAAQ,IAAI,MAAM,CAAC;CACpB;AAED,qBAAa,qBAAqB;IAO9B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,YAAY;IAVtB,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,eAAe,CAAS;IAChC,yFAAyF;IACzF,OAAO,CAAC,WAAW,CAAoC;gBAG7C,OAAO,EAAE,yBAAyB,EAClC,QAAQ,EAAE,0BAA0B,EACpC,eAAe,EAAE,iBAAiB,EAClC,UAAU,EAAE,mBAAmB,EAC/B,YAAY,EAAE,qBAAqB,EAC3C,OAAO,CAAC,EAAE;QACR,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B;IAMG,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAkBpF,YAAY,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YAezE,cAAc;IA6CtB,WAAW,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BjE,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAelD,sBAAsB;IAgDpC,oBAAoB,IAAI,MAAM;IAI9B,kBAAkB,IAAI,MAAM;CAG7B;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,yBAAyB,EAClC,QAAQ,EAAE,0BAA0B,EACpC,eAAe,EAAE,iBAAiB,EAClC,UAAU,EAAE,mBAAmB,EAC/B,YAAY,EAAE,qBAAqB,EACnC,OAAO,CAAC,EAAE;IACR,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GACA,qBAAqB,CASvB"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* Related Spec: W3C StatusList2021
|
|
7
7
|
*/
|
|
8
8
|
import { BitstringManager } from './bitstring.js';
|
|
9
|
+
import { parseStatusListIndex } from '../utils/statuslist-bits.js';
|
|
9
10
|
import { canonicalizeJSON } from './utils.js';
|
|
10
11
|
import { assertStatusPurpose } from '../utils/statuslist-purpose.js';
|
|
11
12
|
export class StatusList2021Manager {
|
|
@@ -89,17 +90,9 @@ export class StatusList2021Manager {
|
|
|
89
90
|
// wrong list — a fail-OPEN revocation bypass.
|
|
90
91
|
assertStatusPurpose(statusList.credentialSubject.statusPurpose, credentialStatus.statusPurpose);
|
|
91
92
|
const manager = await BitstringManager.decode(statusList.credentialSubject.encodedList, this.compressor, this.decompressor);
|
|
92
|
-
// Strict decimal, fail-closed
|
|
93
|
-
//
|
|
94
|
-
|
|
95
|
-
throw new Error(`Invalid statusListIndex "${statusListIndex}" — must be a canonical non-negative decimal`);
|
|
96
|
-
}
|
|
97
|
-
const index = Number(statusListIndex);
|
|
98
|
-
// A canonical-decimal string can still exceed 2^53-1 and lose precision; reject it explicitly at
|
|
99
|
-
// the parse layer (matches revocation.ts parseIndex) rather than leaning only on getBit's bounds.
|
|
100
|
-
if (!Number.isSafeInteger(index)) {
|
|
101
|
-
throw new Error(`statusListIndex "${statusListIndex}" exceeds the safe integer range`);
|
|
102
|
-
}
|
|
93
|
+
// Strict canonical-decimal parse, fail-closed (shared primitive — a lenient parse would read a
|
|
94
|
+
// DIFFERENT, often clear, bit than the credential names: a revocation bypass).
|
|
95
|
+
const index = parseStatusListIndex(statusListIndex);
|
|
103
96
|
return manager.getBit(index);
|
|
104
97
|
}
|
|
105
98
|
async getRevokedIndices(statusListId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statuslist-manager.js","sourceRoot":"","sources":["../../src/delegation/statuslist-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,EAAE,gBAAgB,EAAwD,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"statuslist-manager.js","sourceRoot":"","sources":["../../src/delegation/statuslist-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vc-jwt-verify.d.ts","sourceRoot":"","sources":["../../src/delegation/vc-jwt-verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EACV,WAAW,EAEX,8BAA8B,EAC/B,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"vc-jwt-verify.d.ts","sourceRoot":"","sources":["../../src/delegation/vc-jwt-verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EACV,WAAW,EAEX,8BAA8B,EAC/B,MAAM,wBAAwB,CAAC;AAShC;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,oBAAoB,GAC/B,MAAM,GAAG,SAAS,CAOpB;AAmBD,mFAAmF;AACnF,MAAM,MAAM,aAAa,GACrB;IACE,EAAE,EAAE,oBAAoB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB,GACD;IAAE,OAAO,EAAE,8BAA8B,CAAA;CAAE,CAAC;AAEhD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAChB,aAAa,CAmCf;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AASD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,WAAW,EAAE,WAAW,GAAG,SAAS,GACnC,OAAO,CAAC,oBAAoB,CAAC,CA4C/B"}
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
import { compactVerify, importJWK } from "jose";
|
|
21
21
|
import { parseVCJWT } from "./utils.js";
|
|
22
22
|
import { validateBasicProperties } from "./vc-verification-checks.js";
|
|
23
|
+
import { verificationMethodJwk } from "./verification-method-key.js";
|
|
23
24
|
function errMsg(err) {
|
|
24
25
|
return err instanceof Error ? err.message : String(err);
|
|
25
26
|
}
|
|
@@ -116,11 +117,12 @@ export async function verifyVcJwtSignature(jwt, issuerDid, kid, didResolver) {
|
|
|
116
117
|
? `Verification method ${kid} not found in DID Document`
|
|
117
118
|
: "DID Document has no verification method");
|
|
118
119
|
}
|
|
119
|
-
|
|
120
|
-
|
|
120
|
+
const publicKeyJwk = verificationMethodJwk(vm);
|
|
121
|
+
if (!publicKeyJwk) {
|
|
122
|
+
return done(false, "Verification method has no usable public key (publicKeyJwk / publicKeyMultibase / publicKeyBase58)");
|
|
121
123
|
}
|
|
122
124
|
try {
|
|
123
|
-
const key = await importJWK(
|
|
125
|
+
const key = await importJWK(publicKeyJwk, "EdDSA");
|
|
124
126
|
await compactVerify(jwt, key, { algorithms: ["EdDSA"] });
|
|
125
127
|
return done(true);
|
|
126
128
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vc-jwt-verify.js","sourceRoot":"","sources":["../../src/delegation/vc-jwt-verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAQhD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"vc-jwt-verify.js","sourceRoot":"","sources":["../../src/delegation/vc-jwt-verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vc-verification-checks.d.ts","sourceRoot":"","sources":["../../src/delegation/vc-verification-checks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,KAAK,EACV,WAAW,EAGX,kBAAkB,EAClB,iBAAiB,EACjB,6BAA6B,EAC7B,8BAA8B,EAC/B,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"vc-verification-checks.d.ts","sourceRoot":"","sources":["../../src/delegation/vc-verification-checks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,KAAK,EACV,WAAW,EAGX,kBAAkB,EAClB,iBAAiB,EACjB,6BAA6B,EAC7B,8BAA8B,EAC/B,MAAM,wBAAwB,CAAC;AAUhC;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,oBAAoB,EACxB,OAAO,GAAE;IAAE,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/C;IACD,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAuCA;AAqCD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,eAAe,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EACzE,YAAY,EAAE,iBAAiB,EAC/B,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAChB,8BAA8B,CAqBhC;AAED,gFAAgF;AAChF,wBAAsB,eAAe,CACnC,EAAE,EAAE,oBAAoB,EACxB,WAAW,EAAE,WAAW,GAAG,SAAS,EACpC,iBAAiB,EAAE,6BAA6B,GAAG,SAAS,GAC3D,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA8FnE;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,gBAAgB,EACxB,kBAAkB,EAAE,kBAAkB,GAAG,SAAS,GACjD,OAAO,CAAC,iBAAiB,CAAC,CAqC5B"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* `./vc-verifier.ts`) so the class holds only orchestration + its cache.
|
|
7
7
|
*/
|
|
8
8
|
import { isDelegationCredentialExpired, isDelegationCredentialNotYetValid, isSupportedCredentialProofType, validateDelegationCredential, } from "../types/protocol.js";
|
|
9
|
+
import { verificationMethodJwk } from "./verification-method-key.js";
|
|
9
10
|
/**
|
|
10
11
|
* Properties a DelegationCredential `credentialSubject` may carry. Anything
|
|
11
12
|
* else is treated as a claim-intended field and rejected by default — a
|
|
@@ -160,11 +161,11 @@ export async function verifySignature(vc, didResolver, signatureVerifier) {
|
|
|
160
161
|
durationMs: Date.now() - startTime,
|
|
161
162
|
};
|
|
162
163
|
}
|
|
163
|
-
const publicKeyJwk = verificationMethod
|
|
164
|
+
const publicKeyJwk = verificationMethodJwk(verificationMethod);
|
|
164
165
|
if (!publicKeyJwk) {
|
|
165
166
|
return {
|
|
166
167
|
valid: false,
|
|
167
|
-
reason: "Verification method
|
|
168
|
+
reason: "Verification method has no usable public key (publicKeyJwk / publicKeyMultibase / publicKeyBase58)",
|
|
168
169
|
durationMs: Date.now() - startTime,
|
|
169
170
|
};
|
|
170
171
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vc-verification-checks.js","sourceRoot":"","sources":["../../src/delegation/vc-verification-checks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,EACL,6BAA6B,EAC7B,iCAAiC,EACjC,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"vc-verification-checks.js","sourceRoot":"","sources":["../../src/delegation/vc-verification-checks.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
*
|
|
11
11
|
* The stateless checks live in `./vc-verification-checks.ts`; the shapes in
|
|
12
12
|
* `./vc-verifier.types.ts` (re-exported below). This class owns orchestration
|
|
13
|
-
* and the per-instance result cache
|
|
13
|
+
* and the per-instance SIGNATURE-result cache — revocation status and basic
|
|
14
|
+
* checks (expiry) are evaluated on every call, never served from cache.
|
|
14
15
|
*
|
|
15
16
|
* Related Spec: KYA-OS §4.3, W3C VC Data Model 1.1
|
|
16
17
|
*/
|
|
@@ -21,19 +22,17 @@ export declare class DelegationCredentialVerifier {
|
|
|
21
22
|
private didResolver?;
|
|
22
23
|
private statusListResolver?;
|
|
23
24
|
private signatureVerifier?;
|
|
24
|
-
private cache;
|
|
25
|
-
private cacheInsertionOrder;
|
|
26
|
-
private cacheTtl;
|
|
27
25
|
/**
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
26
|
+
* Signature-result cache (FIFO eviction, TTL-bounded). Holds only REAL
|
|
27
|
+
* signature verifications; size `maxCacheSize` to the expected number of
|
|
28
|
+
* DISTINCT live credentials — the default of 1000 suits most deployments.
|
|
31
29
|
*/
|
|
32
|
-
private
|
|
30
|
+
private cache;
|
|
33
31
|
constructor(options?: {
|
|
34
32
|
didResolver?: DIDResolver;
|
|
35
33
|
statusListResolver?: StatusListResolver;
|
|
36
34
|
signatureVerifier?: SignatureVerificationFunction;
|
|
35
|
+
/** Signature-result TTL in ms. `0` disables signature caching. Default 60_000. */
|
|
37
36
|
cacheTtl?: number;
|
|
38
37
|
/** Maximum cache entries. Default: 1000 */
|
|
39
38
|
maxCacheSize?: number;
|
|
@@ -63,18 +62,32 @@ export declare class DelegationCredentialVerifier {
|
|
|
63
62
|
*/
|
|
64
63
|
verifyDelegationJwt(jwt: string, options?: VerifyDelegationVCOptions): Promise<DelegationVCVerificationResult>;
|
|
65
64
|
/**
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
* `
|
|
65
|
+
* Resolve the signature dimension: an unexpired cached result when
|
|
66
|
+
* available, else `run()` — cached only when valid (failures are never
|
|
67
|
+
* cached). Returned as a promise so callers can race it with the status
|
|
68
|
+
* check; a hit reports `durationMs: 0` (the retrieval, not the original
|
|
69
|
+
* compute).
|
|
70
|
+
*/
|
|
71
|
+
private cachedSignature;
|
|
72
|
+
/**
|
|
73
|
+
* Await the parallel signature + status checks and fold them into the final
|
|
74
|
+
* result via {@link combineVerificationResult}. The combined verdict is
|
|
75
|
+
* NEVER cached — only the signature dimension is (inside
|
|
76
|
+
* {@link cachedSignature}) — so revocation status is consulted on every
|
|
77
|
+
* call. Shared by the Data Integrity and VC-JWT paths; both reach here only
|
|
78
|
+
* after `validateBasicProperties` has passed.
|
|
70
79
|
*/
|
|
71
80
|
private finalizeVerification;
|
|
72
81
|
private cacheKeyForCredential;
|
|
73
82
|
private cacheKeyForJwt;
|
|
83
|
+
/**
|
|
84
|
+
* The cache holds only REAL signature verifications: a `skipSignature` run
|
|
85
|
+
* fabricates `{ valid: true }` at zero cost, so it neither reads nor writes
|
|
86
|
+
* the cache (which is what lets the key drop the old per-profile
|
|
87
|
+
* dimension). Per-call resolver overrides also bypass — conservative,
|
|
88
|
+
* unchanged.
|
|
89
|
+
*/
|
|
74
90
|
private cacheAllowed;
|
|
75
|
-
private verificationProfile;
|
|
76
|
-
private getFromCache;
|
|
77
|
-
private setInCache;
|
|
78
91
|
clearCache(): void;
|
|
79
92
|
clearCacheEntry(id: string): void;
|
|
80
93
|
}
|
|
@@ -82,6 +95,9 @@ export declare function createDelegationVerifier(options?: {
|
|
|
82
95
|
didResolver?: DIDResolver;
|
|
83
96
|
statusListResolver?: StatusListResolver;
|
|
84
97
|
signatureVerifier?: SignatureVerificationFunction;
|
|
98
|
+
/** Signature-result TTL in ms. `0` disables signature caching. Default 60_000. */
|
|
85
99
|
cacheTtl?: number;
|
|
100
|
+
/** Maximum cache entries. Default: 1000 */
|
|
101
|
+
maxCacheSize?: number;
|
|
86
102
|
}): DelegationCredentialVerifier;
|
|
87
103
|
//# sourceMappingURL=vc-verifier.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vc-verifier.d.ts","sourceRoot":"","sources":["../../src/delegation/vc-verifier.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"vc-verifier.d.ts","sourceRoot":"","sources":["../../src/delegation/vc-verifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EACV,8BAA8B,EAC9B,yBAAyB,EACzB,WAAW,EACX,kBAAkB,EAElB,6BAA6B,EAE9B,MAAM,wBAAwB,CAAC;AAiBhC,cAAc,wBAAwB,CAAC;AAEvC,qBAAa,4BAA4B;IACvC,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,kBAAkB,CAAC,CAAqB;IAChD,OAAO,CAAC,iBAAiB,CAAC,CAAgC;IAC1D;;;;OAIG;IACH,OAAO,CAAC,KAAK,CAAwC;gBAEzC,OAAO,CAAC,EAAE;QACpB,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;QACxC,iBAAiB,CAAC,EAAE,6BAA6B,CAAC;QAClD,kFAAkF;QAClF,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,2CAA2C;QAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB;IAWD;;;;;;;;;;OAUG;IACG,0BAA0B,CAC9B,EAAE,EAAE,oBAAoB,EACxB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,8BAA8B,CAAC;IA6D1C;;;;;;;;;;OAUG;IACG,mBAAmB,CACvB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,8BAA8B,CAAC;IA2C1C;;;;;;OAMG;YACW,eAAe;IAiB7B;;;;;;;OAOG;YACW,oBAAoB;IA4BlC,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,cAAc;IAStB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAOpB,UAAU,IAAI,IAAI;IAIlB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;CAOlC;AAED,wBAAgB,wBAAwB,CAAC,OAAO,CAAC,EAAE;IACjD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,iBAAiB,CAAC,EAAE,6BAA6B,CAAC;IAClD,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,4BAA4B,CAE/B"}
|
|
@@ -10,13 +10,15 @@
|
|
|
10
10
|
*
|
|
11
11
|
* The stateless checks live in `./vc-verification-checks.ts`; the shapes in
|
|
12
12
|
* `./vc-verifier.types.ts` (re-exported below). This class owns orchestration
|
|
13
|
-
* and the per-instance result cache
|
|
13
|
+
* and the per-instance SIGNATURE-result cache — revocation status and basic
|
|
14
|
+
* checks (expiry) are evaluated on every call, never served from cache.
|
|
14
15
|
*
|
|
15
16
|
* Related Spec: KYA-OS §4.3, W3C VC Data Model 1.1
|
|
16
17
|
*/
|
|
17
18
|
import { validateBasicProperties, verifySignature, checkCredentialStatus, combineVerificationResult, } from "./vc-verification-checks.js";
|
|
18
19
|
import { verifyVcJwtSignature, prepareVcJwtCredential, } from "./vc-jwt-verify.js";
|
|
19
20
|
import { canonicalizeJson } from "../utils/canonical-json.js";
|
|
21
|
+
import { TtlCache } from "../utils/ttl-cache.js";
|
|
20
22
|
// Re-export the shared type surface so existing imports of DIDResolver /
|
|
21
23
|
// SignatureVerificationFunction / StatusListResolver / … are unchanged.
|
|
22
24
|
export * from "./vc-verifier.types.js";
|
|
@@ -24,21 +26,21 @@ export class DelegationCredentialVerifier {
|
|
|
24
26
|
didResolver;
|
|
25
27
|
statusListResolver;
|
|
26
28
|
signatureVerifier;
|
|
27
|
-
cache = new Map();
|
|
28
|
-
cacheInsertionOrder = [];
|
|
29
|
-
cacheTtl;
|
|
30
29
|
/**
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
30
|
+
* Signature-result cache (FIFO eviction, TTL-bounded). Holds only REAL
|
|
31
|
+
* signature verifications; size `maxCacheSize` to the expected number of
|
|
32
|
+
* DISTINCT live credentials — the default of 1000 suits most deployments.
|
|
34
33
|
*/
|
|
35
|
-
|
|
34
|
+
cache;
|
|
36
35
|
constructor(options) {
|
|
37
36
|
this.didResolver = options?.didResolver;
|
|
38
37
|
this.statusListResolver = options?.statusListResolver;
|
|
39
38
|
this.signatureVerifier = options?.signatureVerifier;
|
|
40
|
-
this.
|
|
41
|
-
|
|
39
|
+
this.cache = new TtlCache({
|
|
40
|
+
// `??`, not `||`: cacheTtl 0 means "no signature caching", not "the default".
|
|
41
|
+
ttlMs: options?.cacheTtl ?? 60_000,
|
|
42
|
+
maxEntries: options?.maxCacheSize ?? 1000,
|
|
43
|
+
});
|
|
42
44
|
}
|
|
43
45
|
/**
|
|
44
46
|
* Verify a delegation credential through progressive enhancement.
|
|
@@ -54,12 +56,8 @@ export class DelegationCredentialVerifier {
|
|
|
54
56
|
async verifyDelegationCredential(vc, options = {}) {
|
|
55
57
|
const startTime = Date.now();
|
|
56
58
|
const cacheKey = this.cacheKeyForCredential('di', vc, options);
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
if (cached) {
|
|
60
|
-
return { ...cached, cached: true };
|
|
61
|
-
}
|
|
62
|
-
}
|
|
59
|
+
// Basic checks run on EVERY call — expiry is time-sensitive, so a warm
|
|
60
|
+
// signature cache must never carry a credential past its window.
|
|
63
61
|
const basicCheckStart = Date.now();
|
|
64
62
|
const basicValidation = validateBasicProperties(vc);
|
|
65
63
|
const basicCheckMs = Date.now() - basicCheckStart;
|
|
@@ -78,19 +76,22 @@ export class DelegationCredentialVerifier {
|
|
|
78
76
|
};
|
|
79
77
|
return result;
|
|
80
78
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
79
|
+
// Both promises are constructed before either is awaited: a signature
|
|
80
|
+
// cache hit resolves instantly ALONGSIDE the live status read; a miss
|
|
81
|
+
// runs signature and status concurrently (unchanged parallelism).
|
|
82
|
+
const signaturePromise = this.cachedSignature(cacheKey, () => options.skipSignature
|
|
83
|
+
? Promise.resolve({
|
|
84
84
|
valid: true,
|
|
85
85
|
durationMs: 0,
|
|
86
|
-
})
|
|
86
|
+
})
|
|
87
|
+
: verifySignature(vc, options.didResolver || this.didResolver, this.signatureVerifier));
|
|
87
88
|
const statusPromise = !options.skipStatus && vc.credentialStatus
|
|
88
89
|
? checkCredentialStatus(vc.credentialStatus, options.statusListResolver || this.statusListResolver)
|
|
89
90
|
: Promise.resolve({
|
|
90
91
|
valid: true,
|
|
91
92
|
durationMs: 0,
|
|
92
93
|
});
|
|
93
|
-
return this.finalizeVerification(signaturePromise, statusPromise, basicCheckMs, startTime
|
|
94
|
+
return this.finalizeVerification(signaturePromise, statusPromise, basicCheckMs, startTime);
|
|
94
95
|
}
|
|
95
96
|
/**
|
|
96
97
|
* Verify a delegation credential presented as a compact VC-JWT — the JWT
|
|
@@ -111,37 +112,56 @@ export class DelegationCredentialVerifier {
|
|
|
111
112
|
}
|
|
112
113
|
const { vc, issuerDid, kid, basicCheckMs } = prepared;
|
|
113
114
|
const cacheKey = this.cacheKeyForJwt(jwt, vc, options);
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
const signaturePromise = !options.skipSignature
|
|
121
|
-
? verifyVcJwtSignature(jwt, issuerDid, kid, options.didResolver || this.didResolver)
|
|
122
|
-
: Promise.resolve({ valid: true, durationMs: 0 });
|
|
115
|
+
// Same construction as the Data Integrity path: both promises exist
|
|
116
|
+
// before either is awaited, so a cached signature races a LIVE status
|
|
117
|
+
// read and a miss keeps full signature/status parallelism.
|
|
118
|
+
const signaturePromise = this.cachedSignature(cacheKey, () => options.skipSignature
|
|
119
|
+
? Promise.resolve({ valid: true, durationMs: 0 })
|
|
120
|
+
: verifyVcJwtSignature(jwt, issuerDid, kid, options.didResolver || this.didResolver));
|
|
123
121
|
const statusPromise = !options.skipStatus && vc.credentialStatus
|
|
124
122
|
? checkCredentialStatus(vc.credentialStatus, options.statusListResolver || this.statusListResolver)
|
|
125
123
|
: Promise.resolve({
|
|
126
124
|
valid: true,
|
|
127
125
|
durationMs: 0,
|
|
128
126
|
});
|
|
129
|
-
return this.finalizeVerification(signaturePromise, statusPromise, basicCheckMs, startTime
|
|
127
|
+
return this.finalizeVerification(signaturePromise, statusPromise, basicCheckMs, startTime);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Resolve the signature dimension: an unexpired cached result when
|
|
131
|
+
* available, else `run()` — cached only when valid (failures are never
|
|
132
|
+
* cached). Returned as a promise so callers can race it with the status
|
|
133
|
+
* check; a hit reports `durationMs: 0` (the retrieval, not the original
|
|
134
|
+
* compute).
|
|
135
|
+
*/
|
|
136
|
+
async cachedSignature(cacheKey, run) {
|
|
137
|
+
if (cacheKey !== null) {
|
|
138
|
+
const hit = this.cache.get(cacheKey);
|
|
139
|
+
if (hit) {
|
|
140
|
+
return { result: { ...hit, durationMs: 0 }, cached: true };
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
const result = await run();
|
|
144
|
+
if (result.valid && cacheKey !== null) {
|
|
145
|
+
this.cache.set(cacheKey, result);
|
|
146
|
+
}
|
|
147
|
+
return { result, cached: false };
|
|
130
148
|
}
|
|
131
149
|
/**
|
|
132
|
-
* Await the parallel signature + status checks
|
|
133
|
-
* result via {@link combineVerificationResult}
|
|
134
|
-
*
|
|
135
|
-
*
|
|
150
|
+
* Await the parallel signature + status checks and fold them into the final
|
|
151
|
+
* result via {@link combineVerificationResult}. The combined verdict is
|
|
152
|
+
* NEVER cached — only the signature dimension is (inside
|
|
153
|
+
* {@link cachedSignature}) — so revocation status is consulted on every
|
|
154
|
+
* call. Shared by the Data Integrity and VC-JWT paths; both reach here only
|
|
155
|
+
* after `validateBasicProperties` has passed.
|
|
136
156
|
*/
|
|
137
|
-
async finalizeVerification(signaturePromise, statusPromise, basicCheckMs, startTime
|
|
138
|
-
const [
|
|
157
|
+
async finalizeVerification(signaturePromise, statusPromise, basicCheckMs, startTime) {
|
|
158
|
+
const [signature, statusResult] = await Promise.all([
|
|
139
159
|
signaturePromise,
|
|
140
160
|
statusPromise,
|
|
141
161
|
]);
|
|
142
|
-
const result = combineVerificationResult(
|
|
143
|
-
if (
|
|
144
|
-
|
|
162
|
+
const result = combineVerificationResult(signature.result, statusResult, basicCheckMs, startTime);
|
|
163
|
+
if (signature.cached) {
|
|
164
|
+
result.cached = true;
|
|
145
165
|
}
|
|
146
166
|
return result;
|
|
147
167
|
}
|
|
@@ -149,7 +169,7 @@ export class DelegationCredentialVerifier {
|
|
|
149
169
|
if (!this.cacheAllowed(options))
|
|
150
170
|
return null;
|
|
151
171
|
try {
|
|
152
|
-
return `${mode}\0${vc.id ?? ''}\0${
|
|
172
|
+
return `${mode}\0${vc.id ?? ''}\0${canonicalizeJson(vc)}`;
|
|
153
173
|
}
|
|
154
174
|
catch {
|
|
155
175
|
return null;
|
|
@@ -158,55 +178,28 @@ export class DelegationCredentialVerifier {
|
|
|
158
178
|
cacheKeyForJwt(jwt, vc, options) {
|
|
159
179
|
if (!this.cacheAllowed(options))
|
|
160
180
|
return null;
|
|
161
|
-
return `jwt\0${vc.id ?? ''}\0${
|
|
181
|
+
return `jwt\0${vc.id ?? ''}\0${jwt}`;
|
|
162
182
|
}
|
|
183
|
+
/**
|
|
184
|
+
* The cache holds only REAL signature verifications: a `skipSignature` run
|
|
185
|
+
* fabricates `{ valid: true }` at zero cost, so it neither reads nor writes
|
|
186
|
+
* the cache (which is what lets the key drop the old per-profile
|
|
187
|
+
* dimension). Per-call resolver overrides also bypass — conservative,
|
|
188
|
+
* unchanged.
|
|
189
|
+
*/
|
|
163
190
|
cacheAllowed(options) {
|
|
164
191
|
return !options.skipCache &&
|
|
192
|
+
!options.skipSignature &&
|
|
165
193
|
options.didResolver === undefined &&
|
|
166
194
|
options.statusListResolver === undefined;
|
|
167
195
|
}
|
|
168
|
-
verificationProfile(options) {
|
|
169
|
-
return `signature:${options.skipSignature ? 'skip' : 'verify'}|status:${options.skipStatus ? 'skip' : 'verify'}`;
|
|
170
|
-
}
|
|
171
|
-
getFromCache(id) {
|
|
172
|
-
const entry = this.cache.get(id);
|
|
173
|
-
if (!entry)
|
|
174
|
-
return null;
|
|
175
|
-
if (Date.now() > entry.expiresAt) {
|
|
176
|
-
this.cache.delete(id);
|
|
177
|
-
return null;
|
|
178
|
-
}
|
|
179
|
-
return entry.result;
|
|
180
|
-
}
|
|
181
|
-
setInCache(id, result) {
|
|
182
|
-
// Evict oldest entry if cache exceeds maxCacheSize (simple FIFO)
|
|
183
|
-
while (this.cache.size >= this.maxCacheSize && this.cacheInsertionOrder.length > 0) {
|
|
184
|
-
const oldestId = this.cacheInsertionOrder.shift();
|
|
185
|
-
if (oldestId) {
|
|
186
|
-
this.cache.delete(oldestId);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
this.cache.set(id, {
|
|
190
|
-
result,
|
|
191
|
-
expiresAt: Date.now() + this.cacheTtl,
|
|
192
|
-
});
|
|
193
|
-
this.cacheInsertionOrder.push(id);
|
|
194
|
-
}
|
|
195
196
|
clearCache() {
|
|
196
197
|
this.cache.clear();
|
|
197
|
-
this.cacheInsertionOrder = [];
|
|
198
198
|
}
|
|
199
199
|
clearCacheEntry(id) {
|
|
200
200
|
const diPrefix = `di\0${id}\0`;
|
|
201
201
|
const jwtPrefix = `jwt\0${id}\0`;
|
|
202
|
-
|
|
203
|
-
if (!key.startsWith(diPrefix) && !key.startsWith(jwtPrefix))
|
|
204
|
-
continue;
|
|
205
|
-
this.cache.delete(key);
|
|
206
|
-
const index = this.cacheInsertionOrder.indexOf(key);
|
|
207
|
-
if (index !== -1)
|
|
208
|
-
this.cacheInsertionOrder.splice(index, 1);
|
|
209
|
-
}
|
|
202
|
+
this.cache.deleteWhere((key) => key.startsWith(diPrefix) || key.startsWith(jwtPrefix));
|
|
210
203
|
}
|
|
211
204
|
}
|
|
212
205
|
export function createDelegationVerifier(options) {
|