@sphereon/ssi-sdk.siopv2-oid4vp-op-auth 0.33.1-feature.vcdm2.4 → 0.33.1-feature.vcdm2.tsup.19
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/dist/index.cjs +101201 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +559 -0
- package/dist/index.d.ts +555 -8
- package/dist/index.js +101182 -11
- package/dist/index.js.map +1 -1
- package/package.json +40 -30
- package/src/agent/DidAuthSiopOpAuthenticator.ts +13 -14
- package/src/session/OpSession.ts +2 -2
- package/dist/agent/DidAuthSiopOpAuthenticator.d.ts +0 -36
- package/dist/agent/DidAuthSiopOpAuthenticator.d.ts.map +0 -1
- package/dist/agent/DidAuthSiopOpAuthenticator.js +0 -371
- package/dist/agent/DidAuthSiopOpAuthenticator.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/link-handler/index.d.ts +0 -22
- package/dist/link-handler/index.d.ts.map +0 -1
- package/dist/link-handler/index.js +0 -45
- package/dist/link-handler/index.js.map +0 -1
- package/dist/localization/Localization.d.ts +0 -9
- package/dist/localization/Localization.d.ts.map +0 -1
- package/dist/localization/Localization.js +0 -41
- package/dist/localization/Localization.js.map +0 -1
- package/dist/localization/translations/en.json +0 -9
- package/dist/localization/translations/nl.json +0 -8
- package/dist/machine/CallbackStateListener.d.ts +0 -3
- package/dist/machine/CallbackStateListener.d.ts.map +0 -1
- package/dist/machine/CallbackStateListener.js +0 -35
- package/dist/machine/CallbackStateListener.js.map +0 -1
- package/dist/machine/Siopv2Machine.d.ts +0 -8
- package/dist/machine/Siopv2Machine.d.ts.map +0 -1
- package/dist/machine/Siopv2Machine.js +0 -362
- package/dist/machine/Siopv2Machine.js.map +0 -1
- package/dist/services/IdentifierService.d.ts +0 -3
- package/dist/services/IdentifierService.d.ts.map +0 -1
- package/dist/services/IdentifierService.js +0 -15
- package/dist/services/IdentifierService.js.map +0 -1
- package/dist/services/Siopv2MachineService.d.ts +0 -18
- package/dist/services/Siopv2MachineService.d.ts.map +0 -1
- package/dist/services/Siopv2MachineService.js +0 -296
- package/dist/services/Siopv2MachineService.js.map +0 -1
- package/dist/session/OID4VP.d.ts +0 -72
- package/dist/session/OID4VP.d.ts.map +0 -1
- package/dist/session/OID4VP.js +0 -213
- package/dist/session/OID4VP.js.map +0 -1
- package/dist/session/OpSession.d.ts +0 -39
- package/dist/session/OpSession.d.ts.map +0 -1
- package/dist/session/OpSession.js +0 -329
- package/dist/session/OpSession.js.map +0 -1
- package/dist/session/functions.d.ts +0 -37
- package/dist/session/functions.d.ts.map +0 -1
- package/dist/session/functions.js +0 -147
- package/dist/session/functions.js.map +0 -1
- package/dist/session/index.d.ts +0 -4
- package/dist/session/index.d.ts.map +0 -1
- package/dist/session/index.js +0 -4
- package/dist/session/index.js.map +0 -1
- package/dist/types/IDidAuthSiopOpAuthenticator.d.ts +0 -120
- package/dist/types/IDidAuthSiopOpAuthenticator.d.ts.map +0 -1
- package/dist/types/IDidAuthSiopOpAuthenticator.js +0 -7
- package/dist/types/IDidAuthSiopOpAuthenticator.js.map +0 -1
- package/dist/types/error/index.d.ts +0 -8
- package/dist/types/error/index.d.ts.map +0 -1
- package/dist/types/error/index.js +0 -2
- package/dist/types/error/index.js.map +0 -1
- package/dist/types/identifier/index.d.ts +0 -53
- package/dist/types/identifier/index.d.ts.map +0 -1
- package/dist/types/identifier/index.js +0 -2
- package/dist/types/identifier/index.js.map +0 -1
- package/dist/types/index.d.ts +0 -6
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -6
- package/dist/types/index.js.map +0 -1
- package/dist/types/machine/index.d.ts +0 -124
- package/dist/types/machine/index.d.ts.map +0 -1
- package/dist/types/machine/index.js +0 -54
- package/dist/types/machine/index.js.map +0 -1
- package/dist/types/siop-service/index.d.ts +0 -80
- package/dist/types/siop-service/index.d.ts.map +0 -1
- package/dist/types/siop-service/index.js +0 -11
- package/dist/types/siop-service/index.js.map +0 -1
- package/dist/utils/CredentialUtils.d.ts +0 -23
- package/dist/utils/CredentialUtils.d.ts.map +0 -1
- package/dist/utils/CredentialUtils.js +0 -55
- package/dist/utils/CredentialUtils.js.map +0 -1
- package/dist/utils/dcql.d.ts +0 -5
- package/dist/utils/dcql.d.ts.map +0 -1
- package/dist/utils/dcql.js +0 -34
- package/dist/utils/dcql.js.map +0 -1
|
@@ -1,296 +0,0 @@
|
|
|
1
|
-
import { SupportedVersion } from '@sphereon/did-auth-siop';
|
|
2
|
-
import { PEX } from '@sphereon/pex';
|
|
3
|
-
import { isOID4VCIssuerIdentifier } from '@sphereon/ssi-sdk-ext.identifier-resolution';
|
|
4
|
-
import { verifiableCredentialForRoleFilter } from '@sphereon/ssi-sdk.credential-store';
|
|
5
|
-
import { ConnectionType, CredentialRole } from '@sphereon/ssi-sdk.data-store';
|
|
6
|
-
import { CredentialMapper, Loggers } from '@sphereon/ssi-types';
|
|
7
|
-
import { LOGGER_NAMESPACE, Siopv2HolderEvent, } from '../types';
|
|
8
|
-
import { getOrCreatePrimaryIdentifier, SupportedDidMethodEnum } from '@sphereon/ssi-sdk-ext.did-utils';
|
|
9
|
-
import { defaultHasher, encodeJoseBlob } from '@sphereon/ssi-sdk.core';
|
|
10
|
-
import { DcqlPresentation, DcqlQuery } from 'dcql';
|
|
11
|
-
import { convertToDcqlCredentials } from '../utils/dcql';
|
|
12
|
-
import { getOriginalVerifiableCredential } from '../utils/CredentialUtils';
|
|
13
|
-
export const logger = Loggers.DEFAULT.get(LOGGER_NAMESPACE);
|
|
14
|
-
const createEbsiIdentifier = async (agentContext) => {
|
|
15
|
-
logger.log(`No EBSI key present yet. Creating a new one...`);
|
|
16
|
-
const { result: newIdentifier, created } = await getOrCreatePrimaryIdentifier(agentContext, {
|
|
17
|
-
method: SupportedDidMethodEnum.DID_KEY,
|
|
18
|
-
createOpts: { options: { codecName: 'jwk_jcs-pub', type: 'Secp256r1' } },
|
|
19
|
-
});
|
|
20
|
-
logger.log(`EBSI key created: ${newIdentifier.did}`);
|
|
21
|
-
if (created) {
|
|
22
|
-
await agentContext.agent.emit(Siopv2HolderEvent.IDENTIFIER_CREATED, { result: newIdentifier });
|
|
23
|
-
}
|
|
24
|
-
return await agentContext.agent.identifierManagedGetByDid({ identifier: newIdentifier.did });
|
|
25
|
-
};
|
|
26
|
-
const hasEbsiClient = async (authorizationRequest) => {
|
|
27
|
-
const clientId = await authorizationRequest.getMergedProperty('client_id');
|
|
28
|
-
const redirectUri = await authorizationRequest.getMergedProperty('redirect_uri');
|
|
29
|
-
return clientId?.toLowerCase().includes('.ebsi.eu') || redirectUri?.toLowerCase().includes('.ebsi.eu');
|
|
30
|
-
};
|
|
31
|
-
export const siopSendAuthorizationResponse = async (connectionType, args, context) => {
|
|
32
|
-
const { agent } = context;
|
|
33
|
-
const agentContext = { ...context, agent: context.agent };
|
|
34
|
-
let { idOpts, isFirstParty, hasher = defaultHasher } = args;
|
|
35
|
-
if (connectionType !== ConnectionType.SIOPv2_OpenID4VP) {
|
|
36
|
-
return Promise.reject(Error(`No supported authentication provider for type: ${connectionType}`));
|
|
37
|
-
}
|
|
38
|
-
const session = await agent.siopGetOPSession({ sessionId: args.sessionId });
|
|
39
|
-
const request = await session.getAuthorizationRequest();
|
|
40
|
-
const aud = await request.authorizationRequest.getMergedProperty('aud');
|
|
41
|
-
logger.debug(`AUD: ${aud}`);
|
|
42
|
-
logger.debug(JSON.stringify(request.authorizationRequest));
|
|
43
|
-
let presentationsAndDefs;
|
|
44
|
-
let presentationSubmission;
|
|
45
|
-
if (await session.hasPresentationDefinitions()) {
|
|
46
|
-
const oid4vp = await session.getOID4VP({ hasher });
|
|
47
|
-
const credentialsAndDefinitions = args.verifiableCredentialsWithDefinition
|
|
48
|
-
? args.verifiableCredentialsWithDefinition
|
|
49
|
-
: await oid4vp.filterCredentialsAgainstAllDefinitions(CredentialRole.HOLDER);
|
|
50
|
-
const domain = (await request.authorizationRequest.getMergedProperty('client_id')) ??
|
|
51
|
-
request.issuer ??
|
|
52
|
-
(request.versions.includes(SupportedVersion.JWT_VC_PRESENTATION_PROFILE_v1)
|
|
53
|
-
? 'https://self-issued.me/v2/openid-vc'
|
|
54
|
-
: 'https://self-issued.me/v2');
|
|
55
|
-
logger.log(`NONCE: ${session.nonce}, domain: ${domain}`);
|
|
56
|
-
const firstUniqueDC = credentialsAndDefinitions[0].credentials[0];
|
|
57
|
-
if (typeof firstUniqueDC !== 'object' || !('digitalCredential' in firstUniqueDC)) {
|
|
58
|
-
return Promise.reject(Error('SiopMachine only supports UniqueDigitalCredentials for now'));
|
|
59
|
-
}
|
|
60
|
-
let identifier;
|
|
61
|
-
const digitalCredential = firstUniqueDC.digitalCredential;
|
|
62
|
-
const firstVC = firstUniqueDC.uniformVerifiableCredential;
|
|
63
|
-
const holder = CredentialMapper.isSdJwtDecodedCredential(firstVC)
|
|
64
|
-
? firstVC.decodedPayload.cnf?.jwk
|
|
65
|
-
? //TODO SDK-19: convert the JWK to hex and search for the appropriate key and associated DID
|
|
66
|
-
//doesn't apply to did:jwk only, as you can represent any DID key as a JWK. So whenever you encounter a JWK it doesn't mean it had to come from a did:jwk in the system. It just can always be represented as a did:jwk
|
|
67
|
-
`did:jwk:${encodeJoseBlob(firstVC.decodedPayload.cnf?.jwk)}#0`
|
|
68
|
-
: firstVC.decodedPayload.sub
|
|
69
|
-
: Array.isArray(firstVC.credentialSubject)
|
|
70
|
-
? firstVC.credentialSubject[0].id
|
|
71
|
-
: firstVC.credentialSubject.id;
|
|
72
|
-
if (!digitalCredential.kmsKeyRef) {
|
|
73
|
-
// In case the store does not have the kmsKeyRef lets search for the holder
|
|
74
|
-
if (!holder) {
|
|
75
|
-
return Promise.reject(`No holder found and no kmsKeyRef in DB. Cannot determine identifier to use`);
|
|
76
|
-
}
|
|
77
|
-
try {
|
|
78
|
-
identifier = await session.context.agent.identifierManagedGet({ identifier: holder });
|
|
79
|
-
}
|
|
80
|
-
catch (e) {
|
|
81
|
-
logger.debug(`Holder DID not found: ${holder}`);
|
|
82
|
-
throw e;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
else if (isOID4VCIssuerIdentifier(digitalCredential.kmsKeyRef)) {
|
|
86
|
-
identifier = await session.context.agent.identifierManagedGetByOID4VCIssuer({
|
|
87
|
-
identifier: firstUniqueDC.digitalCredential.kmsKeyRef,
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
switch (digitalCredential.subjectCorrelationType) {
|
|
92
|
-
case 'DID':
|
|
93
|
-
identifier = await session.context.agent.identifierManagedGetByDid({
|
|
94
|
-
identifier: digitalCredential.subjectCorrelationId ?? holder,
|
|
95
|
-
kmsKeyRef: digitalCredential.kmsKeyRef,
|
|
96
|
-
});
|
|
97
|
-
break;
|
|
98
|
-
// TODO other implementations?
|
|
99
|
-
default:
|
|
100
|
-
if (digitalCredential.subjectCorrelationId?.startsWith('did:') || holder?.startsWith('did:')) {
|
|
101
|
-
identifier = await session.context.agent.identifierManagedGetByDid({
|
|
102
|
-
identifier: digitalCredential.subjectCorrelationId ?? holder,
|
|
103
|
-
kmsKeyRef: digitalCredential.kmsKeyRef,
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
// Since we are using the kmsKeyRef we will find the KID regardless of the identifier. We set it for later access though
|
|
108
|
-
identifier = await session.context.agent.identifierManagedGetByKid({
|
|
109
|
-
identifier: digitalCredential.subjectCorrelationId ?? holder ?? digitalCredential.kmsKeyRef,
|
|
110
|
-
kmsKeyRef: digitalCredential.kmsKeyRef,
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
if (identifier === undefined && idOpts !== undefined && (await hasEbsiClient(request.authorizationRequest))) {
|
|
116
|
-
identifier = await createEbsiIdentifier(agentContext);
|
|
117
|
-
}
|
|
118
|
-
logger.debug(`Identifier`, identifier);
|
|
119
|
-
// TODO Add mdoc support
|
|
120
|
-
presentationsAndDefs = await oid4vp.createVerifiablePresentations(CredentialRole.HOLDER, credentialsAndDefinitions, {
|
|
121
|
-
idOpts: identifier,
|
|
122
|
-
proofOpts: {
|
|
123
|
-
nonce: session.nonce,
|
|
124
|
-
domain,
|
|
125
|
-
},
|
|
126
|
-
});
|
|
127
|
-
if (!presentationsAndDefs || presentationsAndDefs.length === 0) {
|
|
128
|
-
throw Error('No verifiable presentations could be created');
|
|
129
|
-
}
|
|
130
|
-
else if (presentationsAndDefs.length > 1) {
|
|
131
|
-
throw Error(`Only one verifiable presentation supported for now. Got ${presentationsAndDefs.length}`);
|
|
132
|
-
}
|
|
133
|
-
idOpts = presentationsAndDefs[0].idOpts;
|
|
134
|
-
presentationSubmission = presentationsAndDefs[0].presentationSubmission;
|
|
135
|
-
logger.log(`Definitions and locations:`, JSON.stringify(presentationsAndDefs?.[0]?.verifiablePresentations, null, 2));
|
|
136
|
-
logger.log(`Presentation Submission:`, JSON.stringify(presentationSubmission, null, 2));
|
|
137
|
-
const mergedVerifiablePresentations = presentationsAndDefs?.flatMap((pd) => pd.verifiablePresentations) || [];
|
|
138
|
-
return await session.sendAuthorizationResponse({
|
|
139
|
-
...(presentationsAndDefs && { verifiablePresentations: mergedVerifiablePresentations }),
|
|
140
|
-
...(presentationSubmission && { presentationSubmission }),
|
|
141
|
-
// todo: Change issuer value in case we do not use identifier. Use key.meta.jwkThumbprint then
|
|
142
|
-
responseSignerOpts: idOpts,
|
|
143
|
-
isFirstParty,
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
else if (request.dcqlQuery) {
|
|
147
|
-
if (args.verifiableCredentialsWithDefinition !== undefined && args.verifiableCredentialsWithDefinition !== null) {
|
|
148
|
-
const vcs = args.verifiableCredentialsWithDefinition.flatMap((vcd) => vcd.credentials);
|
|
149
|
-
const domain = (await request.authorizationRequest.getMergedProperty('client_id')) ??
|
|
150
|
-
request.issuer ??
|
|
151
|
-
(request.versions.includes(SupportedVersion.JWT_VC_PRESENTATION_PROFILE_v1)
|
|
152
|
-
? 'https://self-issued.me/v2/openid-vc'
|
|
153
|
-
: 'https://self-issued.me/v2');
|
|
154
|
-
logger.debug(`NONCE: ${session.nonce}, domain: ${domain}`);
|
|
155
|
-
const firstUniqueDC = vcs[0];
|
|
156
|
-
if (typeof firstUniqueDC !== 'object' || !('digitalCredential' in firstUniqueDC)) {
|
|
157
|
-
return Promise.reject(Error('SiopMachine only supports UniqueDigitalCredentials for now'));
|
|
158
|
-
}
|
|
159
|
-
let identifier;
|
|
160
|
-
const digitalCredential = firstUniqueDC.digitalCredential;
|
|
161
|
-
const firstVC = firstUniqueDC.uniformVerifiableCredential;
|
|
162
|
-
const holder = CredentialMapper.isSdJwtDecodedCredential(firstVC)
|
|
163
|
-
? firstVC.decodedPayload.cnf?.jwk
|
|
164
|
-
? //TODO SDK-19: convert the JWK to hex and search for the appropriate key and associated DID
|
|
165
|
-
//doesn't apply to did:jwk only, as you can represent any DID key as a JWK. So whenever you encounter a JWK it doesn't mean it had to come from a did:jwk in the system. It just can always be represented as a did:jwk
|
|
166
|
-
`did:jwk:${encodeJoseBlob(firstVC.decodedPayload.cnf?.jwk)}#0`
|
|
167
|
-
: firstVC.decodedPayload.sub
|
|
168
|
-
: Array.isArray(firstVC.credentialSubject)
|
|
169
|
-
? firstVC.credentialSubject[0].id
|
|
170
|
-
: firstVC.credentialSubject.id;
|
|
171
|
-
if (!digitalCredential.kmsKeyRef) {
|
|
172
|
-
// In case the store does not have the kmsKeyRef lets search for the holder
|
|
173
|
-
if (!holder) {
|
|
174
|
-
return Promise.reject(`No holder found and no kmsKeyRef in DB. Cannot determine identifier to use`);
|
|
175
|
-
}
|
|
176
|
-
try {
|
|
177
|
-
identifier = await session.context.agent.identifierManagedGet({ identifier: holder });
|
|
178
|
-
}
|
|
179
|
-
catch (e) {
|
|
180
|
-
logger.debug(`Holder DID not found: ${holder}`);
|
|
181
|
-
throw e;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
else if (isOID4VCIssuerIdentifier(digitalCredential.kmsKeyRef)) {
|
|
185
|
-
identifier = await session.context.agent.identifierManagedGetByOID4VCIssuer({
|
|
186
|
-
identifier: firstUniqueDC.digitalCredential.kmsKeyRef,
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
else {
|
|
190
|
-
switch (digitalCredential.subjectCorrelationType) {
|
|
191
|
-
case 'DID':
|
|
192
|
-
identifier = await session.context.agent.identifierManagedGetByDid({
|
|
193
|
-
identifier: digitalCredential.subjectCorrelationId ?? holder,
|
|
194
|
-
kmsKeyRef: digitalCredential.kmsKeyRef,
|
|
195
|
-
});
|
|
196
|
-
break;
|
|
197
|
-
// TODO other implementations?
|
|
198
|
-
default:
|
|
199
|
-
// Since we are using the kmsKeyRef we will find the KID regardless of the identifier. We set it for later access though
|
|
200
|
-
identifier = await session.context.agent.identifierManagedGetByKid({
|
|
201
|
-
identifier: digitalCredential.subjectCorrelationId ?? holder ?? digitalCredential.kmsKeyRef,
|
|
202
|
-
kmsKeyRef: digitalCredential.kmsKeyRef,
|
|
203
|
-
});
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
console.log(`Identifier`, identifier);
|
|
207
|
-
const dcqlRepresentations = [];
|
|
208
|
-
vcs.forEach((vc) => {
|
|
209
|
-
const rep = convertToDcqlCredentials(vc, args.hasher);
|
|
210
|
-
if (rep) {
|
|
211
|
-
dcqlRepresentations.push(rep);
|
|
212
|
-
}
|
|
213
|
-
});
|
|
214
|
-
const queryResult = DcqlQuery.query(request.dcqlQuery, dcqlRepresentations);
|
|
215
|
-
const presentation = {};
|
|
216
|
-
for (const [key, value] of Object.entries(queryResult.credential_matches)) {
|
|
217
|
-
const allMatches = Array.isArray(value) ? value : [value];
|
|
218
|
-
allMatches.forEach((match) => {
|
|
219
|
-
if (match.success) {
|
|
220
|
-
const originalCredential = getOriginalVerifiableCredential(vcs[match.input_credential_index]);
|
|
221
|
-
if (!originalCredential) {
|
|
222
|
-
throw new Error(`Index ${match.input_credential_index} out of range in credentials array`);
|
|
223
|
-
}
|
|
224
|
-
presentation[key] =
|
|
225
|
-
originalCredential['compactSdJwtVc'] !== undefined ? originalCredential.compactSdJwtVc : originalCredential;
|
|
226
|
-
}
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
|
-
const response = session.sendAuthorizationResponse({
|
|
230
|
-
responseSignerOpts: identifier,
|
|
231
|
-
...{ dcqlQuery: { dcqlPresentation: DcqlPresentation.parse(presentation) } },
|
|
232
|
-
});
|
|
233
|
-
logger.debug(`Response: `, response);
|
|
234
|
-
return response;
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
throw Error('Presentation Definition or DCQL is required');
|
|
238
|
-
};
|
|
239
|
-
function buildPartialPD(inputDescriptor, presentationDefinition) {
|
|
240
|
-
return {
|
|
241
|
-
...presentationDefinition,
|
|
242
|
-
input_descriptors: [inputDescriptor],
|
|
243
|
-
};
|
|
244
|
-
}
|
|
245
|
-
export const getSelectableCredentials = async (presentationDefinition, context) => {
|
|
246
|
-
const agentContext = { ...context, agent: context.agent };
|
|
247
|
-
const { agent } = agentContext;
|
|
248
|
-
const pex = new PEX();
|
|
249
|
-
const uniqueVerifiableCredentials = await agent.crsGetUniqueCredentials({
|
|
250
|
-
filter: verifiableCredentialForRoleFilter(CredentialRole.HOLDER),
|
|
251
|
-
});
|
|
252
|
-
const credentialBranding = await agent.ibGetCredentialBranding();
|
|
253
|
-
const selectableCredentialsMap = new Map();
|
|
254
|
-
for (const inputDescriptor of presentationDefinition.input_descriptors) {
|
|
255
|
-
const partialPD = buildPartialPD(inputDescriptor, presentationDefinition);
|
|
256
|
-
const originalCredentials = uniqueVerifiableCredentials.map((uniqueVC) => {
|
|
257
|
-
return CredentialMapper.storedCredentialToOriginalFormat(uniqueVC.originalVerifiableCredential); // ( ! is valid for verifiableCredentialForRoleFilter )
|
|
258
|
-
});
|
|
259
|
-
const selectionResults = pex.selectFrom(partialPD, originalCredentials);
|
|
260
|
-
const selectableCredentials = [];
|
|
261
|
-
for (const selectedCredential of selectionResults.verifiableCredential || []) {
|
|
262
|
-
const filteredUniqueVC = uniqueVerifiableCredentials.find((uniqueVC) => {
|
|
263
|
-
const proof = uniqueVC.uniformVerifiableCredential.proof;
|
|
264
|
-
return Array.isArray(proof) ? proof.some((proofItem) => proofItem.jwt === selectedCredential) : proof.jwt === selectedCredential;
|
|
265
|
-
});
|
|
266
|
-
if (filteredUniqueVC) {
|
|
267
|
-
const filteredCredentialBrandings = credentialBranding.filter((cb) => cb.vcHash === filteredUniqueVC.hash);
|
|
268
|
-
const issuerPartyIdentity = await agent.cmGetContacts({
|
|
269
|
-
filter: [{ identities: { identifier: { correlationId: filteredUniqueVC.uniformVerifiableCredential.issuerDid } } }],
|
|
270
|
-
});
|
|
271
|
-
const subjectPartyIdentity = await agent.cmGetContacts({
|
|
272
|
-
filter: [{ identities: { identifier: { correlationId: filteredUniqueVC.uniformVerifiableCredential.subjectDid } } }],
|
|
273
|
-
});
|
|
274
|
-
selectableCredentials.push({
|
|
275
|
-
credential: filteredUniqueVC,
|
|
276
|
-
credentialBranding: filteredCredentialBrandings[0]?.localeBranding,
|
|
277
|
-
issuerParty: issuerPartyIdentity?.[0],
|
|
278
|
-
subjectParty: subjectPartyIdentity?.[0],
|
|
279
|
-
});
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
selectableCredentialsMap.set(inputDescriptor.id, selectableCredentials);
|
|
283
|
-
}
|
|
284
|
-
return selectableCredentialsMap;
|
|
285
|
-
};
|
|
286
|
-
export const translateCorrelationIdToName = async (correlationId, context) => {
|
|
287
|
-
const { agent } = context;
|
|
288
|
-
const contacts = await agent.cmGetContacts({
|
|
289
|
-
filter: [{ identities: { identifier: { correlationId } } }],
|
|
290
|
-
});
|
|
291
|
-
if (contacts.length === 0) {
|
|
292
|
-
return undefined;
|
|
293
|
-
}
|
|
294
|
-
return contacts[0].contact.displayName;
|
|
295
|
-
};
|
|
296
|
-
//# sourceMappingURL=Siopv2MachineService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Siopv2MachineService.js","sourceRoot":"","sources":["../../src/services/Siopv2MachineService.ts"],"names":[],"mappings":"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"}
|
package/dist/session/OID4VP.d.ts
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { PresentationDefinitionWithLocation } from '@sphereon/did-auth-siop';
|
|
2
|
-
import { SelectResults } from '@sphereon/pex';
|
|
3
|
-
import { Format } from '@sphereon/pex-models';
|
|
4
|
-
import { ManagedIdentifierOptsOrResult } from '@sphereon/ssi-sdk-ext.identifier-resolution';
|
|
5
|
-
import { ProofOptions } from '@sphereon/ssi-sdk.core';
|
|
6
|
-
import { UniqueDigitalCredential } from '@sphereon/ssi-sdk.credential-store';
|
|
7
|
-
import { CredentialRole, FindDigitalCredentialArgs } from '@sphereon/ssi-sdk.data-store';
|
|
8
|
-
import { HasherSync, OriginalVerifiableCredential } from '@sphereon/ssi-types';
|
|
9
|
-
import { VerifiableCredentialsWithDefinition, VerifiablePresentationWithDefinition } from '../types';
|
|
10
|
-
import { OpSession } from './OpSession';
|
|
11
|
-
export declare class OID4VP {
|
|
12
|
-
private readonly session;
|
|
13
|
-
private readonly allIdentifiers;
|
|
14
|
-
private readonly hasher?;
|
|
15
|
-
private constructor();
|
|
16
|
-
static init(session: OpSession, allIdentifiers: string[], hasher?: HasherSync): Promise<OID4VP>;
|
|
17
|
-
getPresentationDefinitions(): Promise<PresentationDefinitionWithLocation[] | undefined>;
|
|
18
|
-
private getPresentationExchange;
|
|
19
|
-
createVerifiablePresentations(credentialRole: CredentialRole, credentialsWithDefinitions: VerifiableCredentialsWithDefinition[], opts?: {
|
|
20
|
-
forceNoCredentialsInVP?: boolean;
|
|
21
|
-
restrictToFormats?: Format;
|
|
22
|
-
restrictToDIDMethods?: string[];
|
|
23
|
-
proofOpts?: ProofOptions;
|
|
24
|
-
idOpts?: ManagedIdentifierOptsOrResult;
|
|
25
|
-
skipDidResolution?: boolean;
|
|
26
|
-
holderDID?: string;
|
|
27
|
-
subjectIsHolder?: boolean;
|
|
28
|
-
hasher?: HasherSync;
|
|
29
|
-
applyFilter?: boolean;
|
|
30
|
-
}): Promise<VerifiablePresentationWithDefinition[]>;
|
|
31
|
-
createVerifiablePresentation(credentialRole: CredentialRole, selectedVerifiableCredentials: VerifiableCredentialsWithDefinition, opts?: {
|
|
32
|
-
forceNoCredentialsInVP?: boolean;
|
|
33
|
-
restrictToFormats?: Format;
|
|
34
|
-
restrictToDIDMethods?: string[];
|
|
35
|
-
proofOpts?: ProofOptions;
|
|
36
|
-
idOpts?: ManagedIdentifierOptsOrResult;
|
|
37
|
-
skipDidResolution?: boolean;
|
|
38
|
-
holder?: string;
|
|
39
|
-
subjectIsHolder?: boolean;
|
|
40
|
-
applyFilter?: boolean;
|
|
41
|
-
hasher?: HasherSync;
|
|
42
|
-
}): Promise<VerifiablePresentationWithDefinition>;
|
|
43
|
-
filterCredentialsAgainstAllDefinitions(credentialRole: CredentialRole, opts?: {
|
|
44
|
-
filterOpts?: {
|
|
45
|
-
verifiableCredentials?: UniqueDigitalCredential[];
|
|
46
|
-
filter?: FindDigitalCredentialArgs;
|
|
47
|
-
};
|
|
48
|
-
holderDIDs?: string[];
|
|
49
|
-
restrictToFormats?: Format;
|
|
50
|
-
restrictToDIDMethods?: string[];
|
|
51
|
-
}): Promise<VerifiableCredentialsWithDefinition[]>;
|
|
52
|
-
filterCredentials(credentialRole: CredentialRole, presentationDefinition: PresentationDefinitionWithLocation, opts?: {
|
|
53
|
-
filterOpts?: {
|
|
54
|
-
verifiableCredentials?: (UniqueDigitalCredential | OriginalVerifiableCredential)[];
|
|
55
|
-
filter?: FindDigitalCredentialArgs;
|
|
56
|
-
};
|
|
57
|
-
holderDIDs?: string[];
|
|
58
|
-
restrictToFormats?: Format;
|
|
59
|
-
restrictToDIDMethods?: string[];
|
|
60
|
-
}): Promise<VerifiableCredentialsWithDefinition>;
|
|
61
|
-
filterCredentialsWithSelectionStatus(credentialRole: CredentialRole, presentationDefinition: PresentationDefinitionWithLocation, opts?: {
|
|
62
|
-
filterOpts?: {
|
|
63
|
-
verifiableCredentials?: OriginalVerifiableCredential[];
|
|
64
|
-
filter?: FindDigitalCredentialArgs;
|
|
65
|
-
};
|
|
66
|
-
holderDIDs?: string[];
|
|
67
|
-
restrictToFormats?: Format;
|
|
68
|
-
restrictToDIDMethods?: string[];
|
|
69
|
-
}): Promise<SelectResults>;
|
|
70
|
-
private getCredentials;
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=OID4VP.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OID4VP.d.ts","sourceRoot":"","sources":["../../src/session/OID4VP.ts"],"names":[],"mappings":"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"}
|
package/dist/session/OID4VP.js
DELETED
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
import { PresentationExchange } from '@sphereon/did-auth-siop';
|
|
2
|
-
import { Status } from '@sphereon/pex';
|
|
3
|
-
import { isManagedIdentifierDidResult, isOID4VCIssuerIdentifier, } from '@sphereon/ssi-sdk-ext.identifier-resolution';
|
|
4
|
-
import { defaultHasher } from '@sphereon/ssi-sdk.core';
|
|
5
|
-
import { verifiableCredentialForRoleFilter } from '@sphereon/ssi-sdk.credential-store';
|
|
6
|
-
import { DEFAULT_JWT_PROOF_TYPE, } from '../types';
|
|
7
|
-
import { createOID4VPPresentationSignCallback } from './functions';
|
|
8
|
-
export class OID4VP {
|
|
9
|
-
session;
|
|
10
|
-
allIdentifiers;
|
|
11
|
-
hasher;
|
|
12
|
-
constructor(args) {
|
|
13
|
-
const { session, allIdentifiers, hasher = defaultHasher } = args;
|
|
14
|
-
this.session = session;
|
|
15
|
-
this.allIdentifiers = allIdentifiers ?? [];
|
|
16
|
-
this.hasher = hasher;
|
|
17
|
-
}
|
|
18
|
-
static async init(session, allIdentifiers, hasher) {
|
|
19
|
-
return new OID4VP({ session, allIdentifiers: allIdentifiers ?? (await session.getSupportedDIDs()), hasher });
|
|
20
|
-
}
|
|
21
|
-
async getPresentationDefinitions() {
|
|
22
|
-
const definitions = await this.session.getPresentationDefinitions();
|
|
23
|
-
if (definitions) {
|
|
24
|
-
PresentationExchange.assertValidPresentationDefinitionWithLocations(definitions);
|
|
25
|
-
}
|
|
26
|
-
return definitions;
|
|
27
|
-
}
|
|
28
|
-
getPresentationExchange(args) {
|
|
29
|
-
const { verifiableCredentials, allIdentifiers, hasher } = args;
|
|
30
|
-
return new PresentationExchange({
|
|
31
|
-
allDIDs: allIdentifiers ?? this.allIdentifiers,
|
|
32
|
-
allVerifiableCredentials: verifiableCredentials,
|
|
33
|
-
hasher: hasher ?? this.hasher,
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
async createVerifiablePresentations(credentialRole, credentialsWithDefinitions, opts) {
|
|
37
|
-
return await Promise.all(credentialsWithDefinitions.map((cred) => this.createVerifiablePresentation(credentialRole, cred, opts)));
|
|
38
|
-
}
|
|
39
|
-
async createVerifiablePresentation(credentialRole, selectedVerifiableCredentials, opts) {
|
|
40
|
-
const { subjectIsHolder, holder, forceNoCredentialsInVP = false } = { ...opts };
|
|
41
|
-
if (subjectIsHolder && holder) {
|
|
42
|
-
throw Error('Cannot both have subject is holder and a holderDID value at the same time (programming error)');
|
|
43
|
-
}
|
|
44
|
-
if (forceNoCredentialsInVP) {
|
|
45
|
-
selectedVerifiableCredentials.credentials = [];
|
|
46
|
-
}
|
|
47
|
-
else if (!selectedVerifiableCredentials?.credentials || selectedVerifiableCredentials.credentials.length === 0) {
|
|
48
|
-
throw Error('No verifiable verifiableCredentials provided for presentation definition');
|
|
49
|
-
}
|
|
50
|
-
const proofOptions = {
|
|
51
|
-
...opts?.proofOpts,
|
|
52
|
-
challenge: opts?.proofOpts?.nonce ?? opts?.proofOpts?.challenge ?? this.session.nonce,
|
|
53
|
-
domain: opts?.proofOpts?.domain ?? (await this.session.getRedirectUri()),
|
|
54
|
-
};
|
|
55
|
-
let idOpts = opts?.idOpts;
|
|
56
|
-
if (!idOpts) {
|
|
57
|
-
if (opts?.subjectIsHolder) {
|
|
58
|
-
if (forceNoCredentialsInVP) {
|
|
59
|
-
return Promise.reject(Error(`Cannot have subject is holder, when force no credentials is being used, as we could never determine the holder then. Please provide holderDID`));
|
|
60
|
-
}
|
|
61
|
-
const firstUniqueDC = selectedVerifiableCredentials.credentials[0];
|
|
62
|
-
// const firstVC = firstUniqueDC.uniformVerifiableCredential!
|
|
63
|
-
if (typeof firstUniqueDC !== 'object' || !('digitalCredential' in firstUniqueDC)) {
|
|
64
|
-
return Promise.reject(Error('If no opts provided, credentials should be of type UniqueDigitalCredential'));
|
|
65
|
-
}
|
|
66
|
-
idOpts = isOID4VCIssuerIdentifier(firstUniqueDC.digitalCredential.kmsKeyRef)
|
|
67
|
-
? await this.session.context.agent.identifierManagedGetByIssuer({
|
|
68
|
-
identifier: firstUniqueDC.digitalCredential.kmsKeyRef,
|
|
69
|
-
})
|
|
70
|
-
: await this.session.context.agent.identifierManagedGetByKid({
|
|
71
|
-
identifier: firstUniqueDC.digitalCredential.kmsKeyRef,
|
|
72
|
-
kmsKeyRef: firstUniqueDC.digitalCredential.kmsKeyRef,
|
|
73
|
-
});
|
|
74
|
-
/*
|
|
75
|
-
const holder = CredentialMapper.isSdJwtDecodedCredential(firstVC)
|
|
76
|
-
? firstVC.decodedPayload.cnf?.jwk
|
|
77
|
-
? //TODO SDK-19: convert the JWK to hex and search for the appropriate key and associated DID
|
|
78
|
-
//doesn't apply to did:jwk only, as you can represent any DID key as a JWK. So whenever you encounter a JWK it doesn't mean it had to come from a did:jwk in the system. It just can always be represented as a did:jwk
|
|
79
|
-
`did:jwk:${encodeJoseBlob(firstVC.decodedPayload.cnf?.jwk)}#0`
|
|
80
|
-
: firstVC.decodedPayload.sub
|
|
81
|
-
: Array.isArray(firstVC.credentialSubject)
|
|
82
|
-
? firstVC.credentialSubject[0].id
|
|
83
|
-
: firstVC.credentialSubject.id
|
|
84
|
-
if (holder) {
|
|
85
|
-
idOpts = { identifier: holder }
|
|
86
|
-
}
|
|
87
|
-
*/
|
|
88
|
-
}
|
|
89
|
-
else if (opts?.holder) {
|
|
90
|
-
idOpts = { identifier: opts.holder };
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
// We are making sure to filter, in case the user submitted all verifiableCredentials in the wallet/agent. We also make sure to get original formats back
|
|
94
|
-
const vcs = forceNoCredentialsInVP
|
|
95
|
-
? selectedVerifiableCredentials
|
|
96
|
-
: opts?.applyFilter
|
|
97
|
-
? await this.filterCredentials(credentialRole, selectedVerifiableCredentials.definition, {
|
|
98
|
-
restrictToFormats: opts?.restrictToFormats,
|
|
99
|
-
restrictToDIDMethods: opts?.restrictToDIDMethods,
|
|
100
|
-
filterOpts: {
|
|
101
|
-
verifiableCredentials: selectedVerifiableCredentials.credentials,
|
|
102
|
-
},
|
|
103
|
-
})
|
|
104
|
-
: {
|
|
105
|
-
definition: selectedVerifiableCredentials.definition,
|
|
106
|
-
credentials: selectedVerifiableCredentials.credentials,
|
|
107
|
-
};
|
|
108
|
-
if (!idOpts) {
|
|
109
|
-
return Promise.reject(Error(`No identifier options present at this point`));
|
|
110
|
-
}
|
|
111
|
-
const signCallback = await createOID4VPPresentationSignCallback({
|
|
112
|
-
presentationSignCallback: this.session.options.presentationSignCallback,
|
|
113
|
-
idOpts,
|
|
114
|
-
context: this.session.context,
|
|
115
|
-
domain: proofOptions.domain,
|
|
116
|
-
challenge: proofOptions.challenge,
|
|
117
|
-
format: opts?.restrictToFormats ?? selectedVerifiableCredentials.definition.definition.format,
|
|
118
|
-
skipDidResolution: opts?.skipDidResolution ?? false,
|
|
119
|
-
});
|
|
120
|
-
const identifier = await this.session.context.agent.identifierManagedGet(idOpts);
|
|
121
|
-
const verifiableCredentials = vcs.credentials.map((credential) => typeof credential === 'object' && 'digitalCredential' in credential ? credential.originalVerifiableCredential : credential);
|
|
122
|
-
const presentationResult = await this.getPresentationExchange({
|
|
123
|
-
verifiableCredentials: verifiableCredentials,
|
|
124
|
-
allIdentifiers: this.allIdentifiers,
|
|
125
|
-
hasher: opts?.hasher,
|
|
126
|
-
}).createVerifiablePresentation(vcs.definition.definition, verifiableCredentials, signCallback, {
|
|
127
|
-
proofOptions,
|
|
128
|
-
// fixme: Update to newer siop-vp to not require dids here. But when Veramo is creating the VP it's still looking at this field to pass into didManagerGet
|
|
129
|
-
...(identifier && isManagedIdentifierDidResult(identifier) && { holderDID: identifier.did }),
|
|
130
|
-
});
|
|
131
|
-
const verifiablePresentations = presentationResult.verifiablePresentations.map((verifiablePresentation) => typeof verifiablePresentation !== 'string' &&
|
|
132
|
-
'proof' in verifiablePresentation &&
|
|
133
|
-
'jwt' in verifiablePresentation.proof &&
|
|
134
|
-
verifiablePresentation.proof.jwt
|
|
135
|
-
? verifiablePresentation.proof.jwt
|
|
136
|
-
: verifiablePresentation);
|
|
137
|
-
return {
|
|
138
|
-
...presentationResult,
|
|
139
|
-
verifiablePresentations,
|
|
140
|
-
verifiableCredentials: verifiableCredentials,
|
|
141
|
-
definition: selectedVerifiableCredentials.definition,
|
|
142
|
-
idOpts,
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
async filterCredentialsAgainstAllDefinitions(credentialRole, opts) {
|
|
146
|
-
const defs = await this.getPresentationDefinitions();
|
|
147
|
-
const result = [];
|
|
148
|
-
if (defs) {
|
|
149
|
-
for (const definition of defs) {
|
|
150
|
-
result.push(await this.filterCredentials(credentialRole, definition, opts));
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
return result;
|
|
154
|
-
}
|
|
155
|
-
async filterCredentials(credentialRole, presentationDefinition, opts) {
|
|
156
|
-
const udcMap = new Map();
|
|
157
|
-
opts?.filterOpts?.verifiableCredentials?.forEach((credential) => {
|
|
158
|
-
if (typeof credential === 'object' && 'digitalCredential' in credential) {
|
|
159
|
-
udcMap.set(credential.originalVerifiableCredential, credential);
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
udcMap.set(credential, credential);
|
|
163
|
-
}
|
|
164
|
-
});
|
|
165
|
-
const credentials = (await this.filterCredentialsWithSelectionStatus(credentialRole, presentationDefinition, {
|
|
166
|
-
...opts,
|
|
167
|
-
filterOpts: {
|
|
168
|
-
verifiableCredentials: opts?.filterOpts?.verifiableCredentials?.map((credential) => {
|
|
169
|
-
if (typeof credential === 'object' && 'digitalCredential' in credential) {
|
|
170
|
-
return credential.originalVerifiableCredential;
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
173
|
-
return credential;
|
|
174
|
-
}
|
|
175
|
-
}),
|
|
176
|
-
},
|
|
177
|
-
})).verifiableCredential;
|
|
178
|
-
return {
|
|
179
|
-
definition: presentationDefinition,
|
|
180
|
-
credentials: credentials?.map((vc) => udcMap.get(vc)) ?? [],
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
async filterCredentialsWithSelectionStatus(credentialRole, presentationDefinition, opts) {
|
|
184
|
-
const selectionResults = await this.getPresentationExchange({
|
|
185
|
-
verifiableCredentials: await this.getCredentials(credentialRole, opts?.filterOpts),
|
|
186
|
-
}).selectVerifiableCredentialsForSubmission(presentationDefinition.definition, opts);
|
|
187
|
-
if (selectionResults.errors && selectionResults.errors.length > 0) {
|
|
188
|
-
throw Error(JSON.stringify(selectionResults.errors));
|
|
189
|
-
}
|
|
190
|
-
else if (selectionResults.areRequiredCredentialsPresent === Status.ERROR) {
|
|
191
|
-
throw Error(`Not all required credentials are available to satisfy the relying party's request`);
|
|
192
|
-
}
|
|
193
|
-
const matches = selectionResults.matches;
|
|
194
|
-
if (!matches || matches.length === 0 || !selectionResults.verifiableCredential || selectionResults.verifiableCredential.length === 0) {
|
|
195
|
-
throw Error(JSON.stringify(selectionResults.errors));
|
|
196
|
-
}
|
|
197
|
-
return selectionResults;
|
|
198
|
-
}
|
|
199
|
-
async getCredentials(credentialRole, filterOpts) {
|
|
200
|
-
if (filterOpts?.verifiableCredentials && filterOpts.verifiableCredentials.length > 0) {
|
|
201
|
-
return filterOpts.verifiableCredentials;
|
|
202
|
-
}
|
|
203
|
-
const filter = verifiableCredentialForRoleFilter(credentialRole, filterOpts?.filter);
|
|
204
|
-
const uniqueCredentials = await this.session.context.agent.crsGetUniqueCredentials({ filter });
|
|
205
|
-
return uniqueCredentials.map((uniqueVC) => {
|
|
206
|
-
const vc = uniqueVC.uniformVerifiableCredential;
|
|
207
|
-
const proof = Array.isArray(vc.proof) ? vc.proof : [vc.proof];
|
|
208
|
-
const jwtProof = proof.find((p) => p?.type === DEFAULT_JWT_PROOF_TYPE);
|
|
209
|
-
return jwtProof ? jwtProof.jwt : vc;
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
//# sourceMappingURL=OID4VP.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OID4VP.js","sourceRoot":"","sources":["../../src/session/OID4VP.ts"],"names":[],"mappings":"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"}
|