@verana-labs/vs-agent-plugin-openid4vc 2.0.0-dev.79 → 2.0.0-pr766.1
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/README.md +41 -22
- package/build/index.d.ts +1 -1
- package/build/index.js +2 -1
- package/build/index.js.map +1 -1
- package/build/nestjs/OpenId4VcPlugin.js +7 -0
- package/build/nestjs/OpenId4VcPlugin.js.map +1 -1
- package/build/nestjs/dto/presentation.dto.js +6 -2
- package/build/nestjs/dto/presentation.dto.js.map +1 -1
- package/build/sdk/setupOpenId4Vc.js +1 -8
- package/build/sdk/setupOpenId4Vc.js.map +1 -1
- package/build/services/VerifierService.d.ts +5 -1
- package/build/services/VerifierService.js +73 -33
- package/build/services/VerifierService.js.map +1 -1
- package/build/services/credentialConfigurationBuilder.d.ts +7 -0
- package/build/services/credentialConfigurationBuilder.js +17 -0
- package/build/services/credentialConfigurationBuilder.js.map +1 -1
- package/build/services/presentationRequest.js +8 -3
- package/build/services/presentationRequest.js.map +1 -1
- package/build/trust/keyBinding.d.ts +9 -1
- package/build/trust/keyBinding.js +15 -5
- package/build/trust/keyBinding.js.map +1 -1
- package/build/trust/presentedIssuer.d.ts +9 -0
- package/build/trust/presentedIssuer.js +23 -0
- package/build/trust/presentedIssuer.js.map +1 -0
- package/build/trust/trustDecision.d.ts +31 -0
- package/build/trust/trustDecision.js +183 -0
- package/build/trust/trustDecision.js.map +1 -0
- package/build/trust/types.d.ts +1 -1
- package/build/trust/types.js +1 -1
- package/build/trust/types.js.map +1 -1
- package/build/types.d.ts +4 -1
- package/build/types.js +2 -1
- package/build/types.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -42,14 +42,8 @@ following a redirect, to bind every credential to its `vct#integrity`. It answer
|
|
|
42
42
|
|
|
43
43
|
## Not wired up yet
|
|
44
44
|
|
|
45
|
-
The
|
|
46
|
-
`
|
|
47
|
-
`createCredentialOffer` answers it for every `statusListId`, and reading a verified presentation
|
|
48
|
-
answers the `RESOLVER_UNAVAILABLE` verdict. Two issues carry the rest:
|
|
49
|
-
|
|
50
|
-
- [#712](https://github.com/verana-labs/vs-agent/issues/712): the verifier trust decision on the
|
|
51
|
-
eight steps the spec now defines, with no `trust` block anywhere;
|
|
52
|
-
- [#713](https://github.com/verana-labs/vs-agent/issues/713): status lists.
|
|
45
|
+
The agent hosts no status list, so `createCredentialOffer` answers `404 UNKNOWN_ID` for every
|
|
46
|
+
`statusListId`. [#713](https://github.com/verana-labs/vs-agent/issues/713) carries it.
|
|
53
47
|
|
|
54
48
|
## Enable it
|
|
55
49
|
|
|
@@ -123,7 +117,7 @@ answers in the v2 error envelope. Without `OID4VC_CONFIG_FILE_LOCATION`, every p
|
|
|
123
117
|
| `listCredentialExchanges` | `GET /credential-exchanges` | Filters `jsonSchemaCredentialId`, `state`. Keyset pagination. |
|
|
124
118
|
| `getCredentialExchange` | `GET /credential-exchanges/{credentialExchangeId}` | `credentialExchangeId`, `jsonSchemaCredentialId`, `state`, `createdAt`, `updatedAt`, `expiresAt`, `errorMessage`. Never the claims, the offer URL or the pre-authorized code. |
|
|
125
119
|
| `deleteCredentialExchange` | `DELETE /credential-exchanges/{credentialExchangeId}` | `204`. Deletes the record only, never a credential that a wallet holds. |
|
|
126
|
-
| `createPresentationRequest` | `POST /presentation-request` | `jsonSchemaCredentialId`, optional `requestedClaims` (defaults to every claim of the type), optional `queryLanguage` (`dcql`, `presentation_exchange`), optional `requestSigner` (`x5c`, `did`). Returns `proofExchangeId` and `url`. `404 UNKNOWN_ID`, `400 INVALID_INPUT`, `409 INVALID_STATE`. The
|
|
120
|
+
| `createPresentationRequest` | `POST /presentation-request` | `jsonSchemaCredentialId`, optional `requestedClaims` (defaults to every claim of the type), optional `queryLanguage` (`dcql`, `presentation_exchange`), optional `requestSigner` (`x5c`, `did`). Returns `proofExchangeId` and `url`. `404 UNKNOWN_ID`, `400 INVALID_INPUT`, `409 NOT_AUTHORIZED`, `503 RESOLVER_UNAVAILABLE`, `409 INVALID_STATE`. The agent has to hold an active VERIFIER `Participant` for the `CredentialSchema` of the type. |
|
|
127
121
|
| `listPresentations` | `GET /presentations` | Filters `jsonSchemaCredentialId`, `state`. Keyset pagination. |
|
|
128
122
|
| `getPresentation` | `GET /presentations/{proofExchangeId}` | Adds the stored `jsonSchemaCredentialId` and `requestedClaims` of the request, then `cryptographicVerified`, `accepted`, `trust` and `credential` once the wallet answered. |
|
|
129
123
|
| `deletePresentation` | `DELETE /presentations/{proofExchangeId}` | `204`. |
|
|
@@ -152,16 +146,42 @@ Admin API and the metadata return; it never builds a path itself.
|
|
|
152
146
|
|
|
153
147
|
## Trust decision
|
|
154
148
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
`
|
|
149
|
+
Nothing configures it: no resolver URL, no allowed `did:web` host, no credential-issuer root and no
|
|
150
|
+
development fingerprint. The agent decides on the eight steps of [[VSA-VTI-FLOW-VERIFY-OID]](https://github.com/verana-labs/verana-spec/blob/main/v4/vs-agent/spec.md#vsa-vti-flow-verify-oid-openid4vp-trust-decision),
|
|
151
|
+
on its DID resolver and on the VPR, and fails closed at every one of them.
|
|
152
|
+
|
|
153
|
+
`createPresentationRequest` resolves the `jsonSchemaCredentialId` to its `CredentialSchema`
|
|
154
|
+
through the VTJSC (`404 UNKNOWN_ID` when it binds to none), requires an active VERIFIER
|
|
155
|
+
`Participant` of the agent for that schema (`409 NOT_AUTHORIZED`, `503 RESOLVER_UNAVAILABLE`), and
|
|
156
|
+
stores the type and the requested claims on the session. The wallet then answers, and credo runs
|
|
157
|
+
step 1: the nonce, the audience, the holder binding, the disclosures, the signature, the validity
|
|
158
|
+
period (`exp` is required) and the `status` claim, if the credential carries one. For an `x5c`
|
|
159
|
+
issuer credo trusts the leaf certificate the wallet presented and nothing above it: step 4 binds
|
|
160
|
+
the key through the DID Document, so no certificate authority takes part. A failure of step 1 ends
|
|
161
|
+
the session in `Error`, with `cryptographicVerified: false`.
|
|
161
162
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
163
|
+
The first `getPresentation` of a `ResponseVerified` session runs the rest and stores the verdict:
|
|
164
|
+
|
|
165
|
+
| Step | Check | Verdict on failure |
|
|
166
|
+
| --- | --- | --- |
|
|
167
|
+
| 2 | issuer DID: `iss` when it is a DID, else the URI SAN of the leaf certificate | `UNTRUSTED` |
|
|
168
|
+
| 3 | a well-formed `did:web` or `did:webvh`, resolved fresh within 5 seconds, with the requested `id` | `UNTRUSTED`, or `RESOLVER_UNAVAILABLE` when the DID does not resolve |
|
|
169
|
+
| 4 | the signing key under `assertionMethod` of that DID Document | `UNTRUSTED` |
|
|
170
|
+
| 5 | the Type Metadata at `vct`, read over `https` without a redirect, hashes to `vct#integrity` and names the VTJSC of the request | `UNTRUSTED`, or `RESOLVER_UNAVAILABLE` when the document cannot be read |
|
|
171
|
+
| 6 | the `status` claim, verified by credo in step 1 against the issuer chain | the session ends in `Error` |
|
|
172
|
+
| 7 | the Verifiable Trust resolution of the issuer DID answers `TRUSTED`, and the VPR holds an active ISSUER `Participant` of it for the `CredentialSchema` | `UNTRUSTED`, `TRUSTED_NOT_AUTHORIZED`, or `RESOLVER_UNAVAILABLE` |
|
|
173
|
+
| 8 | `accepted` is `true` for `TRUSTED_AUTHORIZED` only | |
|
|
174
|
+
|
|
175
|
+
`RESOLVER_UNAVAILABLE` is never stored, so the next read retries. `listPresentations` never
|
|
176
|
+
decides: it reports the stored verdict, and a verified session nobody read yet shows
|
|
177
|
+
`cryptographicVerified: true`, `accepted: false` and no `trust`. The `evidence` of a verdict
|
|
178
|
+
carries the issuer `did`, the `trustStatus` of the resolution, the `jsonSchemaCredentialId` of the
|
|
179
|
+
request, `authorized`, the `queries` the agent ran and, when the verdict is not
|
|
180
|
+
`TRUSTED_AUTHORIZED`, a `note` that names the failed step.
|
|
181
|
+
|
|
182
|
+
Two points where credo, not the plugin, decides step 6, and where the spec reads differently: credo
|
|
183
|
+
fetches the Status List Token with its own client, not under the network boundary of step 3, and a
|
|
184
|
+
failure ends the session in `Error` instead of the verdict `UNTRUSTED`.
|
|
165
185
|
|
|
166
186
|
## Wallet accommodations
|
|
167
187
|
|
|
@@ -176,7 +196,6 @@ the code it changes, with a one-line note.
|
|
|
176
196
|
|
|
177
197
|
`pnpm --filter @verana-labs/vs-agent-plugin-openid4vc exec vitest run` runs the unit tests and the
|
|
178
198
|
in-process end-to-end tests, which start real credo agents for the issuer, the holder and the
|
|
179
|
-
verifier
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
Verana Playground for recorded wallet scenarios.
|
|
199
|
+
verifier, drive a pre-authorized issuance through to a stored holder-bound credential, and present
|
|
200
|
+
it back to the verifier through to a stored trust verdict. No external wallet or conformance
|
|
201
|
+
evidence is recorded here; see the Verana Playground for recorded wallet scenarios.
|
package/build/index.d.ts
CHANGED
|
@@ -17,5 +17,5 @@ export type { OpenId4VcQueryLanguage } from './services/presentationRequest';
|
|
|
17
17
|
export type { OpenId4VcVerifiedCredentialResult, PresentationDecision, } from './services/presentationVerification';
|
|
18
18
|
export { TRUST_VERDICT_NAMES, VERANA_TRUST_STATUSES } from './trust/types';
|
|
19
19
|
export type { TrustEvidence, TrustVerdict, TrustVerdictName, VeranaTrustStatus } from './trust/types';
|
|
20
|
-
export { OPENID4VC_OPTIONS } from './types';
|
|
20
|
+
export { OPENID4VC_DID_TRUST_RESOLVER, OPENID4VC_OPTIONS } from './types';
|
|
21
21
|
export type { OpenId4VcAgent, OpenId4VcConfigurationFile, OpenId4VcConfiguredSigningMaterial, OpenId4VcCredentialConfiguration, OpenId4VcPluginOptions, OpenId4VcSigningOptions, OpenId4VcVsAgentModules, } from './types';
|
package/build/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.OPENID4VC_OPTIONS = exports.VERANA_TRUST_STATUSES = exports.TRUST_VERDICT_NAMES = exports.OPENID4VC_QUERY_LANGUAGES = exports.VerifierService = exports.OPENID4VC_REQUEST_SIGNERS = exports.IssuerService = exports.setupOpenId4Vc = exports.V2OpenId4VcSigningCertificatesController = exports.V2OpenId4VcPresentationsController = exports.V2OpenId4VcCredentialExchangesController = exports.OpenId4VcPlugin = exports.parseOpenId4VcConfiguration = exports.parseOfferClaims = exports.OFFER_TTL_SECONDS_MIN = exports.OFFER_TTL_SECONDS_MAX = exports.findCredentialConfiguration = exports.OpenId4VcVerificationSessionState = exports.OpenId4VcIssuanceSessionState = void 0;
|
|
17
|
+
exports.OPENID4VC_OPTIONS = exports.OPENID4VC_DID_TRUST_RESOLVER = exports.VERANA_TRUST_STATUSES = exports.TRUST_VERDICT_NAMES = exports.OPENID4VC_QUERY_LANGUAGES = exports.VerifierService = exports.OPENID4VC_REQUEST_SIGNERS = exports.IssuerService = exports.setupOpenId4Vc = exports.V2OpenId4VcSigningCertificatesController = exports.V2OpenId4VcPresentationsController = exports.V2OpenId4VcCredentialExchangesController = exports.OpenId4VcPlugin = exports.parseOpenId4VcConfiguration = exports.parseOfferClaims = exports.OFFER_TTL_SECONDS_MIN = exports.OFFER_TTL_SECONDS_MAX = exports.findCredentialConfiguration = exports.OpenId4VcVerificationSessionState = exports.OpenId4VcIssuanceSessionState = void 0;
|
|
18
18
|
var openid4vc_1 = require("@credo-ts/openid4vc");
|
|
19
19
|
Object.defineProperty(exports, "OpenId4VcIssuanceSessionState", { enumerable: true, get: function () { return openid4vc_1.OpenId4VcIssuanceSessionState; } });
|
|
20
20
|
Object.defineProperty(exports, "OpenId4VcVerificationSessionState", { enumerable: true, get: function () { return openid4vc_1.OpenId4VcVerificationSessionState; } });
|
|
@@ -46,5 +46,6 @@ var types_1 = require("./trust/types");
|
|
|
46
46
|
Object.defineProperty(exports, "TRUST_VERDICT_NAMES", { enumerable: true, get: function () { return types_1.TRUST_VERDICT_NAMES; } });
|
|
47
47
|
Object.defineProperty(exports, "VERANA_TRUST_STATUSES", { enumerable: true, get: function () { return types_1.VERANA_TRUST_STATUSES; } });
|
|
48
48
|
var types_2 = require("./types");
|
|
49
|
+
Object.defineProperty(exports, "OPENID4VC_DID_TRUST_RESOLVER", { enumerable: true, get: function () { return types_2.OPENID4VC_DID_TRUST_RESOLVER; } });
|
|
49
50
|
Object.defineProperty(exports, "OPENID4VC_OPTIONS", { enumerable: true, get: function () { return types_2.OPENID4VC_OPTIONS; } });
|
|
50
51
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iDAAsG;AAA7F,0HAAA,6BAA6B,OAAA;AAAE,8HAAA,iCAAiC,OAAA;AAEzE,mCAMiB;AALf,qHAAA,2BAA2B,OAAA;AAC3B,+GAAA,qBAAqB,OAAA;AACrB,+GAAA,qBAAqB,OAAA;AACrB,0GAAA,gBAAgB,OAAA;AAChB,qHAAA,2BAA2B,OAAA;AAE7B,4DAA0D;AAAjD,kHAAA,eAAe,OAAA;AACxB,+CAA4B;AAC5B,8GAA4G;AAAnG,oKAAA,wCAAwC,OAAA;AACjD,kGAAgG;AAAvF,wJAAA,kCAAkC,OAAA;AAC3C,8GAA4G;AAAnG,oKAAA,wCAAwC,OAAA;AACjD,uDAAqD;AAA5C,gHAAA,cAAc,OAAA;AAGvB,0DAAwD;AAA/C,8GAAA,aAAa,OAAA;AAEtB,8DAAuF;AAA9E,4HAAA,yBAAyB,OAAA;AAAE,kHAAA,eAAe,OAAA;AAOnD,sEAA0E;AAAjE,gIAAA,yBAAyB,OAAA;AAMlC,uCAA0E;AAAjE,4GAAA,mBAAmB,OAAA;AAAE,8GAAA,qBAAqB,OAAA;AAEnD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iDAAsG;AAA7F,0HAAA,6BAA6B,OAAA;AAAE,8HAAA,iCAAiC,OAAA;AAEzE,mCAMiB;AALf,qHAAA,2BAA2B,OAAA;AAC3B,+GAAA,qBAAqB,OAAA;AACrB,+GAAA,qBAAqB,OAAA;AACrB,0GAAA,gBAAgB,OAAA;AAChB,qHAAA,2BAA2B,OAAA;AAE7B,4DAA0D;AAAjD,kHAAA,eAAe,OAAA;AACxB,+CAA4B;AAC5B,8GAA4G;AAAnG,oKAAA,wCAAwC,OAAA;AACjD,kGAAgG;AAAvF,wJAAA,kCAAkC,OAAA;AAC3C,8GAA4G;AAAnG,oKAAA,wCAAwC,OAAA;AACjD,uDAAqD;AAA5C,gHAAA,cAAc,OAAA;AAGvB,0DAAwD;AAA/C,8GAAA,aAAa,OAAA;AAEtB,8DAAuF;AAA9E,4HAAA,yBAAyB,OAAA;AAAE,kHAAA,eAAe,OAAA;AAOnD,sEAA0E;AAAjE,gIAAA,yBAAyB,OAAA;AAMlC,uCAA0E;AAAjE,4GAAA,mBAAmB,OAAA;AAAE,8GAAA,qBAAqB,OAAA;AAEnD,iCAAyE;AAAhE,qHAAA,4BAA4B,OAAA;AAAE,0GAAA,iBAAiB,OAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.OpenId4VcPlugin = OpenId4VcPlugin;
|
|
4
|
+
const vs_agent_sdk_1 = require("@verana-labs/vs-agent-sdk");
|
|
4
5
|
const IssuerService_1 = require("../services/IssuerService");
|
|
5
6
|
const VerifierService_1 = require("../services/VerifierService");
|
|
6
7
|
const types_1 = require("../types");
|
|
@@ -19,6 +20,11 @@ function OpenId4VcPlugin(options) {
|
|
|
19
20
|
const publishIssuerService = service => {
|
|
20
21
|
issuerService = service;
|
|
21
22
|
};
|
|
23
|
+
const resolveDidTrust = options.verifiablePublicRegistries
|
|
24
|
+
? (0, vs_agent_sdk_1.createDidTrustResolver)({ verifiablePublicRegistries: options.verifiablePublicRegistries })
|
|
25
|
+
: async (did) => {
|
|
26
|
+
throw new Error(`the agent has no VPR to resolve "${did}" against`);
|
|
27
|
+
};
|
|
22
28
|
return {
|
|
23
29
|
name: 'openid4vc',
|
|
24
30
|
credoPlugin: sdkPlugin,
|
|
@@ -32,6 +38,7 @@ function OpenId4VcPlugin(options) {
|
|
|
32
38
|
providers: [
|
|
33
39
|
{ provide: types_1.OPENID4VC_OPTIONS, useValue: options },
|
|
34
40
|
{ provide: types_1.OPENID4VC_ISSUER_SINK, useValue: publishIssuerService },
|
|
41
|
+
{ provide: types_1.OPENID4VC_DID_TRUST_RESOLVER, useValue: resolveDidTrust },
|
|
35
42
|
IssuerService_1.IssuerService,
|
|
36
43
|
VerifierService_1.VerifierService,
|
|
37
44
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenId4VcPlugin.js","sourceRoot":"","sources":["../../src/nestjs/OpenId4VcPlugin.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"OpenId4VcPlugin.js","sourceRoot":"","sources":["../../src/nestjs/OpenId4VcPlugin.ts"],"names":[],"mappings":";;AAgBA,0CAkCC;AA/CD,4DAAkE;AAElE,6DAAyD;AACzD,iEAA6D;AAC7D,oCAAiG;AAEjG,4FAAgG;AAChG,0DAAsD;AAEtD,yGAAqG;AACrG,6FAAyF;AACzF,yGAAqG;AAErG,SAAgB,eAAe,CAAC,OAA+B;IAC7D,IAAI,aAAiD,CAAA;IACrD,MAAM,SAAS,GAAG,IAAA,+BAAc,EAAC,OAAO,EAAE,GAAG,EAAE;QAC7C,IAAI,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;QAClF,OAAO,aAAa,CAAA;IACtB,CAAC,CAAC,CAAA;IACF,MAAM,oBAAoB,GAAwB,OAAO,CAAC,EAAE;QAC1D,aAAa,GAAG,OAAO,CAAA;IACzB,CAAC,CAAA;IACD,MAAM,eAAe,GAAqB,OAAO,CAAC,0BAA0B;QAC1E,CAAC,CAAC,IAAA,qCAAsB,EAAC,EAAE,0BAA0B,EAAE,OAAO,CAAC,0BAA0B,EAAE,CAAC;QAC5F,CAAC,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,WAAW,CAAC,CAAA;QACrE,CAAC,CAAA;IAEL,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,SAAS;QACtB,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;QAC5C,uBAAuB,EAAE,QAAQ,CAAC,EAAE,CAClC,IAAA,yEAAuC,EAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC;QACjF,WAAW,EAAE;YACX,mFAAwC;YACxC,uEAAkC;YAClC,mFAAwC;SACzC;QACD,SAAS,EAAE;YACT,EAAE,OAAO,EAAE,yBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE;YACjD,EAAE,OAAO,EAAE,6BAAqB,EAAE,QAAQ,EAAE,oBAAoB,EAAE;YAClE,EAAE,OAAO,EAAE,oCAA4B,EAAE,QAAQ,EAAE,eAAe,EAAE;YACpE,6BAAa;YACb,iCAAe;SAChB;KACF,CAAA;AACH,CAAC"}
|
|
@@ -23,7 +23,7 @@ class OpenId4VcCreatePresentationRequestBodyDto {
|
|
|
23
23
|
exports.OpenId4VcCreatePresentationRequestBodyDto = OpenId4VcCreatePresentationRequestBodyDto;
|
|
24
24
|
__decorate([
|
|
25
25
|
(0, swagger_1.ApiProperty)({
|
|
26
|
-
description: 'Credential type the request asks for
|
|
26
|
+
description: 'Credential type the request asks for: the jsonSchemaCredentialId of a VTJSC whose CredentialSchema the agent holds an active VERIFIER Participant for.',
|
|
27
27
|
example: 'employee',
|
|
28
28
|
}),
|
|
29
29
|
(0, class_validator_1.IsString)(),
|
|
@@ -104,7 +104,11 @@ class OpenId4VcTrustEvidenceDto {
|
|
|
104
104
|
}
|
|
105
105
|
exports.OpenId4VcTrustEvidenceDto = OpenId4VcTrustEvidenceDto;
|
|
106
106
|
__decorate([
|
|
107
|
-
(0, swagger_1.ApiProperty)({
|
|
107
|
+
(0, swagger_1.ApiProperty)({
|
|
108
|
+
type: String,
|
|
109
|
+
nullable: true,
|
|
110
|
+
description: 'DID of the issuer: iss when it is a DID, else the URI SAN of the leaf certificate',
|
|
111
|
+
}),
|
|
108
112
|
__metadata("design:type", Object)
|
|
109
113
|
], OpenId4VcTrustEvidenceDto.prototype, "did", void 0);
|
|
110
114
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presentation.dto.js","sourceRoot":"","sources":["../../../src/nestjs/dto/presentation.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAIA,mDAAuE;AACvE,6CAAkE;AAClE,4DAAuE;AACvE,qDAAsG;AAEtG,4EAA8E;AAC9E,oEAA0E;AAC1E,6CAA8E;AAE9E,kEAAkE;AAClE,MAAa,yCAAyC;CAwCrD;AAxCD,8FAwCC;AAhCC;IAPC,IAAA,qBAAW,EAAC;QACX,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"presentation.dto.js","sourceRoot":"","sources":["../../../src/nestjs/dto/presentation.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAIA,mDAAuE;AACvE,6CAAkE;AAClE,4DAAuE;AACvE,qDAAsG;AAEtG,4EAA8E;AAC9E,oEAA0E;AAC1E,6CAA8E;AAE9E,kEAAkE;AAClE,MAAa,yCAAyC;CAwCrD;AAxCD,8FAwCC;AAhCC;IAPC,IAAA,qBAAW,EAAC;QACX,WAAW,EACT,wJAAwJ;QAC1J,OAAO,EAAE,UAAU;KACpB,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;yFACkB;AAa/B;IAXC,IAAA,6BAAmB,EAAC;QACnB,IAAI,EAAE,CAAC,MAAM,CAAC;QACd,WAAW,EACT,gHAAgH;QAClH,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;KAC1B,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,GAAE;IACT,IAAA,0BAAQ,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxB,IAAA,4BAAU,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,6BAAW,GAAE;;kFACY;AAS1B;IAPC,IAAA,6BAAmB,EAAC;QACnB,IAAI,EAAE,+CAAyB;QAC/B,WAAW,EACT,qHAAqH;KACxH,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,sBAAI,EAAC,+CAAyB,CAAC;;gFACM;AAStC;IAPC,IAAA,6BAAmB,EAAC;QACnB,IAAI,EAAE,2CAAyB;QAC/B,WAAW,EACT,gHAAgH;KACnH,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,sBAAI,EAAC,2CAAyB,CAAC;;gFACM;AAGxC,8DAA8D;AAC9D,MAAa,uCAAuC;CAanD;AAbD,0FAaC;AARC;IAJC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,4DAA4D;QACzE,OAAO,EAAE,sCAAsC;KAChD,CAAC;;gFACsB;AAOxB;IALC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,8EAA8E;QAC3F,OAAO,EACL,gHAAgH;KACnH,CAAC;;oEACU;AAGd,mDAAmD;AACnD,MAAa,kCAAmC,SAAQ,iCAAkB;CAczE;AAdD,gFAcC;AATC;IAJC,IAAA,6BAAmB,EAAC,EAAE,WAAW,EAAE,2BAA2B,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IACtF,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;kFACkB;AAQ/B;IANC,IAAA,6BAAmB,EAAC;QACnB,IAAI,EAAE,6CAAiC;QACvC,WAAW,EAAE,sCAAsC;KACpD,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,EAAC,6CAAiC,CAAC;;iEACD;AAG3C,wFAAwF;AACxF,MAAa,yBAAyB;CA8BrC;AA9BD,8DA8BC;AAxBC;IALC,IAAA,qBAAW,EAAC;QACX,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,mFAAmF;KACjG,CAAC;;sDACiB;AAOnB;IALC,IAAA,qBAAW,EAAC;QACX,IAAI,EAAE,6BAAqB;QAC3B,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,oCAAoC;KAClD,CAAC;;8DACoC;AAGtC;IADC,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;;yEACvD;AAOtC;IALC,IAAA,qBAAW,EAAC;QACX,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,oEAAoE;KAClF,CAAC;;6DACyB;AAG3B;IADC,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;;0DAC7D;AAGlB;IADC,IAAA,6BAAmB,EAAC,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC;;uDACtE;AAGf,8FAA8F;AAC9F,MAAa,wBAAwB;CAMpC;AAND,4DAMC;AAJC;IADC,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,2BAAmB,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC;;yDACnD;AAG1B;IADC,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC;8BAC/E,yBAAyB;0DAAA;AAGtC,4FAA4F;AAC5F,MAAa,+BAA+B;CAc3C;AAdD,0EAcC;AATC;IAJC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,4CAA4C;QACzD,OAAO,EAAE,sCAAsC;KAChD,CAAC;;4DACU;AAQZ;IANC,IAAA,qBAAW,EAAC;QACX,IAAI,EAAE,QAAQ;QACd,oBAAoB,EAAE,IAAI;QAC1B,WAAW,EAAE,iCAAiC;QAC9C,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;KAClC,CAAC;;wEACuC;AAG3C,mFAAmF;AACnF,MAAa,8BAA8B;CAgD1C;AAhDD,wEAgDC;AA3CC;IAJC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,wCAAwC;QACrD,OAAO,EAAE,sCAAsC;KAChD,CAAC;;uEACsB;AAGxB;IADC,IAAA,6BAAmB,EAAC,EAAE,WAAW,EAAE,gCAAgC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;;8EAC7D;AAO/B;IALC,IAAA,6BAAmB,EAAC;QACnB,IAAI,EAAE,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;KAC1B,CAAC;;uEACwB;AAG1B;IADC,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,6CAAiC,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;;6DAClE;AAGzC;IADC,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,oCAAoC,EAAE,CAAC;8BAC1F,IAAI;iEAAA;AAGhB;IADC,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;8BACrF,IAAI;iEAAA;AAGhB;IADC,IAAA,6BAAmB,EAAC,EAAE,WAAW,EAAE,oEAAoE,EAAE,CAAC;;oEACtF;AAKrB;IAHC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,4FAA4F;KAC1G,CAAC;;6EAC6B;AAG/B;IADC,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,8CAA8C,EAAE,CAAC;;gEAC3D;AAMlB;IAJC,IAAA,6BAAmB,EAAC;QACnB,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,yDAAyD;KACvE,CAAC;8BACM,wBAAwB;6DAAA;AAMhC;IAJC,IAAA,6BAAmB,EAAC;QACnB,IAAI,EAAE,+BAA+B;QACrC,WAAW,EAAE,yCAAyC;KACvD,CAAC;8BACW,+BAA+B;kEAAA;AAGjC,QAAA,kCAAkC,GAAG,IAAA,sBAAO,EAAC,8BAA8B,CAAC,CAAA"}
|
|
@@ -21,7 +21,6 @@ const core_1 = require("@credo-ts/core");
|
|
|
21
21
|
const openid4vc_1 = require("@credo-ts/openid4vc");
|
|
22
22
|
const express_1 = __importDefault(require("express"));
|
|
23
23
|
const config_1 = require("../config");
|
|
24
|
-
const presentationVerification_1 = require("../services/presentationVerification");
|
|
25
24
|
const CertificateTrust_1 = require("../trust/CertificateTrust");
|
|
26
25
|
const isRecord_1 = require("../utils/isRecord");
|
|
27
26
|
const ISSUER_BODY_LIMIT = '1mb';
|
|
@@ -60,13 +59,7 @@ function setupOpenId4Vc(options, getIssuerService) {
|
|
|
60
59
|
modules: {
|
|
61
60
|
openId4Vc: new openid4vc_1.OpenId4VcModule(moduleOptions),
|
|
62
61
|
x509: new core_1.X509Module({
|
|
63
|
-
getTrustedCertificatesForVerification: (_agentContext, { verification }) =>
|
|
64
|
-
// Credo accepts an SD-JWT VC without `exp`, and this callback is the only hook inside its
|
|
65
|
-
// presentation verification.
|
|
66
|
-
if (verification.type === 'credential')
|
|
67
|
-
(0, presentationVerification_1.assertCredentialExpires)(verification.credential);
|
|
68
|
-
return (0, CertificateTrust_1.trustedCertificatesForVerification)(options, verification.type);
|
|
69
|
-
},
|
|
62
|
+
getTrustedCertificatesForVerification: (_agentContext, { verification }) => (0, CertificateTrust_1.trustedCertificatesForVerification)(options, verification.type),
|
|
70
63
|
}),
|
|
71
64
|
},
|
|
72
65
|
publicMiddleware: app,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupOpenId4Vc.js","sourceRoot":"","sources":["../../src/sdk/setupOpenId4Vc.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"setupOpenId4Vc.js","sourceRoot":"","sources":["../../src/sdk/setupOpenId4Vc.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { OpenId4VcAgent, OpenId4VcPluginOptions } from '../types';
|
|
2
2
|
import type { OnModuleInit } from '@nestjs/common';
|
|
3
|
+
import type { DidTrustResolver } from '@verana-labs/vs-agent-sdk';
|
|
3
4
|
import { OpenId4VcVerificationSessionState } from '@credo-ts/openid4vc';
|
|
4
5
|
import { type SigningCertificateInfo } from './CertificateService';
|
|
5
6
|
import { type OpenId4VcQueryLanguage } from './presentationRequest';
|
|
@@ -32,9 +33,10 @@ export type OpenId4VcVerificationSessionSummary = PresentationDecision & {
|
|
|
32
33
|
export declare class VerifierService implements OnModuleInit {
|
|
33
34
|
private readonly agent;
|
|
34
35
|
private readonly options;
|
|
36
|
+
private readonly resolveDidTrust;
|
|
35
37
|
private initialization?;
|
|
36
38
|
private signingCertificate?;
|
|
37
|
-
constructor(agent: OpenId4VcAgent, options: OpenId4VcPluginOptions);
|
|
39
|
+
constructor(agent: OpenId4VcAgent, options: OpenId4VcPluginOptions, resolveDidTrust: DidTrustResolver);
|
|
38
40
|
onModuleInit(): Promise<void>;
|
|
39
41
|
ensureInitialized(): Promise<void>;
|
|
40
42
|
createRequest({ jsonSchemaCredentialId, requestedClaims, queryLanguage, requestSigner, }: OpenId4VcCreatePresentationRequestOptions): Promise<OpenId4VcVerificationRequest>;
|
|
@@ -43,6 +45,8 @@ export declare class VerifierService implements OnModuleInit {
|
|
|
43
45
|
listVerificationSessions(filters?: OpenId4VcVerificationSessionFilters): Promise<OpenId4VcVerificationSessionSummary[]>;
|
|
44
46
|
deleteVerificationSession(id: string): Promise<void>;
|
|
45
47
|
private findOwnedSession;
|
|
48
|
+
private decide;
|
|
49
|
+
private presentedCredential;
|
|
46
50
|
private toSummary;
|
|
47
51
|
private storedRequest;
|
|
48
52
|
private storedDecision;
|
|
@@ -19,36 +19,28 @@ const openid4vc_1 = require("@credo-ts/openid4vc");
|
|
|
19
19
|
const vs_agent_sdk_1 = require("@verana-labs/vs-agent-sdk");
|
|
20
20
|
const config_1 = require("../config");
|
|
21
21
|
const keyBinding_1 = require("../trust/keyBinding");
|
|
22
|
+
const presentedIssuer_1 = require("../trust/presentedIssuer");
|
|
23
|
+
const trustDecision_1 = require("../trust/trustDecision");
|
|
22
24
|
const types_1 = require("../types");
|
|
23
25
|
const serviceDisplay_1 = require("../utils/serviceDisplay");
|
|
24
26
|
const CertificateService_1 = require("./CertificateService");
|
|
27
|
+
const credentialConfigurationBuilder_1 = require("./credentialConfigurationBuilder");
|
|
25
28
|
const presentationRequest_1 = require("./presentationRequest");
|
|
26
29
|
exports.OPENID4VC_REQUEST_SIGNERS = ['x5c', 'did'];
|
|
27
30
|
const BAD_REQUEST = 400;
|
|
28
31
|
const NOT_FOUND = 404;
|
|
29
32
|
const CONFLICT = 409;
|
|
30
33
|
const JSON_SCHEMA_CREDENTIAL_ID_TAG = 'jsonSchemaCredentialId';
|
|
34
|
+
const CREDENTIAL_SCHEMA_ID_TAG = 'credentialSchemaId';
|
|
31
35
|
const REQUESTED_CLAIMS_TAG = 'requestedClaims';
|
|
32
36
|
const OUTCOME_METADATA_KEY = 'openid4vc/verificationOutcome';
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
accepted: false,
|
|
36
|
-
trust: {
|
|
37
|
-
verdict: 'RESOLVER_UNAVAILABLE',
|
|
38
|
-
evidence: {
|
|
39
|
-
did: null,
|
|
40
|
-
trustStatus: null,
|
|
41
|
-
jsonSchemaCredentialId: null,
|
|
42
|
-
authorized: null,
|
|
43
|
-
queries: [],
|
|
44
|
-
note: 'the agent does not decide OpenID4VP trust yet',
|
|
45
|
-
},
|
|
46
|
-
},
|
|
47
|
-
};
|
|
37
|
+
const UNVERIFIED = { cryptographicVerified: false, accepted: false };
|
|
38
|
+
const UNDECIDED = { cryptographicVerified: true, accepted: false };
|
|
48
39
|
let VerifierService = class VerifierService {
|
|
49
|
-
constructor(agent, options) {
|
|
40
|
+
constructor(agent, options, resolveDidTrust) {
|
|
50
41
|
this.agent = agent;
|
|
51
42
|
this.options = options;
|
|
43
|
+
this.resolveDidTrust = resolveDidTrust;
|
|
52
44
|
}
|
|
53
45
|
async onModuleInit() {
|
|
54
46
|
await this.ensureInitialized();
|
|
@@ -63,16 +55,31 @@ let VerifierService = class VerifierService {
|
|
|
63
55
|
}
|
|
64
56
|
async createRequest({ jsonSchemaCredentialId, requestedClaims, queryLanguage = 'dcql', requestSigner, }) {
|
|
65
57
|
await this.ensureInitialized();
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
58
|
+
let configuration;
|
|
59
|
+
try {
|
|
60
|
+
configuration = await (0, credentialConfigurationBuilder_1.resolveCredentialType)(this.agent, jsonSchemaCredentialId);
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
throw (0, vs_agent_sdk_1.trustDecisionError)(error, 'agent', vs_agent_sdk_1.AdminApiErrorCode.UnknownId);
|
|
69
64
|
}
|
|
70
65
|
const claims = requestedClaims !== null && requestedClaims !== void 0 ? requestedClaims : configuration.claims;
|
|
71
66
|
assertRequestedClaims(claims, configuration.claims);
|
|
67
|
+
// [VSA-VTI-FLOW-VERIFY-AC-5] for OpenID4VP: the agent asks for a type only where the Ecosystem
|
|
68
|
+
// accredits it as a verifier
|
|
69
|
+
try {
|
|
70
|
+
await this.agent.anonCredsTrust.assertOwnAuthorization({
|
|
71
|
+
role: vs_agent_sdk_1.ParticipantRole.Verifier,
|
|
72
|
+
credentialSchemaId: configuration.credentialSchemaId,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
throw (0, vs_agent_sdk_1.trustDecisionError)(error, 'agent');
|
|
77
|
+
}
|
|
72
78
|
const { authorizationRequest, verificationSession } = await this.verifierApi().createAuthorizationRequest(Object.assign({ verifierId: config_1.VERIFIER_CAPABILITY_ID, requestSigner: await this.buildRequestSigner(requestSigner),
|
|
73
79
|
// JARM (direct_post.jwt) is DCQL-only: Presentation Exchange wallets can't build the JWE it needs.
|
|
74
80
|
responseMode: queryLanguage === 'presentation_exchange' ? 'direct_post' : 'direct_post.jwt' }, (0, presentationRequest_1.presentationQueryFor)(configuration, claims, queryLanguage)));
|
|
75
81
|
verificationSession.setTag(JSON_SCHEMA_CREDENTIAL_ID_TAG, jsonSchemaCredentialId);
|
|
82
|
+
verificationSession.setTag(CREDENTIAL_SCHEMA_ID_TAG, String(configuration.credentialSchemaId));
|
|
76
83
|
verificationSession.setTag(REQUESTED_CLAIMS_TAG, claims);
|
|
77
84
|
await this.sessionRepository().update(this.agent.context, verificationSession);
|
|
78
85
|
return {
|
|
@@ -85,11 +92,11 @@ let VerifierService = class VerifierService {
|
|
|
85
92
|
return (0, CertificateService_1.signingCertificateInfo)('verifier', this.signingCertificateHandle());
|
|
86
93
|
}
|
|
87
94
|
async getVerificationSession(id) {
|
|
88
|
-
var _a;
|
|
89
95
|
await this.ensureInitialized();
|
|
90
96
|
const session = await this.findOwnedSession(id);
|
|
91
|
-
return this.toSummary(session,
|
|
97
|
+
return this.toSummary(session, await this.decide(session));
|
|
92
98
|
}
|
|
99
|
+
// [VSA-ADM-OID-PR-LIST]: a list reports the stored verdict and never decides
|
|
93
100
|
async listVerificationSessions(filters = {}) {
|
|
94
101
|
await this.ensureInitialized();
|
|
95
102
|
const sessions = await this.verifierApi().findVerificationSessionsByQuery({
|
|
@@ -97,10 +104,7 @@ let VerifierService = class VerifierService {
|
|
|
97
104
|
state: filters.state,
|
|
98
105
|
[JSON_SCHEMA_CREDENTIAL_ID_TAG]: filters.jsonSchemaCredentialId,
|
|
99
106
|
});
|
|
100
|
-
return sessions.map(session => {
|
|
101
|
-
var _a;
|
|
102
|
-
return this.toSummary(session, (_a = this.storedDecision(session)) !== null && _a !== void 0 ? _a : { cryptographicVerified: true, accepted: false });
|
|
103
|
-
});
|
|
107
|
+
return sessions.map(session => { var _a; return this.toSummary(session, (_a = this.storedDecision(session)) !== null && _a !== void 0 ? _a : UNDECIDED); });
|
|
104
108
|
}
|
|
105
109
|
async deleteVerificationSession(id) {
|
|
106
110
|
await this.ensureInitialized();
|
|
@@ -123,21 +127,55 @@ let VerifierService = class VerifierService {
|
|
|
123
127
|
}
|
|
124
128
|
return session;
|
|
125
129
|
}
|
|
130
|
+
// [VSA-ADM-OID-PR-GET]: the verdict is computed once, on the first read of a verified session, and
|
|
131
|
+
// stored with it; RESOLVER_UNAVAILABLE is never stored, so the next read retries the resolver
|
|
132
|
+
async decide(session) {
|
|
133
|
+
var _a;
|
|
134
|
+
const stored = this.storedDecision(session);
|
|
135
|
+
if (stored)
|
|
136
|
+
return stored;
|
|
137
|
+
const decision = await (0, trustDecision_1.decidePresentationTrust)(await this.presentedCredential(session), this.storedRequest(session), {
|
|
138
|
+
agent: this.agent,
|
|
139
|
+
readTypeMetadata: vct => (0, vs_agent_sdk_1.fetchBoundedBytes)(vct),
|
|
140
|
+
resolveDidTrust: this.resolveDidTrust,
|
|
141
|
+
assertAuthorized: options => this.agent.anonCredsTrust.assertAuthorized(options),
|
|
142
|
+
});
|
|
143
|
+
if (((_a = decision.trust) === null || _a === void 0 ? void 0 : _a.verdict) !== 'RESOLVER_UNAVAILABLE') {
|
|
144
|
+
session.metadata.set(OUTCOME_METADATA_KEY, decision);
|
|
145
|
+
await this.sessionRepository().update(this.agent.context, session);
|
|
146
|
+
}
|
|
147
|
+
return decision;
|
|
148
|
+
}
|
|
149
|
+
async presentedCredential(session) {
|
|
150
|
+
var _a, _b, _c, _d;
|
|
151
|
+
const verified = await this.verifierApi().getVerifiedAuthorizationResponse(session.id);
|
|
152
|
+
const presentations = [
|
|
153
|
+
...Object.values((_b = (_a = verified.dcql) === null || _a === void 0 ? void 0 : _a.presentations) !== null && _b !== void 0 ? _b : {}).flat(),
|
|
154
|
+
...((_d = (_c = verified.presentationExchange) === null || _c === void 0 ? void 0 : _c.presentations) !== null && _d !== void 0 ? _d : []),
|
|
155
|
+
];
|
|
156
|
+
const credential = presentations.find((presentation) => presentation.claimFormat === core_1.ClaimFormat.SdJwtDc);
|
|
157
|
+
if (!credential)
|
|
158
|
+
throw new Error(`the verification session "${session.id}" carries no SD-JWT VC`);
|
|
159
|
+
return credential;
|
|
160
|
+
}
|
|
126
161
|
toSummary(session, decision) {
|
|
127
162
|
var _a;
|
|
128
|
-
const
|
|
129
|
-
|
|
163
|
+
const jsonSchemaCredentialId = session.getTag(JSON_SCHEMA_CREDENTIAL_ID_TAG);
|
|
164
|
+
const requestedClaims = session.getTag(REQUESTED_CLAIMS_TAG);
|
|
165
|
+
return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ id: session.id }, (typeof jsonSchemaCredentialId === 'string' ? { jsonSchemaCredentialId } : {})), (Array.isArray(requestedClaims) ? { requestedClaims } : {})), { state: session.state, createdAt: session.createdAt, updatedAt: (_a = session.updatedAt) !== null && _a !== void 0 ? _a : session.createdAt }), (session.errorMessage ? { errorMessage: session.errorMessage } : {})), decision);
|
|
130
166
|
}
|
|
131
167
|
storedRequest(session) {
|
|
132
168
|
const jsonSchemaCredentialId = session.getTag(JSON_SCHEMA_CREDENTIAL_ID_TAG);
|
|
133
|
-
const
|
|
134
|
-
|
|
169
|
+
const credentialSchemaId = session.getTag(CREDENTIAL_SCHEMA_ID_TAG);
|
|
170
|
+
if (typeof jsonSchemaCredentialId !== 'string' || typeof credentialSchemaId !== 'string') {
|
|
171
|
+
throw new Error(`the verification session "${session.id}" carries no credential type`);
|
|
172
|
+
}
|
|
173
|
+
return { jsonSchemaCredentialId, credentialSchemaId: Number(credentialSchemaId) };
|
|
135
174
|
}
|
|
136
175
|
storedDecision(session) {
|
|
137
176
|
var _a;
|
|
138
|
-
if (session.state !== openid4vc_1.OpenId4VcVerificationSessionState.ResponseVerified)
|
|
139
|
-
return
|
|
140
|
-
}
|
|
177
|
+
if (session.state !== openid4vc_1.OpenId4VcVerificationSessionState.ResponseVerified)
|
|
178
|
+
return UNVERIFIED;
|
|
141
179
|
return (_a = session.metadata.get(OUTCOME_METADATA_KEY)) !== null && _a !== void 0 ? _a : undefined;
|
|
142
180
|
}
|
|
143
181
|
sessionRepository() {
|
|
@@ -161,6 +199,7 @@ let VerifierService = class VerifierService {
|
|
|
161
199
|
if (binding !== 'bound') {
|
|
162
200
|
throw new Error('OpenID4VC verifier certificate key is not bound to the agent DID authentication');
|
|
163
201
|
}
|
|
202
|
+
this.agent.config.setTrustedIssuersForVerification(presentedIssuer_1.trustedIssuersForPresentation);
|
|
164
203
|
await this.createOrUpdateVerifier();
|
|
165
204
|
this.signingCertificate = signingCertificate;
|
|
166
205
|
this.agent.config.logger.info(`[OpenID4VC] verifier signs with a ${signingCertificate.development ? 'development' : 'configured'} certificate${publishedMethodId ? `, published as ${publishedMethodId}` : ''}`);
|
|
@@ -219,7 +258,8 @@ exports.VerifierService = VerifierService = __decorate([
|
|
|
219
258
|
(0, common_1.Injectable)(),
|
|
220
259
|
__param(0, (0, common_1.Inject)('VSAGENT')),
|
|
221
260
|
__param(1, (0, common_1.Inject)(types_1.OPENID4VC_OPTIONS)),
|
|
222
|
-
|
|
261
|
+
__param(2, (0, common_1.Inject)(types_1.OPENID4VC_DID_TRUST_RESOLVER)),
|
|
262
|
+
__metadata("design:paramtypes", [Object, Object, Function])
|
|
223
263
|
], VerifierService);
|
|
224
264
|
function assertRequestedClaims(requestedClaims, configuredClaims) {
|
|
225
265
|
if (new Set(requestedClaims).size !== requestedClaims.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VerifierService.js","sourceRoot":"","sources":["../../src/services/VerifierService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VerifierService.js","sourceRoot":"","sources":["../../src/services/VerifierService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
1
|
import type { OpenId4VcCredentialConfiguration } from '../types';
|
|
2
2
|
import type { VsAgent } from '@verana-labs/vs-agent-sdk';
|
|
3
3
|
export declare function buildCredentialConfigurations(agent: VsAgent): Promise<OpenId4VcCredentialConfiguration[] | undefined>;
|
|
4
|
+
/**
|
|
5
|
+
* The credential type of one VTJSC, reached from its `jsonSchemaCredentialId` through the VTJSC
|
|
6
|
+
* link: the same configuration the issuers of the type derive, for a verifier that asks for it.
|
|
7
|
+
* Throws the `AnonCredsTrustError` of the link when the VTJSC cannot be read or binds to no
|
|
8
|
+
* `CredentialSchema` of this chain.
|
|
9
|
+
*/
|
|
10
|
+
export declare function resolveCredentialType(agent: VsAgent, jsonSchemaCredentialId: string): Promise<OpenId4VcCredentialConfiguration>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.buildCredentialConfigurations = buildCredentialConfigurations;
|
|
4
|
+
exports.resolveCredentialType = resolveCredentialType;
|
|
4
5
|
const config_1 = require("../config");
|
|
5
6
|
const vs_agent_sdk_1 = require("@verana-labs/vs-agent-sdk");
|
|
6
7
|
// `undefined` means the agent cannot derive the set at all, and the caller keeps the last known one.
|
|
@@ -31,6 +32,22 @@ async function buildCredentialConfigurations(agent) {
|
|
|
31
32
|
}
|
|
32
33
|
return configurations;
|
|
33
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* The credential type of one VTJSC, reached from its `jsonSchemaCredentialId` through the VTJSC
|
|
37
|
+
* link: the same configuration the issuers of the type derive, for a verifier that asks for it.
|
|
38
|
+
* Throws the `AnonCredsTrustError` of the link when the VTJSC cannot be read or binds to no
|
|
39
|
+
* `CredentialSchema` of this chain.
|
|
40
|
+
*/
|
|
41
|
+
async function resolveCredentialType(agent, jsonSchemaCredentialId) {
|
|
42
|
+
var _a;
|
|
43
|
+
const { credentialSchemaId } = await agent.anonCredsTrust.resolveCredentialSchemaLink(jsonSchemaCredentialId);
|
|
44
|
+
// the link names a schema of this chain, so the agent runs on one
|
|
45
|
+
const chainId = (_a = agent.veranaChain) === null || _a === void 0 ? void 0 : _a.getChainId;
|
|
46
|
+
if (!chainId) {
|
|
47
|
+
throw new vs_agent_sdk_1.AnonCredsTrustError(vs_agent_sdk_1.AnonCredsTrustErrorReason.Unavailable, `the agent runs on no chain, so it cannot read the CredentialSchema ${credentialSchemaId}`);
|
|
48
|
+
}
|
|
49
|
+
return await buildCredentialConfiguration(agent, agent.indexer, credentialSchemaId, chainId);
|
|
50
|
+
}
|
|
34
51
|
async function buildCredentialConfiguration(agent, reader, credentialSchemaId, chainId) {
|
|
35
52
|
const schema = await reader.getCredentialSchema(credentialSchemaId);
|
|
36
53
|
const ecosystem = await reader.getEcosystem(schema.ecosystem_id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentialConfigurationBuilder.js","sourceRoot":"","sources":["../../src/services/credentialConfigurationBuilder.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"credentialConfigurationBuilder.js","sourceRoot":"","sources":["../../src/services/credentialConfigurationBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,11 @@ exports.OPENID4VC_QUERY_LANGUAGES = void 0;
|
|
|
4
4
|
exports.presentationQueryFor = presentationQueryFor;
|
|
5
5
|
const PRESENTATION_ALGORITHMS = ['ES256'];
|
|
6
6
|
exports.OPENID4VC_QUERY_LANGUAGES = ['dcql', 'presentation_exchange'];
|
|
7
|
+
// DCQL restricts a credential query id to `[a-zA-Z0-9_-]`, which the `jsonSchemaCredentialId` URL is not;
|
|
8
|
+
// the schema number names the one credential of the request.
|
|
9
|
+
function requestedCredentialId(configuration) {
|
|
10
|
+
return `cs-${configuration.credentialSchemaId}`;
|
|
11
|
+
}
|
|
7
12
|
function presentationQueryFor(configuration, requestedClaims, queryLanguage) {
|
|
8
13
|
if (queryLanguage === 'presentation_exchange') {
|
|
9
14
|
return {
|
|
@@ -18,7 +23,7 @@ function presentationQueryFor(configuration, requestedClaims, queryLanguage) {
|
|
|
18
23
|
query: {
|
|
19
24
|
credentials: [
|
|
20
25
|
{
|
|
21
|
-
id: configuration
|
|
26
|
+
id: requestedCredentialId(configuration),
|
|
22
27
|
format: 'dc+sd-jwt',
|
|
23
28
|
meta: { vct_values: [configuration.vct] },
|
|
24
29
|
claims: requestedClaims.map(name => ({ path: [name] })),
|
|
@@ -33,7 +38,7 @@ function escapeForFilterPattern(value) {
|
|
|
33
38
|
}
|
|
34
39
|
function presentationDefinitionFor(configuration, requestedClaims) {
|
|
35
40
|
return {
|
|
36
|
-
id: `${configuration
|
|
41
|
+
id: `${requestedCredentialId(configuration)}-presentation-exchange`,
|
|
37
42
|
format: {
|
|
38
43
|
// vc+sd-jwt: Presentation Exchange has no dc+sd-jwt format key.
|
|
39
44
|
'vc+sd-jwt': {
|
|
@@ -43,7 +48,7 @@ function presentationDefinitionFor(configuration, requestedClaims) {
|
|
|
43
48
|
},
|
|
44
49
|
input_descriptors: [
|
|
45
50
|
{
|
|
46
|
-
id: configuration
|
|
51
|
+
id: requestedCredentialId(configuration),
|
|
47
52
|
constraints: {
|
|
48
53
|
// 'preferred': holders that can't enforce 'required' refuse it; the verifier re-checks the claims.
|
|
49
54
|
limit_disclosure: 'preferred',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presentationRequest.js","sourceRoot":"","sources":["../../src/services/presentationRequest.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"presentationRequest.js","sourceRoot":"","sources":["../../src/services/presentationRequest.ts"],"names":[],"mappings":";;;AAcA,oDA2BC;AAvCD,MAAM,uBAAuB,GAAG,CAAC,OAAO,CAAU,CAAA;AAErC,QAAA,yBAAyB,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAU,CAAA;AAInF,0GAA0G;AAC1G,6DAA6D;AAC7D,SAAS,qBAAqB,CAAC,aAA+C;IAC5E,OAAO,MAAM,aAAa,CAAC,kBAAkB,EAAE,CAAA;AACjD,CAAC;AAED,SAAgB,oBAAoB,CAClC,aAA+C,EAC/C,eAAyB,EACzB,aAAqC;IAErC,IAAI,aAAa,KAAK,uBAAuB,EAAE,CAAC;QAC9C,OAAO;YACL,kGAAkG;YAClG,aAAa;YACb,OAAO,EAAE,YAAqB;YAC9B,oBAAoB,EAAE,EAAE,UAAU,EAAE,yBAAyB,CAAC,aAAa,EAAE,eAAe,CAAC,EAAE;SAChG,CAAA;IACH,CAAC;IACD,OAAO;QACL,IAAI,EAAE;YACJ,KAAK,EAAE;gBACL,WAAW,EAAE;oBACX;wBACE,EAAE,EAAE,qBAAqB,CAAC,aAAa,CAAC;wBACxC,MAAM,EAAE,WAAoB;wBAC5B,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;wBACzC,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;qBACxD;iBACF;aACF;SACF;KACF,CAAA;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa;IAC3C,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAA;AACrD,CAAC;AAED,SAAS,yBAAyB,CAChC,aAA+C,EAC/C,eAAyB;IAEzB,OAAO;QACL,EAAE,EAAE,GAAG,qBAAqB,CAAC,aAAa,CAAC,wBAAwB;QACnE,MAAM,EAAE;YACN,gEAAgE;YAChE,WAAW,EAAE;gBACX,mBAAmB,EAAE,CAAC,GAAG,uBAAuB,CAAC;gBACjD,mBAAmB,EAAE,CAAC,GAAG,uBAAuB,CAAC;aAClD;SACF;QACD,iBAAiB,EAAE;YACjB;gBACE,EAAE,EAAE,qBAAqB,CAAC,aAAa,CAAC;gBACxC,WAAW,EAAE;oBACX,mGAAmG;oBACnG,gBAAgB,EAAE,WAAoB;oBACtC,MAAM,EAAE;wBACN;4BACE,IAAI,EAAE,CAAC,OAAO,CAAC;4BACf,gGAAgG;4BAChG,MAAM,EAAE;gCACN,IAAI,EAAE,QAAiB;gCACvB,KAAK,EAAE,aAAa,CAAC,GAAG;gCACxB,OAAO,EAAE,sBAAsB,CAAC,aAAa,CAAC,GAAG,CAAC;6BACnD;yBACF;wBACD,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;qBAC1D;iBACF;aACF;SACF;KACF,CAAA;AACH,CAAC"}
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import type { KeyBindingResult } from './types';
|
|
2
|
-
import type { BaseAgent, DidPurpose } from '@credo-ts/core';
|
|
2
|
+
import type { BaseAgent, DidDocument, DidPurpose } from '@credo-ts/core';
|
|
3
|
+
import { Kms } from '@credo-ts/core';
|
|
3
4
|
type BindingPurpose = Extract<DidPurpose, 'assertionMethod' | 'authentication'>;
|
|
4
5
|
export type DidResolverAgent = Pick<BaseAgent, 'dids'>;
|
|
5
6
|
export declare function verifyKeyBoundToDid(agent: DidResolverAgent, did: string | null, certificatePublicJwk: unknown, purposes: BindingPurpose[]): Promise<KeyBindingResult>;
|
|
6
7
|
export declare function findBoundVerificationMethodId(agent: DidResolverAgent, did: string | null, certificatePublicJwk: unknown, purposes: BindingPurpose[]): Promise<string | null>;
|
|
8
|
+
/** The id of the verification method under one of the purposes that carries the key, if any. */
|
|
9
|
+
export declare function boundVerificationMethod(didDocument: DidDocument, key: Kms.PublicJwk, purposes: BindingPurpose[]): string | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* Resolves a did:web or did:webvh, fresh, within 5 seconds, and only when the document carries the
|
|
12
|
+
* requested DID as its id ([VSA-VTI-FLOW-VERIFY-OID] step 3). Null when any of that fails.
|
|
13
|
+
*/
|
|
14
|
+
export declare function resolveDidDocument(agent: DidResolverAgent, did: string): Promise<DidDocument | null>;
|
|
7
15
|
export {};
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.verifyKeyBoundToDid = verifyKeyBoundToDid;
|
|
4
4
|
exports.findBoundVerificationMethodId = findBoundVerificationMethodId;
|
|
5
|
+
exports.boundVerificationMethod = boundVerificationMethod;
|
|
6
|
+
exports.resolveDidDocument = resolveDidDocument;
|
|
5
7
|
const core_1 = require("@credo-ts/core");
|
|
6
8
|
const vs_agent_sdk_1 = require("@verana-labs/vs-agent-sdk");
|
|
7
9
|
const DID_RESOLUTION_TIMEOUT_MS = 5000;
|
|
@@ -26,16 +28,24 @@ async function lookupBoundVerificationMethod(agent, did, certificatePublicJwk, p
|
|
|
26
28
|
const didDocument = await resolveDidDocument(agent, did);
|
|
27
29
|
if (!didDocument)
|
|
28
30
|
return { result: 'unresolvable' };
|
|
31
|
+
const verificationMethodId = boundVerificationMethod(didDocument, certificateKey, purposes);
|
|
32
|
+
return verificationMethodId ? { result: 'bound', verificationMethodId } : { result: 'unbound' };
|
|
33
|
+
}
|
|
34
|
+
/** The id of the verification method under one of the purposes that carries the key, if any. */
|
|
35
|
+
function boundVerificationMethod(didDocument, key, purposes) {
|
|
29
36
|
for (const verificationMethod of verificationMethodsForPurposes(didDocument, purposes)) {
|
|
30
37
|
try {
|
|
31
|
-
if (
|
|
32
|
-
return
|
|
33
|
-
}
|
|
38
|
+
if (key.equals((0, core_1.getPublicJwkFromVerificationMethod)(verificationMethod)))
|
|
39
|
+
return verificationMethod.id;
|
|
34
40
|
}
|
|
35
|
-
catch (
|
|
41
|
+
catch (_a) { }
|
|
36
42
|
}
|
|
37
|
-
return
|
|
43
|
+
return undefined;
|
|
38
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Resolves a did:web or did:webvh, fresh, within 5 seconds, and only when the document carries the
|
|
47
|
+
* requested DID as its id ([VSA-VTI-FLOW-VERIFY-OID] step 3). Null when any of that fails.
|
|
48
|
+
*/
|
|
39
49
|
async function resolveDidDocument(agent, did) {
|
|
40
50
|
var _a;
|
|
41
51
|
if (!isDidWebTarget(did))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyBinding.js","sourceRoot":"","sources":["../../src/trust/keyBinding.ts"],"names":[],"mappings":";;AAWA,kDAQC;AAED,sEAQC;
|
|
1
|
+
{"version":3,"file":"keyBinding.js","sourceRoot":"","sources":["../../src/trust/keyBinding.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { GetTrustedIssuersForVerification, VerificationSigner } from '@credo-ts/core';
|
|
2
|
+
import type { OpenId4VcVerificationTypes } from '@credo-ts/openid4vc';
|
|
3
|
+
/**
|
|
4
|
+
* What credo may trust as the signer of a presented credential, step 1 of
|
|
5
|
+
* [VSA-VTI-FLOW-VERIFY-OID]. The DID Document binds the issuer key (step 4), not a certificate
|
|
6
|
+
* chain, so the leaf certificate the wallet presented is the one anchor credo needs for `x5c`; a
|
|
7
|
+
* DID signer needs none. Every other verification falls through to the next layer.
|
|
8
|
+
*/
|
|
9
|
+
export declare const trustedIssuersForPresentation: GetTrustedIssuersForVerification<VerificationSigner, OpenId4VcVerificationTypes>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.trustedIssuersForPresentation = void 0;
|
|
4
|
+
const presentationVerification_1 = require("../services/presentationVerification");
|
|
5
|
+
/**
|
|
6
|
+
* What credo may trust as the signer of a presented credential, step 1 of
|
|
7
|
+
* [VSA-VTI-FLOW-VERIFY-OID]. The DID Document binds the issuer key (step 4), not a certificate
|
|
8
|
+
* chain, so the leaf certificate the wallet presented is the one anchor credo needs for `x5c`; a
|
|
9
|
+
* DID signer needs none. Every other verification falls through to the next layer.
|
|
10
|
+
*/
|
|
11
|
+
const trustedIssuersForPresentation = async (_agentContext, { signer, verification }) => {
|
|
12
|
+
if (verification.type !== 'openId4VpCredential')
|
|
13
|
+
return undefined;
|
|
14
|
+
// credo accepts an SD-JWT VC without `exp`; the spec does not
|
|
15
|
+
(0, presentationVerification_1.assertCredentialExpires)(verification.credential);
|
|
16
|
+
if (signer.method !== 'x509')
|
|
17
|
+
return undefined;
|
|
18
|
+
return {
|
|
19
|
+
trustedIssuers: [{ method: 'x509', issuance: [signer.certificateChain[0].toString('base64')] }],
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
exports.trustedIssuersForPresentation = trustedIssuersForPresentation;
|
|
23
|
+
//# sourceMappingURL=presentedIssuer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentedIssuer.js","sourceRoot":"","sources":["../../src/trust/presentedIssuer.ts"],"names":[],"mappings":";;;AAGA,mFAA8E;AAE9E;;;;;GAKG;AACI,MAAM,6BAA6B,GAGtC,KAAK,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE;IACpD,IAAI,YAAY,CAAC,IAAI,KAAK,qBAAqB;QAAE,OAAO,SAAS,CAAA;IACjE,8DAA8D;IAC9D,IAAA,kDAAuB,EAAC,YAAY,CAAC,UAAU,CAAC,CAAA;IAChD,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,SAAS,CAAA;IAC9C,OAAO;QACL,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;KAChG,CAAA;AACH,CAAC,CAAA;AAXY,QAAA,6BAA6B,iCAWzC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { PresentationDecision } from '../services/presentationVerification';
|
|
2
|
+
import type { DidResolverAgent } from './keyBinding';
|
|
3
|
+
import type { SdJwtVc } from '@credo-ts/core';
|
|
4
|
+
import type { DidTrustResolver } from '@verana-labs/vs-agent-sdk';
|
|
5
|
+
import { ParticipantRole } from '@verana-labs/vs-agent-sdk';
|
|
6
|
+
/** What the verification session stored when it created the request ([VSA-ADM-OID-PR-CREATE]). */
|
|
7
|
+
export interface PresentationTrustRequest {
|
|
8
|
+
jsonSchemaCredentialId: string;
|
|
9
|
+
credentialSchemaId: number;
|
|
10
|
+
}
|
|
11
|
+
export interface PresentationTrustDependencies {
|
|
12
|
+
agent: DidResolverAgent;
|
|
13
|
+
/** Reads the Type Metadata document at a `vct`, under the network boundary of step 3. */
|
|
14
|
+
readTypeMetadata: (vct: string) => Promise<Uint8Array>;
|
|
15
|
+
/** Step 7: the Verifiable Trust resolution of a DID, the one the agent applies to a DIDComm peer. */
|
|
16
|
+
resolveDidTrust: DidTrustResolver;
|
|
17
|
+
/** Step 7: the ISSUER `Participant` check of the agent; throws an `AnonCredsTrustError` otherwise. */
|
|
18
|
+
assertAuthorized: (options: {
|
|
19
|
+
did: string;
|
|
20
|
+
role: ParticipantRole;
|
|
21
|
+
credentialSchemaId: number;
|
|
22
|
+
}) => Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* [VSA-VTI-FLOW-VERIFY-OID] steps 2 to 8 on a credential that passed step 1: credo verified the
|
|
26
|
+
* response, the holder binding, the disclosures, the signature, the validity period and the `status`
|
|
27
|
+
* claim (step 6) before the session reached `ResponseVerified`. Every step fails closed. A step the
|
|
28
|
+
* agent cannot complete answers `RESOLVER_UNAVAILABLE`, which the caller never stores, so the next
|
|
29
|
+
* read retries it.
|
|
30
|
+
*/
|
|
31
|
+
export declare function decidePresentationTrust(credential: SdJwtVc, request: PresentationTrustRequest, dependencies: PresentationTrustDependencies): Promise<PresentationDecision>;
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.decidePresentationTrust = decidePresentationTrust;
|
|
4
|
+
const core_1 = require("@credo-ts/core");
|
|
5
|
+
const vs_agent_sdk_1 = require("@verana-labs/vs-agent-sdk");
|
|
6
|
+
const config_1 = require("../config");
|
|
7
|
+
const CertificateService_1 = require("../services/CertificateService");
|
|
8
|
+
const isRecord_1 = require("../utils/isRecord");
|
|
9
|
+
const keyBinding_1 = require("./keyBinding");
|
|
10
|
+
/**
|
|
11
|
+
* [VSA-VTI-FLOW-VERIFY-OID] steps 2 to 8 on a credential that passed step 1: credo verified the
|
|
12
|
+
* response, the holder binding, the disclosures, the signature, the validity period and the `status`
|
|
13
|
+
* claim (step 6) before the session reached `ResponseVerified`. Every step fails closed. A step the
|
|
14
|
+
* agent cannot complete answers `RESOLVER_UNAVAILABLE`, which the caller never stores, so the next
|
|
15
|
+
* read retries it.
|
|
16
|
+
*/
|
|
17
|
+
async function decidePresentationTrust(credential, request, dependencies) {
|
|
18
|
+
const evidence = {
|
|
19
|
+
did: null,
|
|
20
|
+
trustStatus: null,
|
|
21
|
+
jsonSchemaCredentialId: request.jsonSchemaCredentialId,
|
|
22
|
+
authorized: null,
|
|
23
|
+
queries: [],
|
|
24
|
+
};
|
|
25
|
+
const verdict = await runSteps(credential, request, dependencies, evidence);
|
|
26
|
+
return {
|
|
27
|
+
cryptographicVerified: true,
|
|
28
|
+
accepted: verdict === 'TRUSTED_AUTHORIZED',
|
|
29
|
+
trust: { verdict, evidence },
|
|
30
|
+
credential: presentedCredential(credential),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
class StepFailure extends Error {
|
|
34
|
+
constructor(verdict, note) {
|
|
35
|
+
super(note);
|
|
36
|
+
this.verdict = verdict;
|
|
37
|
+
this.name = 'StepFailure';
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async function runSteps(credential, request, dependencies, evidence) {
|
|
41
|
+
try {
|
|
42
|
+
const did = issuerDidOf(credential);
|
|
43
|
+
evidence.did = did;
|
|
44
|
+
await assertIssuerKeyBound(credential, did, dependencies, evidence);
|
|
45
|
+
await assertTypeMetadataBound(credential, request.jsonSchemaCredentialId, dependencies, evidence);
|
|
46
|
+
await assertIssuerTrusted(did, dependencies, evidence);
|
|
47
|
+
await assertIssuerAuthorized(did, request.credentialSchemaId, dependencies, evidence);
|
|
48
|
+
return 'TRUSTED_AUTHORIZED';
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
if (!(error instanceof StepFailure))
|
|
52
|
+
throw error;
|
|
53
|
+
evidence.note = error.message;
|
|
54
|
+
return error.verdict;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Step 2, [VT-CRED-SDJWT-6]: `iss` when it is a DID, else the URI SAN of the leaf of `x5c`.
|
|
58
|
+
function issuerDidOf(credential) {
|
|
59
|
+
var _a, _b, _c;
|
|
60
|
+
const issuer = credential.issuer;
|
|
61
|
+
if (issuer.method === 'did')
|
|
62
|
+
return (_b = (_a = (0, core_1.tryParseDid)(issuer.didUrl)) === null || _a === void 0 ? void 0 : _a.did) !== null && _b !== void 0 ? _b : fail('UNTRUSTED', 'the issuer DID URL is no DID');
|
|
63
|
+
const fromIss = typeof credential.payload.iss === 'string' ? (_c = (0, core_1.tryParseDid)(credential.payload.iss)) === null || _c === void 0 ? void 0 : _c.did : undefined;
|
|
64
|
+
if (fromIss)
|
|
65
|
+
return fromIss;
|
|
66
|
+
try {
|
|
67
|
+
return (0, CertificateService_1.didFromValidatedCertificate)(issuer.x5c[0]);
|
|
68
|
+
}
|
|
69
|
+
catch (_d) {
|
|
70
|
+
return fail('UNTRUSTED', 'the credential carries no DID in iss nor in the URI SAN of its leaf certificate');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Steps 3 and 4: a well-formed did:web or did:webvh, resolved under the network boundary, whose
|
|
74
|
+
// DID Document authorizes the issuer key under assertionMethod.
|
|
75
|
+
async function assertIssuerKeyBound(credential, did, dependencies, evidence) {
|
|
76
|
+
if (!isDidWeb(did))
|
|
77
|
+
fail('UNTRUSTED', `the issuer DID "${did}" is no did:web nor did:webvh`);
|
|
78
|
+
evidence.queries.push(`resolve ${did}`);
|
|
79
|
+
const didDocument = await (0, keyBinding_1.resolveDidDocument)(dependencies.agent, did);
|
|
80
|
+
if (!didDocument)
|
|
81
|
+
fail('RESOLVER_UNAVAILABLE', `the issuer DID "${did}" could not be resolved`);
|
|
82
|
+
const issuer = credential.issuer;
|
|
83
|
+
let issuerKey;
|
|
84
|
+
if (issuer.method === 'x5c') {
|
|
85
|
+
issuerKey = issuer.x5c[0].publicJwk;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
try {
|
|
89
|
+
issuerKey = (0, core_1.getPublicJwkFromVerificationMethod)(didDocument.dereferenceVerificationMethod(issuer.didUrl));
|
|
90
|
+
}
|
|
91
|
+
catch (_a) {
|
|
92
|
+
return fail('UNTRUSTED', `the issuer DID Document names no key at "${issuer.didUrl}"`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (!(0, keyBinding_1.boundVerificationMethod)(didDocument, issuerKey, ['assertionMethod'])) {
|
|
96
|
+
fail('UNTRUSTED', `the issuer DID Document does not authorize the signing key under assertionMethod`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Step 5, [VT-CRED-SDJWT-3] and [VT-CRED-SDJWT-4]: the Type Metadata document at `vct` hashes to
|
|
100
|
+
// `vct#integrity` and names the VTJSC of the request.
|
|
101
|
+
async function assertTypeMetadataBound(credential, jsonSchemaCredentialId, dependencies, evidence) {
|
|
102
|
+
const { vct, 'vct#integrity': integrity } = credential.payload;
|
|
103
|
+
if (typeof vct !== 'string')
|
|
104
|
+
fail('UNTRUSTED', 'the credential carries no vct');
|
|
105
|
+
if (typeof integrity !== 'string')
|
|
106
|
+
fail('UNTRUSTED', 'the credential carries no vct#integrity');
|
|
107
|
+
evidence.queries.push(`GET ${vct}`);
|
|
108
|
+
let document;
|
|
109
|
+
try {
|
|
110
|
+
document = await dependencies.readTypeMetadata(vct);
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
return fail('RESOLVER_UNAVAILABLE', `the Type Metadata at "${vct}" could not be read: ${messageOf(error)}`);
|
|
114
|
+
}
|
|
115
|
+
if ((0, vs_agent_sdk_1.digestOfBytes)(document) !== integrity) {
|
|
116
|
+
fail('UNTRUSTED', `the Type Metadata at "${vct}" does not hash to the vct#integrity of the credential`);
|
|
117
|
+
}
|
|
118
|
+
const related = relatedJsonSchemaCredentialIdOf(document);
|
|
119
|
+
if (related !== jsonSchemaCredentialId) {
|
|
120
|
+
fail('UNTRUSTED', `the Type Metadata at "${vct}" names the VTJSC "${related}", not "${jsonSchemaCredentialId}"`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Step 7, first half: the Verifiable Trust resolution answers TRUSTED for the issuer DID.
|
|
124
|
+
async function assertIssuerTrusted(did, dependencies, evidence) {
|
|
125
|
+
evidence.queries.push(`resolveDID ${did}`);
|
|
126
|
+
let trusted;
|
|
127
|
+
try {
|
|
128
|
+
trusted = (await dependencies.resolveDidTrust(did)).trusted;
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
return fail('RESOLVER_UNAVAILABLE', `the trust resolution of "${did}" failed: ${messageOf(error)}`);
|
|
132
|
+
}
|
|
133
|
+
evidence.trustStatus = trusted ? 'TRUSTED' : 'UNTRUSTED';
|
|
134
|
+
if (!trusted)
|
|
135
|
+
fail('UNTRUSTED', `the trust resolution of "${did}" answered UNTRUSTED`);
|
|
136
|
+
}
|
|
137
|
+
// Step 7, second half: an active ISSUER Participant of the issuer DID for the CredentialSchema.
|
|
138
|
+
async function assertIssuerAuthorized(did, credentialSchemaId, dependencies, evidence) {
|
|
139
|
+
evidence.queries.push(`listParticipants did=${did} role=ISSUER schema_id=${credentialSchemaId}`);
|
|
140
|
+
try {
|
|
141
|
+
await dependencies.assertAuthorized({ did, role: vs_agent_sdk_1.ParticipantRole.Issuer, credentialSchemaId });
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
if (!(error instanceof vs_agent_sdk_1.AnonCredsTrustError))
|
|
145
|
+
throw error;
|
|
146
|
+
if (error.reason === vs_agent_sdk_1.AnonCredsTrustErrorReason.NotAuthorized) {
|
|
147
|
+
evidence.authorized = false;
|
|
148
|
+
fail('TRUSTED_NOT_AUTHORIZED', error.message);
|
|
149
|
+
}
|
|
150
|
+
fail('RESOLVER_UNAVAILABLE', error.message);
|
|
151
|
+
}
|
|
152
|
+
evidence.authorized = true;
|
|
153
|
+
}
|
|
154
|
+
function presentedCredential(credential) {
|
|
155
|
+
const disclosedClaims = Object.fromEntries(Object.entries(credential.prettyClaims).filter(([name]) => !(0, config_1.isReservedClaimName)(name)));
|
|
156
|
+
return { vct: String(credential.payload.vct), disclosedClaims };
|
|
157
|
+
}
|
|
158
|
+
function isDidWeb(did) {
|
|
159
|
+
try {
|
|
160
|
+
return (0, vs_agent_sdk_1.getDidWebHttpsBaseUrl)(did) !== undefined;
|
|
161
|
+
}
|
|
162
|
+
catch (_a) {
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
function relatedJsonSchemaCredentialIdOf(document) {
|
|
167
|
+
try {
|
|
168
|
+
const parsed = JSON.parse(Buffer.from(document).toString('utf8'));
|
|
169
|
+
return (0, isRecord_1.isRecord)(parsed) && typeof parsed.relatedJsonSchemaCredentialId === 'string'
|
|
170
|
+
? parsed.relatedJsonSchemaCredentialId
|
|
171
|
+
: undefined;
|
|
172
|
+
}
|
|
173
|
+
catch (_a) {
|
|
174
|
+
return undefined;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
function messageOf(error) {
|
|
178
|
+
return error instanceof Error ? error.message : String(error);
|
|
179
|
+
}
|
|
180
|
+
function fail(verdict, note) {
|
|
181
|
+
throw new StepFailure(verdict, note);
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=trustDecision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trustDecision.js","sourceRoot":"","sources":["../../src/trust/trustDecision.ts"],"names":[],"mappings":"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"}
|
package/build/trust/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare const TRUST_VERDICT_NAMES: readonly ["TRUSTED_AUTHORIZED", "TRUSTED_NOT_AUTHORIZED", "UNTRUSTED", "RESOLVER_UNAVAILABLE"];
|
|
2
2
|
export type TrustVerdictName = (typeof TRUST_VERDICT_NAMES)[number];
|
|
3
|
-
export declare const VERANA_TRUST_STATUSES: readonly ["TRUSTED", "
|
|
3
|
+
export declare const VERANA_TRUST_STATUSES: readonly ["TRUSTED", "UNTRUSTED"];
|
|
4
4
|
export type VeranaTrustStatus = (typeof VERANA_TRUST_STATUSES)[number];
|
|
5
5
|
export type KeyBindingResult = 'bound' | 'unbound' | 'unresolvable';
|
|
6
6
|
export interface TrustEvidence {
|
package/build/trust/types.js
CHANGED
package/build/trust/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/trust/types.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG;IACjC,oBAAoB;IACpB,wBAAwB;IACxB,WAAW;IACX,sBAAsB;CACd,CAAA;AAIG,QAAA,qBAAqB,GAAG,CAAC,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/trust/types.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG;IACjC,oBAAoB;IACpB,wBAAwB;IACxB,WAAW;IACX,sBAAsB;CACd,CAAA;AAIG,QAAA,qBAAqB,GAAG,CAAC,SAAS,EAAE,WAAW,CAAU,CAAA"}
|
package/build/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { OpenId4VcIssuerRequestMapper } from './sdk/setupOpenId4Vc';
|
|
2
2
|
import type { Kms, X509Module } from '@credo-ts/core';
|
|
3
3
|
import type { OpenId4VcModule } from '@credo-ts/openid4vc';
|
|
4
|
-
import type { BaseAgentModules, VsAgent } from '@verana-labs/vs-agent-sdk';
|
|
4
|
+
import type { BaseAgentModules, VerifiablePublicRegistries, VsAgent } from '@verana-labs/vs-agent-sdk';
|
|
5
5
|
export type OpenId4VcVsAgentModules = BaseAgentModules & {
|
|
6
6
|
openId4Vc: OpenId4VcModule<null, null>;
|
|
7
7
|
x509: X509Module;
|
|
@@ -38,6 +38,7 @@ export interface OpenId4VcConfigurationFile {
|
|
|
38
38
|
}
|
|
39
39
|
export declare const OPENID4VC_OPTIONS = "OPENID4VC_OPTIONS";
|
|
40
40
|
export declare const OPENID4VC_ISSUER_SINK = "OPENID4VC_ISSUER_SINK";
|
|
41
|
+
export declare const OPENID4VC_DID_TRUST_RESOLVER = "OPENID4VC_DID_TRUST_RESOLVER";
|
|
41
42
|
export interface OpenId4VcIssuerRuntime extends OpenId4VcIssuerRequestMapper {
|
|
42
43
|
refreshCredentialConfigurations(updatedCredentialSchemaId?: number): Promise<void>;
|
|
43
44
|
}
|
|
@@ -45,4 +46,6 @@ export type OpenId4VcIssuerSink = (service: OpenId4VcIssuerRuntime) => void;
|
|
|
45
46
|
export interface OpenId4VcPluginOptions extends OpenId4VcConfigurationFile {
|
|
46
47
|
publicApiBaseUrl: string;
|
|
47
48
|
credentialConfigurations: OpenId4VcCredentialConfiguration[];
|
|
49
|
+
/** The VPR the verifier resolves a presented issuer against; absent when the agent has no indexer. */
|
|
50
|
+
verifiablePublicRegistries?: VerifiablePublicRegistries;
|
|
48
51
|
}
|
package/build/types.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OPENID4VC_ISSUER_SINK = exports.OPENID4VC_OPTIONS = void 0;
|
|
3
|
+
exports.OPENID4VC_DID_TRUST_RESOLVER = exports.OPENID4VC_ISSUER_SINK = exports.OPENID4VC_OPTIONS = void 0;
|
|
4
4
|
exports.OPENID4VC_OPTIONS = 'OPENID4VC_OPTIONS';
|
|
5
5
|
exports.OPENID4VC_ISSUER_SINK = 'OPENID4VC_ISSUER_SINK';
|
|
6
|
+
exports.OPENID4VC_DID_TRUST_RESOLVER = 'OPENID4VC_DID_TRUST_RESOLVER';
|
|
6
7
|
//# sourceMappingURL=types.js.map
|
package/build/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AA6Ca,QAAA,iBAAiB,GAAG,mBAAmB,CAAA;AACvC,QAAA,qBAAqB,GAAG,uBAAuB,CAAA"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AA6Ca,QAAA,iBAAiB,GAAG,mBAAmB,CAAA;AACvC,QAAA,qBAAqB,GAAG,uBAAuB,CAAA;AAC/C,QAAA,4BAA4B,GAAG,8BAA8B,CAAA"}
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"default": "./build/index.js"
|
|
10
10
|
}
|
|
11
11
|
},
|
|
12
|
-
"version": "2.0.0-
|
|
12
|
+
"version": "2.0.0-pr766.1",
|
|
13
13
|
"repository": {
|
|
14
14
|
"type": "git",
|
|
15
15
|
"url": "https://github.com/verana-labs/vs-agent"
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"class-transformer": "0.5.1",
|
|
31
31
|
"class-validator": "0.14.1",
|
|
32
32
|
"express": "^4.18.1",
|
|
33
|
-
"@verana-labs/vs-agent-sdk": "2.0.0-
|
|
33
|
+
"@verana-labs/vs-agent-sdk": "2.0.0-pr766.1"
|
|
34
34
|
},
|
|
35
35
|
"peerDependencies": {
|
|
36
36
|
"@credo-ts/core": "0.7.1-pr-2704-20260909134930"
|