@verana-labs/vs-agent-sdk 2.0.0-dev.4 → 2.0.0-dev.40
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/build/agent/VsAgent.d.ts +8 -0
- package/build/agent/VsAgent.js +52 -50
- package/build/agent/VsAgent.js.map +1 -1
- package/build/agent/createVsAgent.d.ts +5 -0
- package/build/agent/createVsAgent.js +3 -0
- package/build/agent/createVsAgent.js.map +1 -1
- package/build/blockchain/AuthorizationService.d.ts +0 -2
- package/build/blockchain/AuthorizationService.js +0 -18
- package/build/blockchain/AuthorizationService.js.map +1 -1
- package/build/blockchain/IndexerWebSocketService.d.ts +6 -1
- package/build/blockchain/IndexerWebSocketService.js +40 -15
- package/build/blockchain/IndexerWebSocketService.js.map +1 -1
- package/build/blockchain/VeranaChainService.d.ts +5 -1
- package/build/blockchain/VeranaChainService.js +54 -5
- package/build/blockchain/VeranaChainService.js.map +1 -1
- package/build/blockchain/VeranaIndexerService.js +4 -4
- package/build/blockchain/VeranaIndexerService.js.map +1 -1
- package/build/blockchain/handlers/defaultHandlers.js +2 -0
- package/build/blockchain/handlers/defaultHandlers.js.map +1 -1
- package/build/blockchain/handlers/index.d.ts +1 -0
- package/build/blockchain/handlers/index.js +1 -0
- package/build/blockchain/handlers/index.js.map +1 -1
- package/build/blockchain/handlers/selfIssuanceHandlers.d.ts +13 -0
- package/build/blockchain/handlers/selfIssuanceHandlers.js +71 -0
- package/build/blockchain/handlers/selfIssuanceHandlers.js.map +1 -0
- package/build/blockchain/handlers/stateMutations.d.ts +16 -2
- package/build/blockchain/handlers/stateMutations.js +202 -28
- package/build/blockchain/handlers/stateMutations.js.map +1 -1
- package/build/blockchain/types.d.ts +20 -1
- package/build/blockchain/types.js.map +1 -1
- package/build/bootstrap/EcsBootstrapService.d.ts +16 -3
- package/build/bootstrap/EcsBootstrapService.js +195 -74
- package/build/bootstrap/EcsBootstrapService.js.map +1 -1
- package/build/events/ConnectionEvents.js +110 -82
- package/build/events/ConnectionEvents.js.map +1 -1
- package/build/plugins/setupBaseDidComm.js +3 -2
- package/build/plugins/setupBaseDidComm.js.map +1 -1
- package/build/transports/VsAgentWsInboundTransport.d.ts +1 -1
- package/build/transports/VsAgentWsInboundTransport.js +20 -14
- package/build/transports/VsAgentWsInboundTransport.js.map +1 -1
- package/build/utils/agent.d.ts +15 -0
- package/build/utils/agent.js +53 -4
- package/build/utils/agent.js.map +1 -1
- package/build/utils/didReadiness.d.ts +9 -0
- package/build/utils/didReadiness.js +42 -0
- package/build/utils/didReadiness.js.map +1 -0
- package/build/utils/ecsClaims.d.ts +47 -0
- package/build/utils/ecsClaims.js +120 -0
- package/build/utils/ecsClaims.js.map +1 -0
- package/build/utils/index.d.ts +2 -0
- package/build/utils/index.js +2 -0
- package/build/utils/index.js.map +1 -1
- package/build/utils/selfIssuedEcsCredential.d.ts +4 -0
- package/build/utils/selfIssuedEcsCredential.js +140 -0
- package/build/utils/selfIssuedEcsCredential.js.map +1 -0
- package/build/utils/setupSelfTr.d.ts +3 -56
- package/build/utils/setupSelfTr.js +41 -249
- package/build/utils/setupSelfTr.js.map +1 -1
- package/build/utils/trustCredentialStore.d.ts +32 -6
- package/build/utils/trustCredentialStore.js +182 -82
- package/build/utils/trustCredentialStore.js.map +1 -1
- package/build/utils/vtjscResolver.d.ts +18 -0
- package/build/utils/vtjscResolver.js +54 -0
- package/build/utils/vtjscResolver.js.map +1 -0
- package/build/vtFlow/VtFlowOrchestrator.d.ts +47 -9
- package/build/vtFlow/VtFlowOrchestrator.js +96 -55
- package/build/vtFlow/VtFlowOrchestrator.js.map +1 -1
- package/build/vtFlow/assertVerifiableService.d.ts +1 -0
- package/build/vtFlow/assertVerifiableService.js +45 -5
- package/build/vtFlow/assertVerifiableService.js.map +1 -1
- package/build/vtFlow/ecsIssuanceExemption.d.ts +12 -0
- package/build/vtFlow/ecsIssuanceExemption.js +84 -0
- package/build/vtFlow/ecsIssuanceExemption.js.map +1 -0
- package/build/vtFlow/index.d.ts +1 -0
- package/build/vtFlow/index.js +1 -0
- package/build/vtFlow/index.js.map +1 -1
- package/package.json +11 -11
|
@@ -8,11 +8,16 @@ exports.createJsc = createJsc;
|
|
|
8
8
|
exports.removeTrustCredential = removeTrustCredential;
|
|
9
9
|
exports.removeStoredTrustCredential = removeStoredTrustCredential;
|
|
10
10
|
exports.migrateVtjscServiceIds = migrateVtjscServiceIds;
|
|
11
|
+
exports.detachVtjscPublications = detachVtjscPublications;
|
|
12
|
+
exports.reattachVtjscPublication = reattachVtjscPublication;
|
|
11
13
|
exports.getTrustMetadata = getTrustMetadata;
|
|
12
14
|
exports.rebindEcsCredentialSchema = rebindEcsCredentialSchema;
|
|
15
|
+
exports.withdrawSelfIssuedEcsCredentials = withdrawSelfIssuedEcsCredentials;
|
|
13
16
|
const core_1 = require("@credo-ts/core");
|
|
17
|
+
const verre_1 = require("@verana-labs/verre");
|
|
14
18
|
const adminApiService_1 = require("../did/adminApiService");
|
|
15
19
|
const setupSelfTr_1 = require("./setupSelfTr");
|
|
20
|
+
const selfIssuedEcsCredential_1 = require("./selfIssuedEcsCredential");
|
|
16
21
|
const data_1 = require("./data");
|
|
17
22
|
async function getDidRecord(agent) {
|
|
18
23
|
const [didRecord] = await agent.dids.getCreatedDids({ did: agent.did });
|
|
@@ -31,23 +36,26 @@ function findMetadataEntry(didRecord, key, id, jsonSchemaRef) {
|
|
|
31
36
|
return null;
|
|
32
37
|
if (!id && !jsonSchemaRef)
|
|
33
38
|
return { schemaId: '', data: metadata, didDocumentServiceId: '' };
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
const entries = Object.entries(metadata);
|
|
40
|
+
// the metadata key identifies one entry, so it answers before any preference between entries
|
|
41
|
+
const exact = jsonSchemaRef ? entries.find(([schemaId]) => schemaId === jsonSchemaRef) : undefined;
|
|
42
|
+
if (exact)
|
|
43
|
+
return Object.assign(Object.assign({ schemaId: exact[0] }, exact[1]), { data: exact[1].verifiablePresentation });
|
|
44
|
+
const match = ([schemaId, entry]) => {
|
|
45
|
+
var _a, _b;
|
|
46
|
+
if (((_a = entry.credential) === null || _a === void 0 ? void 0 : _a.id) === id)
|
|
41
47
|
return Object.assign(Object.assign({ schemaId }, entry), { data: entry.credential });
|
|
42
|
-
|
|
43
|
-
if (presId === id) {
|
|
48
|
+
if (((_b = entry.verifiablePresentation) === null || _b === void 0 ? void 0 : _b.id) === id)
|
|
44
49
|
return Object.assign(Object.assign({ schemaId }, entry), { data: entry.verifiablePresentation });
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
|
|
50
|
+
return null;
|
|
51
|
+
};
|
|
52
|
+
// several entries can carry the same presentation URL while a binding is replaced, so the entry
|
|
53
|
+
// the DID Document announces wins over a detached leftover
|
|
54
|
+
const matched = entries.map(match).filter(entry => entry !== null);
|
|
55
|
+
return (_b = (_a = matched.find(entry => entry.attached !== false)) !== null && _a !== void 0 ? _a : matched[0]) !== null && _b !== void 0 ? _b : null;
|
|
48
56
|
}
|
|
49
|
-
async function saveMetadataEntry(agent, didRecord, credential, verifiablePresentation, didDocumentServiceId, key
|
|
50
|
-
var _a, _b, _c, _d, _e
|
|
57
|
+
async function saveMetadataEntry(agent, didRecord, credential, verifiablePresentation, didDocumentServiceId, key) {
|
|
58
|
+
var _a, _b, _c, _d, _e;
|
|
51
59
|
const schema = key === '_vt/vtc' ? credential.credentialSchema : credential.credentialSubject;
|
|
52
60
|
const ref = Array.isArray(schema) ? (_a = schema[0]) === null || _a === void 0 ? void 0 : _a.id : schema === null || schema === void 0 ? void 0 : schema.id;
|
|
53
61
|
if (!ref) {
|
|
@@ -73,15 +81,9 @@ async function saveMetadataEntry(agent, didRecord, credential, verifiablePresent
|
|
|
73
81
|
type: 'LinkedVerifiablePresentation',
|
|
74
82
|
}));
|
|
75
83
|
didRecord.metadata.set(key, record);
|
|
76
|
-
// Update #whois with new endpoint
|
|
77
|
-
const service = (_g = (_f = didRecord.didDocument) === null || _f === void 0 ? void 0 : _f.service) === null || _g === void 0 ? void 0 : _g.find(s => s.id === `${agent.did}#whois`);
|
|
78
|
-
if (service && ((_h = verifiablePresentation.id) === null || _h === void 0 ? void 0 : _h.includes('service')))
|
|
79
|
-
service.serviceEndpoint = verifiablePresentation.id;
|
|
80
|
-
// When a new VTC has been added, remove the self VTCs
|
|
81
|
-
updateVtcEntries(didRecord, false, publicApiBaseUrl);
|
|
82
84
|
await updateDidRecord(agent, didRecord);
|
|
83
85
|
}
|
|
84
|
-
async function deleteMetadataEntry(agent, id, didRecord, key
|
|
86
|
+
async function deleteMetadataEntry(agent, id, didRecord, key) {
|
|
85
87
|
const found = findMetadataEntry(didRecord, key, id, id);
|
|
86
88
|
if (!found)
|
|
87
89
|
return null;
|
|
@@ -90,54 +92,9 @@ async function deleteMetadataEntry(agent, id, didRecord, key, publicApiBaseUrl)
|
|
|
90
92
|
return null;
|
|
91
93
|
delete metadata[found.schemaId];
|
|
92
94
|
didRecord.metadata.set(key, metadata);
|
|
93
|
-
// If the last entry is removed, restore defaults
|
|
94
|
-
restoreDefaultVtcEntries(didRecord, publicApiBaseUrl);
|
|
95
95
|
await updateDidRecord(agent, didRecord);
|
|
96
96
|
return { schemaId: found.schemaId };
|
|
97
97
|
}
|
|
98
|
-
function restoreDefaultVtcEntries(didRecord, publicApiBaseUrl) {
|
|
99
|
-
var _a, _b;
|
|
100
|
-
const vtc = (_a = didRecord.metadata.get('_vt/vtc')) !== null && _a !== void 0 ? _a : {};
|
|
101
|
-
const jsc = (_b = didRecord.metadata.get('_vt/jsc')) !== null && _b !== void 0 ? _b : {};
|
|
102
|
-
// By default we have 2 Self-trusted VTCs
|
|
103
|
-
if (Object.keys(vtc).length < 3 && Object.keys(jsc).length < 3) {
|
|
104
|
-
updateVtcEntries(didRecord, true, publicApiBaseUrl);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
function updateVtcEntries(didRecord, attach, publicApiBaseUrl) {
|
|
108
|
-
var _a;
|
|
109
|
-
const record = (_a = didRecord.metadata.get('_vt/vtc')) !== null && _a !== void 0 ? _a : {};
|
|
110
|
-
setupSelfTr_1.presentations.forEach(p => {
|
|
111
|
-
var _a, _b, _c, _d;
|
|
112
|
-
const schemaId = (0, setupSelfTr_1.mapToSelfTr)(p.schemaUrl, publicApiBaseUrl);
|
|
113
|
-
const current = record[schemaId];
|
|
114
|
-
if ((current === null || current === void 0 ? void 0 : current.attached) === attach)
|
|
115
|
-
return;
|
|
116
|
-
record[schemaId] = Object.assign(Object.assign({}, current), { attached: attach });
|
|
117
|
-
const serviceId = current === null || current === void 0 ? void 0 : current.didDocumentServiceId;
|
|
118
|
-
const serviceEndpoint = (_a = current === null || current === void 0 ? void 0 : current.verifiablePresentation) === null || _a === void 0 ? void 0 : _a.id;
|
|
119
|
-
if (!((_b = didRecord.didDocument) === null || _b === void 0 ? void 0 : _b.service))
|
|
120
|
-
return;
|
|
121
|
-
if (attach) {
|
|
122
|
-
const alreadyExists = didRecord.didDocument.service.some(s => s.id === serviceId);
|
|
123
|
-
if (!alreadyExists && serviceId && serviceEndpoint) {
|
|
124
|
-
didRecord.didDocument.service.push(new core_1.DidDocumentService({
|
|
125
|
-
id: serviceId,
|
|
126
|
-
serviceEndpoint,
|
|
127
|
-
type: 'LinkedVerifiablePresentation',
|
|
128
|
-
}));
|
|
129
|
-
}
|
|
130
|
-
// Return to self-trusted VTC in #whois endpoint
|
|
131
|
-
const service = (_d = (_c = didRecord.didDocument) === null || _c === void 0 ? void 0 : _c.service) === null || _d === void 0 ? void 0 : _d.find(s => s.id === `${didRecord.did}#whois`);
|
|
132
|
-
if (service && (serviceEndpoint === null || serviceEndpoint === void 0 ? void 0 : serviceEndpoint.includes('service')))
|
|
133
|
-
service.serviceEndpoint = serviceEndpoint;
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
didRecord.didDocument.service = didRecord.didDocument.service.filter(s => s.id !== serviceId);
|
|
137
|
-
}
|
|
138
|
-
});
|
|
139
|
-
didRecord.metadata.set('_vt/vtc', record);
|
|
140
|
-
}
|
|
141
98
|
async function createVtc(agent, publicApiBaseUrl, id, credential) {
|
|
142
99
|
const didRecord = await getDidRecord(agent);
|
|
143
100
|
const schemaId = `schemas-${id}-vtc-vp.json`;
|
|
@@ -149,7 +106,7 @@ async function createVtc(agent, publicApiBaseUrl, id, credential) {
|
|
|
149
106
|
verifiableCredential: [credential],
|
|
150
107
|
});
|
|
151
108
|
const verifiablePresentation = await (0, setupSelfTr_1.signerW3c)(agent, unsignedPresentation, (0, setupSelfTr_1.getVerificationMethodId)(agent.config.logger, didRecord));
|
|
152
|
-
await saveMetadataEntry(agent, didRecord, credential, verifiablePresentation, didDocumentServiceId, '_vt/vtc'
|
|
109
|
+
await saveMetadataEntry(agent, didRecord, credential, verifiablePresentation, didDocumentServiceId, '_vt/vtc');
|
|
153
110
|
return verifiablePresentation;
|
|
154
111
|
}
|
|
155
112
|
async function createJsc(agent, publicApiBaseUrl, ecsSchemas, options) {
|
|
@@ -181,28 +138,30 @@ async function createJsc(agent, publicApiBaseUrl, ecsSchemas, options) {
|
|
|
181
138
|
verifiableCredential: [credential],
|
|
182
139
|
});
|
|
183
140
|
const verifiablePresentation = await (0, setupSelfTr_1.signerW3c)(agent, unsignedPresentation, verificationMethodId);
|
|
184
|
-
await saveMetadataEntry(agent, didRecord, credential, verifiablePresentation, didDocumentServiceId, '_vt/jsc'
|
|
141
|
+
await saveMetadataEntry(agent, didRecord, credential, verifiablePresentation, didDocumentServiceId, '_vt/jsc');
|
|
185
142
|
return credential.jsonCredential;
|
|
186
143
|
}
|
|
187
|
-
async function removeTrustCredential(agent,
|
|
144
|
+
async function removeTrustCredential(agent, schemaId, key) {
|
|
188
145
|
var _a;
|
|
189
146
|
const didRecord = await getDidRecord(agent);
|
|
190
|
-
|
|
147
|
+
// same lookup deleteMetadataEntry performs: a self-issued entry carries the agent DID as
|
|
148
|
+
// credential id, so only its metadata key reaches it
|
|
149
|
+
const record = findMetadataEntry(didRecord, key, schemaId, schemaId);
|
|
191
150
|
// Currently, we only use one serviceEndpoint per ID.
|
|
192
151
|
// In the future, if multiple serviceEndpoints exist for the same ID,
|
|
193
152
|
// we should review the serviceEndpoint content and remove only the specific one.
|
|
194
153
|
if ((record === null || record === void 0 ? void 0 : record.didDocumentServiceId) && ((_a = didRecord.didDocument) === null || _a === void 0 ? void 0 : _a.service)) {
|
|
195
154
|
didRecord.didDocument.service = didRecord.didDocument.service.filter(s => s.id !== record.didDocumentServiceId);
|
|
196
155
|
}
|
|
197
|
-
return await deleteMetadataEntry(agent, schemaId, didRecord, key
|
|
156
|
+
return await deleteMetadataEntry(agent, schemaId, didRecord, key);
|
|
198
157
|
}
|
|
199
|
-
async function removeStoredTrustCredential(agent,
|
|
158
|
+
async function removeStoredTrustCredential(agent, credentialExchangeRecordId) {
|
|
200
159
|
var _a, _b;
|
|
201
160
|
const formatData = await agent.didcomm.credentials.getFormatData(credentialExchangeRecordId);
|
|
202
161
|
const credentialId = (_b = (_a = formatData.credential) === null || _a === void 0 ? void 0 : _a.jsonld) === null || _b === void 0 ? void 0 : _b.id;
|
|
203
162
|
if (!credentialId)
|
|
204
163
|
return undefined;
|
|
205
|
-
await removeTrustCredential(agent,
|
|
164
|
+
await removeTrustCredential(agent, credentialId, '_vt/vtc');
|
|
206
165
|
const stored = await agent.w3cCredentials.getAll();
|
|
207
166
|
for (const storedRecord of stored) {
|
|
208
167
|
if (storedRecord.getTags().givenId === credentialId) {
|
|
@@ -239,23 +198,124 @@ async function migrateVtjscServiceIds(agent) {
|
|
|
239
198
|
await updateDidRecord(agent, didRecord);
|
|
240
199
|
agent.config.logger.info('[VTJSC] migrated stored service ids to the -vtjsc-vp naming');
|
|
241
200
|
}
|
|
201
|
+
/**
|
|
202
|
+
* Takes the linked VPs of the given `_vt/jsc` entries out of the DID Document, publishing it once.
|
|
203
|
+
*
|
|
204
|
+
* The entries stay: `SelfTrController` serves them, and issued credentials name that URL in
|
|
205
|
+
* `credentialSchema.id`. Dropping one would 404 it and leave those credentials unverifiable.
|
|
206
|
+
*/
|
|
207
|
+
async function detachVtjscPublications(agent, schemaRefs) {
|
|
208
|
+
var _a, _b;
|
|
209
|
+
if (schemaRefs.length === 0)
|
|
210
|
+
return [];
|
|
211
|
+
const didRecord = await getDidRecord(agent);
|
|
212
|
+
if (!((_a = didRecord === null || didRecord === void 0 ? void 0 : didRecord.didDocument) === null || _a === void 0 ? void 0 : _a.service))
|
|
213
|
+
return [];
|
|
214
|
+
const metadata = didRecord.metadata.get('_vt/jsc');
|
|
215
|
+
if (!metadata)
|
|
216
|
+
return [];
|
|
217
|
+
const detached = [];
|
|
218
|
+
for (const schemaRef of schemaRefs) {
|
|
219
|
+
const serviceId = (_b = metadata[schemaRef]) === null || _b === void 0 ? void 0 : _b.didDocumentServiceId;
|
|
220
|
+
if (!serviceId || !didRecord.didDocument.service.some(s => s.id === serviceId))
|
|
221
|
+
continue;
|
|
222
|
+
didRecord.didDocument.service = didRecord.didDocument.service.filter(s => s.id !== serviceId);
|
|
223
|
+
detached.push(schemaRef);
|
|
224
|
+
}
|
|
225
|
+
if (detached.length === 0)
|
|
226
|
+
return [];
|
|
227
|
+
await updateDidRecord(agent, didRecord);
|
|
228
|
+
return detached;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Puts a detached `_vt/jsc` entry back in the DID Document.
|
|
232
|
+
*
|
|
233
|
+
* The publication pass skips an entry whose digest still matches, so without this the agent would
|
|
234
|
+
* keep serving a VTJSC it never announces again.
|
|
235
|
+
*/
|
|
236
|
+
async function reattachVtjscPublication(agent, schemaRef) {
|
|
237
|
+
var _a, _b, _c;
|
|
238
|
+
const didRecord = await getDidRecord(agent);
|
|
239
|
+
if (!(didRecord === null || didRecord === void 0 ? void 0 : didRecord.didDocument))
|
|
240
|
+
return false;
|
|
241
|
+
const entry = (_a = didRecord.metadata.get('_vt/jsc')) === null || _a === void 0 ? void 0 : _a[schemaRef];
|
|
242
|
+
const serviceId = entry === null || entry === void 0 ? void 0 : entry.didDocumentServiceId;
|
|
243
|
+
const serviceEndpoint = (_b = entry === null || entry === void 0 ? void 0 : entry.verifiablePresentation) === null || _b === void 0 ? void 0 : _b.id;
|
|
244
|
+
if (!serviceId || !serviceEndpoint)
|
|
245
|
+
return false;
|
|
246
|
+
const services = (_c = didRecord.didDocument.service) !== null && _c !== void 0 ? _c : [];
|
|
247
|
+
if (services.some(s => s.id === serviceId))
|
|
248
|
+
return false;
|
|
249
|
+
didRecord.didDocument.service = [
|
|
250
|
+
...services,
|
|
251
|
+
new core_1.DidDocumentService({ id: serviceId, serviceEndpoint, type: 'LinkedVerifiablePresentation' }),
|
|
252
|
+
];
|
|
253
|
+
await updateDidRecord(agent, didRecord);
|
|
254
|
+
return true;
|
|
255
|
+
}
|
|
242
256
|
function getTrustMetadata(didRecord, key, schemaId) {
|
|
243
257
|
return findMetadataEntry(didRecord, key, schemaId);
|
|
244
258
|
}
|
|
259
|
+
/**
|
|
260
|
+
* Anchors a self-issued ECS credential, the same way as any other issuance: through
|
|
261
|
+
* CreateOrUpdateParticipantSession, which stores the digest in the `di` module keeper-to-keeper.
|
|
262
|
+
*
|
|
263
|
+
* `issuerParticipantId` must name an active ISSUER participant of this agent for the schema, whose
|
|
264
|
+
* vs_operator is this agent's account — the chain accepts the session from no other signer. The
|
|
265
|
+
* caller resolves it, because it already lists the agent's participants to decide what to rebind.
|
|
266
|
+
*/
|
|
267
|
+
async function anchorCredentialDigest(agent, schemaId, credential, issuerParticipantId) {
|
|
268
|
+
const chain = agent.veranaChain;
|
|
269
|
+
if (!chain)
|
|
270
|
+
return;
|
|
271
|
+
if (!credential)
|
|
272
|
+
throw new Error(`[DigestAnchor] The presentation for schema ${schemaId} has no credential`);
|
|
273
|
+
if (!agent.did)
|
|
274
|
+
throw new Error('[DigestAnchor] The agent has no public DID');
|
|
275
|
+
const schema = await chain.getCredentialSchema(schemaId);
|
|
276
|
+
if (!schema)
|
|
277
|
+
throw new Error(`[DigestAnchor] Credential schema ${schemaId} is not on chain`);
|
|
278
|
+
const digest = (0, verre_1.computeCredentialDigestJCS)(core_1.JsonTransformer.toJSON(credential), schema.digestAlgorithm);
|
|
279
|
+
// the same credential gives the same digest on each run, so an anchored digest needs no second transaction
|
|
280
|
+
if (await chain.getDigest(digest))
|
|
281
|
+
return;
|
|
282
|
+
// A self-issued credential has no counterparty, so the session names only the issuer.
|
|
283
|
+
const { txHash } = await chain.createOrUpdateParticipantSession({
|
|
284
|
+
id: core_1.utils.uuid(),
|
|
285
|
+
issuerParticipantId,
|
|
286
|
+
agentParticipantId: 0,
|
|
287
|
+
walletAgentParticipantId: 0,
|
|
288
|
+
digest,
|
|
289
|
+
});
|
|
290
|
+
agent.config.logger.info(`[DigestAnchor] Anchored digest ${digest} for schema ${schemaId} against issuer participant ${issuerParticipantId} (tx ${txHash})`);
|
|
291
|
+
}
|
|
245
292
|
// replaces the self-TR example JSC binding with the on-chain VTJSC so resolvers can link the credential to the VPR
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
293
|
+
/**
|
|
294
|
+
* @param jsonSchemaCredentialId the VTJSC the Ecosystem published for this schema. Only the
|
|
295
|
+
* Ecosystem publishes it, so an agent that issues against another Corporation's Ecosystem must
|
|
296
|
+
* resolve it there — see resolveJsonSchemaCredentialId.
|
|
297
|
+
* @param issuerParticipantId this agent's ISSUER participant for the schema, which anchors the
|
|
298
|
+
* credential digest.
|
|
299
|
+
*/
|
|
300
|
+
async function rebindEcsCredentialSchema(agent, publicApiBaseUrl, schemaId, schemaKey, ecsClaims, jsonSchemaCredentialId, issuerParticipantId, onChainJsonSchema) {
|
|
301
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
302
|
+
if (schemaKey !== 'ecs-service' || !agent.did)
|
|
249
303
|
return;
|
|
250
304
|
const vpUrl = `${publicApiBaseUrl}/vt/${schemaKey}-vtc-vp.json`;
|
|
251
|
-
const jscUrl =
|
|
305
|
+
const jscUrl = jsonSchemaCredentialId;
|
|
252
306
|
const didRecord = await getDidRecord(agent);
|
|
253
307
|
const record = (_a = didRecord.metadata.get('_vt/vtc')) !== null && _a !== void 0 ? _a : {};
|
|
308
|
+
const stored = record[jscUrl];
|
|
309
|
+
const storedIssuer = typeof ((_b = stored === null || stored === void 0 ? void 0 : stored.credential) === null || _b === void 0 ? void 0 : _b.issuer) === 'string' ? stored.credential.issuer : (_d = (_c = stored === null || stored === void 0 ? void 0 : stored.credential) === null || _c === void 0 ? void 0 : _c.issuer) === null || _d === void 0 ? void 0 : _d.id;
|
|
310
|
+
if ((stored === null || stored === void 0 ? void 0 : stored.credential) && !stored.integrityData && storedIssuer !== agent.did) {
|
|
311
|
+
agent.config.logger.debug(`[SelfTR] Keeping the ${schemaKey} credential issued by ${storedIssuer} instead of rebinding a self-issued one`);
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
254
314
|
let removedStale = false;
|
|
255
315
|
for (const [key, entry] of Object.entries(record)) {
|
|
256
316
|
// findMetadataEntry serves the first entry matching the VP url, so stale bindings must go
|
|
257
317
|
if (key !== jscUrl &&
|
|
258
|
-
((
|
|
318
|
+
((_e = entry.verifiablePresentation) === null || _e === void 0 ? void 0 : _e.id) === vpUrl) {
|
|
259
319
|
delete record[key];
|
|
260
320
|
removedStale = true;
|
|
261
321
|
}
|
|
@@ -264,23 +324,63 @@ async function rebindEcsCredentialSchema(agent, publicApiBaseUrl, schemaId, sche
|
|
|
264
324
|
didRecord.metadata.set('_vt/vtc', record);
|
|
265
325
|
await updateDidRecord(agent, didRecord);
|
|
266
326
|
}
|
|
267
|
-
await (0,
|
|
327
|
+
await (0, selfIssuedEcsCredential_1.publishSelfIssuedEcsPresentation)(agent, vpUrl, Object.assign(Object.assign({}, (0, data_1.getEcsSchemas)(publicApiBaseUrl)), (onChainJsonSchema ? { [schemaKey]: onChainJsonSchema } : {})), schemaKey, ['VerifiableCredential', 'VerifiableTrustCredential'], { id: jscUrl, type: 'JsonSchemaCredential' }, ecsClaims, async (verifiablePresentation) => {
|
|
328
|
+
var _a;
|
|
329
|
+
return await anchorCredentialDigest(agent, Number(schemaId), (_a = verifiablePresentation === null || verifiablePresentation === void 0 ? void 0 : verifiablePresentation.verifiableCredential) === null || _a === void 0 ? void 0 : _a[0], issuerParticipantId);
|
|
330
|
+
});
|
|
268
331
|
const freshRecord = await getDidRecord(agent);
|
|
332
|
+
let recordChanged = false;
|
|
333
|
+
const vtc = (_f = freshRecord.metadata.get('_vt/vtc')) !== null && _f !== void 0 ? _f : {};
|
|
334
|
+
const entry = vtc[jscUrl];
|
|
335
|
+
if (entry && (entry.issuerParticipantId !== issuerParticipantId || entry.schemaKey !== schemaKey)) {
|
|
336
|
+
vtc[jscUrl] = Object.assign(Object.assign({}, entry), { issuerParticipantId, schemaKey });
|
|
337
|
+
freshRecord.metadata.set('_vt/vtc', vtc);
|
|
338
|
+
recordChanged = true;
|
|
339
|
+
}
|
|
269
340
|
const doc = freshRecord.didDocument;
|
|
270
341
|
if (doc) {
|
|
271
342
|
// resolvers match the [VT-CRED-W3C-LINKED-VP] fragment; #whois alone is not enough
|
|
272
343
|
const expectedServiceId = `${agent.did}#${(0, setupSelfTr_1.linkedVpFragment)(schemaKey)}`;
|
|
273
|
-
const linked = (
|
|
344
|
+
const linked = (_g = doc.service) === null || _g === void 0 ? void 0 : _g.some(s => s.id === expectedServiceId);
|
|
274
345
|
if (!linked) {
|
|
275
|
-
doc.service = (
|
|
346
|
+
doc.service = (_h = doc.service) !== null && _h !== void 0 ? _h : [];
|
|
276
347
|
doc.service.push(new core_1.DidDocumentService({
|
|
277
348
|
id: expectedServiceId,
|
|
278
349
|
serviceEndpoint: vpUrl,
|
|
279
350
|
type: 'LinkedVerifiablePresentation',
|
|
280
351
|
}));
|
|
281
|
-
|
|
352
|
+
recordChanged = true;
|
|
282
353
|
}
|
|
354
|
+
if (recordChanged)
|
|
355
|
+
await updateDidRecord(agent, freshRecord);
|
|
283
356
|
}
|
|
284
357
|
agent.config.logger.info(`[SelfTR] Rebound ${schemaKey} credential to VTJSC ${jscUrl}`);
|
|
285
358
|
}
|
|
359
|
+
/**
|
|
360
|
+
* Withdraws the ECS credentials anchored against `issuerParticipantId`, and the #whois entry
|
|
361
|
+
* when the Service credential is among them.
|
|
362
|
+
*/
|
|
363
|
+
async function withdrawSelfIssuedEcsCredentials(agent, issuerParticipantId) {
|
|
364
|
+
var _a, _b;
|
|
365
|
+
const didRecord = await getDidRecord(agent);
|
|
366
|
+
const withdrawn = [];
|
|
367
|
+
let whoisWithdrawn = false;
|
|
368
|
+
for (const [jscUrl, value] of Object.entries((_a = didRecord.metadata.get('_vt/vtc')) !== null && _a !== void 0 ? _a : {})) {
|
|
369
|
+
const entry = value;
|
|
370
|
+
if (entry.issuerParticipantId !== issuerParticipantId)
|
|
371
|
+
continue;
|
|
372
|
+
await removeTrustCredential(agent, jscUrl, '_vt/vtc');
|
|
373
|
+
withdrawn.push(jscUrl);
|
|
374
|
+
if (entry.schemaKey === 'ecs-service')
|
|
375
|
+
whoisWithdrawn = true;
|
|
376
|
+
}
|
|
377
|
+
if (whoisWithdrawn) {
|
|
378
|
+
const record = await getDidRecord(agent);
|
|
379
|
+
if ((_b = record.didDocument) === null || _b === void 0 ? void 0 : _b.service) {
|
|
380
|
+
record.didDocument.service = record.didDocument.service.filter(s => s.id !== `${agent.did}#whois`);
|
|
381
|
+
await updateDidRecord(agent, record);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
return withdrawn;
|
|
385
|
+
}
|
|
286
386
|
//# sourceMappingURL=trustCredentialStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trustCredentialStore.js","sourceRoot":"","sources":["../../src/utils/trustCredentialStore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"trustCredentialStore.js","sourceRoot":"","sources":["../../src/utils/trustCredentialStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { VsAgent } from '../agent/VsAgent';
|
|
2
|
+
import type { VeranaIndexerService } from '../blockchain/VeranaIndexerService';
|
|
3
|
+
/**
|
|
4
|
+
* Resolves the VTJSC that a credential of a given schema must name as its `credentialSchema`.
|
|
5
|
+
*
|
|
6
|
+
* The Ecosystem publishes the VTJSC, and it is the only party that does. An issuer that the
|
|
7
|
+
* Ecosystem's Corporation assigned an ISSUER Participant entry usually belongs to another
|
|
8
|
+
* Corporation: it holds no local copy and MUST NOT publish one. It reads the Ecosystem
|
|
9
|
+
* controller's DID Document instead, and follows the Linked Verifiable Presentation that carries
|
|
10
|
+
* the VTJSC of this schema.
|
|
11
|
+
*
|
|
12
|
+
* An agent that controls the Ecosystem itself already stores the same presentation, so it answers
|
|
13
|
+
* from its own record and makes no network call.
|
|
14
|
+
*
|
|
15
|
+
* Returns the id of the JsonSchemaCredential, which is the value a credential carries in
|
|
16
|
+
* `credentialSchema.id`.
|
|
17
|
+
*/
|
|
18
|
+
export declare function resolveJsonSchemaCredentialId(agent: VsAgent, indexer: VeranaIndexerService, credentialSchemaId: string | number, chainId: string): Promise<string>;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveJsonSchemaCredentialId = resolveJsonSchemaCredentialId;
|
|
4
|
+
const trustCredentialStore_1 = require("./trustCredentialStore");
|
|
5
|
+
const util_1 = require("./util");
|
|
6
|
+
const VTJSC_FETCH_TIMEOUT_MS = 30000;
|
|
7
|
+
/**
|
|
8
|
+
* Resolves the VTJSC that a credential of a given schema must name as its `credentialSchema`.
|
|
9
|
+
*
|
|
10
|
+
* The Ecosystem publishes the VTJSC, and it is the only party that does. An issuer that the
|
|
11
|
+
* Ecosystem's Corporation assigned an ISSUER Participant entry usually belongs to another
|
|
12
|
+
* Corporation: it holds no local copy and MUST NOT publish one. It reads the Ecosystem
|
|
13
|
+
* controller's DID Document instead, and follows the Linked Verifiable Presentation that carries
|
|
14
|
+
* the VTJSC of this schema.
|
|
15
|
+
*
|
|
16
|
+
* An agent that controls the Ecosystem itself already stores the same presentation, so it answers
|
|
17
|
+
* from its own record and makes no network call.
|
|
18
|
+
*
|
|
19
|
+
* Returns the id of the JsonSchemaCredential, which is the value a credential carries in
|
|
20
|
+
* `credentialSchema.id`.
|
|
21
|
+
*/
|
|
22
|
+
async function resolveJsonSchemaCredentialId(agent, indexer, credentialSchemaId, chainId) {
|
|
23
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
24
|
+
const schemaId = String(credentialSchemaId);
|
|
25
|
+
const schemaRef = `vpr:verana:${chainId}:cs:${schemaId}`;
|
|
26
|
+
if (agent.did) {
|
|
27
|
+
const [didRecord] = await agent.dids.getCreatedDids({ did: agent.did });
|
|
28
|
+
const localId = didRecord
|
|
29
|
+
? (_d = (_c = (_b = (_a = (0, trustCredentialStore_1.findMetadataEntry)(didRecord, '_vt/jsc', '', schemaRef)) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.verifiableCredential) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.id
|
|
30
|
+
: undefined;
|
|
31
|
+
if (localId)
|
|
32
|
+
return localId;
|
|
33
|
+
}
|
|
34
|
+
const schema = await indexer.getCredentialSchema(schemaId);
|
|
35
|
+
const ecosystem = await indexer.getEcosystem(schema.ecosystem_id);
|
|
36
|
+
if (!(ecosystem === null || ecosystem === void 0 ? void 0 : ecosystem.did)) {
|
|
37
|
+
throw new Error(`Ecosystem ${schema.ecosystem_id} of schema ${schemaId} has no DID`);
|
|
38
|
+
}
|
|
39
|
+
// createJsc registers the presentation under this exact service id.
|
|
40
|
+
const serviceId = `${ecosystem.did}#vpr-schemas-${schemaId}-vtjsc-vp`;
|
|
41
|
+
const { didDocument } = await agent.dids.resolve(ecosystem.did);
|
|
42
|
+
const endpoint = (_f = (_e = didDocument === null || didDocument === void 0 ? void 0 : didDocument.service) === null || _e === void 0 ? void 0 : _e.find(service => service.id === serviceId)) === null || _f === void 0 ? void 0 : _f.serviceEndpoint;
|
|
43
|
+
if (typeof endpoint !== 'string') {
|
|
44
|
+
throw new Error(`Ecosystem ${ecosystem.did} publishes no VTJSC for schema ${schemaId} (no service ${serviceId})`);
|
|
45
|
+
}
|
|
46
|
+
// fetchJson applies the timeout and turns a non-2xx answer into an error that names the URL.
|
|
47
|
+
const presentation = await (0, util_1.fetchJson)(endpoint, VTJSC_FETCH_TIMEOUT_MS);
|
|
48
|
+
const jsonSchemaCredentialId = (_h = (_g = presentation.verifiableCredential) === null || _g === void 0 ? void 0 : _g[0]) === null || _h === void 0 ? void 0 : _h.id;
|
|
49
|
+
if (!jsonSchemaCredentialId) {
|
|
50
|
+
throw new Error(`The VTJSC presentation at ${endpoint} carries no credential`);
|
|
51
|
+
}
|
|
52
|
+
return jsonSchemaCredentialId;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=vtjscResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vtjscResolver.js","sourceRoot":"","sources":["../../src/utils/vtjscResolver.ts"],"names":[],"mappings":";;AA4BA,sEAwCC;AAjED,iEAA0D;AAC1D,iCAAkC;AAElC,MAAM,sBAAsB,GAAG,KAAM,CAAA;AAOrC;;;;;;;;;;;;;;GAcG;AACI,KAAK,UAAU,6BAA6B,CACjD,KAAc,EACd,OAA6B,EAC7B,kBAAmC,EACnC,OAAe;;IAEf,MAAM,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAC3C,MAAM,SAAS,GAAG,cAAc,OAAO,OAAO,QAAQ,EAAE,CAAA;IAExD,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;QACvE,MAAM,OAAO,GAAG,SAAS;YACvB,CAAC,CAAC,MAAA,MAAA,MAAA,MAAA,IAAA,wCAAiB,EAAC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,CAAC,0CAAE,IAAI,0CAAE,oBAAoB,0CAAG,CAAC,CAAC,0CAAE,EAAE;YAC7F,CAAC,CAAC,SAAS,CAAA;QACb,IAAI,OAAO;YAAE,OAAO,OAAO,CAAA;IAC7B,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC1D,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IACjE,IAAI,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,GAAG,CAAA,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,aAAa,MAAM,CAAC,YAAY,cAAc,QAAQ,aAAa,CAAC,CAAA;IACtF,CAAC;IAED,oEAAoE;IACpE,MAAM,SAAS,GAAG,GAAG,SAAS,CAAC,GAAG,gBAAgB,QAAQ,WAAW,CAAA;IACrE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IAC/D,MAAM,QAAQ,GAAG,MAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,0CAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,0CAAE,eAAe,CAAA;IACjG,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,aAAa,SAAS,CAAC,GAAG,kCAAkC,QAAQ,gBAAgB,SAAS,GAAG,CACjG,CAAA;IACH,CAAC;IAED,6FAA6F;IAC7F,MAAM,YAAY,GAAG,MAAM,IAAA,gBAAS,EAAoB,QAAQ,EAAE,sBAAsB,CAAC,CAAA;IACzF,MAAM,sBAAsB,GAAG,MAAA,MAAA,YAAY,CAAC,oBAAoB,0CAAG,CAAC,CAAC,0CAAE,EAAE,CAAA;IACzE,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,wBAAwB,CAAC,CAAA;IAChF,CAAC;IACD,OAAO,sBAAsB,CAAA;AAC/B,CAAC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { type DidCommJsonLdCredentialDetailFormat, type JsonCredential } from '@credo-ts/didcomm';
|
|
2
|
-
import { VtFlowRecord } from '@verana-labs/credo-ts-didcomm-vt-flow';
|
|
2
|
+
import { VtFlowRecord, type VtFlowEcsIssuanceExemptionContext } from '@verana-labs/credo-ts-didcomm-vt-flow';
|
|
3
3
|
import { BaseAgentModules, VsAgent } from '../agent';
|
|
4
|
-
import {
|
|
4
|
+
import { Participant } from '../blockchain/types';
|
|
5
5
|
export interface VtFlowOrchestratorOptions {
|
|
6
6
|
publicApiBaseUrl?: string;
|
|
7
|
-
indexer?: VeranaIndexerService;
|
|
8
7
|
agentParticipantId?: number;
|
|
9
8
|
walletAgentParticipantId?: number;
|
|
10
9
|
}
|
|
@@ -13,13 +12,23 @@ export interface StartOnboardingProcessInput {
|
|
|
13
12
|
participantSessionId?: string;
|
|
14
13
|
claims?: Record<string, unknown>;
|
|
15
14
|
}
|
|
16
|
-
export interface
|
|
15
|
+
export interface ValidateOnboardingProcessInput {
|
|
17
16
|
vtFlowRecordId: string;
|
|
17
|
+
/** Only for a HOLDER. It defaults to the schema of the applicant participant. */
|
|
18
|
+
credentialSchemaId?: string;
|
|
19
|
+
credentialType?: string[];
|
|
20
|
+
credentialContext?: string[];
|
|
21
|
+
}
|
|
22
|
+
export interface OfferOnboardingCredentialInput {
|
|
23
|
+
vtFlowRecordId: string;
|
|
24
|
+
/** The credential validateOnboardingProcess built. Without it the method builds one. */
|
|
25
|
+
credential?: JsonCredential;
|
|
26
|
+
/** It defaults to the schema of the applicant participant. */
|
|
27
|
+
credentialSchemaId?: string;
|
|
28
|
+
/** The participant validateOnboardingProcess returned; saves a second chain read. */
|
|
29
|
+
participant?: Participant;
|
|
18
30
|
credentialType?: string[];
|
|
19
31
|
credentialContext?: string[];
|
|
20
|
-
credentialSchemaId: string;
|
|
21
|
-
agentParticipantId?: number;
|
|
22
|
-
walletAgentParticipantId?: number;
|
|
23
32
|
}
|
|
24
33
|
export interface AcceptCredentialInput {
|
|
25
34
|
vtFlowRecordId: string;
|
|
@@ -29,7 +38,35 @@ export declare class VtFlowOrchestrator {
|
|
|
29
38
|
private readonly options;
|
|
30
39
|
constructor(agent: VsAgent<BaseAgentModules>, options?: VtFlowOrchestratorOptions);
|
|
31
40
|
startOnboardingProcess(input: StartOnboardingProcessInput): Promise<VtFlowRecord>;
|
|
32
|
-
|
|
41
|
+
/**
|
|
42
|
+
* Validate an onboarding process: record the outcome on-chain, accept the onboarding request and
|
|
43
|
+
* move the record to VALIDATED. It sends no credential. Only a HOLDER takes part in a credential
|
|
44
|
+
* exchange; an ISSUER, a VERIFIER or a grantor joins the Ecosystem, and SetParticipantOPToValidated
|
|
45
|
+
* is the whole of it. The caller decides what follows, from the role of the returned participant.
|
|
46
|
+
*
|
|
47
|
+
* For a HOLDER it builds the credential before the chain write, and returns it for
|
|
48
|
+
* offerOnboardingCredential. Claims that do not satisfy the schema, or a schema fetch that fails,
|
|
49
|
+
* must stop the process while the chain holds no outcome yet and the caller can repeat the call.
|
|
50
|
+
*
|
|
51
|
+
* A record that is already VALIDATED and has no credential exchange keeps the chain outcome and
|
|
52
|
+
* only builds the credential again. A repeat call thus re-drives an offer that did not complete.
|
|
53
|
+
*/
|
|
54
|
+
validateOnboardingProcess(input: ValidateOnboardingProcessInput): Promise<{
|
|
55
|
+
record: VtFlowRecord;
|
|
56
|
+
participant: Participant;
|
|
57
|
+
credential?: JsonCredential;
|
|
58
|
+
}>;
|
|
59
|
+
/**
|
|
60
|
+
* Offer the credential of an onboarding process to its applicant. Call it only for a HOLDER, and
|
|
61
|
+
* only after validateOnboardingProcess has moved the record to VALIDATED. Give it the credential
|
|
62
|
+
* that validateOnboardingProcess built, so that the process does not build the credential twice.
|
|
63
|
+
*/
|
|
64
|
+
offerOnboardingCredential(input: OfferOnboardingCredentialInput): Promise<VtFlowRecord>;
|
|
65
|
+
/**
|
|
66
|
+
* Close an onboarding process that carries no credential exchange, on the validator side. The
|
|
67
|
+
* applicant reaches the same state from the SetParticipantOPToValidated chain event.
|
|
68
|
+
*/
|
|
69
|
+
completeOnboardingProcess(vtFlowRecordId: string): Promise<VtFlowRecord>;
|
|
33
70
|
acceptCredential(input: AcceptCredentialInput): Promise<VtFlowRecord>;
|
|
34
71
|
buildDirectIssuanceOffer(vtFlowRecordId: string): Promise<{
|
|
35
72
|
credentialFormats: {
|
|
@@ -38,6 +75,7 @@ export declare class VtFlowOrchestrator {
|
|
|
38
75
|
issuerParticipantId: number;
|
|
39
76
|
} | null>;
|
|
40
77
|
private buildCredential;
|
|
78
|
+
private resolveJsonSchemaCredentialId;
|
|
41
79
|
/** Per the spec the algorithm comes from the schema, never from the digest value. */
|
|
42
80
|
private digestAlgorithmForSchema;
|
|
43
81
|
/** Fired after signing and before delivery, so a failure here must abort the issuance. */
|
|
@@ -47,7 +85,7 @@ export declare class VtFlowOrchestrator {
|
|
|
47
85
|
onCredentialCompleted(vtFlowRecordId: string): Promise<void>;
|
|
48
86
|
private triggerResolver;
|
|
49
87
|
private getOfferedCredentialJson;
|
|
50
|
-
|
|
88
|
+
checkEcsIssuanceExemption(context: VtFlowEcsIssuanceExemptionContext): Promise<boolean>;
|
|
51
89
|
publishCredentialAsLinkedVp(vtFlowRecordId: string): Promise<void>;
|
|
52
90
|
private extractSchemaBaseId;
|
|
53
91
|
rotateRequesterDidToPeer(connectionId: string): Promise<void>;
|