@sphereon/ssi-sdk.mdl-mdoc 0.33.0 → 0.33.1-feature.vcdm2.4
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/agent/mDLMdoc.js +157 -178
- package/dist/agent/mDLMdoc.js.map +1 -1
- package/dist/functions/index.js +142 -188
- package/dist/functions/index.js.map +1 -1
- package/dist/index.js +6 -25
- package/dist/index.js.map +1 -1
- package/dist/types/ImDLMdoc.js +1 -2
- package/package.json +8 -8
package/dist/agent/mDLMdoc.js
CHANGED
|
@@ -1,35 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
var
|
|
19
|
-
var
|
|
20
|
-
|
|
21
|
-
var CoseCryptoServiceJS = kmp_mdoc_core_1.com.sphereon.crypto.CoseCryptoServiceJS;
|
|
22
|
-
var CoseJoseKeyMappingService = kmp_mdoc_core_1.com.sphereon.crypto.CoseJoseKeyMappingService;
|
|
23
|
-
var KeyInfo = kmp_mdoc_core_1.com.sphereon.crypto.KeyInfo;
|
|
24
|
-
var DateTimeUtils = kmp_mdoc_core_1.com.sphereon.kmp.DateTimeUtils;
|
|
25
|
-
var decodeFrom = kmp_mdoc_core_1.com.sphereon.kmp.decodeFrom;
|
|
26
|
-
var encodeTo = kmp_mdoc_core_1.com.sphereon.kmp.encodeTo;
|
|
27
|
-
var Encoding = kmp_mdoc_core_1.com.sphereon.kmp.Encoding;
|
|
28
|
-
var DeviceResponseCbor = kmp_mdoc_core_1.com.sphereon.mdoc.data.device.DeviceResponseCbor;
|
|
29
|
-
var MdocValidations = kmp_mdoc_core_1.com.sphereon.mdoc.data.MdocValidations;
|
|
30
|
-
var MdocOid4vpService = kmp_mdoc_core_1.com.sphereon.mdoc.oid4vp.MdocOid4vpServiceJs;
|
|
31
|
-
var Oid4VPPresentationSubmission = kmp_mdoc_core_1.com.sphereon.mdoc.oid4vp.Oid4VPPresentationSubmission;
|
|
32
|
-
exports.mdocSupportMethods = [
|
|
1
|
+
import { com } from '@sphereon/kmp-mdoc-core';
|
|
2
|
+
import { calculateJwkThumbprint } from '@sphereon/ssi-sdk-ext.key-utils';
|
|
3
|
+
import { getCertificateInfo, pemOrDerToX509Certificate } from '@sphereon/ssi-sdk-ext.x509-utils';
|
|
4
|
+
import { schema } from '..';
|
|
5
|
+
import { CoseCryptoService, X509CallbackService } from '../functions';
|
|
6
|
+
var CborByteString = com.sphereon.cbor.CborByteString;
|
|
7
|
+
var CoseKeyCbor = com.sphereon.crypto.cose.CoseKeyCbor;
|
|
8
|
+
var CoseSign1Json = com.sphereon.crypto.cose.CoseSign1Json;
|
|
9
|
+
var CoseCryptoServiceJS = com.sphereon.crypto.CoseCryptoServiceJS;
|
|
10
|
+
var CoseJoseKeyMappingService = com.sphereon.crypto.CoseJoseKeyMappingService;
|
|
11
|
+
var KeyInfo = com.sphereon.crypto.KeyInfo;
|
|
12
|
+
var DateTimeUtils = com.sphereon.kmp.DateTimeUtils;
|
|
13
|
+
var decodeFrom = com.sphereon.kmp.decodeFrom;
|
|
14
|
+
var encodeTo = com.sphereon.kmp.encodeTo;
|
|
15
|
+
var Encoding = com.sphereon.kmp.Encoding;
|
|
16
|
+
var DeviceResponseCbor = com.sphereon.mdoc.data.device.DeviceResponseCbor;
|
|
17
|
+
var MdocValidations = com.sphereon.mdoc.data.MdocValidations;
|
|
18
|
+
var MdocOid4vpService = com.sphereon.mdoc.oid4vp.MdocOid4vpServiceJs;
|
|
19
|
+
var Oid4VPPresentationSubmission = com.sphereon.mdoc.oid4vp.Oid4VPPresentationSubmission;
|
|
20
|
+
export const mdocSupportMethods = [
|
|
33
21
|
'x509VerifyCertificateChain',
|
|
34
22
|
'x509GetCertificateInfo',
|
|
35
23
|
'mdocVerifyIssuerSigned',
|
|
@@ -41,19 +29,20 @@ exports.mdocSupportMethods = [
|
|
|
41
29
|
* verification and information retrieval related to X.509 certificates and mDL (mobile
|
|
42
30
|
* driver's license) documents.
|
|
43
31
|
*/
|
|
44
|
-
class MDLMdoc {
|
|
32
|
+
export class MDLMdoc {
|
|
33
|
+
schema = schema.IMDLMdoc;
|
|
34
|
+
methods = {
|
|
35
|
+
x509VerifyCertificateChain: this.x509VerifyCertificateChain.bind(this),
|
|
36
|
+
x509GetCertificateInfo: this.x509GetCertificateInfo.bind(this),
|
|
37
|
+
mdocVerifyIssuerSigned: this.mdocVerifyIssuerSigned.bind(this),
|
|
38
|
+
mdocOid4vpHolderPresent: this.mdocOid4vpHolderPresent.bind(this),
|
|
39
|
+
mdocOid4vpRPVerify: this.mdocOid4vpRPVerify.bind(this),
|
|
40
|
+
};
|
|
41
|
+
trustAnchors;
|
|
42
|
+
opts;
|
|
45
43
|
constructor(args) {
|
|
46
|
-
|
|
47
|
-
this.
|
|
48
|
-
this.methods = {
|
|
49
|
-
x509VerifyCertificateChain: this.x509VerifyCertificateChain.bind(this),
|
|
50
|
-
x509GetCertificateInfo: this.x509GetCertificateInfo.bind(this),
|
|
51
|
-
mdocVerifyIssuerSigned: this.mdocVerifyIssuerSigned.bind(this),
|
|
52
|
-
mdocOid4vpHolderPresent: this.mdocOid4vpHolderPresent.bind(this),
|
|
53
|
-
mdocOid4vpRPVerify: this.mdocOid4vpRPVerify.bind(this),
|
|
54
|
-
};
|
|
55
|
-
this.trustAnchors = (_a = args === null || args === void 0 ? void 0 : args.trustAnchors) !== null && _a !== void 0 ? _a : [];
|
|
56
|
-
this.opts = (_b = args === null || args === void 0 ? void 0 : args.opts) !== null && _b !== void 0 ? _b : { trustRootWhenNoAnchors: true };
|
|
44
|
+
this.trustAnchors = args?.trustAnchors ?? [];
|
|
45
|
+
this.opts = args?.opts ?? { trustRootWhenNoAnchors: true };
|
|
57
46
|
}
|
|
58
47
|
/**
|
|
59
48
|
* Processes and verifies the provided mdoc, generates device response and presentation submission tokens.
|
|
@@ -62,83 +51,79 @@ class MDLMdoc {
|
|
|
62
51
|
* @param {IRequiredContext} _context - Required context for the operation.
|
|
63
52
|
* @return {Promise<MdocOid4VPPresentationAuth>} A promise that resolves to an object containing vp_token and presentation_submission.
|
|
64
53
|
*/
|
|
65
|
-
mdocOid4vpHolderPresent(args, _context) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const result = yield MdocValidations.fromDocumentAsync(mdoc, null, trustAnchors !== null && trustAnchors !== void 0 ? trustAnchors : this.trustAnchors, DateTimeUtils.Static.DEFAULT.dateTimeLocal(((_b = (_a = verifications === null || verifications === void 0 ? void 0 : verifications.verificationTime) === null || _a === void 0 ? void 0 : _a.getTime()) !== null && _b !== void 0 ? _b : Date.now()) / 1000), verifications === null || verifications === void 0 ? void 0 : verifications.allowExpiredDocuments);
|
|
75
|
-
if (result.error) {
|
|
76
|
-
console.log(JSON.stringify(result, null, 2));
|
|
77
|
-
}
|
|
78
|
-
return result;
|
|
79
|
-
}
|
|
80
|
-
catch (e) {
|
|
81
|
-
console.log(e);
|
|
82
|
-
return {
|
|
83
|
-
error: true,
|
|
84
|
-
verifications: [
|
|
85
|
-
{
|
|
86
|
-
name: 'mdoc',
|
|
87
|
-
error: true,
|
|
88
|
-
critical: true,
|
|
89
|
-
message: e.message,
|
|
90
|
-
},
|
|
91
|
-
],
|
|
92
|
-
};
|
|
54
|
+
async mdocOid4vpHolderPresent(args, _context) {
|
|
55
|
+
const { mdocs, presentationDefinition, trustAnchors, verifications, mdocHolderNonce, authorizationRequestNonce, responseUri, clientId } = args;
|
|
56
|
+
const oid4vpService = new MdocOid4vpService();
|
|
57
|
+
// const mdoc = DocumentCbor.Static.cborDecode(decodeFrom(mdocBase64Url, Encoding.BASE64URL))
|
|
58
|
+
const validate = async (mdoc) => {
|
|
59
|
+
try {
|
|
60
|
+
const result = await MdocValidations.fromDocumentAsync(mdoc, null, trustAnchors ?? this.trustAnchors, DateTimeUtils.Static.DEFAULT.dateTimeLocal((verifications?.verificationTime?.getTime() ?? Date.now()) / 1000), verifications?.allowExpiredDocuments);
|
|
61
|
+
if (result.error) {
|
|
62
|
+
console.log(JSON.stringify(result, null, 2));
|
|
93
63
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
64
|
+
return result;
|
|
65
|
+
}
|
|
66
|
+
catch (e) {
|
|
67
|
+
console.log(e);
|
|
68
|
+
return {
|
|
69
|
+
error: true,
|
|
70
|
+
verifications: [
|
|
71
|
+
{
|
|
72
|
+
name: 'mdoc',
|
|
73
|
+
error: true,
|
|
74
|
+
critical: true,
|
|
75
|
+
message: e.message,
|
|
76
|
+
},
|
|
77
|
+
],
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
const allMatches = oid4vpService.matchDocumentsAndDescriptors(mdocHolderNonce, mdocs, presentationDefinition);
|
|
82
|
+
const docsAndDescriptors = [];
|
|
83
|
+
let lastError = undefined;
|
|
84
|
+
for (let match of allMatches) {
|
|
85
|
+
if (match.document) {
|
|
86
|
+
const result = await validate(match.document);
|
|
87
|
+
if (!result.error || responseUri.includes('openid.net')) {
|
|
88
|
+
// TODO: We relax for the conformance suite, as the cert would be invalid
|
|
89
|
+
try {
|
|
90
|
+
const cborKey = result.keyInfo?.key ? CoseKeyCbor.Static.fromDTO(result.keyInfo.key) : undefined;
|
|
91
|
+
if (!cborKey) {
|
|
92
|
+
throw Error('No key found in result');
|
|
120
93
|
}
|
|
121
|
-
|
|
122
|
-
|
|
94
|
+
let jwk = CoseJoseKeyMappingService.toJoseJwk(cborKey).toJsonDTO();
|
|
95
|
+
if (!result.keyInfo?.kmsKeyRef) {
|
|
96
|
+
const keyInfo = result.keyInfo;
|
|
97
|
+
const kid = jwk.kid ?? calculateJwkThumbprint({ jwk: jwk });
|
|
98
|
+
const key = await _context.agent.keyManagerGet({ kid });
|
|
99
|
+
const kms = key.kms;
|
|
100
|
+
const kmsKeyRef = key.meta?.kmsKeyRef;
|
|
101
|
+
const updateCborKey = cborKey.copy(false, cborKey.kty, cborKey.kid ?? new CborByteString(decodeFrom(kid, Encoding.UTF8)));
|
|
102
|
+
const deviceKeyInfo = KeyInfo.Static.fromDTO(keyInfo).copy(kid, updateCborKey, keyInfo.opts, keyInfo.keyVisibility, keyInfo.signatureAlgorithm, keyInfo.x5c, kmsKeyRef, kms);
|
|
103
|
+
const updateMatch = match.copy(match.inputDescriptor, match.document, match.documentError, deviceKeyInfo);
|
|
104
|
+
match = updateMatch;
|
|
123
105
|
}
|
|
124
|
-
docsAndDescriptors.push(match);
|
|
125
106
|
}
|
|
126
|
-
|
|
127
|
-
|
|
107
|
+
catch (e) {
|
|
108
|
+
console.log(`We tied to ammend key info from the KMS, but failed. Potential trouble ahead ${e.message}`, e);
|
|
128
109
|
}
|
|
110
|
+
docsAndDescriptors.push(match);
|
|
129
111
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
if (lastError) {
|
|
133
|
-
return Promise.reject(Error((_f = lastError.verifications[0].message) !== null && _f !== void 0 ? _f : 'No matching documents found'));
|
|
112
|
+
else if (result.error) {
|
|
113
|
+
lastError = result;
|
|
134
114
|
}
|
|
135
|
-
return Promise.reject(Error('No matching documents found'));
|
|
136
115
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
116
|
+
}
|
|
117
|
+
if (docsAndDescriptors.length === 0) {
|
|
118
|
+
if (lastError) {
|
|
119
|
+
return Promise.reject(Error(lastError.verifications[0].message ?? 'No matching documents found'));
|
|
120
|
+
}
|
|
121
|
+
return Promise.reject(Error('No matching documents found'));
|
|
122
|
+
}
|
|
123
|
+
const deviceResponse = await oid4vpService.createDeviceResponse(docsAndDescriptors, presentationDefinition, clientId, responseUri, authorizationRequestNonce);
|
|
124
|
+
const vp_token = encodeTo(deviceResponse.cborEncode(), Encoding.BASE64URL);
|
|
125
|
+
const presentation_submission = Oid4VPPresentationSubmission.Static.fromPresentationDefinition(presentationDefinition);
|
|
126
|
+
return { vp_token, presentation_submission };
|
|
142
127
|
}
|
|
143
128
|
/**
|
|
144
129
|
* Verifies on the Relying Party (RP) side for mdoc (mobile document) OIDC4VP (OpenID Connect for Verifiable Presentations).
|
|
@@ -148,54 +133,52 @@ class MDLMdoc {
|
|
|
148
133
|
* @return {Promise<MdocOid4vpRPVerifyResult>} - A promise that resolves to an object containing error status,
|
|
149
134
|
* validated documents, and the original presentation submission.
|
|
150
135
|
*/
|
|
151
|
-
mdocOid4vpRPVerify(args, _context) {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
error = true;
|
|
164
|
-
}
|
|
165
|
-
if (presentation_submission.descriptor_map.find((m) => m.id === document.docType.value) === null) {
|
|
166
|
-
error = true;
|
|
167
|
-
validations.verifications.push({
|
|
168
|
-
name: 'mdoc',
|
|
169
|
-
error,
|
|
170
|
-
critical: error,
|
|
171
|
-
message: `No descriptor map id with document type ${document.docType.value} present`,
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
return { document: document.toJson(), validations };
|
|
136
|
+
async mdocOid4vpRPVerify(args, _context) {
|
|
137
|
+
const { vp_token, presentation_submission, trustAnchors } = args;
|
|
138
|
+
const deviceResponse = DeviceResponseCbor.Static.cborDecode(decodeFrom(vp_token, Encoding.BASE64URL));
|
|
139
|
+
if (!deviceResponse.documents) {
|
|
140
|
+
return Promise.reject(Error(`No documents found in vp_token`));
|
|
141
|
+
}
|
|
142
|
+
let error = false;
|
|
143
|
+
const documents = await Promise.all(deviceResponse.documents.map(async (document) => {
|
|
144
|
+
try {
|
|
145
|
+
const validations = await MdocValidations.fromDocumentAsync(document, null, trustAnchors ?? this.trustAnchors);
|
|
146
|
+
if (!validations || validations.error) {
|
|
147
|
+
error = true;
|
|
175
148
|
}
|
|
176
|
-
|
|
149
|
+
if (presentation_submission.descriptor_map.find((m) => m.id === document.docType.value) === null) {
|
|
177
150
|
error = true;
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
name: 'mdoc',
|
|
185
|
-
error,
|
|
186
|
-
critical: true,
|
|
187
|
-
message: e.message,
|
|
188
|
-
},
|
|
189
|
-
],
|
|
190
|
-
},
|
|
191
|
-
};
|
|
151
|
+
validations.verifications.push({
|
|
152
|
+
name: 'mdoc',
|
|
153
|
+
error,
|
|
154
|
+
critical: error,
|
|
155
|
+
message: `No descriptor map id with document type ${document.docType.value} present`,
|
|
156
|
+
});
|
|
192
157
|
}
|
|
193
|
-
|
|
194
|
-
if (error) {
|
|
195
|
-
console.log(JSON.stringify(documents, null, 2));
|
|
158
|
+
return { document: document.toJson(), validations };
|
|
196
159
|
}
|
|
197
|
-
|
|
198
|
-
|
|
160
|
+
catch (e) {
|
|
161
|
+
error = true;
|
|
162
|
+
return {
|
|
163
|
+
document: document.toJson(),
|
|
164
|
+
validations: {
|
|
165
|
+
error: true,
|
|
166
|
+
verifications: [
|
|
167
|
+
{
|
|
168
|
+
name: 'mdoc',
|
|
169
|
+
error,
|
|
170
|
+
critical: true,
|
|
171
|
+
message: e.message,
|
|
172
|
+
},
|
|
173
|
+
],
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
}));
|
|
178
|
+
if (error) {
|
|
179
|
+
console.log(JSON.stringify(documents, null, 2));
|
|
180
|
+
}
|
|
181
|
+
return { error, documents, presentation_submission };
|
|
199
182
|
}
|
|
200
183
|
/**
|
|
201
184
|
* Verifies the issuer-signed Mobile Document (mDoc) using the provided arguments and context.
|
|
@@ -204,13 +187,11 @@ class MDLMdoc {
|
|
|
204
187
|
* @param {IRequiredContext} context - The context encompassing necessary dependencies and configurations.
|
|
205
188
|
* @return {Promise<IVerifySignatureResult<KeyType>>} A promise that resolves to the result of the signature verification, including key information if available.
|
|
206
189
|
*/
|
|
207
|
-
mdocVerifyIssuerSigned(args, context) {
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
return Object.assign(Object.assign({}, verification), { keyInfo: keyInfo });
|
|
213
|
-
});
|
|
190
|
+
async mdocVerifyIssuerSigned(args, context) {
|
|
191
|
+
const { input, keyInfo, requireX5Chain } = args;
|
|
192
|
+
const coseKeyInfo = keyInfo && CoseJoseKeyMappingService.toCoseKeyInfo(keyInfo);
|
|
193
|
+
const verification = await new CoseCryptoServiceJS(new CoseCryptoService(context)).verify1(CoseSign1Json.Static.fromDTO(input).toCbor(), coseKeyInfo, requireX5Chain);
|
|
194
|
+
return { ...verification, keyInfo: keyInfo };
|
|
214
195
|
}
|
|
215
196
|
/**
|
|
216
197
|
* Verifies an X.509 certificate chain against a set of trust anchors.
|
|
@@ -220,15 +201,16 @@ class MDLMdoc {
|
|
|
220
201
|
* @param {IRequiredContext} _context - The context required for verification, including necessary dependencies and settings.
|
|
221
202
|
* @return {Promise<X509ValidationResult>} A promise that resolves to the result of the validation process, indicating the success or failure of the certificate chain verification.
|
|
222
203
|
*/
|
|
223
|
-
x509VerifyCertificateChain(args, _context) {
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
return validationResult;
|
|
204
|
+
async x509VerifyCertificateChain(args, _context) {
|
|
205
|
+
const mergedAnchors = [...this.trustAnchors, ...(args.trustAnchors ?? [])];
|
|
206
|
+
const trustAnchors = new Set(mergedAnchors);
|
|
207
|
+
const validationResult = await new X509CallbackService(Array.from(mergedAnchors)).verifyCertificateChain({
|
|
208
|
+
...args,
|
|
209
|
+
trustAnchors: Array.from(trustAnchors),
|
|
210
|
+
opts: { ...args?.opts, ...this.opts },
|
|
231
211
|
});
|
|
212
|
+
console.log(`x509 validation for ${validationResult.error ? 'Error' : 'Success'}. message: ${validationResult.message}, details: ${validationResult.detailMessage}`);
|
|
213
|
+
return validationResult;
|
|
232
214
|
}
|
|
233
215
|
/**
|
|
234
216
|
* Extracts information from a list of X509 certificates.
|
|
@@ -240,12 +222,9 @@ class MDLMdoc {
|
|
|
240
222
|
* @return {Promise<CertificateInfo[]>} A promise that resolves with an array of certificate
|
|
241
223
|
* information objects, each containing details extracted from individual certificates.
|
|
242
224
|
*/
|
|
243
|
-
x509GetCertificateInfo(args, context) {
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
return yield Promise.all(certificates.map((cert) => (0, ssi_sdk_ext_x509_utils_1.getCertificateInfo)(cert, args.sanTypeFilter && { sanTypeFilter: args.sanTypeFilter })));
|
|
247
|
-
});
|
|
225
|
+
async x509GetCertificateInfo(args, context) {
|
|
226
|
+
const certificates = args.certificates.map((cert) => pemOrDerToX509Certificate(cert));
|
|
227
|
+
return await Promise.all(certificates.map((cert) => getCertificateInfo(cert, args.sanTypeFilter && { sanTypeFilter: args.sanTypeFilter })));
|
|
248
228
|
}
|
|
249
229
|
}
|
|
250
|
-
exports.MDLMdoc = MDLMdoc;
|
|
251
230
|
//# sourceMappingURL=mDLMdoc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mDLMdoc.js","sourceRoot":"","sources":["../../src/agent/mDLMdoc.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mDLMdoc.js","sourceRoot":"","sources":["../../src/agent/mDLMdoc.ts"],"names":[],"mappings":"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"}
|
package/dist/functions/index.js
CHANGED
|
@@ -1,155 +1,115 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
-
exports.X509CallbackService = exports.CoseCryptoService = void 0;
|
|
36
|
-
const kmp_mdoc_core_1 = require("@sphereon/kmp-mdoc-core");
|
|
37
|
-
const ssi_sdk_ext_key_utils_1 = require("@sphereon/ssi-sdk-ext.key-utils");
|
|
38
|
-
const ssi_sdk_ext_x509_utils_1 = require("@sphereon/ssi-sdk-ext.x509-utils");
|
|
39
|
-
const crypto = __importStar(require("crypto"));
|
|
40
|
-
const pkijs_1 = require("pkijs");
|
|
41
|
-
const u8a = __importStar(require("uint8arrays"));
|
|
42
|
-
var CoseKeyCbor = kmp_mdoc_core_1.com.sphereon.crypto.cose.CoseKeyCbor;
|
|
43
|
-
var CoseJoseKeyMappingService = kmp_mdoc_core_1.com.sphereon.crypto.CoseJoseKeyMappingService;
|
|
44
|
-
var DefaultCallbacks = kmp_mdoc_core_1.com.sphereon.crypto.DefaultCallbacks;
|
|
45
|
-
var SignatureAlgorithm = kmp_mdoc_core_1.com.sphereon.crypto.generic.SignatureAlgorithm;
|
|
46
|
-
var KeyInfo = kmp_mdoc_core_1.com.sphereon.crypto.KeyInfo;
|
|
47
|
-
var ResolvedKeyInfo = kmp_mdoc_core_1.com.sphereon.crypto.ResolvedKeyInfo;
|
|
48
|
-
var DateTimeUtils = kmp_mdoc_core_1.com.sphereon.kmp.DateTimeUtils;
|
|
49
|
-
var decodeFrom = kmp_mdoc_core_1.com.sphereon.kmp.decodeFrom;
|
|
50
|
-
var encodeTo = kmp_mdoc_core_1.com.sphereon.kmp.encodeTo;
|
|
51
|
-
var Encoding = kmp_mdoc_core_1.com.sphereon.kmp.Encoding;
|
|
52
|
-
class CoseCryptoService {
|
|
1
|
+
import { com } from '@sphereon/kmp-mdoc-core';
|
|
2
|
+
import { calculateJwkThumbprint, globalCrypto, verifyRawSignature } from '@sphereon/ssi-sdk-ext.key-utils';
|
|
3
|
+
import { derToPEM, getCertificateInfo, getSubjectDN, pemOrDerToX509Certificate, validateX509CertificateChain, } from '@sphereon/ssi-sdk-ext.x509-utils';
|
|
4
|
+
import * as crypto from 'crypto';
|
|
5
|
+
import { CryptoEngine, setEngine } from 'pkijs';
|
|
6
|
+
import * as u8a from 'uint8arrays';
|
|
7
|
+
var CoseKeyCbor = com.sphereon.crypto.cose.CoseKeyCbor;
|
|
8
|
+
var CoseJoseKeyMappingService = com.sphereon.crypto.CoseJoseKeyMappingService;
|
|
9
|
+
var DefaultCallbacks = com.sphereon.crypto.DefaultCallbacks;
|
|
10
|
+
var SignatureAlgorithm = com.sphereon.crypto.generic.SignatureAlgorithm;
|
|
11
|
+
var KeyInfo = com.sphereon.crypto.KeyInfo;
|
|
12
|
+
var ResolvedKeyInfo = com.sphereon.crypto.ResolvedKeyInfo;
|
|
13
|
+
var DateTimeUtils = com.sphereon.kmp.DateTimeUtils;
|
|
14
|
+
var decodeFrom = com.sphereon.kmp.decodeFrom;
|
|
15
|
+
var encodeTo = com.sphereon.kmp.encodeTo;
|
|
16
|
+
var Encoding = com.sphereon.kmp.Encoding;
|
|
17
|
+
export class CoseCryptoService {
|
|
18
|
+
context;
|
|
53
19
|
constructor(context) {
|
|
54
20
|
this.context = context;
|
|
55
21
|
}
|
|
56
22
|
setContext(context) {
|
|
57
23
|
this.context = context;
|
|
58
24
|
}
|
|
59
|
-
signAsync(input, requireX5Chain) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
25
|
+
async signAsync(input, requireX5Chain) {
|
|
26
|
+
if (!this.context) {
|
|
27
|
+
throw Error('No context provided. Please provide a context with the setContext method or constructor');
|
|
28
|
+
}
|
|
29
|
+
const { keyInfo, alg, value } = input;
|
|
30
|
+
let kmsKeyRef = keyInfo.kmsKeyRef ?? undefined;
|
|
31
|
+
if (!kmsKeyRef) {
|
|
32
|
+
const key = keyInfo.key;
|
|
33
|
+
if (key == null) {
|
|
34
|
+
return Promise.reject(Error('No key present in keyInfo. This implementation cannot sign without a key!'));
|
|
64
35
|
}
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
return Promise.reject(Error('No key present in keyInfo. This implementation cannot sign without a key!'));
|
|
71
|
-
}
|
|
72
|
-
const resolvedKeyInfo = ResolvedKeyInfo.Static.fromKeyInfo(keyInfo, key);
|
|
73
|
-
const jwkKeyInfo = CoseJoseKeyMappingService.toResolvedJwkKeyInfo(resolvedKeyInfo);
|
|
74
|
-
const kid = (_c = (_b = jwkKeyInfo.kid) !== null && _b !== void 0 ? _b : (0, ssi_sdk_ext_key_utils_1.calculateJwkThumbprint)({ jwk: jwkKeyInfo.key.toJsonDTO() })) !== null && _c !== void 0 ? _c : jwkKeyInfo.key.getKidAsString(true);
|
|
75
|
-
if (!kid) {
|
|
76
|
-
return Promise.reject(Error('No kid present and not kmsKeyRef provided'));
|
|
77
|
-
}
|
|
78
|
-
kmsKeyRef = kid;
|
|
36
|
+
const resolvedKeyInfo = ResolvedKeyInfo.Static.fromKeyInfo(keyInfo, key);
|
|
37
|
+
const jwkKeyInfo = CoseJoseKeyMappingService.toResolvedJwkKeyInfo(resolvedKeyInfo);
|
|
38
|
+
const kid = jwkKeyInfo.kid ?? calculateJwkThumbprint({ jwk: jwkKeyInfo.key.toJsonDTO() }) ?? jwkKeyInfo.key.getKidAsString(true);
|
|
39
|
+
if (!kid) {
|
|
40
|
+
return Promise.reject(Error('No kid present and not kmsKeyRef provided'));
|
|
79
41
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
42
|
+
kmsKeyRef = kid;
|
|
43
|
+
}
|
|
44
|
+
const result = await this.context.agent.keyManagerSign({
|
|
45
|
+
algorithm: alg.jose.value,
|
|
46
|
+
data: encodeTo(value, Encoding.UTF8),
|
|
47
|
+
encoding: 'utf-8',
|
|
48
|
+
keyRef: kmsKeyRef,
|
|
87
49
|
});
|
|
50
|
+
return decodeFrom(result, Encoding.UTF8);
|
|
88
51
|
}
|
|
89
|
-
verify1Async(input, keyInfo, requireX5Chain) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
// We should not be able to get here anyway, as the MLD-mdoc library already validated at this point. But let's make sure
|
|
95
|
-
return Promise.reject(new Error(`No x5chain was present in the CoseSign headers!`));
|
|
96
|
-
}
|
|
97
|
-
// TODO: According to the IETF spec there should be a x5t in case the x5chain is in the protected headers. In the Funke this does not seem to be done/used!
|
|
98
|
-
issuerCert = x5c ? (0, ssi_sdk_ext_x509_utils_1.pemOrDerToX509Certificate)(x5c[0]) : undefined;
|
|
99
|
-
let issuerJwk;
|
|
100
|
-
if (issuerCert) {
|
|
101
|
-
const info = yield (0, ssi_sdk_ext_x509_utils_1.getCertificateInfo)(issuerCert);
|
|
102
|
-
issuerJwk = info.publicKeyJWK;
|
|
103
|
-
}
|
|
104
|
-
return { issuerCert, issuerJwk };
|
|
105
|
-
});
|
|
106
|
-
const coseKeyInfo = CoseJoseKeyMappingService.toCoseKeyInfo(keyInfo);
|
|
107
|
-
if ((_a = coseKeyInfo === null || coseKeyInfo === void 0 ? void 0 : coseKeyInfo.key) === null || _a === void 0 ? void 0 : _a.d) {
|
|
108
|
-
throw Error('Do not use private keys to verify!');
|
|
109
|
-
}
|
|
110
|
-
else if (!((_b = input.payload) === null || _b === void 0 ? void 0 : _b.value)) {
|
|
111
|
-
return Promise.reject(Error('Signature validation without payload not supported'));
|
|
52
|
+
async verify1Async(input, keyInfo, requireX5Chain) {
|
|
53
|
+
const getCertAndKey = async (x5c) => {
|
|
54
|
+
if (requireX5Chain && (!x5c || x5c.length === 0)) {
|
|
55
|
+
// We should not be able to get here anyway, as the MLD-mdoc library already validated at this point. But let's make sure
|
|
56
|
+
return Promise.reject(new Error(`No x5chain was present in the CoseSign headers!`));
|
|
112
57
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
58
|
+
// TODO: According to the IETF spec there should be a x5t in case the x5chain is in the protected headers. In the Funke this does not seem to be done/used!
|
|
59
|
+
issuerCert = x5c ? pemOrDerToX509Certificate(x5c[0]) : undefined;
|
|
60
|
+
let issuerJwk;
|
|
61
|
+
if (issuerCert) {
|
|
62
|
+
const info = await getCertificateInfo(issuerCert);
|
|
63
|
+
issuerJwk = info.publicKeyJWK;
|
|
117
64
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
65
|
+
return { issuerCert, issuerJwk };
|
|
66
|
+
};
|
|
67
|
+
const coseKeyInfo = CoseJoseKeyMappingService.toCoseKeyInfo(keyInfo);
|
|
68
|
+
if (coseKeyInfo?.key?.d) {
|
|
69
|
+
throw Error('Do not use private keys to verify!');
|
|
70
|
+
}
|
|
71
|
+
else if (!input.payload?.value) {
|
|
72
|
+
return Promise.reject(Error('Signature validation without payload not supported'));
|
|
73
|
+
}
|
|
74
|
+
const sign1Json = input.toJson(); // Let's make it a bit easier on ourselves, instead of working with CBOR
|
|
75
|
+
const coseAlg = sign1Json.protectedHeader.alg;
|
|
76
|
+
if (!coseAlg) {
|
|
77
|
+
return Promise.reject(Error('No alg protected header present'));
|
|
78
|
+
}
|
|
79
|
+
let issuerCert;
|
|
80
|
+
let issuerCoseKey;
|
|
81
|
+
let kid = coseKeyInfo?.kid ?? sign1Json.protectedHeader.kid ?? sign1Json.unprotectedHeader?.kid;
|
|
82
|
+
// Please note this method does not perform chain validation. The MDL-MSO_MDOC library already performed this before this step
|
|
83
|
+
const x5c = coseKeyInfo?.key?.getX509CertificateChain() ?? sign1Json.protectedHeader?.x5chain ?? sign1Json.unprotectedHeader?.x5chain;
|
|
84
|
+
if (!coseKeyInfo || !coseKeyInfo?.key || coseKeyInfo?.key?.x5chain) {
|
|
85
|
+
const certAndKey = await getCertAndKey(x5c);
|
|
86
|
+
issuerCoseKey = certAndKey.issuerJwk ? CoseJoseKeyMappingService.toCoseKey(certAndKey.issuerJwk) : undefined;
|
|
87
|
+
issuerCert = certAndKey.issuerCert;
|
|
88
|
+
}
|
|
89
|
+
if (!issuerCoseKey) {
|
|
90
|
+
if (!coseKeyInfo?.key) {
|
|
91
|
+
return Promise.reject(Error(`Either a x5c needs to be in the headers, or you need to provide a key for verification`));
|
|
127
92
|
}
|
|
128
|
-
if (
|
|
129
|
-
|
|
130
|
-
return Promise.reject(Error(`Either a x5c needs to be in the headers, or you need to provide a key for verification`));
|
|
131
|
-
}
|
|
132
|
-
if (kid === null) {
|
|
133
|
-
kid = coseKeyInfo.key.getKidAsString(false);
|
|
134
|
-
}
|
|
135
|
-
issuerCoseKey = CoseKeyCbor.Static.fromDTO(coseKeyInfo.key);
|
|
93
|
+
if (kid === null) {
|
|
94
|
+
kid = coseKeyInfo.key.getKidAsString(false);
|
|
136
95
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
name: 'mdoc',
|
|
147
|
-
critical: true,
|
|
148
|
-
error: !valid,
|
|
149
|
-
message: `Signature of '${issuerCert ? (0, ssi_sdk_ext_x509_utils_1.getSubjectDN)(issuerCert).DN : kid}' was ${valid ? '' : 'in'}valid`,
|
|
150
|
-
keyInfo: issuerCoseKeyInfo,
|
|
151
|
-
};
|
|
96
|
+
issuerCoseKey = CoseKeyCbor.Static.fromDTO(coseKeyInfo.key);
|
|
97
|
+
}
|
|
98
|
+
const issuerCoseKeyInfo = new KeyInfo(kid, issuerCoseKey, coseKeyInfo.opts, coseKeyInfo.keyVisibility, issuerCoseKey.getSignatureAlgorithm() ?? coseKeyInfo.signatureAlgorithm, x5c, coseKeyInfo.kmsKeyRef, coseKeyInfo.kms, coseKeyInfo.keyType ?? issuerCoseKey.getKty());
|
|
99
|
+
const recalculatedToBeSigned = input.toBeSignedJson(issuerCoseKeyInfo, SignatureAlgorithm.Static.fromCose(coseAlg));
|
|
100
|
+
const key = CoseJoseKeyMappingService.toJoseJwk(issuerCoseKeyInfo.key).toJsonDTO();
|
|
101
|
+
const valid = await verifyRawSignature({
|
|
102
|
+
data: u8a.fromString(recalculatedToBeSigned.base64UrlValue, 'base64url'),
|
|
103
|
+
signature: u8a.fromString(sign1Json.signature, 'base64url'),
|
|
104
|
+
key,
|
|
152
105
|
});
|
|
106
|
+
return {
|
|
107
|
+
name: 'mdoc',
|
|
108
|
+
critical: true,
|
|
109
|
+
error: !valid,
|
|
110
|
+
message: `Signature of '${issuerCert ? getSubjectDN(issuerCert).DN : kid}' was ${valid ? '' : 'in'}valid`,
|
|
111
|
+
keyInfo: issuerCoseKeyInfo,
|
|
112
|
+
};
|
|
153
113
|
}
|
|
154
114
|
resolvePublicKeyAsync(keyInfo) {
|
|
155
115
|
if (keyInfo.key) {
|
|
@@ -158,7 +118,6 @@ class CoseCryptoService {
|
|
|
158
118
|
return Promise.reject(Error('No key present in keyInfo. This implementation cannot resolve public keys on its own currently!'));
|
|
159
119
|
}
|
|
160
120
|
}
|
|
161
|
-
exports.CoseCryptoService = CoseCryptoService;
|
|
162
121
|
/**
|
|
163
122
|
* This class can be used for X509 validations.
|
|
164
123
|
* Either have an instance per trustedCerts and verification invocation or use a single instance and provide the trusted certs in the method argument
|
|
@@ -166,18 +125,9 @@ exports.CoseCryptoService = CoseCryptoService;
|
|
|
166
125
|
* The class is also registered with the low-level mDL/mdoc Kotlin Multiplatform library
|
|
167
126
|
* Next to the specific function for the library it exports a more powerful version of the same verification method as well
|
|
168
127
|
*/
|
|
169
|
-
class X509CallbackService {
|
|
128
|
+
export class X509CallbackService {
|
|
129
|
+
_trustedCerts;
|
|
170
130
|
constructor(trustedCerts) {
|
|
171
|
-
this.setTrustedCerts = (trustedCertsInPEM) => {
|
|
172
|
-
this._trustedCerts = trustedCertsInPEM === null || trustedCertsInPEM === void 0 ? void 0 : trustedCertsInPEM.map((cert) => {
|
|
173
|
-
if (cert.includes('CERTIFICATE')) {
|
|
174
|
-
// PEM
|
|
175
|
-
return cert;
|
|
176
|
-
}
|
|
177
|
-
return (0, ssi_sdk_ext_x509_utils_1.derToPEM)(cert);
|
|
178
|
-
});
|
|
179
|
-
};
|
|
180
|
-
this.getTrustedCerts = () => this._trustedCerts;
|
|
181
131
|
this.setTrustedCerts(trustedCerts);
|
|
182
132
|
}
|
|
183
133
|
/**
|
|
@@ -186,50 +136,54 @@ class X509CallbackService {
|
|
|
186
136
|
* @param trustAnchors
|
|
187
137
|
* @param verificationTime
|
|
188
138
|
*/
|
|
189
|
-
verifyCertificateChain(
|
|
190
|
-
return
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
opts,
|
|
196
|
-
});
|
|
139
|
+
async verifyCertificateChain({ chain, trustAnchors = this.getTrustedCerts(), verificationTime, opts, }) {
|
|
140
|
+
return await validateX509CertificateChain({
|
|
141
|
+
chain,
|
|
142
|
+
trustAnchors,
|
|
143
|
+
verificationTime,
|
|
144
|
+
opts,
|
|
197
145
|
});
|
|
198
146
|
}
|
|
199
147
|
/**
|
|
200
148
|
* This method is the implementation used within the mDL/Mdoc library
|
|
201
149
|
*/
|
|
202
|
-
verifyCertificateChainJS(chainDER, chainPEM, trustedCerts, verificationProfile, verificationTime) {
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
verificationTime: new Date(verificationAt.toEpochSeconds().toULong() * 1000),
|
|
217
|
-
opts: { trustRootWhenNoAnchors: true },
|
|
218
|
-
});
|
|
219
|
-
const cert = result.certificateChain ? result.certificateChain[result.certificateChain.length - 1] : undefined;
|
|
220
|
-
return {
|
|
221
|
-
publicKey: cert === null || cert === void 0 ? void 0 : cert.publicKeyJWK, // fixme
|
|
222
|
-
publicKeyAlgorithm: (_a = cert === null || cert === void 0 ? void 0 : cert.publicKeyJWK) === null || _a === void 0 ? void 0 : _a.alg,
|
|
223
|
-
name: 'x.509',
|
|
224
|
-
critical: result.critical,
|
|
225
|
-
message: result.message,
|
|
226
|
-
error: result.error,
|
|
227
|
-
verificationTime: verificationAt,
|
|
228
|
-
};
|
|
150
|
+
async verifyCertificateChainJS(chainDER, chainPEM, trustedCerts, verificationProfile, verificationTime) {
|
|
151
|
+
const verificationAt = verificationTime ?? DateTimeUtils.Static.DEFAULT.dateTimeLocal();
|
|
152
|
+
let chain = [];
|
|
153
|
+
if (chainDER && chainDER.length > 0) {
|
|
154
|
+
chain = chainDER.map((der) => Uint8Array.from(der));
|
|
155
|
+
}
|
|
156
|
+
if (chainPEM && chainPEM.length > 0) {
|
|
157
|
+
chain = (chain ?? []).concat(chainPEM);
|
|
158
|
+
}
|
|
159
|
+
const result = await validateX509CertificateChain({
|
|
160
|
+
chain: chain, // The function will handle an empty array
|
|
161
|
+
trustAnchors: trustedCerts ?? this.getTrustedCerts(),
|
|
162
|
+
verificationTime: new Date(verificationAt.toEpochSeconds().toULong() * 1000),
|
|
163
|
+
opts: { trustRootWhenNoAnchors: true },
|
|
229
164
|
});
|
|
165
|
+
const cert = result.certificateChain ? result.certificateChain[result.certificateChain.length - 1] : undefined;
|
|
166
|
+
return {
|
|
167
|
+
publicKey: cert?.publicKeyJWK, // fixme
|
|
168
|
+
publicKeyAlgorithm: cert?.publicKeyJWK?.alg,
|
|
169
|
+
name: 'x.509',
|
|
170
|
+
critical: result.critical,
|
|
171
|
+
message: result.message,
|
|
172
|
+
error: result.error,
|
|
173
|
+
verificationTime: verificationAt,
|
|
174
|
+
};
|
|
230
175
|
}
|
|
176
|
+
setTrustedCerts = (trustedCertsInPEM) => {
|
|
177
|
+
this._trustedCerts = trustedCertsInPEM?.map((cert) => {
|
|
178
|
+
if (cert.includes('CERTIFICATE')) {
|
|
179
|
+
// PEM
|
|
180
|
+
return cert;
|
|
181
|
+
}
|
|
182
|
+
return derToPEM(cert);
|
|
183
|
+
});
|
|
184
|
+
};
|
|
185
|
+
getTrustedCerts = () => this._trustedCerts;
|
|
231
186
|
}
|
|
232
|
-
exports.X509CallbackService = X509CallbackService;
|
|
233
187
|
const defaultCryptoEngine = () => {
|
|
234
188
|
if (typeof self !== 'undefined') {
|
|
235
189
|
if ('crypto' in self) {
|
|
@@ -238,19 +192,19 @@ const defaultCryptoEngine = () => {
|
|
|
238
192
|
engineName = 'safari';
|
|
239
193
|
}
|
|
240
194
|
// @ts-ignore
|
|
241
|
-
|
|
195
|
+
setEngine(engineName, new CryptoEngine({ name: engineName, crypto: crypto }));
|
|
242
196
|
}
|
|
243
197
|
}
|
|
244
198
|
else if (typeof crypto !== 'undefined' && 'webcrypto' in crypto) {
|
|
245
199
|
const name = 'NodeJS ^15';
|
|
246
200
|
const nodeCrypto = crypto.webcrypto;
|
|
247
201
|
// @ts-ignore
|
|
248
|
-
|
|
202
|
+
setEngine(name, new CryptoEngine({ name, crypto: nodeCrypto }));
|
|
249
203
|
}
|
|
250
204
|
else {
|
|
251
205
|
// @ts-ignore
|
|
252
206
|
const name = 'crypto';
|
|
253
|
-
|
|
207
|
+
setEngine(name, new CryptoEngine({ name, crypto: globalCrypto(false) }));
|
|
254
208
|
}
|
|
255
209
|
};
|
|
256
210
|
defaultCryptoEngine();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/functions/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/functions/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,27 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.mdocSupportMethods = exports.MDLMdoc = exports.schema = exports.logger = void 0;
|
|
18
|
-
const ssi_types_1 = require("@sphereon/ssi-types");
|
|
19
|
-
exports.logger = ssi_types_1.Loggers.DEFAULT.get('sphereon:mdoc');
|
|
1
|
+
import { Loggers } from '@sphereon/ssi-types';
|
|
2
|
+
export const logger = Loggers.DEFAULT.get('sphereon:mdoc');
|
|
20
3
|
const schema = require('../plugin.schema.json');
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
__exportStar(require("./types/ImDLMdoc"), exports);
|
|
26
|
-
__exportStar(require("./functions"), exports);
|
|
4
|
+
export { schema };
|
|
5
|
+
export { MDLMdoc, mdocSupportMethods } from './agent/mDLMdoc';
|
|
6
|
+
export * from './types/ImDLMdoc';
|
|
7
|
+
export * from './functions';
|
|
27
8
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAE7C,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;AAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,CAAA;AACjB,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC7D,cAAc,kBAAkB,CAAA;AAChC,cAAc,aAAa,CAAA"}
|
package/dist/types/ImDLMdoc.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sphereon/ssi-sdk.mdl-mdoc",
|
|
3
|
-
"version": "0.33.
|
|
3
|
+
"version": "0.33.1-feature.vcdm2.4+9f634bdb",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
"@sphereon/ssi-sdk-ext.did-utils": "0.28.0",
|
|
22
22
|
"@sphereon/ssi-sdk-ext.key-utils": "0.28.0",
|
|
23
23
|
"@sphereon/ssi-sdk-ext.x509-utils": "0.28.0",
|
|
24
|
-
"@sphereon/ssi-sdk.core": "0.33.
|
|
25
|
-
"@sphereon/ssi-types": "0.33.
|
|
24
|
+
"@sphereon/ssi-sdk.core": "0.33.1-feature.vcdm2.4+9f634bdb",
|
|
25
|
+
"@sphereon/ssi-types": "0.33.1-feature.vcdm2.4+9f634bdb",
|
|
26
26
|
"@veramo/core": "4.2.0",
|
|
27
27
|
"@veramo/did-manager": "4.2.0",
|
|
28
28
|
"@veramo/utils": "4.2.0",
|
|
@@ -37,12 +37,12 @@
|
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@sphereon/oid4vci-client": "0.17.0",
|
|
39
39
|
"@sphereon/oid4vci-common": "0.17.0",
|
|
40
|
-
"@sphereon/ssi-express-support": "0.33.
|
|
40
|
+
"@sphereon/ssi-express-support": "0.33.1-feature.vcdm2.4+9f634bdb",
|
|
41
41
|
"@sphereon/ssi-sdk-ext.key-manager": "0.28.0",
|
|
42
42
|
"@sphereon/ssi-sdk-ext.kms-local": "0.28.0",
|
|
43
|
-
"@sphereon/ssi-sdk.agent-config": "0.33.
|
|
44
|
-
"@sphereon/ssi-sdk.data-store": "0.33.
|
|
45
|
-
"@sphereon/ssi-sdk.public-key-hosting": "0.33.
|
|
43
|
+
"@sphereon/ssi-sdk.agent-config": "0.33.1-feature.vcdm2.4+9f634bdb",
|
|
44
|
+
"@sphereon/ssi-sdk.data-store": "0.33.1-feature.vcdm2.4+9f634bdb",
|
|
45
|
+
"@sphereon/ssi-sdk.public-key-hosting": "0.33.1-feature.vcdm2.4+9f634bdb",
|
|
46
46
|
"@transmute/json-web-signature": "0.7.0-unstable.81",
|
|
47
47
|
"@types/cors": "^2.8.17",
|
|
48
48
|
"@types/express": "^4.17.21",
|
|
@@ -78,5 +78,5 @@
|
|
|
78
78
|
"EBSI Authorization Client"
|
|
79
79
|
],
|
|
80
80
|
"nx": {},
|
|
81
|
-
"gitHead": "
|
|
81
|
+
"gitHead": "9f634bdb714061141e277508c124b08d626f6036"
|
|
82
82
|
}
|