@sphereon/ssi-types 0.8.1-unstable.25 → 0.8.1-unstable.263
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/mapper/credential-mapper.d.ts +33 -10
- package/dist/mapper/credential-mapper.d.ts.map +1 -1
- package/dist/mapper/credential-mapper.js +90 -21
- package/dist/mapper/credential-mapper.js.map +1 -1
- package/dist/types/vc.d.ts +22 -15
- package/dist/types/vc.d.ts.map +1 -1
- package/dist/types/vc.js +7 -1
- package/dist/types/vc.js.map +1 -1
- package/package.json +3 -2
- package/src/mapper/credential-mapper.ts +133 -24
- package/src/types/vc.ts +11 -3
|
@@ -1,19 +1,42 @@
|
|
|
1
|
-
import { ICredential, IPresentation, IVerifiableCredential, IVerifiablePresentation, JwtDecodedVerifiableCredential, JwtDecodedVerifiablePresentation, OriginalVerifiableCredential, OriginalVerifiablePresentation, WrappedVerifiableCredential, WrappedVerifiablePresentation } from '../types';
|
|
1
|
+
import { DocumentFormat, ICredential, IPresentation, IVerifiableCredential, IVerifiablePresentation, JwtDecodedVerifiableCredential, JwtDecodedVerifiablePresentation, OriginalVerifiableCredential, OriginalVerifiablePresentation, W3CVerifiableCredential, W3CVerifiablePresentation, WrappedVerifiableCredential, WrappedVerifiablePresentation } from '../types';
|
|
2
2
|
export declare class CredentialMapper {
|
|
3
3
|
static decodeVerifiablePresentation(presentation: OriginalVerifiablePresentation): JwtDecodedVerifiablePresentation | IVerifiablePresentation;
|
|
4
4
|
static decodeVerifiableCredential(credential: OriginalVerifiableCredential): JwtDecodedVerifiableCredential | IVerifiableCredential;
|
|
5
|
-
static toWrappedVerifiablePresentation(presentation: OriginalVerifiablePresentation
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
static toWrappedVerifiablePresentation(presentation: OriginalVerifiablePresentation, opts?: {
|
|
6
|
+
maxTimeSkewInMS?: number;
|
|
7
|
+
}): WrappedVerifiablePresentation;
|
|
8
|
+
static toWrappedVerifiableCredentials(verifiableCredentials: OriginalVerifiableCredential[], opts?: {
|
|
9
|
+
maxTimeSkewInMS?: number;
|
|
10
|
+
}): WrappedVerifiableCredential[];
|
|
11
|
+
static toWrappedVerifiableCredential(verifiableCredential: OriginalVerifiableCredential, opts?: {
|
|
12
|
+
maxTimeSkewInMS?: number;
|
|
13
|
+
}): WrappedVerifiableCredential;
|
|
8
14
|
static isJwtEncoded(original: OriginalVerifiableCredential | OriginalVerifiablePresentation): boolean;
|
|
9
15
|
private static isJsonLdString;
|
|
10
16
|
static isJwtDecodedCredential(original: OriginalVerifiableCredential): boolean;
|
|
11
17
|
static isJwtDecodedPresentation(original: OriginalVerifiablePresentation): boolean;
|
|
12
|
-
static jwtEncodedPresentationToUniformPresentation(jwt: string, makeCredentialsUniform?: boolean
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
static
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
static jwtEncodedPresentationToUniformPresentation(jwt: string, makeCredentialsUniform?: boolean, opts?: {
|
|
19
|
+
maxTimeSkewInMS?: number;
|
|
20
|
+
}): IPresentation;
|
|
21
|
+
static jwtDecodedPresentationToUniformPresentation(decoded: JwtDecodedVerifiablePresentation, makeCredentialsUniform?: boolean, opts?: {
|
|
22
|
+
maxTimeSkewInMS?: number;
|
|
23
|
+
}): IPresentation;
|
|
24
|
+
static toUniformCredential(verifiableCredential: OriginalVerifiableCredential, opts?: {
|
|
25
|
+
maxTimeSkewInMS?: number;
|
|
26
|
+
}): ICredential;
|
|
27
|
+
static toUniformPresentation(presentation: OriginalVerifiablePresentation, opts?: {
|
|
28
|
+
maxTimeSkewInMS?: number;
|
|
29
|
+
}): IPresentation;
|
|
30
|
+
static jwtEncodedCredentialToUniformCredential(jwt: string, opts?: {
|
|
31
|
+
maxTimeSkewInMS?: number;
|
|
32
|
+
}): ICredential;
|
|
33
|
+
static jwtDecodedCredentialToUniformCredential(decoded: JwtDecodedVerifiableCredential, opts?: {
|
|
34
|
+
maxTimeSkewInMS?: number;
|
|
35
|
+
}): ICredential;
|
|
36
|
+
static toExternalVerifiableCredential(verifiableCredential: any): IVerifiableCredential;
|
|
37
|
+
static storedCredentialToOriginalFormat(credential: W3CVerifiableCredential): W3CVerifiableCredential;
|
|
38
|
+
static storedPresentationToOriginalFormat(presentation: W3CVerifiablePresentation): W3CVerifiablePresentation;
|
|
39
|
+
static toCompactJWT(persistedCredential: W3CVerifiableCredential | W3CVerifiablePresentation): string;
|
|
40
|
+
static detectDocumentType(document: W3CVerifiableCredential | W3CVerifiablePresentation): DocumentFormat;
|
|
18
41
|
}
|
|
19
42
|
//# sourceMappingURL=credential-mapper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential-mapper.d.ts","sourceRoot":"","sources":["../../src/mapper/credential-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"credential-mapper.d.ts","sourceRoot":"","sources":["../../src/mapper/credential-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,WAAW,EACX,aAAa,EAEb,qBAAqB,EACrB,uBAAuB,EACvB,8BAA8B,EAC9B,gCAAgC,EAEhC,4BAA4B,EAC5B,8BAA8B,EAE9B,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,EAC3B,6BAA6B,EAC9B,MAAM,UAAU,CAAA;AAIjB,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,4BAA4B,CAAC,YAAY,EAAE,8BAA8B,GAAG,gCAAgC,GAAG,uBAAuB;IAY7I,MAAM,CAAC,0BAA0B,CAAC,UAAU,EAAE,4BAA4B,GAAG,8BAA8B,GAAG,qBAAqB;IAYnI,MAAM,CAAC,+BAA+B,CACpC,YAAY,EAAE,8BAA8B,EAC5C,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GAClC,6BAA6B;IA4BhC,MAAM,CAAC,8BAA8B,CACnC,qBAAqB,EAAE,4BAA4B,EAAE,EACrD,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GAClC,2BAA2B,EAAE;IAIhC,MAAM,CAAC,6BAA6B,CAClC,oBAAoB,EAAE,4BAA4B,EAClD,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GAClC,2BAA2B;WAwBhB,YAAY,CAAC,QAAQ,EAAE,4BAA4B,GAAG,8BAA8B;IAIlG,OAAO,CAAC,MAAM,CAAC,cAAc;WAIf,sBAAsB,CAAC,QAAQ,EAAE,4BAA4B,GAAG,OAAO;WAIvE,wBAAwB,CAAC,QAAQ,EAAE,8BAA8B,GAAG,OAAO;IAIzF,MAAM,CAAC,2CAA2C,CAChD,GAAG,EAAE,MAAM,EACX,sBAAsB,GAAE,OAAc,EACtC,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GAClC,aAAa;IAIhB,MAAM,CAAC,2CAA2C,CAChD,OAAO,EAAE,gCAAgC,EACzC,sBAAsB,GAAE,OAAc,EACtC,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GAClC,aAAa;IA+BhB,MAAM,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,4BAA4B,EAAE,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,WAAW;IAchI,MAAM,CAAC,qBAAqB,CAAC,YAAY,EAAE,8BAA8B,EAAE,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa;IAe9H,MAAM,CAAC,uCAAuC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,WAAW;IAI7G,MAAM,CAAC,uCAAuC,CAAC,OAAO,EAAE,8BAA8B,EAAE,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,WAAW;IA6EzI,MAAM,CAAC,8BAA8B,CAAC,oBAAoB,EAAE,GAAG,GAAG,qBAAqB;IAsCvF,MAAM,CAAC,gCAAgC,CAAC,UAAU,EAAE,uBAAuB,GAAG,uBAAuB;IAQrG,MAAM,CAAC,kCAAkC,CAAC,YAAY,EAAE,yBAAyB,GAAG,yBAAyB;IAQ7G,MAAM,CAAC,YAAY,CAAC,mBAAmB,EAAE,uBAAuB,GAAG,yBAAyB,GAAG,MAAM;IAUrG,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,yBAAyB,GAAG,cAAc;CAczG"}
|
|
@@ -36,7 +36,7 @@ class CredentialMapper {
|
|
|
36
36
|
return credential;
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
static toWrappedVerifiablePresentation(presentation) {
|
|
39
|
+
static toWrappedVerifiablePresentation(presentation, opts) {
|
|
40
40
|
const original = presentation;
|
|
41
41
|
const isJwtEncoded = CredentialMapper.isJwtEncoded(original);
|
|
42
42
|
const isJwtDecoded = CredentialMapper.isJwtDecodedPresentation(original);
|
|
@@ -44,9 +44,9 @@ class CredentialMapper {
|
|
|
44
44
|
const format = isJwtDecoded || isJwtEncoded ? 'jwt_vp' : 'ldp_vp';
|
|
45
45
|
const decoded = CredentialMapper.decodeVerifiablePresentation(original);
|
|
46
46
|
const vp = isJwtEncoded || isJwtDecoded
|
|
47
|
-
? CredentialMapper.jwtDecodedPresentationToUniformPresentation(decoded, false)
|
|
47
|
+
? CredentialMapper.jwtDecodedPresentationToUniformPresentation(decoded, false, opts)
|
|
48
48
|
: decoded;
|
|
49
|
-
const vcs = CredentialMapper.toWrappedVerifiableCredentials(vp.verifiableCredential);
|
|
49
|
+
const vcs = CredentialMapper.toWrappedVerifiableCredentials(vp.verifiableCredential, opts);
|
|
50
50
|
// todo: We probably want to add proofs as well
|
|
51
51
|
return {
|
|
52
52
|
type,
|
|
@@ -57,17 +57,17 @@ class CredentialMapper {
|
|
|
57
57
|
vcs,
|
|
58
58
|
};
|
|
59
59
|
}
|
|
60
|
-
static toWrappedVerifiableCredentials(verifiableCredentials) {
|
|
61
|
-
return verifiableCredentials.map(CredentialMapper.toWrappedVerifiableCredential);
|
|
60
|
+
static toWrappedVerifiableCredentials(verifiableCredentials, opts) {
|
|
61
|
+
return verifiableCredentials.map((vc) => CredentialMapper.toWrappedVerifiableCredential(vc, opts));
|
|
62
62
|
}
|
|
63
|
-
static toWrappedVerifiableCredential(verifiableCredential) {
|
|
63
|
+
static toWrappedVerifiableCredential(verifiableCredential, opts) {
|
|
64
64
|
const original = verifiableCredential;
|
|
65
65
|
const decoded = CredentialMapper.decodeVerifiableCredential(verifiableCredential);
|
|
66
66
|
const isJwtEncoded = CredentialMapper.isJwtEncoded(original);
|
|
67
67
|
const isJwtDecoded = CredentialMapper.isJwtDecodedCredential(original);
|
|
68
68
|
const type = isJwtEncoded ? types_1.OriginalType.JWT_ENCODED : isJwtDecoded ? types_1.OriginalType.JWT_DECODED : types_1.OriginalType.JSONLD;
|
|
69
69
|
const credential = isJwtDecoded || isJwtDecoded
|
|
70
|
-
? CredentialMapper.jwtDecodedCredentialToUniformCredential(decoded)
|
|
70
|
+
? CredentialMapper.jwtDecodedCredentialToUniformCredential(decoded, opts)
|
|
71
71
|
: decoded;
|
|
72
72
|
const format = isJwtDecoded || isJwtDecoded ? 'jwt_vc' : 'ldp_vc';
|
|
73
73
|
//todo: We probably want to add proofs as well
|
|
@@ -91,13 +91,13 @@ class CredentialMapper {
|
|
|
91
91
|
static isJwtDecodedPresentation(original) {
|
|
92
92
|
return original['vp'] !== undefined && original['iss'] !== undefined;
|
|
93
93
|
}
|
|
94
|
-
static jwtEncodedPresentationToUniformPresentation(jwt, makeCredentialsUniform = true) {
|
|
95
|
-
return CredentialMapper.jwtDecodedPresentationToUniformPresentation((0, jwt_decode_1.default)(jwt), makeCredentialsUniform);
|
|
94
|
+
static jwtEncodedPresentationToUniformPresentation(jwt, makeCredentialsUniform = true, opts) {
|
|
95
|
+
return CredentialMapper.jwtDecodedPresentationToUniformPresentation((0, jwt_decode_1.default)(jwt), makeCredentialsUniform, opts);
|
|
96
96
|
}
|
|
97
|
-
static jwtDecodedPresentationToUniformPresentation(decoded, makeCredentialsUniform = true) {
|
|
97
|
+
static jwtDecodedPresentationToUniformPresentation(decoded, makeCredentialsUniform = true, opts) {
|
|
98
98
|
const presentation = Object.assign({}, decoded.vp);
|
|
99
99
|
if (makeCredentialsUniform) {
|
|
100
|
-
presentation.verifiableCredential = decoded.vp.verifiableCredential.map(CredentialMapper.toUniformCredential); // We cast it because we IPresentation needs a VC. The internal Credential doesn't have the required Proof anymore (that is intended)
|
|
100
|
+
presentation.verifiableCredential = decoded.vp.verifiableCredential.map((vc) => CredentialMapper.toUniformCredential(vc, opts)); // We cast it because we IPresentation needs a VC. The internal Credential doesn't have the required Proof anymore (that is intended)
|
|
101
101
|
}
|
|
102
102
|
// Since this is a presentation, we delete any proof just to be sure (should not occur on JWT, but better safe than sorry)
|
|
103
103
|
delete presentation.proof;
|
|
@@ -119,19 +119,19 @@ class CredentialMapper {
|
|
|
119
119
|
}
|
|
120
120
|
return presentation;
|
|
121
121
|
}
|
|
122
|
-
static toUniformCredential(verifiableCredential) {
|
|
122
|
+
static toUniformCredential(verifiableCredential, opts) {
|
|
123
123
|
const original = verifiableCredential;
|
|
124
124
|
const decoded = CredentialMapper.decodeVerifiableCredential(verifiableCredential);
|
|
125
125
|
const isJwtEncoded = CredentialMapper.isJwtEncoded(original);
|
|
126
126
|
const isJwtDecoded = CredentialMapper.isJwtDecodedCredential(original);
|
|
127
127
|
if (isJwtDecoded || isJwtEncoded) {
|
|
128
|
-
return CredentialMapper.jwtDecodedCredentialToUniformCredential(decoded);
|
|
128
|
+
return CredentialMapper.jwtDecodedCredentialToUniformCredential(decoded, opts);
|
|
129
129
|
}
|
|
130
130
|
else {
|
|
131
131
|
return decoded;
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
|
-
static toUniformPresentation(presentation) {
|
|
134
|
+
static toUniformPresentation(presentation, opts) {
|
|
135
135
|
var _a;
|
|
136
136
|
const original = presentation;
|
|
137
137
|
const decoded = CredentialMapper.decodeVerifiablePresentation(original);
|
|
@@ -140,23 +140,27 @@ class CredentialMapper {
|
|
|
140
140
|
const uniformPresentation = isJwtEncoded || isJwtDecoded
|
|
141
141
|
? CredentialMapper.jwtDecodedPresentationToUniformPresentation(decoded, false)
|
|
142
142
|
: decoded;
|
|
143
|
-
uniformPresentation.verifiableCredential = (_a = uniformPresentation.verifiableCredential) === null || _a === void 0 ? void 0 : _a.map(CredentialMapper.toUniformCredential); // We cast it because we IPresentation needs a VC. The internal Credential doesn't have the required Proof anymore (that is intended)
|
|
143
|
+
uniformPresentation.verifiableCredential = (_a = uniformPresentation.verifiableCredential) === null || _a === void 0 ? void 0 : _a.map((vc) => CredentialMapper.toUniformCredential(vc, opts)); // We cast it because we IPresentation needs a VC. The internal Credential doesn't have the required Proof anymore (that is intended)
|
|
144
144
|
return uniformPresentation;
|
|
145
145
|
}
|
|
146
|
-
static jwtEncodedCredentialToUniformCredential(jwt) {
|
|
147
|
-
return CredentialMapper.jwtDecodedCredentialToUniformCredential((0, jwt_decode_1.default)(jwt));
|
|
146
|
+
static jwtEncodedCredentialToUniformCredential(jwt, opts) {
|
|
147
|
+
return CredentialMapper.jwtDecodedCredentialToUniformCredential((0, jwt_decode_1.default)(jwt), opts);
|
|
148
148
|
}
|
|
149
|
-
static jwtDecodedCredentialToUniformCredential(decoded) {
|
|
149
|
+
static jwtDecodedCredentialToUniformCredential(decoded, opts) {
|
|
150
150
|
const credential = Object.assign({}, decoded.vc);
|
|
151
151
|
// Since this is a credential, we delete any proof just to be sure (should not occur on JWT, but better safe than sorry)
|
|
152
152
|
delete credential.proof;
|
|
153
|
+
const maxSkewInMS = (opts === null || opts === void 0 ? void 0 : opts.maxTimeSkewInMS) !== undefined ? opts.maxTimeSkewInMS : 999;
|
|
153
154
|
if (decoded.exp) {
|
|
154
155
|
const expDate = credential.expirationDate;
|
|
155
156
|
const jwtExp = parseInt(decoded.exp.toString());
|
|
156
157
|
// fix seconds to millisecs for the date
|
|
157
158
|
const expDateAsStr = jwtExp < 9999999999 ? new Date(jwtExp * 1000).toISOString().replace(/\.000Z/, 'Z') : new Date(jwtExp).toISOString();
|
|
158
159
|
if (expDate && expDate !== expDateAsStr) {
|
|
159
|
-
|
|
160
|
+
const diff = Math.abs(new Date(expDateAsStr).getTime() - new Date(expDate).getTime());
|
|
161
|
+
if (!maxSkewInMS || diff > maxSkewInMS) {
|
|
162
|
+
throw new Error(`Inconsistent expiration dates between JWT claim (${expDateAsStr}) and VC value (${expDate})`);
|
|
163
|
+
}
|
|
160
164
|
}
|
|
161
165
|
credential.expirationDate = expDateAsStr;
|
|
162
166
|
}
|
|
@@ -166,7 +170,10 @@ class CredentialMapper {
|
|
|
166
170
|
// fix seconds to millisecs for the date
|
|
167
171
|
const nbfDateAsStr = jwtNbf < 9999999999 ? new Date(jwtNbf * 1000).toISOString().replace(/\.000Z/, 'Z') : new Date(jwtNbf).toISOString();
|
|
168
172
|
if (issuanceDate && issuanceDate !== nbfDateAsStr) {
|
|
169
|
-
|
|
173
|
+
const diff = Math.abs(new Date(nbfDateAsStr).getTime() - new Date(issuanceDate).getTime());
|
|
174
|
+
if (!maxSkewInMS || diff > maxSkewInMS) {
|
|
175
|
+
throw new Error(`Inconsistent issuance dates between JWT claim (${nbfDateAsStr}) and VC value (${issuanceDate})`);
|
|
176
|
+
}
|
|
170
177
|
}
|
|
171
178
|
credential.issuanceDate = nbfDateAsStr;
|
|
172
179
|
}
|
|
@@ -184,7 +191,9 @@ class CredentialMapper {
|
|
|
184
191
|
}
|
|
185
192
|
}
|
|
186
193
|
}
|
|
187
|
-
|
|
194
|
+
else {
|
|
195
|
+
credential.issuer = decoded.iss;
|
|
196
|
+
}
|
|
188
197
|
}
|
|
189
198
|
if (decoded.sub) {
|
|
190
199
|
const subjects = Array.isArray(credential.credentialSubject) ? credential.credentialSubject : [credential.credentialSubject];
|
|
@@ -207,6 +216,66 @@ class CredentialMapper {
|
|
|
207
216
|
}
|
|
208
217
|
return credential;
|
|
209
218
|
}
|
|
219
|
+
static toExternalVerifiableCredential(verifiableCredential) {
|
|
220
|
+
let proof;
|
|
221
|
+
if (verifiableCredential.proof) {
|
|
222
|
+
if (!verifiableCredential.proof.type) {
|
|
223
|
+
throw new Error('Verifiable credential proof is missing a type');
|
|
224
|
+
}
|
|
225
|
+
if (!verifiableCredential.proof.created) {
|
|
226
|
+
throw new Error('Verifiable credential proof is missing a created date');
|
|
227
|
+
}
|
|
228
|
+
if (!verifiableCredential.proof.proofPurpose) {
|
|
229
|
+
throw new Error('Verifiable credential proof is missing a proof purpose');
|
|
230
|
+
}
|
|
231
|
+
if (!verifiableCredential.proof.verificationMethod) {
|
|
232
|
+
throw new Error('Verifiable credential proof is missing a verification method');
|
|
233
|
+
}
|
|
234
|
+
proof = Object.assign(Object.assign({}, verifiableCredential.proof), { type: verifiableCredential.proof.type, created: verifiableCredential.proof.created, proofPurpose: verifiableCredential.proof.proofPurpose, verificationMethod: verifiableCredential.proof.verificationMethod });
|
|
235
|
+
}
|
|
236
|
+
return Object.assign(Object.assign({}, verifiableCredential), { type: verifiableCredential.type
|
|
237
|
+
? typeof verifiableCredential.type === 'string'
|
|
238
|
+
? [verifiableCredential.type]
|
|
239
|
+
: verifiableCredential.type
|
|
240
|
+
: ['VerifiableCredential'], proof });
|
|
241
|
+
}
|
|
242
|
+
static storedCredentialToOriginalFormat(credential) {
|
|
243
|
+
const type = CredentialMapper.detectDocumentType(credential);
|
|
244
|
+
if (type == 0 /* DocumentFormat.JWT */) {
|
|
245
|
+
return CredentialMapper.toCompactJWT(credential);
|
|
246
|
+
}
|
|
247
|
+
return credential;
|
|
248
|
+
}
|
|
249
|
+
static storedPresentationToOriginalFormat(presentation) {
|
|
250
|
+
const type = CredentialMapper.detectDocumentType(presentation);
|
|
251
|
+
if (type == 0 /* DocumentFormat.JWT */) {
|
|
252
|
+
return CredentialMapper.toCompactJWT(presentation);
|
|
253
|
+
}
|
|
254
|
+
return presentation;
|
|
255
|
+
}
|
|
256
|
+
static toCompactJWT(persistedCredential) {
|
|
257
|
+
if (CredentialMapper.detectDocumentType(persistedCredential) !== 0 /* DocumentFormat.JWT */) {
|
|
258
|
+
throw Error('Cannot convert non JWT credential to JWT');
|
|
259
|
+
}
|
|
260
|
+
if (typeof persistedCredential === 'string') {
|
|
261
|
+
return persistedCredential;
|
|
262
|
+
}
|
|
263
|
+
return Array.isArray(persistedCredential.proof) ? persistedCredential.proof[0].jwt : persistedCredential.proof.jwt;
|
|
264
|
+
}
|
|
265
|
+
static detectDocumentType(document) {
|
|
266
|
+
if (typeof document === 'string') {
|
|
267
|
+
return 0 /* DocumentFormat.JWT */;
|
|
268
|
+
}
|
|
269
|
+
const proofs = document.proof;
|
|
270
|
+
const proof = Array.isArray(proofs) ? proofs[0] : proofs;
|
|
271
|
+
if (proof.jwt) {
|
|
272
|
+
return 0 /* DocumentFormat.JWT */;
|
|
273
|
+
}
|
|
274
|
+
else if (proof.type === 'EthereumEip712Signature2021') {
|
|
275
|
+
return 2 /* DocumentFormat.EIP712 */;
|
|
276
|
+
}
|
|
277
|
+
return 1 /* DocumentFormat.JSONLD */;
|
|
278
|
+
}
|
|
210
279
|
}
|
|
211
280
|
exports.CredentialMapper = CredentialMapper;
|
|
212
281
|
//# sourceMappingURL=credential-mapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential-mapper.js","sourceRoot":"","sources":["../../src/mapper/credential-mapper.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"credential-mapper.js","sourceRoot":"","sources":["../../src/mapper/credential-mapper.ts"],"names":[],"mappings":"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"}
|
package/dist/types/vc.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PresentationSubmission } from './pex';
|
|
2
2
|
import { IProofPurpose, IProofType } from './did';
|
|
3
|
-
export
|
|
4
|
-
export
|
|
3
|
+
export type AdditionalClaims = Record<string, any>;
|
|
4
|
+
export type IIssuerId = string;
|
|
5
5
|
export interface ICredential {
|
|
6
6
|
'@context': ICredentialContextType | ICredentialContextType[];
|
|
7
7
|
type: string[];
|
|
@@ -19,12 +19,12 @@ export interface ICredential {
|
|
|
19
19
|
export interface ICredentialSubject {
|
|
20
20
|
id?: string;
|
|
21
21
|
}
|
|
22
|
-
export
|
|
22
|
+
export type ICredentialContextType = (ICredentialContext & AdditionalClaims) | string;
|
|
23
23
|
export interface ICredentialContext {
|
|
24
24
|
name?: string;
|
|
25
25
|
did?: string;
|
|
26
26
|
}
|
|
27
|
-
export
|
|
27
|
+
export type ICredentialSchemaType = ICredentialSchema | string;
|
|
28
28
|
export interface ICredentialSchema {
|
|
29
29
|
id: string;
|
|
30
30
|
type?: string;
|
|
@@ -53,17 +53,17 @@ export interface IIssuer {
|
|
|
53
53
|
export interface IHasProof {
|
|
54
54
|
proof: IProof | IProof[];
|
|
55
55
|
}
|
|
56
|
-
export
|
|
56
|
+
export type IVerifiableCredential = ICredential & IHasProof;
|
|
57
57
|
/**
|
|
58
58
|
* Represents a Json Web Token in compact form.
|
|
59
59
|
*/
|
|
60
|
-
export
|
|
60
|
+
export type CompactJWT = string;
|
|
61
61
|
/**
|
|
62
62
|
* Represents a signed Verifiable Credential (includes proof), in either JSON or compact JWT format.
|
|
63
63
|
* See {@link https://www.w3.org/TR/vc-data-model/#credentials | VC data model}
|
|
64
64
|
* See {@link https://www.w3.org/TR/vc-data-model/#proof-formats | proof formats}
|
|
65
65
|
*/
|
|
66
|
-
export
|
|
66
|
+
export type W3CVerifiableCredential = IVerifiableCredential | CompactJWT;
|
|
67
67
|
export interface IPresentation {
|
|
68
68
|
id?: string;
|
|
69
69
|
'@context': ICredentialContextType | ICredentialContextType[];
|
|
@@ -73,13 +73,13 @@ export interface IPresentation {
|
|
|
73
73
|
holder?: string;
|
|
74
74
|
[x: string]: any;
|
|
75
75
|
}
|
|
76
|
-
export
|
|
76
|
+
export type IVerifiablePresentation = IPresentation & IHasProof;
|
|
77
77
|
/**
|
|
78
78
|
* Represents a signed Verifiable Presentation (includes proof), in either JSON or compact JWT format.
|
|
79
79
|
* See {@link https://www.w3.org/TR/vc-data-model/#presentations | VC data model}
|
|
80
80
|
* See {@link https://www.w3.org/TR/vc-data-model/#proof-formats | proof formats}
|
|
81
81
|
*/
|
|
82
|
-
export
|
|
82
|
+
export type W3CVerifiablePresentation = IVerifiablePresentation | CompactJWT;
|
|
83
83
|
export interface WrappedVerifiableCredential {
|
|
84
84
|
/**
|
|
85
85
|
* Original VC that we've received
|
|
@@ -96,7 +96,7 @@ export interface WrappedVerifiableCredential {
|
|
|
96
96
|
/**
|
|
97
97
|
* The claim format, typically used during exchange transport protocols
|
|
98
98
|
*/
|
|
99
|
-
format:
|
|
99
|
+
format: CredentialFormat;
|
|
100
100
|
/**
|
|
101
101
|
* Internal stable representation of a Credential without Proofs, created based on https://www.w3.org/TR/vc-data-model/#jwt-decoding
|
|
102
102
|
*/
|
|
@@ -118,7 +118,7 @@ export interface WrappedVerifiablePresentation {
|
|
|
118
118
|
/**
|
|
119
119
|
* The claim format, typically used during exchange transport protocols
|
|
120
120
|
*/
|
|
121
|
-
format:
|
|
121
|
+
format: PresentationFormat;
|
|
122
122
|
/**
|
|
123
123
|
* Internal stable representation of a Presentation without proofs, created based on https://www.w3.org/TR/vc-data-model/#jwt-decoding
|
|
124
124
|
*/
|
|
@@ -158,8 +158,15 @@ export interface JwtDecodedVerifiablePresentation {
|
|
|
158
158
|
jti: string;
|
|
159
159
|
[x: string]: any;
|
|
160
160
|
}
|
|
161
|
-
export
|
|
162
|
-
export
|
|
163
|
-
export
|
|
164
|
-
export
|
|
161
|
+
export type CredentialFormat = 'jwt' | 'ldp' | 'jwt_vc' | 'ldp_vc' | string;
|
|
162
|
+
export type PresentationFormat = 'jwt' | 'ldp' | 'jwt_vp' | 'ldp_vp' | string;
|
|
163
|
+
export type ClaimFormat = CredentialFormat | PresentationFormat;
|
|
164
|
+
export type OriginalVerifiableCredential = W3CVerifiableCredential | JwtDecodedVerifiableCredential;
|
|
165
|
+
export type OriginalVerifiablePresentation = W3CVerifiablePresentation | JwtDecodedVerifiablePresentation;
|
|
166
|
+
export type Original = OriginalVerifiablePresentation | OriginalVerifiableCredential;
|
|
167
|
+
export declare const enum DocumentFormat {
|
|
168
|
+
JWT = 0,
|
|
169
|
+
JSONLD = 1,
|
|
170
|
+
EIP712 = 2
|
|
171
|
+
}
|
|
165
172
|
//# sourceMappingURL=vc.d.ts.map
|
package/dist/types/vc.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vc.d.ts","sourceRoot":"","sources":["../../src/types/vc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEjD,
|
|
1
|
+
{"version":3,"file":"vc.d.ts","sourceRoot":"","sources":["../../src/types/vc.ts"],"names":[],"mappings":"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"}
|
package/dist/types/vc.js
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OriginalType = void 0;
|
|
3
|
+
exports.DocumentFormat = exports.OriginalType = void 0;
|
|
4
4
|
var OriginalType;
|
|
5
5
|
(function (OriginalType) {
|
|
6
6
|
OriginalType["JSONLD"] = "json-ld";
|
|
7
7
|
OriginalType["JWT_ENCODED"] = "jwt-encoded";
|
|
8
8
|
OriginalType["JWT_DECODED"] = "jwt-decoded";
|
|
9
9
|
})(OriginalType = exports.OriginalType || (exports.OriginalType = {}));
|
|
10
|
+
var DocumentFormat;
|
|
11
|
+
(function (DocumentFormat) {
|
|
12
|
+
DocumentFormat[DocumentFormat["JWT"] = 0] = "JWT";
|
|
13
|
+
DocumentFormat[DocumentFormat["JSONLD"] = 1] = "JSONLD";
|
|
14
|
+
DocumentFormat[DocumentFormat["EIP712"] = 2] = "EIP712";
|
|
15
|
+
})(DocumentFormat = exports.DocumentFormat || (exports.DocumentFormat = {}));
|
|
10
16
|
//# sourceMappingURL=vc.js.map
|
package/dist/types/vc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vc.js","sourceRoot":"","sources":["../../src/types/vc.ts"],"names":[],"mappings":";;;AAgKA,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,kCAAkB,CAAA;IAClB,2CAA2B,CAAA;IAC3B,2CAA2B,CAAA;AAC7B,CAAC,EAJW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAIvB"}
|
|
1
|
+
{"version":3,"file":"vc.js","sourceRoot":"","sources":["../../src/types/vc.ts"],"names":[],"mappings":";;;AAgKA,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,kCAAkB,CAAA;IAClB,2CAA2B,CAAA;IAC3B,2CAA2B,CAAA;AAC7B,CAAC,EAJW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAIvB;AAwCD,IAAkB,cAIjB;AAJD,WAAkB,cAAc;IAC9B,iDAAG,CAAA;IACH,uDAAM,CAAA;IACN,uDAAM,CAAA;AACR,CAAC,EAJiB,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAI/B"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sphereon/ssi-types",
|
|
3
3
|
"description": "SSI Common Types",
|
|
4
|
-
"version": "0.8.1-unstable.
|
|
4
|
+
"version": "0.8.1-unstable.263+0ccab93",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"scripts": {
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
},
|
|
13
13
|
"devDependencies": {
|
|
14
14
|
"@types/jest": "^27.0.2",
|
|
15
|
+
"@veramo/core": "4.2.0",
|
|
15
16
|
"jest": "^27.3.1",
|
|
16
17
|
"prettier": "^2.4.1",
|
|
17
18
|
"ts-jest": "^27.0.7",
|
|
@@ -37,5 +38,5 @@
|
|
|
37
38
|
"Verifiable Credentials",
|
|
38
39
|
"DIDs"
|
|
39
40
|
],
|
|
40
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "0ccab93d1692d0e82262f7778c22aeae8e8683e8"
|
|
41
42
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
DocumentFormat,
|
|
3
3
|
ICredential,
|
|
4
4
|
IPresentation,
|
|
5
|
+
IProof,
|
|
5
6
|
IVerifiableCredential,
|
|
6
7
|
IVerifiablePresentation,
|
|
7
8
|
JwtDecodedVerifiableCredential,
|
|
@@ -9,6 +10,9 @@ import {
|
|
|
9
10
|
OriginalType,
|
|
10
11
|
OriginalVerifiableCredential,
|
|
11
12
|
OriginalVerifiablePresentation,
|
|
13
|
+
PresentationFormat,
|
|
14
|
+
W3CVerifiableCredential,
|
|
15
|
+
W3CVerifiablePresentation,
|
|
12
16
|
WrappedVerifiableCredential,
|
|
13
17
|
WrappedVerifiablePresentation,
|
|
14
18
|
} from '../types'
|
|
@@ -40,19 +44,22 @@ export class CredentialMapper {
|
|
|
40
44
|
}
|
|
41
45
|
}
|
|
42
46
|
|
|
43
|
-
static toWrappedVerifiablePresentation(
|
|
47
|
+
static toWrappedVerifiablePresentation(
|
|
48
|
+
presentation: OriginalVerifiablePresentation,
|
|
49
|
+
opts?: { maxTimeSkewInMS?: number }
|
|
50
|
+
): WrappedVerifiablePresentation {
|
|
44
51
|
const original = presentation
|
|
45
52
|
const isJwtEncoded: boolean = CredentialMapper.isJwtEncoded(original)
|
|
46
53
|
const isJwtDecoded: boolean = CredentialMapper.isJwtDecodedPresentation(original)
|
|
47
54
|
|
|
48
55
|
const type = isJwtEncoded ? OriginalType.JWT_ENCODED : isJwtDecoded ? OriginalType.JWT_DECODED : OriginalType.JSONLD
|
|
49
|
-
const format:
|
|
56
|
+
const format: PresentationFormat = isJwtDecoded || isJwtEncoded ? 'jwt_vp' : 'ldp_vp'
|
|
50
57
|
const decoded = CredentialMapper.decodeVerifiablePresentation(original)
|
|
51
58
|
const vp: IPresentation =
|
|
52
59
|
isJwtEncoded || isJwtDecoded
|
|
53
|
-
? CredentialMapper.jwtDecodedPresentationToUniformPresentation(decoded as JwtDecodedVerifiablePresentation, false)
|
|
60
|
+
? CredentialMapper.jwtDecodedPresentationToUniformPresentation(decoded as JwtDecodedVerifiablePresentation, false, opts)
|
|
54
61
|
: (decoded as IPresentation)
|
|
55
|
-
const vcs: WrappedVerifiableCredential[] = CredentialMapper.toWrappedVerifiableCredentials(vp.verifiableCredential)
|
|
62
|
+
const vcs: WrappedVerifiableCredential[] = CredentialMapper.toWrappedVerifiableCredentials(vp.verifiableCredential, opts)
|
|
56
63
|
|
|
57
64
|
// todo: We probably want to add proofs as well
|
|
58
65
|
return {
|
|
@@ -68,11 +75,17 @@ export class CredentialMapper {
|
|
|
68
75
|
}
|
|
69
76
|
}
|
|
70
77
|
|
|
71
|
-
static toWrappedVerifiableCredentials(
|
|
72
|
-
|
|
78
|
+
static toWrappedVerifiableCredentials(
|
|
79
|
+
verifiableCredentials: OriginalVerifiableCredential[],
|
|
80
|
+
opts?: { maxTimeSkewInMS?: number }
|
|
81
|
+
): WrappedVerifiableCredential[] {
|
|
82
|
+
return verifiableCredentials.map((vc) => CredentialMapper.toWrappedVerifiableCredential(vc, opts))
|
|
73
83
|
}
|
|
74
84
|
|
|
75
|
-
static toWrappedVerifiableCredential(
|
|
85
|
+
static toWrappedVerifiableCredential(
|
|
86
|
+
verifiableCredential: OriginalVerifiableCredential,
|
|
87
|
+
opts?: { maxTimeSkewInMS?: number }
|
|
88
|
+
): WrappedVerifiableCredential {
|
|
76
89
|
const original = verifiableCredential
|
|
77
90
|
|
|
78
91
|
const decoded = CredentialMapper.decodeVerifiableCredential(verifiableCredential)
|
|
@@ -83,7 +96,7 @@ export class CredentialMapper {
|
|
|
83
96
|
|
|
84
97
|
const credential =
|
|
85
98
|
isJwtDecoded || isJwtDecoded
|
|
86
|
-
? CredentialMapper.jwtDecodedCredentialToUniformCredential(decoded as JwtDecodedVerifiableCredential)
|
|
99
|
+
? CredentialMapper.jwtDecodedCredentialToUniformCredential(decoded as JwtDecodedVerifiableCredential, opts)
|
|
87
100
|
: (decoded as ICredential)
|
|
88
101
|
const format = isJwtDecoded || isJwtDecoded ? 'jwt_vc' : 'ldp_vc'
|
|
89
102
|
//todo: We probably want to add proofs as well
|
|
@@ -112,19 +125,26 @@ export class CredentialMapper {
|
|
|
112
125
|
return (<JwtDecodedVerifiablePresentation>original)['vp'] !== undefined && (<JwtDecodedVerifiablePresentation>original)['iss'] !== undefined
|
|
113
126
|
}
|
|
114
127
|
|
|
115
|
-
static jwtEncodedPresentationToUniformPresentation(
|
|
116
|
-
|
|
128
|
+
static jwtEncodedPresentationToUniformPresentation(
|
|
129
|
+
jwt: string,
|
|
130
|
+
makeCredentialsUniform: boolean = true,
|
|
131
|
+
opts?: { maxTimeSkewInMS?: number }
|
|
132
|
+
): IPresentation {
|
|
133
|
+
return CredentialMapper.jwtDecodedPresentationToUniformPresentation(jwt_decode(jwt), makeCredentialsUniform, opts)
|
|
117
134
|
}
|
|
118
135
|
|
|
119
136
|
static jwtDecodedPresentationToUniformPresentation(
|
|
120
137
|
decoded: JwtDecodedVerifiablePresentation,
|
|
121
|
-
makeCredentialsUniform: boolean = true
|
|
138
|
+
makeCredentialsUniform: boolean = true,
|
|
139
|
+
opts?: { maxTimeSkewInMS?: number }
|
|
122
140
|
): IPresentation {
|
|
123
141
|
const presentation: IPresentation = {
|
|
124
142
|
...(decoded.vp as IPresentation),
|
|
125
143
|
}
|
|
126
144
|
if (makeCredentialsUniform) {
|
|
127
|
-
presentation.verifiableCredential = decoded.vp.verifiableCredential.map(
|
|
145
|
+
presentation.verifiableCredential = decoded.vp.verifiableCredential.map((vc) =>
|
|
146
|
+
CredentialMapper.toUniformCredential(vc, opts)
|
|
147
|
+
) as IVerifiableCredential[] // We cast it because we IPresentation needs a VC. The internal Credential doesn't have the required Proof anymore (that is intended)
|
|
128
148
|
}
|
|
129
149
|
// Since this is a presentation, we delete any proof just to be sure (should not occur on JWT, but better safe than sorry)
|
|
130
150
|
delete presentation.proof
|
|
@@ -148,7 +168,7 @@ export class CredentialMapper {
|
|
|
148
168
|
return presentation
|
|
149
169
|
}
|
|
150
170
|
|
|
151
|
-
static toUniformCredential(verifiableCredential: OriginalVerifiableCredential): ICredential {
|
|
171
|
+
static toUniformCredential(verifiableCredential: OriginalVerifiableCredential, opts?: { maxTimeSkewInMS?: number }): ICredential {
|
|
152
172
|
const original = verifiableCredential
|
|
153
173
|
const decoded = CredentialMapper.decodeVerifiableCredential(verifiableCredential)
|
|
154
174
|
|
|
@@ -156,13 +176,13 @@ export class CredentialMapper {
|
|
|
156
176
|
const isJwtDecoded: boolean = CredentialMapper.isJwtDecodedCredential(original)
|
|
157
177
|
|
|
158
178
|
if (isJwtDecoded || isJwtEncoded) {
|
|
159
|
-
return CredentialMapper.jwtDecodedCredentialToUniformCredential(decoded as JwtDecodedVerifiableCredential)
|
|
179
|
+
return CredentialMapper.jwtDecodedCredentialToUniformCredential(decoded as JwtDecodedVerifiableCredential, opts)
|
|
160
180
|
} else {
|
|
161
181
|
return decoded as ICredential
|
|
162
182
|
}
|
|
163
183
|
}
|
|
164
184
|
|
|
165
|
-
static toUniformPresentation(presentation: OriginalVerifiablePresentation): IPresentation {
|
|
185
|
+
static toUniformPresentation(presentation: OriginalVerifiablePresentation, opts?: { maxTimeSkewInMS?: number }): IPresentation {
|
|
166
186
|
const original = presentation
|
|
167
187
|
const decoded = CredentialMapper.decodeVerifiablePresentation(original)
|
|
168
188
|
const isJwtEncoded: boolean = CredentialMapper.isJwtEncoded(original)
|
|
@@ -171,30 +191,35 @@ export class CredentialMapper {
|
|
|
171
191
|
isJwtEncoded || isJwtDecoded
|
|
172
192
|
? CredentialMapper.jwtDecodedPresentationToUniformPresentation(decoded as JwtDecodedVerifiablePresentation, false)
|
|
173
193
|
: (decoded as IPresentation)
|
|
174
|
-
uniformPresentation.verifiableCredential = uniformPresentation.verifiableCredential?.map(
|
|
175
|
-
CredentialMapper.toUniformCredential
|
|
194
|
+
uniformPresentation.verifiableCredential = uniformPresentation.verifiableCredential?.map((vc) =>
|
|
195
|
+
CredentialMapper.toUniformCredential(vc, opts)
|
|
176
196
|
) as IVerifiableCredential[] // We cast it because we IPresentation needs a VC. The internal Credential doesn't have the required Proof anymore (that is intended)
|
|
177
197
|
return uniformPresentation
|
|
178
198
|
}
|
|
179
199
|
|
|
180
|
-
static jwtEncodedCredentialToUniformCredential(jwt: string): ICredential {
|
|
181
|
-
return CredentialMapper.jwtDecodedCredentialToUniformCredential(jwt_decode(jwt))
|
|
200
|
+
static jwtEncodedCredentialToUniformCredential(jwt: string, opts?: { maxTimeSkewInMS?: number }): ICredential {
|
|
201
|
+
return CredentialMapper.jwtDecodedCredentialToUniformCredential(jwt_decode(jwt), opts)
|
|
182
202
|
}
|
|
183
203
|
|
|
184
|
-
static jwtDecodedCredentialToUniformCredential(decoded: JwtDecodedVerifiableCredential): ICredential {
|
|
204
|
+
static jwtDecodedCredentialToUniformCredential(decoded: JwtDecodedVerifiableCredential, opts?: { maxTimeSkewInMS?: number }): ICredential {
|
|
185
205
|
const credential: ICredential = {
|
|
186
206
|
...(decoded.vc as ICredential),
|
|
187
207
|
}
|
|
188
208
|
// Since this is a credential, we delete any proof just to be sure (should not occur on JWT, but better safe than sorry)
|
|
189
209
|
delete credential.proof
|
|
190
210
|
|
|
211
|
+
const maxSkewInMS = opts?.maxTimeSkewInMS !== undefined ? opts.maxTimeSkewInMS : 999
|
|
212
|
+
|
|
191
213
|
if (decoded.exp) {
|
|
192
214
|
const expDate = credential.expirationDate
|
|
193
215
|
const jwtExp = parseInt(decoded.exp.toString())
|
|
194
216
|
// fix seconds to millisecs for the date
|
|
195
217
|
const expDateAsStr = jwtExp < 9999999999 ? new Date(jwtExp * 1000).toISOString().replace(/\.000Z/, 'Z') : new Date(jwtExp).toISOString()
|
|
196
218
|
if (expDate && expDate !== expDateAsStr) {
|
|
197
|
-
|
|
219
|
+
const diff = Math.abs(new Date(expDateAsStr).getTime() - new Date(expDate).getTime())
|
|
220
|
+
if (!maxSkewInMS || diff > maxSkewInMS) {
|
|
221
|
+
throw new Error(`Inconsistent expiration dates between JWT claim (${expDateAsStr}) and VC value (${expDate})`)
|
|
222
|
+
}
|
|
198
223
|
}
|
|
199
224
|
credential.expirationDate = expDateAsStr
|
|
200
225
|
}
|
|
@@ -205,7 +230,10 @@ export class CredentialMapper {
|
|
|
205
230
|
// fix seconds to millisecs for the date
|
|
206
231
|
const nbfDateAsStr = jwtNbf < 9999999999 ? new Date(jwtNbf * 1000).toISOString().replace(/\.000Z/, 'Z') : new Date(jwtNbf).toISOString()
|
|
207
232
|
if (issuanceDate && issuanceDate !== nbfDateAsStr) {
|
|
208
|
-
|
|
233
|
+
const diff = Math.abs(new Date(nbfDateAsStr).getTime() - new Date(issuanceDate).getTime())
|
|
234
|
+
if (!maxSkewInMS || diff > maxSkewInMS) {
|
|
235
|
+
throw new Error(`Inconsistent issuance dates between JWT claim (${nbfDateAsStr}) and VC value (${issuanceDate})`)
|
|
236
|
+
}
|
|
209
237
|
}
|
|
210
238
|
credential.issuanceDate = nbfDateAsStr
|
|
211
239
|
}
|
|
@@ -222,8 +250,9 @@ export class CredentialMapper {
|
|
|
222
250
|
throw new Error(`Inconsistent issuers between JWT claim (${decoded.iss}) and VC value (${issuer.id})`)
|
|
223
251
|
}
|
|
224
252
|
}
|
|
253
|
+
} else {
|
|
254
|
+
credential.issuer = decoded.iss
|
|
225
255
|
}
|
|
226
|
-
credential.issuer = decoded.iss
|
|
227
256
|
}
|
|
228
257
|
|
|
229
258
|
if (decoded.sub) {
|
|
@@ -245,6 +274,86 @@ export class CredentialMapper {
|
|
|
245
274
|
}
|
|
246
275
|
credential.id = decoded.jti
|
|
247
276
|
}
|
|
277
|
+
|
|
248
278
|
return credential
|
|
249
279
|
}
|
|
280
|
+
|
|
281
|
+
static toExternalVerifiableCredential(verifiableCredential: any): IVerifiableCredential {
|
|
282
|
+
let proof
|
|
283
|
+
if (verifiableCredential.proof) {
|
|
284
|
+
if (!verifiableCredential.proof.type) {
|
|
285
|
+
throw new Error('Verifiable credential proof is missing a type')
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
if (!verifiableCredential.proof.created) {
|
|
289
|
+
throw new Error('Verifiable credential proof is missing a created date')
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
if (!verifiableCredential.proof.proofPurpose) {
|
|
293
|
+
throw new Error('Verifiable credential proof is missing a proof purpose')
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
if (!verifiableCredential.proof.verificationMethod) {
|
|
297
|
+
throw new Error('Verifiable credential proof is missing a verification method')
|
|
298
|
+
}
|
|
299
|
+
proof = {
|
|
300
|
+
...verifiableCredential.proof,
|
|
301
|
+
type: verifiableCredential.proof.type,
|
|
302
|
+
created: verifiableCredential.proof.created,
|
|
303
|
+
proofPurpose: verifiableCredential.proof.proofPurpose,
|
|
304
|
+
verificationMethod: verifiableCredential.proof.verificationMethod,
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
return {
|
|
309
|
+
...verifiableCredential,
|
|
310
|
+
type: verifiableCredential.type
|
|
311
|
+
? typeof verifiableCredential.type === 'string'
|
|
312
|
+
? [verifiableCredential.type]
|
|
313
|
+
: verifiableCredential.type
|
|
314
|
+
: ['VerifiableCredential'],
|
|
315
|
+
proof,
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
static storedCredentialToOriginalFormat(credential: W3CVerifiableCredential): W3CVerifiableCredential {
|
|
320
|
+
const type: DocumentFormat = CredentialMapper.detectDocumentType(credential)
|
|
321
|
+
if (type == DocumentFormat.JWT) {
|
|
322
|
+
return CredentialMapper.toCompactJWT(credential)
|
|
323
|
+
}
|
|
324
|
+
return credential
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
static storedPresentationToOriginalFormat(presentation: W3CVerifiablePresentation): W3CVerifiablePresentation {
|
|
328
|
+
const type: DocumentFormat = CredentialMapper.detectDocumentType(presentation)
|
|
329
|
+
if (type == DocumentFormat.JWT) {
|
|
330
|
+
return CredentialMapper.toCompactJWT(presentation)
|
|
331
|
+
}
|
|
332
|
+
return presentation
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
static toCompactJWT(persistedCredential: W3CVerifiableCredential | W3CVerifiablePresentation): string {
|
|
336
|
+
if (CredentialMapper.detectDocumentType(persistedCredential) !== DocumentFormat.JWT) {
|
|
337
|
+
throw Error('Cannot convert non JWT credential to JWT')
|
|
338
|
+
}
|
|
339
|
+
if (typeof persistedCredential === 'string') {
|
|
340
|
+
return persistedCredential
|
|
341
|
+
}
|
|
342
|
+
return Array.isArray(persistedCredential.proof) ? persistedCredential.proof[0].jwt : persistedCredential.proof.jwt
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
static detectDocumentType(document: W3CVerifiableCredential | W3CVerifiablePresentation): DocumentFormat {
|
|
346
|
+
if (typeof document === 'string') {
|
|
347
|
+
return DocumentFormat.JWT
|
|
348
|
+
}
|
|
349
|
+
const proofs = (<IVerifiableCredential>document).proof
|
|
350
|
+
const proof: IProof = Array.isArray(proofs) ? proofs[0] : proofs
|
|
351
|
+
|
|
352
|
+
if (proof.jwt) {
|
|
353
|
+
return DocumentFormat.JWT
|
|
354
|
+
} else if (proof.type === 'EthereumEip712Signature2021') {
|
|
355
|
+
return DocumentFormat.EIP712
|
|
356
|
+
}
|
|
357
|
+
return DocumentFormat.JSONLD
|
|
358
|
+
}
|
|
250
359
|
}
|
package/src/types/vc.ts
CHANGED
|
@@ -124,7 +124,7 @@ export interface WrappedVerifiableCredential {
|
|
|
124
124
|
/**
|
|
125
125
|
* The claim format, typically used during exchange transport protocols
|
|
126
126
|
*/
|
|
127
|
-
format:
|
|
127
|
+
format: CredentialFormat
|
|
128
128
|
/**
|
|
129
129
|
* Internal stable representation of a Credential without Proofs, created based on https://www.w3.org/TR/vc-data-model/#jwt-decoding
|
|
130
130
|
*/
|
|
@@ -147,7 +147,7 @@ export interface WrappedVerifiablePresentation {
|
|
|
147
147
|
/**
|
|
148
148
|
* The claim format, typically used during exchange transport protocols
|
|
149
149
|
*/
|
|
150
|
-
format:
|
|
150
|
+
format: PresentationFormat
|
|
151
151
|
/**
|
|
152
152
|
* Internal stable representation of a Presentation without proofs, created based on https://www.w3.org/TR/vc-data-model/#jwt-decoding
|
|
153
153
|
*/
|
|
@@ -194,8 +194,16 @@ export interface JwtDecodedVerifiablePresentation {
|
|
|
194
194
|
[x: string]: any
|
|
195
195
|
}
|
|
196
196
|
|
|
197
|
-
export type
|
|
197
|
+
export type CredentialFormat = 'jwt' | 'ldp' | 'jwt_vc' | 'ldp_vc' | string
|
|
198
|
+
export type PresentationFormat = 'jwt' | 'ldp' | 'jwt_vp' | 'ldp_vp' | string
|
|
199
|
+
export type ClaimFormat = CredentialFormat | PresentationFormat
|
|
198
200
|
|
|
199
201
|
export type OriginalVerifiableCredential = W3CVerifiableCredential | JwtDecodedVerifiableCredential
|
|
200
202
|
export type OriginalVerifiablePresentation = W3CVerifiablePresentation | JwtDecodedVerifiablePresentation
|
|
201
203
|
export type Original = OriginalVerifiablePresentation | OriginalVerifiableCredential
|
|
204
|
+
|
|
205
|
+
export const enum DocumentFormat {
|
|
206
|
+
JWT,
|
|
207
|
+
JSONLD,
|
|
208
|
+
EIP712,
|
|
209
|
+
}
|