@verana-labs/vs-agent-sdk 2.0.0-dev.6 → 2.0.0-dev.60
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 +0 -2
- package/build/adminApi/AdminApiError.d.ts +25 -0
- package/build/adminApi/AdminApiError.js +57 -0
- package/build/adminApi/AdminApiError.js.map +1 -0
- package/build/adminApi/didcommModules.d.ts +2 -0
- package/build/adminApi/didcommModules.js +8 -0
- package/build/adminApi/didcommModules.js.map +1 -0
- package/build/adminApi/index.d.ts +3 -0
- package/build/adminApi/index.js +20 -0
- package/build/adminApi/index.js.map +1 -0
- package/build/adminApi/moduleEndpoint.d.ts +8 -0
- package/build/adminApi/moduleEndpoint.js +28 -0
- package/build/adminApi/moduleEndpoint.js.map +1 -0
- package/build/agent/VsAgent.d.ts +15 -33
- package/build/agent/VsAgent.js +75 -205
- package/build/agent/VsAgent.js.map +1 -1
- package/build/agent/createVsAgent.d.ts +5 -5
- package/build/agent/createVsAgent.js +3 -5
- package/build/agent/createVsAgent.js.map +1 -1
- package/build/blockchain/AnonCredsTrustService.d.ts +62 -0
- package/build/blockchain/AnonCredsTrustService.js +256 -0
- package/build/blockchain/AnonCredsTrustService.js.map +1 -0
- package/build/blockchain/AuthorizationService.d.ts +5 -3
- package/build/blockchain/AuthorizationService.js +17 -29
- package/build/blockchain/AuthorizationService.js.map +1 -1
- package/build/blockchain/IndexerWebSocketService.d.ts +7 -1
- package/build/blockchain/IndexerWebSocketService.js +68 -36
- package/build/blockchain/IndexerWebSocketService.js.map +1 -1
- package/build/blockchain/VeranaChainService.d.ts +2 -13
- package/build/blockchain/VeranaChainService.js +8 -113
- package/build/blockchain/VeranaChainService.js.map +1 -1
- package/build/blockchain/VeranaIndexerService.d.ts +14 -1
- package/build/blockchain/VeranaIndexerService.js +122 -8
- package/build/blockchain/VeranaIndexerService.js.map +1 -1
- package/build/blockchain/handlers/authorizationHandlers.js +2 -2
- package/build/blockchain/handlers/authorizationHandlers.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 +21 -2
- package/build/blockchain/handlers/stateMutations.js +280 -34
- package/build/blockchain/handlers/stateMutations.js.map +1 -1
- package/build/blockchain/index.d.ts +2 -0
- package/build/blockchain/index.js +2 -0
- package/build/blockchain/index.js.map +1 -1
- package/build/blockchain/indexerMappers.d.ts +3 -0
- package/build/blockchain/indexerMappers.js +53 -0
- package/build/blockchain/indexerMappers.js.map +1 -0
- package/build/blockchain/types.d.ts +5 -57
- package/build/blockchain/types.js.map +1 -1
- package/build/bootstrap/EcsBootstrapService.d.ts +14 -3
- package/build/bootstrap/EcsBootstrapService.js +155 -76
- package/build/bootstrap/EcsBootstrapService.js.map +1 -1
- package/build/credentials/FullTailsFileService.d.ts +0 -1
- package/build/credentials/FullTailsFileService.js +0 -49
- package/build/credentials/FullTailsFileService.js.map +1 -1
- package/build/did/CachedDocumentLoader.d.ts +3 -0
- package/build/did/CachedDocumentLoader.js +7 -1
- package/build/did/CachedDocumentLoader.js.map +1 -1
- package/build/did/CachedWebDidResolver.d.ts +0 -4
- package/build/did/CachedWebDidResolver.js +1 -5
- package/build/did/CachedWebDidResolver.js.map +1 -1
- package/build/did/artifactServices.d.ts +12 -0
- package/build/did/artifactServices.js +48 -0
- package/build/did/artifactServices.js.map +1 -0
- package/build/did/legacyDidWeb.d.ts +6 -4
- package/build/did/legacyDidWeb.js +17 -14
- package/build/did/legacyDidWeb.js.map +1 -1
- package/build/did/publicDid.d.ts +4 -0
- package/build/did/publicDid.js +19 -0
- package/build/did/publicDid.js.map +1 -0
- package/build/events/BaseMessageEvents.js +139 -5
- package/build/events/BaseMessageEvents.js.map +1 -1
- package/build/events/ConnectionEvents.js +110 -82
- package/build/events/ConnectionEvents.js.map +1 -1
- package/build/events/VsAgentEvents.d.ts +11 -9
- package/build/events/VsAgentEvents.js +8 -1
- package/build/events/VsAgentEvents.js.map +1 -1
- package/build/events/VtFlowEvents.d.ts +1 -1
- package/build/events/VtFlowEvents.js +2 -19
- package/build/events/VtFlowEvents.js.map +1 -1
- package/build/index.d.ts +6 -1
- package/build/index.js +10 -2
- package/build/index.js.map +1 -1
- package/build/plugins/setupBaseDidComm.js +6 -12
- 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/types.d.ts +5 -0
- package/build/types.js.map +1 -1
- package/build/utils/agent.d.ts +27 -3
- package/build/utils/agent.js +83 -22
- 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/ecsService.d.ts +8 -0
- package/build/utils/ecsService.js +23 -0
- package/build/utils/ecsService.js.map +1 -0
- package/build/utils/index.d.ts +4 -0
- package/build/utils/index.js +4 -0
- package/build/utils/index.js.map +1 -1
- package/build/utils/selfIssuedEcsCredential.d.ts +8 -0
- package/build/utils/selfIssuedEcsCredential.js +151 -0
- package/build/utils/selfIssuedEcsCredential.js.map +1 -0
- package/build/utils/setupSelfTr.d.ts +29 -66
- package/build/utils/setupSelfTr.js +78 -282
- package/build/utils/setupSelfTr.js.map +1 -1
- package/build/utils/trustCredentialStore.d.ts +67 -9
- package/build/utils/trustCredentialStore.js +296 -109
- package/build/utils/trustCredentialStore.js.map +1 -1
- package/build/utils/util.d.ts +10 -0
- package/build/utils/util.js +16 -0
- package/build/utils/util.js.map +1 -1
- package/build/utils/vcdm2.d.ts +34 -0
- package/build/utils/vcdm2.js +62 -0
- package/build/utils/vcdm2.js.map +1 -0
- 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 +59 -13
- package/build/vtFlow/VtFlowOrchestrator.js +139 -91
- 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 +12 -12
- package/build/did/migrateWebVhLog.d.ts +0 -34
- package/build/did/migrateWebVhLog.js +0 -230
- package/build/did/migrateWebVhLog.js.map +0 -1
- package/build/did/migrateWebVhVersionTime.d.ts +0 -9
- package/build/did/migrateWebVhVersionTime.js +0 -191
- package/build/did/migrateWebVhVersionTime.js.map +0 -1
|
@@ -4,6 +4,8 @@ exports.VtFlowOrchestrator = void 0;
|
|
|
4
4
|
const core_1 = require("@credo-ts/core");
|
|
5
5
|
const credo_ts_didcomm_vt_flow_1 = require("@verana-labs/credo-ts-didcomm-vt-flow");
|
|
6
6
|
const verre_1 = require("@verana-labs/verre");
|
|
7
|
+
const vs_agent_model_1 = require("@verana-labs/vs-agent-model");
|
|
8
|
+
const ecsIssuanceExemption_1 = require("./ecsIssuanceExemption");
|
|
7
9
|
const types_1 = require("../blockchain/types");
|
|
8
10
|
const types_2 = require("../types");
|
|
9
11
|
const utils_1 = require("../utils");
|
|
@@ -14,10 +16,10 @@ class VtFlowOrchestrator {
|
|
|
14
16
|
}
|
|
15
17
|
async startOnboardingProcess(input) {
|
|
16
18
|
var _a, _b, _c, _d;
|
|
17
|
-
|
|
19
|
+
this.requireChain();
|
|
18
20
|
if (!this.agent.did)
|
|
19
21
|
throw new Error('Agent has no public DID');
|
|
20
|
-
const holderParticipant = await
|
|
22
|
+
const holderParticipant = await this.agent.indexer.findParticipant(input.applicantParticipantId);
|
|
21
23
|
if (!holderParticipant) {
|
|
22
24
|
throw new Error(`Applicant participant ${input.applicantParticipantId} not found on chain`);
|
|
23
25
|
}
|
|
@@ -37,7 +39,7 @@ class VtFlowOrchestrator {
|
|
|
37
39
|
if (!holderParticipant.validatorParticipantId) {
|
|
38
40
|
throw new Error(`Applicant participant ${input.applicantParticipantId} has no validator_participant_id`);
|
|
39
41
|
}
|
|
40
|
-
const validatorParticipant = await
|
|
42
|
+
const validatorParticipant = await this.agent.indexer.findParticipant(Number(holderParticipant.validatorParticipantId));
|
|
41
43
|
if (!(validatorParticipant === null || validatorParticipant === void 0 ? void 0 : validatorParticipant.did)) {
|
|
42
44
|
throw new Error(`Validator participant ${holderParticipant.validatorParticipantId} not resolvable`);
|
|
43
45
|
}
|
|
@@ -65,16 +67,7 @@ class VtFlowOrchestrator {
|
|
|
65
67
|
connectionId = connection.id;
|
|
66
68
|
}
|
|
67
69
|
if (!connectionId) {
|
|
68
|
-
|
|
69
|
-
did: validatorParticipant.did,
|
|
70
|
-
ourDid: this.agent.did,
|
|
71
|
-
label: this.agent.label,
|
|
72
|
-
didCommVersion: 'v2',
|
|
73
|
-
});
|
|
74
|
-
if (!connectionRecord)
|
|
75
|
-
throw new Error('Failed to establish DIDComm connection to validator');
|
|
76
|
-
const ready = await this.agent.didcomm.connections.returnWhenIsConnected(connectionRecord.id);
|
|
77
|
-
connectionId = ready.id;
|
|
70
|
+
connectionId = await (0, utils_1.connectToPublicDid)(this.agent, validatorParticipant.did);
|
|
78
71
|
}
|
|
79
72
|
return vtFlowApi.sendOnboardingRequest({
|
|
80
73
|
connectionId,
|
|
@@ -85,8 +78,21 @@ class VtFlowOrchestrator {
|
|
|
85
78
|
claims: input.claims,
|
|
86
79
|
});
|
|
87
80
|
}
|
|
88
|
-
|
|
89
|
-
|
|
81
|
+
/**
|
|
82
|
+
* Validate an onboarding process: record the outcome on-chain, accept the onboarding request and
|
|
83
|
+
* move the record to VALIDATED. It sends no credential. Only a HOLDER takes part in a credential
|
|
84
|
+
* exchange; an ISSUER, a VERIFIER or a grantor joins the Ecosystem, and SetParticipantOPToValidated
|
|
85
|
+
* is the whole of it. The caller decides what follows, from the role of the returned participant.
|
|
86
|
+
*
|
|
87
|
+
* For a HOLDER it builds the credential before the chain write, and returns it for
|
|
88
|
+
* offerOnboardingCredential. Claims that do not satisfy the schema, or a schema fetch that fails,
|
|
89
|
+
* must stop the process while the chain holds no outcome yet and the caller can repeat the call.
|
|
90
|
+
*
|
|
91
|
+
* A record that is already VALIDATED and has no credential exchange keeps the chain outcome and
|
|
92
|
+
* only builds the credential again. A repeat call thus re-drives an offer that did not complete.
|
|
93
|
+
*/
|
|
94
|
+
async validateOnboardingProcess(input) {
|
|
95
|
+
var _a, _b;
|
|
90
96
|
const chain = this.requireChain();
|
|
91
97
|
if (!this.agent.did)
|
|
92
98
|
throw new Error('Agent has no public DID');
|
|
@@ -99,43 +105,79 @@ class VtFlowOrchestrator {
|
|
|
99
105
|
if (record.variant !== credo_ts_didcomm_vt_flow_1.VtFlowVariant.OnboardingProcess) {
|
|
100
106
|
throw new Error(`Record variant is '${record.variant}', expected OnboardingProcess`);
|
|
101
107
|
}
|
|
102
|
-
|
|
103
|
-
|
|
108
|
+
const resumeOffer = record.state === credo_ts_didcomm_vt_flow_1.VtFlowState.Validated && !record.credentialExchangeRecordId;
|
|
109
|
+
if (record.state !== credo_ts_didcomm_vt_flow_1.VtFlowState.AwaitingOr && !resumeOffer) {
|
|
110
|
+
throw new Error(`Record state is '${record.state}', expected '${credo_ts_didcomm_vt_flow_1.VtFlowState.AwaitingOr}', or ` +
|
|
111
|
+
`'${credo_ts_didcomm_vt_flow_1.VtFlowState.Validated}' with no credential exchange`);
|
|
104
112
|
}
|
|
105
113
|
if (!record.participantId)
|
|
106
114
|
throw new Error('Record has no participantId');
|
|
107
|
-
const
|
|
108
|
-
const
|
|
109
|
-
if (!
|
|
110
|
-
throw new Error(`
|
|
111
|
-
if (!
|
|
112
|
-
throw new Error('
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
115
|
+
const participantId = Number(record.participantId);
|
|
116
|
+
const participant = await this.agent.indexer.findParticipant(participantId);
|
|
117
|
+
if (!participant)
|
|
118
|
+
throw new Error(`Applicant participant ${participantId} not found on chain`);
|
|
119
|
+
if (!participant.did)
|
|
120
|
+
throw new Error('Applicant participant has no DID');
|
|
121
|
+
const credential = Number(participant.role) === types_2.HOLDER_PARTICIPANT_TYPE
|
|
122
|
+
? await this.buildCredential({
|
|
123
|
+
credentialSchemaId: (_a = input.credentialSchemaId) !== null && _a !== void 0 ? _a : String(participant.schemaId),
|
|
124
|
+
subjectDid: participant.did,
|
|
125
|
+
claims: ((_b = record.claims) !== null && _b !== void 0 ? _b : {}),
|
|
126
|
+
credentialType: input.credentialType,
|
|
127
|
+
credentialContext: input.credentialContext,
|
|
128
|
+
})
|
|
129
|
+
: undefined;
|
|
130
|
+
if (resumeOffer)
|
|
131
|
+
return { record, participant, credential };
|
|
120
132
|
// op_summary_digest (MOD-PP-MSG-3) digests the applicant's submission, not the credential
|
|
121
|
-
await chain.setParticipantOPToValidated({
|
|
122
|
-
id: holderParticipantId,
|
|
123
|
-
corporation: holderParticipant.corporation,
|
|
124
|
-
});
|
|
133
|
+
await chain.setParticipantOPToValidated({ id: participantId, corporation: participant.corporation });
|
|
125
134
|
await vtFlowApi.acceptOnboardingRequest(record.id);
|
|
126
|
-
await vtFlowApi.markValidated(record.id);
|
|
135
|
+
const validated = await vtFlowApi.markValidated(record.id);
|
|
136
|
+
return { record: validated, participant, credential };
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Offer the credential of an onboarding process to its applicant. Call it only for a HOLDER, and
|
|
140
|
+
* only after validateOnboardingProcess has moved the record to VALIDATED. Give it the credential
|
|
141
|
+
* that validateOnboardingProcess built, so that the process does not build the credential twice.
|
|
142
|
+
*/
|
|
143
|
+
async offerOnboardingCredential(input) {
|
|
144
|
+
var _a, _b, _c, _d;
|
|
145
|
+
this.requireChain();
|
|
146
|
+
const vtFlowApi = this.resolveVtFlowApi();
|
|
147
|
+
const record = await vtFlowApi.findById(input.vtFlowRecordId);
|
|
148
|
+
if (!record)
|
|
149
|
+
throw new Error(`vt-flow record ${input.vtFlowRecordId} not found`);
|
|
150
|
+
if (!record.participantId)
|
|
151
|
+
throw new Error('Record has no participantId');
|
|
152
|
+
const participant = (_a = input.participant) !== null && _a !== void 0 ? _a : (await this.agent.indexer.findParticipant(Number(record.participantId)));
|
|
153
|
+
if (!(participant === null || participant === void 0 ? void 0 : participant.did))
|
|
154
|
+
throw new Error('Applicant participant has no DID');
|
|
155
|
+
const unsignedCredentialJson = (_b = input.credential) !== null && _b !== void 0 ? _b : (await this.buildCredential({
|
|
156
|
+
credentialSchemaId: (_c = input.credentialSchemaId) !== null && _c !== void 0 ? _c : String(participant.schemaId),
|
|
157
|
+
subjectDid: participant.did,
|
|
158
|
+
claims: ((_d = record.claims) !== null && _d !== void 0 ? _d : {}),
|
|
159
|
+
credentialType: input.credentialType,
|
|
160
|
+
credentialContext: input.credentialContext,
|
|
161
|
+
}));
|
|
162
|
+
// W3C Data Integrity attachment format (RFC 0809). The applicant DID is the credential subject
|
|
163
|
+
// and the exchange runs over its authenticated connection, so no extra binding is required. The
|
|
164
|
+
// cryptosuite is the issuer's choice and is applied when the credential is issued.
|
|
127
165
|
const { record: offered } = await vtFlowApi.offerCredentialForSession({
|
|
128
166
|
vtFlowRecordId: record.id,
|
|
129
|
-
issuerParticipantId: Number(
|
|
167
|
+
issuerParticipantId: Number(participant.validatorParticipantId),
|
|
130
168
|
credentialFormats: {
|
|
131
|
-
|
|
132
|
-
credential: unsignedCredentialJson,
|
|
133
|
-
options: { proofType: 'Ed25519Signature2020', proofPurpose: 'assertionMethod' },
|
|
134
|
-
},
|
|
169
|
+
dataIntegrity: { credential: unsignedCredentialJson, bindingRequired: false },
|
|
135
170
|
},
|
|
136
171
|
});
|
|
137
172
|
return offered;
|
|
138
173
|
}
|
|
174
|
+
/**
|
|
175
|
+
* Close an onboarding process that carries no credential exchange, on the validator side. The
|
|
176
|
+
* applicant reaches the same state from the SetParticipantOPToValidated chain event.
|
|
177
|
+
*/
|
|
178
|
+
async completeOnboardingProcess(vtFlowRecordId) {
|
|
179
|
+
return this.resolveVtFlowApi().markCompleted(vtFlowRecordId);
|
|
180
|
+
}
|
|
139
181
|
async acceptCredential(input) {
|
|
140
182
|
const vtFlowApi = this.resolveVtFlowApi();
|
|
141
183
|
const record = await vtFlowApi.findById(input.vtFlowRecordId);
|
|
@@ -154,7 +196,7 @@ class VtFlowOrchestrator {
|
|
|
154
196
|
const chain = this.requireChain();
|
|
155
197
|
if (!this.agent.did)
|
|
156
198
|
throw new Error('Agent has no public DID');
|
|
157
|
-
const indexer = this.
|
|
199
|
+
const indexer = this.agent.indexer;
|
|
158
200
|
const vtFlowApi = this.resolveVtFlowApi();
|
|
159
201
|
const record = await vtFlowApi.findById(vtFlowRecordId);
|
|
160
202
|
if (!record)
|
|
@@ -185,47 +227,48 @@ class VtFlowOrchestrator {
|
|
|
185
227
|
});
|
|
186
228
|
return {
|
|
187
229
|
credentialFormats: {
|
|
188
|
-
|
|
189
|
-
credential: unsignedCredentialJson,
|
|
190
|
-
options: { proofType: 'Ed25519Signature2020', proofPurpose: 'assertionMethod' },
|
|
191
|
-
},
|
|
230
|
+
dataIntegrity: { credential: unsignedCredentialJson, bindingRequired: false },
|
|
192
231
|
},
|
|
193
232
|
issuerParticipantId: issuer.id,
|
|
194
233
|
};
|
|
195
234
|
}
|
|
235
|
+
/**
|
|
236
|
+
* Builds the unsigned VC Data Model 2.0 credential that goes into the offer. RFC 0809 derives the
|
|
237
|
+
* advertised data model version from its context, and the issuer secures it with a
|
|
238
|
+
* DataIntegrityProof once the applicant requests it.
|
|
239
|
+
*/
|
|
196
240
|
async buildCredential(input) {
|
|
197
|
-
var _a
|
|
198
|
-
const
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
throw new Error(`No stored VTJSC found for ${schemaRef}`);
|
|
207
|
-
const { data } = entry;
|
|
208
|
-
const unsignedCredential = (0, utils_1.createCredential)({
|
|
241
|
+
var _a;
|
|
242
|
+
const jsonSchemaCredentialId = await this.resolveJsonSchemaCredentialId(input.credentialSchemaId);
|
|
243
|
+
// A credential whose claims don't satisfy the schema's required fields is not a valid
|
|
244
|
+
// instance of that credential type — reject it here rather than issue an empty shell.
|
|
245
|
+
const schema = await this.agent.indexer.getCredentialSchema(input.credentialSchemaId);
|
|
246
|
+
(0, utils_1.validateSchema)(JSON.parse(schema.json_schema), Object.assign({ id: input.subjectDid }, input.claims));
|
|
247
|
+
// Data model 2.0 holds the claims on the credential subject itself; the applicant DID wins over
|
|
248
|
+
// any `id` claim so the credential can never name a different subject
|
|
249
|
+
const unsignedCredential = (0, utils_1.createW3cV2Credential)({
|
|
209
250
|
id: `${this.agent.did}#${core_1.utils.uuid()}`,
|
|
210
251
|
type: (_a = input.credentialType) !== null && _a !== void 0 ? _a : ['VerifiableCredential', 'VerifiableTrustCredential'],
|
|
211
252
|
issuer: this.agent.did,
|
|
212
|
-
|
|
253
|
+
context: input.credentialContext,
|
|
254
|
+
credentialSubject: Object.assign(Object.assign({}, input.claims), { id: input.subjectDid }),
|
|
255
|
+
credentialSchema: { id: jsonSchemaCredentialId, type: 'JsonSchemaCredential' },
|
|
213
256
|
});
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
type: 'JsonSchemaCredential',
|
|
219
|
-
};
|
|
220
|
-
return core_1.JsonTransformer.toJSON(unsignedCredential);
|
|
257
|
+
return (0, utils_1.toOfferedCredentialJson)(unsignedCredential);
|
|
258
|
+
}
|
|
259
|
+
async resolveJsonSchemaCredentialId(credentialSchemaId) {
|
|
260
|
+
return (0, utils_1.resolveJsonSchemaCredentialId)(this.agent, this.agent.indexer, credentialSchemaId, this.requireChain().getChainId);
|
|
221
261
|
}
|
|
222
262
|
/** Per the spec the algorithm comes from the schema, never from the digest value. */
|
|
223
263
|
async digestAlgorithmForSchema(schemaId) {
|
|
224
|
-
|
|
264
|
+
return (await this.credentialSchema(schemaId)).digestAlgorithm;
|
|
265
|
+
}
|
|
266
|
+
async credentialSchema(schemaId) {
|
|
267
|
+
const schema = await this.agent.indexer.getCredentialSchema(schemaId);
|
|
225
268
|
if (!schema.digest_algorithm) {
|
|
226
269
|
throw new Error(`Credential schema ${schemaId} has no digest_algorithm`);
|
|
227
270
|
}
|
|
228
|
-
return schema.digest_algorithm;
|
|
271
|
+
return { digestAlgorithm: schema.digest_algorithm, ecsKey: await (0, vs_agent_model_1.classifyEcsSchema)(schema.json_schema) };
|
|
229
272
|
}
|
|
230
273
|
/** Fired after signing and before delivery, so a failure here must abort the issuance. */
|
|
231
274
|
async onCredentialIssued(vtFlowRecordId, signedCredential) {
|
|
@@ -238,7 +281,7 @@ class VtFlowOrchestrator {
|
|
|
238
281
|
if (record.issuerParticipantId == null) {
|
|
239
282
|
throw new Error(`vt-flow record ${vtFlowRecordId} has no issuerParticipantId to anchor against`);
|
|
240
283
|
}
|
|
241
|
-
const issuer = await this.
|
|
284
|
+
const issuer = await this.agent.indexer.getParticipant(record.issuerParticipantId);
|
|
242
285
|
const algorithm = await this.digestAlgorithmForSchema(issuer.schema_id);
|
|
243
286
|
const digest = (0, verre_1.computeCredentialDigestJCS)(signedCredential, algorithm);
|
|
244
287
|
await chain.createOrUpdateParticipantSession({
|
|
@@ -261,7 +304,7 @@ class VtFlowOrchestrator {
|
|
|
261
304
|
if (!record.credentialExchangeRecordId) {
|
|
262
305
|
throw new Error('Record has no credentialExchangeRecordId; nothing to verify');
|
|
263
306
|
}
|
|
264
|
-
const indexer = this.
|
|
307
|
+
const indexer = this.agent.indexer;
|
|
265
308
|
const session = await indexer.getParticipantSession(record.participantSessionId);
|
|
266
309
|
if (!session) {
|
|
267
310
|
throw new Error(`ParticipantSession ${record.participantSessionId} not found on indexer`);
|
|
@@ -282,13 +325,15 @@ class VtFlowOrchestrator {
|
|
|
282
325
|
if (record.schemaId != null && Number(issuer.schema_id) !== Number(record.schemaId)) {
|
|
283
326
|
throw new Error(`Issuer participant schema ${issuer.schema_id} does not match credential schema ${record.schemaId}`);
|
|
284
327
|
}
|
|
285
|
-
const credentialJson = await this.
|
|
286
|
-
const
|
|
287
|
-
const digest = (0, verre_1.computeCredentialDigestJCS)(credentialJson,
|
|
328
|
+
const credentialJson = await this.getReceivedCredentialJson(record.credentialExchangeRecordId);
|
|
329
|
+
const { digestAlgorithm, ecsKey } = await this.credentialSchema(issuer.schema_id);
|
|
330
|
+
const digest = (0, verre_1.computeCredentialDigestJCS)(credentialJson, digestAlgorithm);
|
|
288
331
|
const anchored = await indexer.getDigest(digest);
|
|
289
332
|
if (!anchored) {
|
|
290
333
|
throw new Error(`Credential digest ${digest} is not anchored on-chain`);
|
|
291
334
|
}
|
|
335
|
+
if (ecsKey)
|
|
336
|
+
await vtFlowApi.setEcsSchemaKey(record.id, ecsKey);
|
|
292
337
|
}
|
|
293
338
|
async onCredentialRevoked(vtFlowRecordId) {
|
|
294
339
|
const vtFlowApi = this.resolveVtFlowApi();
|
|
@@ -297,7 +342,7 @@ class VtFlowOrchestrator {
|
|
|
297
342
|
return;
|
|
298
343
|
if (!this.options.publicApiBaseUrl || !record.credentialExchangeRecordId)
|
|
299
344
|
return;
|
|
300
|
-
const credentialId = await (0, utils_1.removeStoredTrustCredential)(this.agent,
|
|
345
|
+
const credentialId = await (0, utils_1.removeStoredTrustCredential)(this.agent, record.credentialExchangeRecordId);
|
|
301
346
|
if (credentialId) {
|
|
302
347
|
this.agent.config.logger.info(`[vt-flow] removed revoked credential and its linked VP (${credentialId})`);
|
|
303
348
|
}
|
|
@@ -322,22 +367,25 @@ class VtFlowOrchestrator {
|
|
|
322
367
|
return;
|
|
323
368
|
await chain.triggerResolver(Number(record.participantId));
|
|
324
369
|
}
|
|
325
|
-
|
|
326
|
-
|
|
370
|
+
/** The signed credential as the issuer attached it, which is the exact JSON its digest covers. */
|
|
371
|
+
async getReceivedCredentialJson(credentialExchangeRecordId) {
|
|
372
|
+
var _a, _b;
|
|
327
373
|
const formatData = await this.agent.didcomm.credentials.getFormatData(credentialExchangeRecordId);
|
|
328
|
-
const credentialJson = (_a = formatData.credential) === null || _a === void 0 ? void 0 : _a.
|
|
374
|
+
const credentialJson = (_b = (_a = formatData.credential) === null || _a === void 0 ? void 0 : _a.dataIntegrity) === null || _b === void 0 ? void 0 : _b.credential;
|
|
329
375
|
if (!credentialJson)
|
|
330
|
-
throw new Error('
|
|
376
|
+
throw new Error('Received credential has no data integrity credential body');
|
|
331
377
|
return credentialJson;
|
|
332
378
|
}
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
379
|
+
// VS-CONN-VS gate: consulted only after trust resolution rejected the peer.
|
|
380
|
+
async checkEcsIssuanceExemption(context) {
|
|
381
|
+
return (0, ecsIssuanceExemption_1.isEcsIssuanceExempt)({
|
|
382
|
+
indexer: this.agent.indexer,
|
|
383
|
+
agent: this.agent,
|
|
384
|
+
trustedEcosystemDids: this.agent.trustedEcosystemDids,
|
|
385
|
+
}, context);
|
|
338
386
|
}
|
|
339
387
|
async publishCredentialAsLinkedVp(vtFlowRecordId) {
|
|
340
|
-
var _a
|
|
388
|
+
var _a;
|
|
341
389
|
if (!this.options.publicApiBaseUrl) {
|
|
342
390
|
throw new Error('publicApiBaseUrl is required to publish a LinkedVerifiablePresentation');
|
|
343
391
|
}
|
|
@@ -350,18 +398,18 @@ class VtFlowOrchestrator {
|
|
|
350
398
|
if (!record.credentialExchangeRecordId) {
|
|
351
399
|
throw new Error(`vt-flow record ${vtFlowRecordId} has no credentialExchangeRecordId`);
|
|
352
400
|
}
|
|
353
|
-
const
|
|
354
|
-
const
|
|
355
|
-
if (!jsonld) {
|
|
356
|
-
throw new Error(`No jsonld credential in exchange ${record.credentialExchangeRecordId}`);
|
|
357
|
-
}
|
|
358
|
-
const schemaRef = (_b = jsonld.credentialSchema) === null || _b === void 0 ? void 0 : _b.id;
|
|
401
|
+
const credentialJson = await this.getReceivedCredentialJson(record.credentialExchangeRecordId);
|
|
402
|
+
const schemaRef = (_a = credentialJson.credentialSchema) === null || _a === void 0 ? void 0 : _a.id;
|
|
359
403
|
const schemaBaseId = schemaRef ? this.extractSchemaBaseId(schemaRef) : undefined;
|
|
360
404
|
if (!schemaBaseId) {
|
|
361
405
|
throw new Error(`Cannot publish Linked VP: credential has no extractable schema base id (credentialSchema.id=${schemaRef !== null && schemaRef !== void 0 ? schemaRef : 'undefined'})`);
|
|
362
406
|
}
|
|
363
|
-
|
|
364
|
-
|
|
407
|
+
// A data model 2.0 credential arrives secured with a DataIntegrityProof; a validator still on
|
|
408
|
+
// data model 1.1 sends a linked data proof, and both are published the same way
|
|
409
|
+
const credential = (0, utils_1.isVcdm2Credential)(credentialJson)
|
|
410
|
+
? core_1.W3cV2DataIntegrityVerifiableCredential.fromObject(credentialJson)
|
|
411
|
+
: core_1.JsonTransformer.fromJSON(credentialJson, core_1.W3cJsonLdVerifiableCredential);
|
|
412
|
+
await (0, utils_1.createVtc)(this.agent, this.options.publicApiBaseUrl, record.ecsSchemaKey ? (0, utils_1.linkedVpSchemaId)(record.ecsSchemaKey) : schemaBaseId, credential);
|
|
365
413
|
}
|
|
366
414
|
extractSchemaBaseId(jscUrl) {
|
|
367
415
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VtFlowOrchestrator.js","sourceRoot":"","sources":["../../src/vtFlow/VtFlowOrchestrator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VtFlowOrchestrator.js","sourceRoot":"","sources":["../../src/vtFlow/VtFlowOrchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,5 +4,6 @@ import type { ResolverConfig } from '@verana-labs/verre';
|
|
|
4
4
|
export interface AssertVerifiableServiceOptions {
|
|
5
5
|
verifiablePublicRegistries: NonNullable<ResolverConfig['verifiablePublicRegistries']>;
|
|
6
6
|
logger?: BaseLogger;
|
|
7
|
+
positiveTtlMs?: number;
|
|
7
8
|
}
|
|
8
9
|
export declare function assertVerifiableService(options: AssertVerifiableServiceOptions): VtFlowAssertVerifiableServiceHook;
|
|
@@ -2,22 +2,62 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.assertVerifiableService = assertVerifiableService;
|
|
4
4
|
const verre_1 = require("@verana-labs/verre");
|
|
5
|
+
class VerdictCache {
|
|
6
|
+
constructor(positiveTtlMs = 5 * 60000) {
|
|
7
|
+
this.positiveTtlMs = positiveTtlMs;
|
|
8
|
+
this.map = new Map();
|
|
9
|
+
}
|
|
10
|
+
get(key) {
|
|
11
|
+
const entry = this.map.get(key);
|
|
12
|
+
if (!entry)
|
|
13
|
+
return undefined;
|
|
14
|
+
if (Date.now() > entry.expiresAt) {
|
|
15
|
+
this.map.delete(key);
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
return entry.value;
|
|
19
|
+
}
|
|
20
|
+
set(key, value) {
|
|
21
|
+
const entry = { value, expiresAt: Date.now() + this.positiveTtlMs };
|
|
22
|
+
this.map.set(key, entry);
|
|
23
|
+
void value.then(resolution => {
|
|
24
|
+
if (this.map.get(key) !== entry)
|
|
25
|
+
return;
|
|
26
|
+
if (resolution.verified && resolution.outcome === verre_1.TrustResolutionOutcome.VERIFIED)
|
|
27
|
+
return;
|
|
28
|
+
this.map.delete(key);
|
|
29
|
+
}, () => {
|
|
30
|
+
if (this.map.get(key) === entry)
|
|
31
|
+
this.map.delete(key);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
delete(key) {
|
|
35
|
+
this.map.delete(key);
|
|
36
|
+
}
|
|
37
|
+
clear() {
|
|
38
|
+
this.map.clear();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
5
41
|
// VS-CONN-VS gate: delegates trust resolution to `@verana-labs/verre` (`resolveDID`)
|
|
6
42
|
function assertVerifiableService(options) {
|
|
7
|
-
|
|
43
|
+
const cache = new VerdictCache(options.positiveTtlMs);
|
|
8
44
|
return async ({ agentContext, peerDid }) => {
|
|
9
45
|
var _a, _b;
|
|
10
46
|
const logger = (_a = options.logger) !== null && _a !== void 0 ? _a : agentContext.config.logger;
|
|
11
47
|
try {
|
|
12
|
-
|
|
48
|
+
const source = cache.get(peerDid) ? 'cache' : 'fresh';
|
|
13
49
|
const { verified, outcome, metadata } = await (0, verre_1.resolveDID)(peerDid, {
|
|
14
50
|
verifiablePublicRegistries: options.verifiablePublicRegistries,
|
|
15
51
|
cache,
|
|
16
52
|
});
|
|
17
|
-
|
|
18
|
-
|
|
53
|
+
const trusted = verified && outcome === verre_1.TrustResolutionOutcome.VERIFIED;
|
|
54
|
+
if (!trusted) {
|
|
55
|
+
logger.warn(`[vt-flow] VS-CONN-VS rejected '${peerDid}': verified=${verified} outcome=${outcome} source=${source} ${(_b = metadata === null || metadata === void 0 ? void 0 : metadata.errorMessage) !== null && _b !== void 0 ? _b : ''}`);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
logger.debug(`[vt-flow] VS-CONN-VS accepted '${peerDid}' source=${source}`);
|
|
19
59
|
}
|
|
20
|
-
return
|
|
60
|
+
return trusted;
|
|
21
61
|
}
|
|
22
62
|
catch (error) {
|
|
23
63
|
logger.warn(`[vt-flow] VS-CONN-VS resolution failed for '${peerDid}': ${error.message}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertVerifiableService.js","sourceRoot":"","sources":["../../src/vtFlow/assertVerifiableService.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"assertVerifiableService.js","sourceRoot":"","sources":["../../src/vtFlow/assertVerifiableService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { BaseLogger } from '@credo-ts/core';
|
|
2
|
+
import type { VtFlowEcsIssuanceExemptionContext } from '@verana-labs/credo-ts-didcomm-vt-flow';
|
|
3
|
+
import { VeranaIndexerService } from '../blockchain/VeranaIndexerService';
|
|
4
|
+
export interface EcsIssuanceExemptionOptions {
|
|
5
|
+
indexer: VeranaIndexerService;
|
|
6
|
+
agent: {
|
|
7
|
+
readonly did?: string;
|
|
8
|
+
};
|
|
9
|
+
trustedEcosystemDids?: string[];
|
|
10
|
+
logger?: BaseLogger;
|
|
11
|
+
}
|
|
12
|
+
export declare function isEcsIssuanceExempt(options: EcsIssuanceExemptionOptions, { agentContext, peerDid, purpose }: VtFlowEcsIssuanceExemptionContext): Promise<boolean>;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isEcsIssuanceExempt = isEcsIssuanceExempt;
|
|
4
|
+
const vs_agent_model_1 = require("@verana-labs/vs-agent-model");
|
|
5
|
+
const types_1 = require("../blockchain/types");
|
|
6
|
+
const EXEMPT_ECS_TYPES = [vs_agent_model_1.ECS.ORG, vs_agent_model_1.ECS.PERSONA, vs_agent_model_1.ECS.SERVICE];
|
|
7
|
+
const PENDING_OP_STATE = 'PENDING';
|
|
8
|
+
// VS-CONN-VS exemption: an applicant onboarding for its first ECS credentials cannot be a Verifiable
|
|
9
|
+
// Service yet, so the peer is admitted on on-chain evidence instead of on its credentials.
|
|
10
|
+
async function isEcsIssuanceExempt(options, { agentContext, peerDid, purpose }) {
|
|
11
|
+
var _a;
|
|
12
|
+
const { indexer, agent, trustedEcosystemDids } = options;
|
|
13
|
+
const logger = (_a = options.logger) !== null && _a !== void 0 ? _a : agentContext.config.logger;
|
|
14
|
+
if (!agent.did)
|
|
15
|
+
return false;
|
|
16
|
+
try {
|
|
17
|
+
const schemaId = purpose.participantId
|
|
18
|
+
? await schemaOfPendingOnboarding(indexer, purpose.participantId, peerDid, agent.did)
|
|
19
|
+
: await schemaOfDirectIssuance(indexer, purpose.schemaId, agent.did);
|
|
20
|
+
if (schemaId === undefined)
|
|
21
|
+
return false;
|
|
22
|
+
return await isTrustedEcsSchema(indexer, schemaId, trustedEcosystemDids);
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
logger.warn(`[vt-flow] VS-CONN-VS exemption denied to '${peerDid}': ${error.message}`);
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// The applicant paid for a PENDING Participant entry that names this agent as its validator; that
|
|
30
|
+
// entry, not a self-issued credential, is what earns the connection.
|
|
31
|
+
async function schemaOfPendingOnboarding(indexer, participantId, peerDid, ownDid) {
|
|
32
|
+
const id = toEntityId(participantId);
|
|
33
|
+
if (id === undefined)
|
|
34
|
+
return undefined;
|
|
35
|
+
const participant = await indexer.getParticipant(id);
|
|
36
|
+
if (!participant || participant.did !== peerDid)
|
|
37
|
+
return undefined;
|
|
38
|
+
if (participant.op_state !== PENDING_OP_STATE)
|
|
39
|
+
return undefined;
|
|
40
|
+
if (participant.revoked || participant.slashed)
|
|
41
|
+
return undefined;
|
|
42
|
+
if (participant.validator_participant_id == null)
|
|
43
|
+
return undefined;
|
|
44
|
+
const validator = await indexer.getParticipant(participant.validator_participant_id);
|
|
45
|
+
if (!validator || validator.did !== ownDid)
|
|
46
|
+
return undefined;
|
|
47
|
+
return participant.schema_id;
|
|
48
|
+
}
|
|
49
|
+
// A Direct Issuance request carries no Participant entry: the only claim to the exemption is that
|
|
50
|
+
// issuing this very schema is what this agent is an ISSUER for.
|
|
51
|
+
async function schemaOfDirectIssuance(indexer, schemaId, ownDid) {
|
|
52
|
+
const id = schemaId === undefined ? undefined : toEntityId(schemaId);
|
|
53
|
+
if (id === undefined)
|
|
54
|
+
return undefined;
|
|
55
|
+
const issuers = await indexer.listParticipants({
|
|
56
|
+
schemaId: id,
|
|
57
|
+
did: ownDid,
|
|
58
|
+
role: types_1.ParticipantRole.Issuer,
|
|
59
|
+
});
|
|
60
|
+
return issuers.some(isUsableIssuer) ? id : undefined;
|
|
61
|
+
}
|
|
62
|
+
async function isTrustedEcsSchema(indexer, schemaId, trustedEcosystemDids) {
|
|
63
|
+
const schema = await indexer.getCredentialSchema(schemaId);
|
|
64
|
+
if (!schema || schema.archived)
|
|
65
|
+
return false;
|
|
66
|
+
const ecsType = await (0, vs_agent_model_1.classifyEcsSchema)(schema.json_schema);
|
|
67
|
+
if (!ecsType || !EXEMPT_ECS_TYPES.includes(ecsType))
|
|
68
|
+
return false;
|
|
69
|
+
if (!(trustedEcosystemDids === null || trustedEcosystemDids === void 0 ? void 0 : trustedEcosystemDids.length))
|
|
70
|
+
return true;
|
|
71
|
+
const ecosystem = await indexer.getEcosystem(schema.ecosystem_id);
|
|
72
|
+
return Boolean(ecosystem && !ecosystem.archived && trustedEcosystemDids.includes(ecosystem.did));
|
|
73
|
+
}
|
|
74
|
+
function toEntityId(value) {
|
|
75
|
+
const id = Number(value);
|
|
76
|
+
return Number.isInteger(id) && id > 0 ? id : undefined;
|
|
77
|
+
}
|
|
78
|
+
function isUsableIssuer(participant) {
|
|
79
|
+
return (!participant.revoked &&
|
|
80
|
+
!participant.slashed &&
|
|
81
|
+
(participant.participant_state === types_1.ParticipantState.Active ||
|
|
82
|
+
participant.participant_state === types_1.ParticipantState.Future));
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=ecsIssuanceExemption.js.map
|