@verana-labs/vs-agent-plugin-openid4vc 2.0.0-dev.82 → 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.
- package/README.md +44 -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.d.ts +1 -0
- package/build/nestjs/dto/presentation.dto.js +14 -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/IssuerService.d.ts +18 -0
- package/build/services/IssuerService.js +64 -2
- package/build/services/IssuerService.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 +19 -12
- 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 +13 -1
- package/build/trust/keyBinding.js +25 -13
- 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 +204 -0
- package/build/trust/trustDecision.js.map +1 -0
- package/build/trust/types.d.ts +3 -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
|
@@ -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":";;;;;;;;;;;;;;;AAMA,yCAAiE;AACjE,2CAAmD;AACnD,mDAG4B;AAC5B,4DAMkC;AAElC,sCAAkD;AAClD,oDAAwF;AACxF,8DAAwE;AACxE,0DAA+F;AAC/F,oCAA0E;AAC1E,4DAAwD;AAExD,6DAQ6B;AAC7B,qFAAwE;AACxE,+DAAyF;AAyB5E,QAAA,yBAAyB,GAAG,CAAC,KAAK,EAAE,KAAK,CAAU,CAAA;AAWhE,MAAM,WAAW,GAAG,GAAG,CAAA;AACvB,MAAM,SAAS,GAAG,GAAG,CAAA;AACrB,MAAM,QAAQ,GAAG,GAAG,CAAA;AAEpB,MAAM,6BAA6B,GAAG,wBAAwB,CAAA;AAC9D,MAAM,wBAAwB,GAAG,oBAAoB,CAAA;AACrD,MAAM,oBAAoB,GAAG,iBAAiB,CAAA;AAC9C,MAAM,oBAAoB,GAAG,+BAA+B,CAAA;AAE5D,MAAM,UAAU,GAAyB,EAAE,qBAAqB,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;AAC1F,MAAM,SAAS,GAAyB,EAAE,qBAAqB,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;AAajF,IAAM,eAAe,GAArB,MAAM,eAAe;IAI1B,YACsC,KAAqB,EACb,OAA+B,EACpB,eAAiC;QAFpD,UAAK,GAAL,KAAK,CAAgB;QACb,YAAO,GAAP,OAAO,CAAwB;QACpB,oBAAe,GAAf,eAAe,CAAkB;IACvF,CAAC;IAEG,KAAK,CAAC,YAAY;QACvB,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAA;IAChC,CAAC;IAEM,iBAAiB;;QACtB,MAAA,IAAI,CAAC,cAAc,oCAAnB,IAAI,CAAC,cAAc,GAAK,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACtD,IAAI,CAAC,cAAc,GAAG,SAAS,CAAA;YAC/B,MAAM,KAAK,CAAA;QACb,CAAC,CAAC,EAAA;QACF,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,EACzB,sBAAsB,EACtB,eAAe,EACf,aAAa,GAAG,MAAM,EACtB,aAAa,GAC6B;QAC1C,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAE9B,IAAI,aAA+C,CAAA;QACnD,IAAI,CAAC;YACH,aAAa,GAAG,MAAM,IAAA,sDAAqB,EAAC,IAAI,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAA;QACjF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAA,iCAAkB,EAAC,KAAK,EAAE,OAAO,EAAE,gCAAiB,CAAC,SAAS,CAAC,CAAA;QACvE,CAAC;QAED,MAAM,MAAM,GAAG,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,aAAa,CAAC,MAAM,CAAA;QACtD,qBAAqB,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;QAEnD,+FAA+F;QAC/F,6BAA6B;QAC7B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,sBAAsB,CAAC;gBACrD,IAAI,EAAE,8BAAe,CAAC,QAAQ;gBAC9B,kBAAkB,EAAE,aAAa,CAAC,kBAAkB;aACrD,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAA,iCAAkB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAC1C,CAAC;QAED,MAAM,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,0BAA0B,iBAErG,UAAU,EAAE,+BAAsB,EAClC,aAAa,EAAE,MAAM,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;YAC3D,mGAAmG;YACnG,YAAY,EAAE,aAAa,KAAK,uBAAuB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,IACxF,IAAA,0CAAoB,EAAC,aAAa,EAAE,MAAM,EAAE,aAAa,CAAC,EAEhE,CAAA;QAED,mBAAmB,CAAC,MAAM,CAAC,6BAA6B,EAAE,sBAAsB,CAAC,CAAA;QACjF,mBAAmB,CAAC,MAAM,CAAC,wBAAwB,EAAE,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAA;QAC9F,mBAAmB,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAA;QACxD,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAA;QAE9E,OAAO;YACL,oBAAoB;YACpB,qBAAqB,EAAE,mBAAmB,CAAC,EAAE;SAC9C,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,kBAAkB;QAC7B,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAC9B,OAAO,IAAA,2CAAsB,EAAC,UAAU,EAAE,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAA;IAC5E,CAAC;IAEM,KAAK,CAAC,sBAAsB,CAAC,EAAU;QAC5C,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAC9B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;QAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;IAC5D,CAAC;IAED,6EAA6E;IACtE,KAAK,CAAC,wBAAwB,CACnC,UAA+C,EAAE;QAEjD,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAC9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,+BAA+B,CAAC;YACxE,UAAU,EAAE,+BAAsB;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,CAAC,6BAA6B,CAAC,EAAE,OAAO,CAAC,sBAAsB;SAChE,CAAC,CAAA;QACF,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,WAAC,OAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,mCAAI,SAAS,CAAC,CAAA,EAAA,CAAC,CAAA;IACpG,CAAC;IAEM,KAAK,CAAC,yBAAyB,CAAC,EAAU;QAC/C,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAC9B,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;QAC/B,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAA;IAC5D,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,EAAU;QACvC,IAAI,OAA2C,CAAA;QAC/C,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAA;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,0BAAmB,EAAE,CAAC;gBACzC,MAAM,IAAI,4BAAa,CAAC,gCAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,4BAA4B,EAAE,GAAG,CAAC,CAAA;YACpG,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,KAAK,+BAAsB,EAAE,CAAC;YAClD,MAAM,IAAI,4BAAa,CAAC,gCAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,4BAA4B,EAAE,GAAG,CAAC,CAAA;QACpG,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,mGAAmG;IACnG,8FAA8F;IACtF,KAAK,CAAC,MAAM,CAAC,OAA2C;;QAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAC3C,IAAI,MAAM;YAAE,OAAO,MAAM,CAAA;QAEzB,MAAM,QAAQ,GAAG,MAAM,IAAA,uCAAuB,EAC5C,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EACvC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAC3B;YACE,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,gBAAgB,EAAE,GAAG,CAAC,EAAE,CAAC,IAAA,gCAAiB,EAAC,GAAG,CAAC;YAC/C,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,gBAAgB,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC;SACjF,CACF,CAAA;QACD,IAAI,CAAA,MAAA,QAAQ,CAAC,KAAK,0CAAE,OAAO,MAAK,sBAAsB,EAAE,CAAC;YACvD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAA;YACpD,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACpE,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,OAA2C;;QAC3E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,gCAAgC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACtF,MAAM,aAAa,GAAG;YACpB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAA,MAAA,QAAQ,CAAC,IAAI,0CAAE,aAAa,mCAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YAC3D,GAAG,CAAC,MAAA,MAAA,QAAQ,CAAC,oBAAoB,0CAAE,aAAa,mCAAI,EAAE,CAAC;SACxD,CAAA;QACD,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CACnC,CAAC,YAAY,EAA2B,EAAE,CAAC,YAAY,CAAC,WAAW,KAAK,kBAAW,CAAC,OAAO,CAC5F,CAAA;QACD,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,CAAC,EAAE,wBAAwB,CAAC,CAAA;QACjG,OAAO,UAAU,CAAA;IACnB,CAAC;IAEO,SAAS,CACf,OAA2C,EAC3C,QAA8B;;QAE9B,MAAM,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAA;QAC5E,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;QAC5D,+EACE,EAAE,EAAE,OAAO,CAAC,EAAE,IACX,CAAC,OAAO,sBAAsB,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAC9E,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAC9D,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,SAAS,EAAE,OAAO,CAAC,SAAS,EAC5B,SAAS,EAAE,MAAA,OAAO,CAAC,SAAS,mCAAI,OAAO,CAAC,SAAS,KAC9C,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GACpE,QAAQ,EACZ;IACH,CAAC;IAEO,aAAa,CAAC,OAA2C;QAC/D,MAAM,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAA;QAC5E,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAA;QACnE,IAAI,OAAO,sBAAsB,KAAK,QAAQ,IAAI,OAAO,kBAAkB,KAAK,QAAQ,EAAE,CAAC;YACzF,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,CAAC,EAAE,8BAA8B,CAAC,CAAA;QACxF,CAAC;QACD,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAA;IACnF,CAAC;IAEO,cAAc,CAAC,OAA2C;;QAChE,IAAI,OAAO,CAAC,KAAK,KAAK,6CAAiC,CAAC,gBAAgB;YAAE,OAAO,UAAU,CAAA;QAC3F,OAAO,MAAA,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAuB,oBAAoB,CAAC,mCAAI,SAAS,CAAA;IACtF,CAAC;IAEO,iBAAiB;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,kDAAsC,CAAC,CAAA;IAC7F,CAAC;IAEO,KAAK,CAAC,UAAU;;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAA;QAC/B,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;QAEzF,MAAM,kBAAkB,GAAG,MAAM,IAAA,2CAAsB,EACrD,IAAI,CAAC,KAAK,EACV,MAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,0CAAE,OAAO,EAC9B,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAC7B,UAAU,CACX,CAAA;QACD,MAAM,cAAc,GAAG,IAAA,gDAA2B,EAAC,kBAAkB,CAAC,WAAW,CAAC,CAAA;QAClF,IAAI,cAAc,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAA;QACpF,CAAC;QACD,MAAM,iBAAiB,GAAG,MAAM,IAAA,iDAA4B,EAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,EAAE,UAAU,CAAC,CAAA;QAExG,MAAM,OAAO,GAAG,MAAM,IAAA,gCAAmB,EACvC,IAAI,CAAC,KAAK,EACV,QAAQ,EACR,kBAAkB,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,EACjD,CAAC,gBAAgB,CAAC,CACnB,CAAA;QACD,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAA;QAChG,CAAC;QACD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAA;QACpG,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,+CAA6B,CAAC,CAAA;QACjF,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAA;QACnC,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAA;QAC5C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAC3B,qCAAqC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,eAAe,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAClL,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,sBAAsB;QAClC,MAAM,OAAO,GAAG,IAAA,+BAAc,EAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC1C,MAAM,QAAQ,mBACZ,UAAU,EAAE,+BAAsB,IAC/B,CAAC,OAAO;YACT,CAAC,CAAC;gBACE,cAAc,kBACZ,WAAW,EAAE,OAAO,CAAC,IAAI,IACtB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAC1D;aACF;YACH,CAAC,CAAC,EAAE,CAAC,CACR,CAAA;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,uBAAuB,CAAC,+BAAsB,CAAC,CAAA;QAC1E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,CAAC,KAAK,YAAY,0BAAmB,CAAC;gBAAE,MAAM,KAAK,CAAA;YACxD,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;YACjD,OAAM;QACR,CAAC;QAED,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAA;IAC3D,CAAC;IAEO,WAAW;;QACjB,MAAM,QAAQ,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,0CAAE,QAAQ,CAAA;QACvD,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;QACrF,OAAO,QAAQ,CAAA;IACjB,CAAC;IAEO,wBAAwB;QAC9B,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAA;QAClD,IAAI,CAAC,kBAAkB;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;QACzF,OAAO,kBAAkB,CAAA;IAC3B,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,QAAiC;;QAChE,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAA;QACnD,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACvB,OAAO;gBACL,MAAM,EAAE,KAAc;gBACtB,GAAG,EAAE,IAAA,wCAAmB,EAAC,WAAW,CAAC;gBACrC,cAAc,EAAE,WAAoB;aACrC,CAAA;QACH,CAAC;QAED,MAAM,GAAG,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,GAAG,mCAAI,IAAI,CAAA;QAElC,MAAM,MAAM,GAAG,MAAM,IAAA,0CAA6B,EAChD,IAAI,CAAC,KAAK,EACV,GAAG,EACH,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,EAC1C,CAAC,gBAAgB,CAAC,CACnB,CAAA;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,4BAAa,CACrB,gCAAiB,CAAC,YAAY,EAC9B,QAAQ,EACR,uHAAuH,CACxH,CAAA;QACH,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,KAAc,EAAE,MAAM,EAAE,CAAA;IAC3C,CAAC;CACF,CAAA;AApSY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,eAAM,EAAC,SAAS,CAAC,CAAA;IACjB,WAAA,IAAA,eAAM,EAAC,yBAAiB,CAAC,CAAA;IACzB,WAAA,IAAA,eAAM,EAAC,oCAA4B,CAAC,CAAA;;GAP5B,eAAe,CAoS3B;AAED,SAAS,qBAAqB,CAAC,eAAyB,EAAE,gBAA0B;IAClF,IAAI,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,MAAM,EAAE,CAAC;QAC7D,MAAM,IAAI,4BAAa,CACrB,gCAAiB,CAAC,YAAY,EAC9B,WAAW,EACX,8CAA8C,CAC/C,CAAA;IACH,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IACrF,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,IAAI,4BAAa,CAAC,gCAAiB,CAAC,YAAY,EAAE,WAAW,EAAE,kBAAkB,YAAY,GAAG,CAAC,CAAA;IACzG,CAAC;AACH,CAAC"}
|
|
@@ -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":";;
|
|
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,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 (
|
|
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 (
|
|
32
|
-
return
|
|
33
|
-
}
|
|
39
|
+
if (key.equals((0, core_1.getPublicJwkFromVerificationMethod)(verificationMethod)))
|
|
40
|
+
return verificationMethod.id;
|
|
34
41
|
}
|
|
35
|
-
catch (
|
|
42
|
+
catch (_a) { }
|
|
36
43
|
}
|
|
37
|
-
return
|
|
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
|
|
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
|
|
57
|
+
return 'unresolvable';
|
|
47
58
|
if (resolution.didDocument.id !== did)
|
|
48
|
-
return
|
|
59
|
+
return 'other-id';
|
|
49
60
|
return resolution.didDocument;
|
|
50
61
|
}
|
|
51
62
|
catch (_b) {
|
|
52
|
-
return
|
|
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
|
-
|
|
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(
|
|
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":";;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>;
|