@verana-labs/vs-agent-plugin-openid4vc 2.0.0-dev.83 → 2.0.0-dev.84

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.
Files changed (38) hide show
  1. package/README.md +44 -22
  2. package/build/index.d.ts +1 -1
  3. package/build/index.js +2 -1
  4. package/build/index.js.map +1 -1
  5. package/build/nestjs/OpenId4VcPlugin.js +7 -0
  6. package/build/nestjs/OpenId4VcPlugin.js.map +1 -1
  7. package/build/nestjs/dto/presentation.dto.d.ts +1 -0
  8. package/build/nestjs/dto/presentation.dto.js +14 -2
  9. package/build/nestjs/dto/presentation.dto.js.map +1 -1
  10. package/build/sdk/setupOpenId4Vc.js +1 -8
  11. package/build/sdk/setupOpenId4Vc.js.map +1 -1
  12. package/build/services/IssuerService.d.ts +18 -0
  13. package/build/services/IssuerService.js +64 -2
  14. package/build/services/IssuerService.js.map +1 -1
  15. package/build/services/VerifierService.d.ts +5 -1
  16. package/build/services/VerifierService.js +73 -33
  17. package/build/services/VerifierService.js.map +1 -1
  18. package/build/services/credentialConfigurationBuilder.d.ts +7 -0
  19. package/build/services/credentialConfigurationBuilder.js +19 -12
  20. package/build/services/credentialConfigurationBuilder.js.map +1 -1
  21. package/build/services/presentationRequest.js +8 -3
  22. package/build/services/presentationRequest.js.map +1 -1
  23. package/build/trust/keyBinding.d.ts +13 -1
  24. package/build/trust/keyBinding.js +25 -13
  25. package/build/trust/keyBinding.js.map +1 -1
  26. package/build/trust/presentedIssuer.d.ts +9 -0
  27. package/build/trust/presentedIssuer.js +23 -0
  28. package/build/trust/presentedIssuer.js.map +1 -0
  29. package/build/trust/trustDecision.d.ts +31 -0
  30. package/build/trust/trustDecision.js +204 -0
  31. package/build/trust/trustDecision.js.map +1 -0
  32. package/build/trust/types.d.ts +3 -1
  33. package/build/trust/types.js +1 -1
  34. package/build/trust/types.js.map +1 -1
  35. package/build/types.d.ts +4 -1
  36. package/build/types.js +2 -1
  37. package/build/types.js.map +1 -1
  38. package/package.json +2 -2
@@ -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 UNDECIDED_TRUST_DECISION = {
34
- cryptographicVerified: true,
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
- const configuration = (0, config_1.findCredentialConfiguration)(this.options, jsonSchemaCredentialId);
67
- if (!configuration) {
68
- throw new vs_agent_sdk_1.AdminApiError(vs_agent_sdk_1.AdminApiErrorCode.UnknownId, NOT_FOUND, `no credential type with id "${jsonSchemaCredentialId}"`);
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, (_a = this.storedDecision(session)) !== null && _a !== void 0 ? _a : UNDECIDED_TRUST_DECISION);
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 { jsonSchemaCredentialId, requestedClaims } = this.storedRequest(session);
129
- return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ id: session.id }, (jsonSchemaCredentialId ? { jsonSchemaCredentialId } : {})), (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);
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 requestedClaims = session.getTag(REQUESTED_CLAIMS_TAG);
134
- return Object.assign(Object.assign({}, (typeof jsonSchemaCredentialId === 'string' ? { jsonSchemaCredentialId } : {})), (Array.isArray(requestedClaims) ? { requestedClaims } : {}));
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 { cryptographicVerified: false, accepted: false };
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
- __metadata("design:paramtypes", [Object, Object])
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);
@@ -39,7 +56,7 @@ async function buildCredentialConfiguration(agent, reader, credentialSchemaId, c
39
56
  throw new Error(`the Ecosystem ${schema.ecosystem_id} maps its DID to no https base url`);
40
57
  }
41
58
  const jsonSchemaCredentialId = await (0, vs_agent_sdk_1.resolveJsonSchemaCredentialId)(agent, reader, credentialSchemaId, chainId);
42
- const { title, attrNames } = (0, vs_agent_sdk_1.readJsonSchema)(schema.json_schema);
59
+ const { title, description, attrNames } = (0, vs_agent_sdk_1.readJsonSchema)(schema.json_schema);
43
60
  const envelope = attrNames.filter(isEnvelopeClaim);
44
61
  if (envelope.length > 0) {
45
62
  agent.config.logger.warn(`[OpenID4VC] the CredentialSchema ${credentialSchemaId} declares ${envelope
@@ -47,17 +64,7 @@ async function buildCredentialConfiguration(agent, reader, credentialSchemaId, c
47
64
  .join(', ')}, which the credential envelope carries, so its type offers no such claim`);
48
65
  }
49
66
  const claims = attrNames.filter(claim => !isEnvelopeClaim(claim));
50
- return {
51
- id: jsonSchemaCredentialId,
52
- format: 'dc+sd-jwt',
53
- vct: (0, vs_agent_sdk_1.typeMetadataUrl)(baseUrl, credentialSchemaId),
54
- name: title !== null && title !== void 0 ? title : `vpr:verana:${chainId}:cs:${credentialSchemaId}`,
55
- vtjscId: jsonSchemaCredentialId,
56
- credentialSchemaId,
57
- jsonSchema: schema.json_schema,
58
- claims,
59
- disclosureFrame: claims,
60
- };
67
+ return Object.assign(Object.assign({ id: jsonSchemaCredentialId, format: 'dc+sd-jwt', vct: (0, vs_agent_sdk_1.typeMetadataUrl)(baseUrl, credentialSchemaId), name: title !== null && title !== void 0 ? title : `vpr:verana:${chainId}:cs:${credentialSchemaId}` }, (typeof description === 'string' && description.trim() ? { description: description.trim() } : {})), { vtjscId: jsonSchemaCredentialId, credentialSchemaId, jsonSchema: schema.json_schema, claims, disclosureFrame: claims });
61
68
  }
62
69
  // `id` joins the reserved names: SD-JWT VC binds the holder through `cnf`, so an `id` the caller
63
70
  // supplies would assert a subject the issuer never checked.
@@ -1 +1 @@
1
- {"version":3,"file":"credentialConfigurationBuilder.js","sourceRoot":"","sources":["../../src/services/credentialConfigurationBuilder.ts"],"names":[],"mappings":"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"}
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.id,
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.id}-presentation-exchange`,
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.id,
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":";;;AAQA,oDA2BC;AAjCD,MAAM,uBAAuB,GAAG,CAAC,OAAO,CAAU,CAAA;AAErC,QAAA,yBAAyB,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAU,CAAA;AAInF,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,aAAa,CAAC,EAAE;wBACpB,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,aAAa,CAAC,EAAE,wBAAwB;QAC/C,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,aAAa,CAAC,EAAE;gBACpB,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
+ {"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,19 @@
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
+ /** `unresolvable`: no DID Document within the bound; `other-id`: a document with another `id`. */
11
+ export type DidDocumentFailure = 'unresolvable' | 'other-id';
12
+ /**
13
+ * Resolves a did:web or did:webvh, fresh, within 5 seconds, and only when the document carries the
14
+ * requested DID as its id ([VSA-VTI-FLOW-VERIFY-OID] step 3).
15
+ */
16
+ export declare function resolveDidDocument(agent: DidResolverAgent, did: string): Promise<DidDocument | DidDocumentFailure>;
17
+ /** Rejects with `message` when `operation` does not settle within `timeoutMs`. */
18
+ export declare function withTimeout<T>(operation: Promise<T>, timeoutMs: number, message: string): Promise<T>;
7
19
  export {};
@@ -2,6 +2,9 @@
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;
7
+ exports.withTimeout = withTimeout;
5
8
  const core_1 = require("@credo-ts/core");
6
9
  const vs_agent_sdk_1 = require("@verana-labs/vs-agent-sdk");
7
10
  const DID_RESOLUTION_TIMEOUT_MS = 5000;
@@ -24,32 +27,40 @@ async function lookupBoundVerificationMethod(agent, did, certificatePublicJwk, p
24
27
  return { result: 'unbound' };
25
28
  }
26
29
  const didDocument = await resolveDidDocument(agent, did);
27
- if (!didDocument)
30
+ if (typeof didDocument === 'string')
28
31
  return { result: 'unresolvable' };
32
+ const verificationMethodId = boundVerificationMethod(didDocument, certificateKey, purposes);
33
+ return verificationMethodId ? { result: 'bound', verificationMethodId } : { result: 'unbound' };
34
+ }
35
+ /** The id of the verification method under one of the purposes that carries the key, if any. */
36
+ function boundVerificationMethod(didDocument, key, purposes) {
29
37
  for (const verificationMethod of verificationMethodsForPurposes(didDocument, purposes)) {
30
38
  try {
31
- if (certificateKey.equals((0, core_1.getPublicJwkFromVerificationMethod)(verificationMethod))) {
32
- return { result: 'bound', verificationMethodId: verificationMethod.id };
33
- }
39
+ if (key.equals((0, core_1.getPublicJwkFromVerificationMethod)(verificationMethod)))
40
+ return verificationMethod.id;
34
41
  }
35
- catch (_b) { }
42
+ catch (_a) { }
36
43
  }
37
- return { result: 'unbound' };
44
+ return undefined;
38
45
  }
46
+ /**
47
+ * Resolves a did:web or did:webvh, fresh, within 5 seconds, and only when the document carries the
48
+ * requested DID as its id ([VSA-VTI-FLOW-VERIFY-OID] step 3).
49
+ */
39
50
  async function resolveDidDocument(agent, did) {
40
51
  var _a;
41
52
  if (!isDidWebTarget(did))
42
- return null;
53
+ return 'unresolvable';
43
54
  try {
44
- const resolution = await withTimeout(agent.dids.resolve(did, { useCache: false, persistInCache: false }), DID_RESOLUTION_TIMEOUT_MS);
55
+ const resolution = await withTimeout(agent.dids.resolve(did, { useCache: false, persistInCache: false }), DID_RESOLUTION_TIMEOUT_MS, 'DID resolution timed out');
45
56
  if (((_a = resolution.didResolutionMetadata) === null || _a === void 0 ? void 0 : _a.error) || !resolution.didDocument)
46
- return null;
57
+ return 'unresolvable';
47
58
  if (resolution.didDocument.id !== did)
48
- return null;
59
+ return 'other-id';
49
60
  return resolution.didDocument;
50
61
  }
51
62
  catch (_b) {
52
- return null;
63
+ return 'unresolvable';
53
64
  }
54
65
  }
55
66
  function* verificationMethodsForPurposes(didDocument, purposes) {
@@ -76,10 +87,11 @@ function isDidWebTarget(did) {
76
87
  return false;
77
88
  }
78
89
  }
79
- async function withTimeout(operation, timeoutMs) {
90
+ /** Rejects with `message` when `operation` does not settle within `timeoutMs`. */
91
+ async function withTimeout(operation, timeoutMs, message) {
80
92
  let timeout;
81
93
  const timeoutPromise = new Promise((_resolve, reject) => {
82
- timeout = setTimeout(() => reject(new Error('DID resolution timed out')), timeoutMs);
94
+ timeout = setTimeout(() => reject(new Error(message)), timeoutMs);
83
95
  });
84
96
  try {
85
97
  return await Promise.race([operation, timeoutPromise]);
@@ -1 +1 @@
1
- {"version":3,"file":"keyBinding.js","sourceRoot":"","sources":["../../src/trust/keyBinding.ts"],"names":[],"mappings":"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"}
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>;