@sphereon/ssi-types 0.8.1-unstable.86 → 0.9.0
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 +13 -8
- package/dist/mapper/credential-mapper.d.ts.map +1 -1
- package/dist/mapper/credential-mapper.js +132 -24
- package/dist/mapper/credential-mapper.js.map +1 -1
- package/dist/types/did.d.ts +2 -1
- package/dist/types/did.d.ts.map +1 -1
- package/dist/types/did.js +1 -0
- package/dist/types/did.js.map +1 -1
- package/dist/types/vc.d.ts +30 -32
- 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 +174 -49
- package/src/types/did.ts +1 -0
- package/src/types/vc.ts +16 -21
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DocumentFormat, 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(
|
|
5
|
+
static toWrappedVerifiablePresentation(originalPresentation: OriginalVerifiablePresentation, opts?: {
|
|
6
6
|
maxTimeSkewInMS?: number;
|
|
7
7
|
}): WrappedVerifiablePresentation;
|
|
8
8
|
static toWrappedVerifiableCredentials(verifiableCredentials: OriginalVerifiableCredential[], opts?: {
|
|
@@ -12,7 +12,7 @@ export declare class CredentialMapper {
|
|
|
12
12
|
maxTimeSkewInMS?: number;
|
|
13
13
|
}): WrappedVerifiableCredential;
|
|
14
14
|
static isJwtEncoded(original: OriginalVerifiableCredential | OriginalVerifiablePresentation): boolean;
|
|
15
|
-
private static
|
|
15
|
+
private static isJsonLdAsString;
|
|
16
16
|
static isJwtDecodedCredential(original: OriginalVerifiableCredential): boolean;
|
|
17
17
|
static isJwtDecodedPresentation(original: OriginalVerifiablePresentation): boolean;
|
|
18
18
|
static jwtEncodedPresentationToUniformPresentation(jwt: string, makeCredentialsUniform?: boolean, opts?: {
|
|
@@ -20,18 +20,23 @@ export declare class CredentialMapper {
|
|
|
20
20
|
}): IPresentation;
|
|
21
21
|
static jwtDecodedPresentationToUniformPresentation(decoded: JwtDecodedVerifiablePresentation, makeCredentialsUniform?: boolean, opts?: {
|
|
22
22
|
maxTimeSkewInMS?: number;
|
|
23
|
-
}):
|
|
23
|
+
}): IVerifiablePresentation;
|
|
24
24
|
static toUniformCredential(verifiableCredential: OriginalVerifiableCredential, opts?: {
|
|
25
25
|
maxTimeSkewInMS?: number;
|
|
26
|
-
}):
|
|
26
|
+
}): IVerifiableCredential;
|
|
27
27
|
static toUniformPresentation(presentation: OriginalVerifiablePresentation, opts?: {
|
|
28
28
|
maxTimeSkewInMS?: number;
|
|
29
|
-
}):
|
|
29
|
+
}): IVerifiablePresentation;
|
|
30
30
|
static jwtEncodedCredentialToUniformCredential(jwt: string, opts?: {
|
|
31
31
|
maxTimeSkewInMS?: number;
|
|
32
|
-
}):
|
|
32
|
+
}): IVerifiableCredential;
|
|
33
33
|
static jwtDecodedCredentialToUniformCredential(decoded: JwtDecodedVerifiableCredential, opts?: {
|
|
34
34
|
maxTimeSkewInMS?: number;
|
|
35
|
-
}):
|
|
35
|
+
}): IVerifiableCredential;
|
|
36
|
+
static toExternalVerifiableCredential(verifiableCredential: any): IVerifiableCredential;
|
|
37
|
+
static storedCredentialToOriginalFormat(credential: W3CVerifiableCredential): W3CVerifiableCredential;
|
|
38
|
+
static storedPresentationToOriginalFormat(presentation: W3CVerifiablePresentation): W3CVerifiablePresentation;
|
|
39
|
+
static toCompactJWT(jwtDocument: W3CVerifiableCredential | JwtDecodedVerifiableCredential | W3CVerifiablePresentation | JwtDecodedVerifiablePresentation): string;
|
|
40
|
+
static detectDocumentType(document: W3CVerifiableCredential | W3CVerifiablePresentation | JwtDecodedVerifiableCredential | JwtDecodedVerifiablePresentation): DocumentFormat;
|
|
36
41
|
}
|
|
37
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,EACL,
|
|
1
|
+
{"version":3,"file":"credential-mapper.d.ts","sourceRoot":"","sources":["../../src/mapper/credential-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,aAAa,EAIb,qBAAqB,EACrB,uBAAuB,EACvB,8BAA8B,EAC9B,gCAAgC,EAEhC,4BAA4B,EAC5B,8BAA8B,EAG9B,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;IAsB7I,MAAM,CAAC,0BAA0B,CAAC,UAAU,EAAE,4BAA4B,GAAG,8BAA8B,GAAG,qBAAqB;IAqBnI,MAAM,CAAC,+BAA+B,CACpC,oBAAoB,EAAE,8BAA8B,EACpD,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GAClC,6BAA6B;IAiChC,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;WAuBhB,YAAY,CAAC,QAAQ,EAAE,4BAA4B,GAAG,8BAA8B;IAIlG,OAAO,CAAC,MAAM,CAAC,gBAAgB;WAIjB,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,uBAAuB;IA+B1B,MAAM,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,4BAA4B,EAAE,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,qBAAqB;IAc1I,MAAM,CAAC,qBAAqB,CAAC,YAAY,EAAE,8BAA8B,EAAE,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,uBAAuB;IAexI,MAAM,CAAC,uCAAuC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,qBAAqB;IAIvH,MAAM,CAAC,uCAAuC,CAAC,OAAO,EAAE,8BAA8B,EAAE,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,qBAAqB;IA2EnJ,MAAM,CAAC,8BAA8B,CAAC,oBAAoB,EAAE,GAAG,GAAG,qBAAqB;IAsCvF,MAAM,CAAC,gCAAgC,CAAC,UAAU,EAAE,uBAAuB,GAAG,uBAAuB;IAYrG,MAAM,CAAC,kCAAkC,CAAC,YAAY,EAAE,yBAAyB,GAAG,yBAAyB;IAY7G,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,uBAAuB,GAAG,8BAA8B,GAAG,yBAAyB,GAAG,gCAAgC,GAAG,MAAM;IAqBjK,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,yBAAyB,GAAG,8BAA8B,GAAG,gCAAgC,GAAG,cAAc;CAc7K"}
|
|
@@ -9,13 +9,23 @@ const jwt_decode_1 = __importDefault(require("jwt-decode"));
|
|
|
9
9
|
const utils_1 = require("../utils");
|
|
10
10
|
class CredentialMapper {
|
|
11
11
|
static decodeVerifiablePresentation(presentation) {
|
|
12
|
+
var _a;
|
|
12
13
|
if (CredentialMapper.isJwtEncoded(presentation)) {
|
|
13
|
-
|
|
14
|
+
const payload = (0, jwt_decode_1.default)(presentation);
|
|
15
|
+
const header = (0, jwt_decode_1.default)(presentation, { header: true });
|
|
16
|
+
payload.vp.proof = {
|
|
17
|
+
type: types_1.IProofType.JwtProof2020,
|
|
18
|
+
created: payload.nbf,
|
|
19
|
+
proofPurpose: types_1.IProofPurpose.authentication,
|
|
20
|
+
verificationMethod: (_a = header['kid']) !== null && _a !== void 0 ? _a : payload.iss,
|
|
21
|
+
jwt: presentation,
|
|
22
|
+
};
|
|
23
|
+
return payload;
|
|
14
24
|
}
|
|
15
25
|
else if (CredentialMapper.isJwtDecodedPresentation(presentation)) {
|
|
16
26
|
return presentation;
|
|
17
27
|
}
|
|
18
|
-
else if (CredentialMapper.
|
|
28
|
+
else if (CredentialMapper.isJsonLdAsString(presentation)) {
|
|
19
29
|
return JSON.parse(presentation);
|
|
20
30
|
}
|
|
21
31
|
else {
|
|
@@ -23,37 +33,54 @@ class CredentialMapper {
|
|
|
23
33
|
}
|
|
24
34
|
}
|
|
25
35
|
static decodeVerifiableCredential(credential) {
|
|
36
|
+
var _a;
|
|
26
37
|
if (CredentialMapper.isJwtEncoded(credential)) {
|
|
27
|
-
|
|
38
|
+
const payload = (0, jwt_decode_1.default)(credential);
|
|
39
|
+
const header = (0, jwt_decode_1.default)(credential, { header: true });
|
|
40
|
+
payload.vc.proof = {
|
|
41
|
+
type: types_1.IProofType.JwtProof2020,
|
|
42
|
+
created: payload.nbf,
|
|
43
|
+
proofPurpose: types_1.IProofPurpose.authentication,
|
|
44
|
+
verificationMethod: (_a = header['kid']) !== null && _a !== void 0 ? _a : payload.iss,
|
|
45
|
+
jwt: credential,
|
|
46
|
+
};
|
|
47
|
+
return payload;
|
|
28
48
|
}
|
|
29
49
|
else if (CredentialMapper.isJwtDecodedCredential(credential)) {
|
|
30
50
|
return credential;
|
|
31
51
|
}
|
|
32
|
-
else if (CredentialMapper.
|
|
52
|
+
else if (CredentialMapper.isJsonLdAsString(credential)) {
|
|
33
53
|
return JSON.parse(credential);
|
|
34
54
|
}
|
|
35
55
|
else {
|
|
36
56
|
return credential;
|
|
37
57
|
}
|
|
38
58
|
}
|
|
39
|
-
static toWrappedVerifiablePresentation(
|
|
40
|
-
const original =
|
|
59
|
+
static toWrappedVerifiablePresentation(originalPresentation, opts) {
|
|
60
|
+
const original = originalPresentation;
|
|
41
61
|
const isJwtEncoded = CredentialMapper.isJwtEncoded(original);
|
|
42
62
|
const isJwtDecoded = CredentialMapper.isJwtDecodedPresentation(original);
|
|
43
63
|
const type = isJwtEncoded ? types_1.OriginalType.JWT_ENCODED : isJwtDecoded ? types_1.OriginalType.JWT_DECODED : types_1.OriginalType.JSONLD;
|
|
44
64
|
const format = isJwtDecoded || isJwtEncoded ? 'jwt_vp' : 'ldp_vp';
|
|
45
65
|
const decoded = CredentialMapper.decodeVerifiablePresentation(original);
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
66
|
+
let vp;
|
|
67
|
+
if (isJwtEncoded || isJwtDecoded) {
|
|
68
|
+
vp = CredentialMapper.jwtDecodedPresentationToUniformPresentation(decoded, false, opts);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
vp = decoded;
|
|
72
|
+
}
|
|
73
|
+
if (!vp || !('verifiableCredential' in vp) || !vp.verifiableCredential || vp.verifiableCredential.length === 0) {
|
|
74
|
+
throw Error(`VP needs to have at least one verifiable credential at this point`);
|
|
75
|
+
}
|
|
76
|
+
const vcs = CredentialMapper.toWrappedVerifiableCredentials(vp.verifiableCredential /*.map(value => value.original)*/, opts);
|
|
77
|
+
const presentation = Object.assign(Object.assign({}, vp), { verifiableCredential: vcs });
|
|
51
78
|
return {
|
|
52
79
|
type,
|
|
53
80
|
format,
|
|
54
81
|
original,
|
|
55
82
|
decoded,
|
|
56
|
-
presentation
|
|
83
|
+
presentation,
|
|
57
84
|
vcs,
|
|
58
85
|
};
|
|
59
86
|
}
|
|
@@ -66,11 +93,10 @@ class CredentialMapper {
|
|
|
66
93
|
const isJwtEncoded = CredentialMapper.isJwtEncoded(original);
|
|
67
94
|
const isJwtDecoded = CredentialMapper.isJwtDecodedCredential(original);
|
|
68
95
|
const type = isJwtEncoded ? types_1.OriginalType.JWT_ENCODED : isJwtDecoded ? types_1.OriginalType.JWT_DECODED : types_1.OriginalType.JSONLD;
|
|
69
|
-
const credential =
|
|
96
|
+
const credential = isJwtEncoded || isJwtDecoded
|
|
70
97
|
? CredentialMapper.jwtDecodedCredentialToUniformCredential(decoded, opts)
|
|
71
98
|
: decoded;
|
|
72
|
-
const format =
|
|
73
|
-
//todo: We probably want to add proofs as well
|
|
99
|
+
const format = isJwtEncoded || isJwtDecoded ? 'jwt_vc' : 'ldp_vc';
|
|
74
100
|
return {
|
|
75
101
|
original,
|
|
76
102
|
decoded,
|
|
@@ -82,7 +108,7 @@ class CredentialMapper {
|
|
|
82
108
|
static isJwtEncoded(original) {
|
|
83
109
|
return utils_1.ObjectUtils.isString(original) && original.startsWith('ey');
|
|
84
110
|
}
|
|
85
|
-
static
|
|
111
|
+
static isJsonLdAsString(original) {
|
|
86
112
|
return utils_1.ObjectUtils.isString(original) && original.includes('@context');
|
|
87
113
|
}
|
|
88
114
|
static isJwtDecodedCredential(original) {
|
|
@@ -95,12 +121,13 @@ class CredentialMapper {
|
|
|
95
121
|
return CredentialMapper.jwtDecodedPresentationToUniformPresentation((0, jwt_decode_1.default)(jwt), makeCredentialsUniform, opts);
|
|
96
122
|
}
|
|
97
123
|
static jwtDecodedPresentationToUniformPresentation(decoded, makeCredentialsUniform = true, opts) {
|
|
98
|
-
const presentation = Object.assign({}, decoded.vp);
|
|
124
|
+
const presentation = Object.assign({}, (decoded.vp));
|
|
99
125
|
if (makeCredentialsUniform) {
|
|
100
|
-
|
|
126
|
+
if (!decoded.vp.verifiableCredential) {
|
|
127
|
+
throw Error('Verifiable Presentation should have a verifiable credential at this point');
|
|
128
|
+
}
|
|
129
|
+
presentation.verifiableCredential = decoded.vp.verifiableCredential.map((vc) => CredentialMapper.toUniformCredential(vc, opts));
|
|
101
130
|
}
|
|
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
|
-
delete presentation.proof;
|
|
104
131
|
if (decoded.iss) {
|
|
105
132
|
const holder = presentation.holder;
|
|
106
133
|
if (holder) {
|
|
@@ -147,14 +174,12 @@ class CredentialMapper {
|
|
|
147
174
|
return CredentialMapper.jwtDecodedCredentialToUniformCredential((0, jwt_decode_1.default)(jwt), opts);
|
|
148
175
|
}
|
|
149
176
|
static jwtDecodedCredentialToUniformCredential(decoded, opts) {
|
|
150
|
-
const credential = Object.assign({}, decoded.vc);
|
|
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
|
-
delete credential.proof;
|
|
177
|
+
const credential = Object.assign({}, (decoded.vc));
|
|
153
178
|
const maxSkewInMS = (opts === null || opts === void 0 ? void 0 : opts.maxTimeSkewInMS) !== undefined ? opts.maxTimeSkewInMS : 999;
|
|
154
179
|
if (decoded.exp) {
|
|
155
180
|
const expDate = credential.expirationDate;
|
|
156
181
|
const jwtExp = parseInt(decoded.exp.toString());
|
|
157
|
-
// fix seconds to
|
|
182
|
+
// fix seconds to millisecond for the date
|
|
158
183
|
const expDateAsStr = jwtExp < 9999999999 ? new Date(jwtExp * 1000).toISOString().replace(/\.000Z/, 'Z') : new Date(jwtExp).toISOString();
|
|
159
184
|
if (expDate && expDate !== expDateAsStr) {
|
|
160
185
|
const diff = Math.abs(new Date(expDateAsStr).getTime() - new Date(expDate).getTime());
|
|
@@ -216,6 +241,89 @@ class CredentialMapper {
|
|
|
216
241
|
}
|
|
217
242
|
return credential;
|
|
218
243
|
}
|
|
244
|
+
static toExternalVerifiableCredential(verifiableCredential) {
|
|
245
|
+
let proof;
|
|
246
|
+
if (verifiableCredential.proof) {
|
|
247
|
+
if (!verifiableCredential.proof.type) {
|
|
248
|
+
throw new Error('Verifiable credential proof is missing a type');
|
|
249
|
+
}
|
|
250
|
+
if (!verifiableCredential.proof.created) {
|
|
251
|
+
throw new Error('Verifiable credential proof is missing a created date');
|
|
252
|
+
}
|
|
253
|
+
if (!verifiableCredential.proof.proofPurpose) {
|
|
254
|
+
throw new Error('Verifiable credential proof is missing a proof purpose');
|
|
255
|
+
}
|
|
256
|
+
if (!verifiableCredential.proof.verificationMethod) {
|
|
257
|
+
throw new Error('Verifiable credential proof is missing a verification method');
|
|
258
|
+
}
|
|
259
|
+
proof = Object.assign(Object.assign({}, verifiableCredential.proof), { type: verifiableCredential.proof.type, created: verifiableCredential.proof.created, proofPurpose: verifiableCredential.proof.proofPurpose, verificationMethod: verifiableCredential.proof.verificationMethod });
|
|
260
|
+
}
|
|
261
|
+
return Object.assign(Object.assign({}, verifiableCredential), { type: verifiableCredential.type
|
|
262
|
+
? typeof verifiableCredential.type === 'string'
|
|
263
|
+
? [verifiableCredential.type]
|
|
264
|
+
: verifiableCredential.type
|
|
265
|
+
: ['VerifiableCredential'], proof });
|
|
266
|
+
}
|
|
267
|
+
static storedCredentialToOriginalFormat(credential) {
|
|
268
|
+
const type = CredentialMapper.detectDocumentType(credential);
|
|
269
|
+
if (typeof credential === 'string') {
|
|
270
|
+
if (type === 0 /* DocumentFormat.JWT */) {
|
|
271
|
+
return CredentialMapper.toCompactJWT(credential);
|
|
272
|
+
}
|
|
273
|
+
else if (type === 1 /* DocumentFormat.JSONLD */) {
|
|
274
|
+
return JSON.parse(credential);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
return credential;
|
|
278
|
+
}
|
|
279
|
+
static storedPresentationToOriginalFormat(presentation) {
|
|
280
|
+
const type = CredentialMapper.detectDocumentType(presentation);
|
|
281
|
+
if (typeof presentation === 'string') {
|
|
282
|
+
if (type === 0 /* DocumentFormat.JWT */) {
|
|
283
|
+
return CredentialMapper.toCompactJWT(presentation);
|
|
284
|
+
}
|
|
285
|
+
else if (type === 1 /* DocumentFormat.JSONLD */) {
|
|
286
|
+
return JSON.parse(presentation);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
return presentation;
|
|
290
|
+
}
|
|
291
|
+
static toCompactJWT(jwtDocument) {
|
|
292
|
+
if (CredentialMapper.detectDocumentType(jwtDocument) !== 0 /* DocumentFormat.JWT */) {
|
|
293
|
+
throw Error('Cannot convert non JWT credential to JWT');
|
|
294
|
+
}
|
|
295
|
+
if (typeof jwtDocument === 'string') {
|
|
296
|
+
return jwtDocument;
|
|
297
|
+
}
|
|
298
|
+
let proof;
|
|
299
|
+
if ('vp' in jwtDocument) {
|
|
300
|
+
proof = jwtDocument.vp.proof;
|
|
301
|
+
}
|
|
302
|
+
else if ('vc' in jwtDocument) {
|
|
303
|
+
proof = jwtDocument.vc.proof;
|
|
304
|
+
}
|
|
305
|
+
else {
|
|
306
|
+
proof = Array.isArray(jwtDocument.proof) ? jwtDocument.proof[0].jwt : jwtDocument.proof.jwt;
|
|
307
|
+
}
|
|
308
|
+
if (!proof) {
|
|
309
|
+
throw Error(`Could not get JWT from supplied document`);
|
|
310
|
+
}
|
|
311
|
+
return proof;
|
|
312
|
+
}
|
|
313
|
+
static detectDocumentType(document) {
|
|
314
|
+
if (typeof document === 'string') {
|
|
315
|
+
return this.isJsonLdAsString(document) ? 1 /* DocumentFormat.JSONLD */ : 0 /* DocumentFormat.JWT */;
|
|
316
|
+
}
|
|
317
|
+
const proofs = 'vc' in document ? document.vc.proof : 'vp' in document ? document.vp.proof : document.proof;
|
|
318
|
+
const proof = Array.isArray(proofs) ? proofs[0] : proofs;
|
|
319
|
+
if (proof.jwt) {
|
|
320
|
+
return 0 /* DocumentFormat.JWT */;
|
|
321
|
+
}
|
|
322
|
+
else if (proof.type === 'EthereumEip712Signature2021') {
|
|
323
|
+
return 2 /* DocumentFormat.EIP712 */;
|
|
324
|
+
}
|
|
325
|
+
return 1 /* DocumentFormat.JSONLD */;
|
|
326
|
+
}
|
|
219
327
|
}
|
|
220
328
|
exports.CredentialMapper = CredentialMapper;
|
|
221
329
|
//# 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/did.d.ts
CHANGED
|
@@ -17,7 +17,8 @@ export declare enum IProofType {
|
|
|
17
17
|
GpgSignature2020 = "GpgSignature2020",
|
|
18
18
|
JcsEd25519Signature2020 = "JcsEd25519Signature2020",
|
|
19
19
|
BbsBlsSignatureProof2020 = "BbsBlsSignatureProof2020",
|
|
20
|
-
BbsBlsBoundSignatureProof2020 = "BbsBlsBoundSignatureProof2020"
|
|
20
|
+
BbsBlsBoundSignatureProof2020 = "BbsBlsBoundSignatureProof2020",
|
|
21
|
+
JwtProof2020 = "JwtProof2020"
|
|
21
22
|
}
|
|
22
23
|
export interface IParsedDID {
|
|
23
24
|
did: string;
|
package/dist/types/did.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"did.d.ts","sourceRoot":"","sources":["../../src/types/did.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IACvB,kBAAkB,uBAAuB;IACzC,eAAe,oBAAoB;IACnC,cAAc,mBAAmB;IACjC,YAAY,iBAAiB;IAC7B,iBAAiB,qBAAqB;IACtC,oBAAoB,yBAAyB;IAC7C,oBAAoB,yBAAyB;CAC9C;AAED,oBAAY,UAAU;IACpB,oBAAoB,yBAAyB;IAC7C,oBAAoB,yBAAyB;IAC7C,2BAA2B,gCAAgC;IAC3D,mCAAmC,wCAAwC;IAC3E,oBAAoB,yBAAyB;IAC7C,gBAAgB,qBAAqB;IACrC,gBAAgB,qBAAqB;IACrC,uBAAuB,4BAA4B;IACnD,wBAAwB,6BAA6B;IACrD,6BAA6B,kCAAkC;
|
|
1
|
+
{"version":3,"file":"did.d.ts","sourceRoot":"","sources":["../../src/types/did.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IACvB,kBAAkB,uBAAuB;IACzC,eAAe,oBAAoB;IACnC,cAAc,mBAAmB;IACjC,YAAY,iBAAiB;IAC7B,iBAAiB,qBAAqB;IACtC,oBAAoB,yBAAyB;IAC7C,oBAAoB,yBAAyB;CAC9C;AAED,oBAAY,UAAU;IACpB,oBAAoB,yBAAyB;IAC7C,oBAAoB,yBAAyB;IAC7C,2BAA2B,gCAAgC;IAC3D,mCAAmC,wCAAwC;IAC3E,oBAAoB,yBAAyB;IAC7C,gBAAgB,qBAAqB;IACrC,gBAAgB,qBAAqB;IACrC,uBAAuB,4BAA4B;IACnD,wBAAwB,6BAA6B;IACrD,6BAA6B,kCAAkC;IAC/D,YAAY,iBAAiB;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE;QACP,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KACxB,CAAA;CACF;AAED,eAAO,MAAM,QAAQ,QAAS,MAAM,KAAG,UAOtC,CAAA"}
|
package/dist/types/did.js
CHANGED
|
@@ -23,6 +23,7 @@ var IProofType;
|
|
|
23
23
|
IProofType["JcsEd25519Signature2020"] = "JcsEd25519Signature2020";
|
|
24
24
|
IProofType["BbsBlsSignatureProof2020"] = "BbsBlsSignatureProof2020";
|
|
25
25
|
IProofType["BbsBlsBoundSignatureProof2020"] = "BbsBlsBoundSignatureProof2020";
|
|
26
|
+
IProofType["JwtProof2020"] = "JwtProof2020";
|
|
26
27
|
})(IProofType = exports.IProofType || (exports.IProofType = {}));
|
|
27
28
|
const parseDid = (did) => {
|
|
28
29
|
const parsedDid = parse(did);
|
package/dist/types/did.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"did.js","sourceRoot":"","sources":["../../src/types/did.ts"],"names":[],"mappings":";;;AAAA,IAAY,aAQX;AARD,WAAY,aAAa;IACvB,0DAAyC,CAAA;IACzC,oDAAmC,CAAA;IACnC,kDAAiC,CAAA;IACjC,8CAA6B,CAAA;IAC7B,uDAAsC,CAAA;IACtC,8DAA6C,CAAA;IAC7C,8DAA6C,CAAA;AAC/C,CAAC,EARW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAQxB;AAED,IAAY,
|
|
1
|
+
{"version":3,"file":"did.js","sourceRoot":"","sources":["../../src/types/did.ts"],"names":[],"mappings":"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"}
|
package/dist/types/vc.d.ts
CHANGED
|
@@ -1,37 +1,30 @@
|
|
|
1
1
|
import { PresentationSubmission } from './pex';
|
|
2
2
|
import { IProofPurpose, IProofType } from './did';
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export interface
|
|
3
|
+
export type AdditionalClaims = Record<string, any>;
|
|
4
|
+
export type IIssuerId = string;
|
|
5
|
+
export interface ICredential {
|
|
6
6
|
'@context': ICredentialContextType | ICredentialContextType[];
|
|
7
|
+
type: string[];
|
|
7
8
|
credentialSchema?: undefined | ICredentialSchemaType | ICredentialSchemaType[];
|
|
8
9
|
issuer: IIssuerId | IIssuer;
|
|
9
10
|
issuanceDate: string;
|
|
10
11
|
credentialSubject: (ICredentialSubject & AdditionalClaims) | (ICredentialSubject & AdditionalClaims)[];
|
|
11
12
|
expirationDate?: string;
|
|
12
13
|
id?: string;
|
|
13
|
-
'@id'?: string;
|
|
14
14
|
credentialStatus?: ICredentialStatus;
|
|
15
15
|
description?: string;
|
|
16
16
|
name?: string;
|
|
17
17
|
[x: string]: any;
|
|
18
18
|
}
|
|
19
|
-
export interface VerifiableDataTypeProperty {
|
|
20
|
-
type: string[];
|
|
21
|
-
}
|
|
22
|
-
export interface VerifiableDataAtTypeProperty {
|
|
23
|
-
'@type': string[];
|
|
24
|
-
}
|
|
25
|
-
export declare type ICredential = ICredentialWithoutType & (VerifiableDataAtTypeProperty | VerifiableDataTypeProperty);
|
|
26
19
|
export interface ICredentialSubject {
|
|
27
20
|
id?: string;
|
|
28
21
|
}
|
|
29
|
-
export
|
|
22
|
+
export type ICredentialContextType = (ICredentialContext & AdditionalClaims) | string;
|
|
30
23
|
export interface ICredentialContext {
|
|
31
24
|
name?: string;
|
|
32
25
|
did?: string;
|
|
33
26
|
}
|
|
34
|
-
export
|
|
27
|
+
export type ICredentialSchemaType = ICredentialSchema | string;
|
|
35
28
|
export interface ICredentialSchema {
|
|
36
29
|
id: string;
|
|
37
30
|
type?: string;
|
|
@@ -45,6 +38,7 @@ export interface IProof {
|
|
|
45
38
|
domain?: string;
|
|
46
39
|
proofValue?: string;
|
|
47
40
|
jws?: string;
|
|
41
|
+
jwt?: string;
|
|
48
42
|
nonce?: string;
|
|
49
43
|
requiredRevealStatements?: string[];
|
|
50
44
|
[x: string]: any;
|
|
@@ -60,34 +54,33 @@ export interface IIssuer {
|
|
|
60
54
|
export interface IHasProof {
|
|
61
55
|
proof: IProof | IProof[];
|
|
62
56
|
}
|
|
63
|
-
export
|
|
57
|
+
export type IVerifiableCredential = ICredential & IHasProof;
|
|
64
58
|
/**
|
|
65
59
|
* Represents a Json Web Token in compact form.
|
|
66
60
|
*/
|
|
67
|
-
export
|
|
61
|
+
export type CompactJWT = string;
|
|
68
62
|
/**
|
|
69
63
|
* Represents a signed Verifiable Credential (includes proof), in either JSON or compact JWT format.
|
|
70
64
|
* See {@link https://www.w3.org/TR/vc-data-model/#credentials | VC data model}
|
|
71
65
|
* See {@link https://www.w3.org/TR/vc-data-model/#proof-formats | proof formats}
|
|
72
66
|
*/
|
|
73
|
-
export
|
|
74
|
-
export interface
|
|
67
|
+
export type W3CVerifiableCredential = IVerifiableCredential | CompactJWT;
|
|
68
|
+
export interface IPresentation {
|
|
75
69
|
id?: string;
|
|
76
|
-
'@id'?: string;
|
|
77
70
|
'@context': ICredentialContextType | ICredentialContextType[];
|
|
78
|
-
|
|
71
|
+
type?: string | string[];
|
|
72
|
+
verifiableCredential?: W3CVerifiableCredential[];
|
|
79
73
|
presentation_submission?: PresentationSubmission;
|
|
80
74
|
holder?: string;
|
|
81
75
|
[x: string]: any;
|
|
82
76
|
}
|
|
83
|
-
export
|
|
84
|
-
export declare type IVerifiablePresentation = IPresentation & IHasProof;
|
|
77
|
+
export type IVerifiablePresentation = IPresentation & IHasProof;
|
|
85
78
|
/**
|
|
86
79
|
* Represents a signed Verifiable Presentation (includes proof), in either JSON or compact JWT format.
|
|
87
80
|
* See {@link https://www.w3.org/TR/vc-data-model/#presentations | VC data model}
|
|
88
81
|
* See {@link https://www.w3.org/TR/vc-data-model/#proof-formats | proof formats}
|
|
89
82
|
*/
|
|
90
|
-
export
|
|
83
|
+
export type W3CVerifiablePresentation = IVerifiablePresentation | CompactJWT;
|
|
91
84
|
export interface WrappedVerifiableCredential {
|
|
92
85
|
/**
|
|
93
86
|
* Original VC that we've received
|
|
@@ -106,9 +99,9 @@ export interface WrappedVerifiableCredential {
|
|
|
106
99
|
*/
|
|
107
100
|
format: CredentialFormat;
|
|
108
101
|
/**
|
|
109
|
-
* Internal stable representation of a Credential
|
|
102
|
+
* Internal stable representation of a Credential
|
|
110
103
|
*/
|
|
111
|
-
credential:
|
|
104
|
+
credential: IVerifiableCredential;
|
|
112
105
|
}
|
|
113
106
|
export interface WrappedVerifiablePresentation {
|
|
114
107
|
/**
|
|
@@ -143,13 +136,13 @@ export declare enum OriginalType {
|
|
|
143
136
|
}
|
|
144
137
|
export interface UniformVerifiablePresentation {
|
|
145
138
|
'@context': ICredentialContextType | ICredentialContextType[];
|
|
146
|
-
type: string[];
|
|
139
|
+
type: string | string[];
|
|
147
140
|
verifiableCredential: WrappedVerifiableCredential[];
|
|
148
141
|
presentation_submission?: PresentationSubmission;
|
|
149
142
|
holder?: string;
|
|
150
143
|
}
|
|
151
144
|
export interface JwtDecodedVerifiableCredential {
|
|
152
|
-
vc:
|
|
145
|
+
vc: IVerifiableCredential;
|
|
153
146
|
exp: string;
|
|
154
147
|
iss: string;
|
|
155
148
|
nbf: string;
|
|
@@ -166,10 +159,15 @@ export interface JwtDecodedVerifiablePresentation {
|
|
|
166
159
|
jti: string;
|
|
167
160
|
[x: string]: any;
|
|
168
161
|
}
|
|
169
|
-
export
|
|
170
|
-
export
|
|
171
|
-
export
|
|
172
|
-
export
|
|
173
|
-
export
|
|
174
|
-
export
|
|
162
|
+
export type CredentialFormat = 'jwt' | 'ldp' | 'jwt_vc' | 'ldp_vc' | string;
|
|
163
|
+
export type PresentationFormat = 'jwt' | 'ldp' | 'jwt_vp' | 'ldp_vp' | string;
|
|
164
|
+
export type ClaimFormat = CredentialFormat | PresentationFormat;
|
|
165
|
+
export type OriginalVerifiableCredential = W3CVerifiableCredential | JwtDecodedVerifiableCredential;
|
|
166
|
+
export type OriginalVerifiablePresentation = W3CVerifiablePresentation | JwtDecodedVerifiablePresentation;
|
|
167
|
+
export type Original = OriginalVerifiablePresentation | OriginalVerifiableCredential;
|
|
168
|
+
export declare const enum DocumentFormat {
|
|
169
|
+
JWT = 0,
|
|
170
|
+
JSONLD = 1,
|
|
171
|
+
EIP712 = 2
|
|
172
|
+
}
|
|
175
173
|
//# 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":";;;
|
|
1
|
+
{"version":3,"file":"vc.js","sourceRoot":"","sources":["../../src/types/vc.ts"],"names":[],"mappings":";;;AAiKA,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.
|
|
4
|
+
"version": "0.9.0",
|
|
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": "9119280fec93d685824f0baa454163d703431025"
|
|
41
42
|
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
DocumentFormat,
|
|
3
3
|
IPresentation,
|
|
4
|
+
IProof,
|
|
5
|
+
IProofPurpose,
|
|
6
|
+
IProofType,
|
|
4
7
|
IVerifiableCredential,
|
|
5
8
|
IVerifiablePresentation,
|
|
6
9
|
JwtDecodedVerifiableCredential,
|
|
@@ -9,6 +12,9 @@ import {
|
|
|
9
12
|
OriginalVerifiableCredential,
|
|
10
13
|
OriginalVerifiablePresentation,
|
|
11
14
|
PresentationFormat,
|
|
15
|
+
UniformVerifiablePresentation,
|
|
16
|
+
W3CVerifiableCredential,
|
|
17
|
+
W3CVerifiablePresentation,
|
|
12
18
|
WrappedVerifiableCredential,
|
|
13
19
|
WrappedVerifiablePresentation,
|
|
14
20
|
} from '../types'
|
|
@@ -18,10 +24,20 @@ import { ObjectUtils } from '../utils'
|
|
|
18
24
|
export class CredentialMapper {
|
|
19
25
|
static decodeVerifiablePresentation(presentation: OriginalVerifiablePresentation): JwtDecodedVerifiablePresentation | IVerifiablePresentation {
|
|
20
26
|
if (CredentialMapper.isJwtEncoded(presentation)) {
|
|
21
|
-
|
|
27
|
+
const payload = jwt_decode(presentation as string) as JwtDecodedVerifiablePresentation
|
|
28
|
+
const header = jwt_decode(presentation as string, { header: true }) as Record<string, any>
|
|
29
|
+
|
|
30
|
+
payload.vp.proof = {
|
|
31
|
+
type: IProofType.JwtProof2020,
|
|
32
|
+
created: payload.nbf,
|
|
33
|
+
proofPurpose: IProofPurpose.authentication,
|
|
34
|
+
verificationMethod: header['kid'] ?? payload.iss,
|
|
35
|
+
jwt: presentation as string,
|
|
36
|
+
}
|
|
37
|
+
return payload
|
|
22
38
|
} else if (CredentialMapper.isJwtDecodedPresentation(presentation)) {
|
|
23
39
|
return presentation as JwtDecodedVerifiablePresentation
|
|
24
|
-
} else if (CredentialMapper.
|
|
40
|
+
} else if (CredentialMapper.isJsonLdAsString(presentation)) {
|
|
25
41
|
return JSON.parse(presentation as string) as IVerifiablePresentation
|
|
26
42
|
} else {
|
|
27
43
|
return presentation as IVerifiablePresentation
|
|
@@ -30,10 +46,19 @@ export class CredentialMapper {
|
|
|
30
46
|
|
|
31
47
|
static decodeVerifiableCredential(credential: OriginalVerifiableCredential): JwtDecodedVerifiableCredential | IVerifiableCredential {
|
|
32
48
|
if (CredentialMapper.isJwtEncoded(credential)) {
|
|
33
|
-
|
|
49
|
+
const payload = jwt_decode(credential as string) as JwtDecodedVerifiableCredential
|
|
50
|
+
const header = jwt_decode(credential as string, { header: true }) as Record<string, any>
|
|
51
|
+
payload.vc.proof = {
|
|
52
|
+
type: IProofType.JwtProof2020,
|
|
53
|
+
created: payload.nbf,
|
|
54
|
+
proofPurpose: IProofPurpose.authentication,
|
|
55
|
+
verificationMethod: header['kid'] ?? payload.iss,
|
|
56
|
+
jwt: credential as string,
|
|
57
|
+
}
|
|
58
|
+
return payload
|
|
34
59
|
} else if (CredentialMapper.isJwtDecodedCredential(credential)) {
|
|
35
60
|
return credential as JwtDecodedVerifiableCredential
|
|
36
|
-
} else if (CredentialMapper.
|
|
61
|
+
} else if (CredentialMapper.isJsonLdAsString(credential)) {
|
|
37
62
|
return JSON.parse(credential as string) as IVerifiableCredential
|
|
38
63
|
} else {
|
|
39
64
|
return credential as IVerifiableCredential
|
|
@@ -41,50 +66,53 @@ export class CredentialMapper {
|
|
|
41
66
|
}
|
|
42
67
|
|
|
43
68
|
static toWrappedVerifiablePresentation(
|
|
44
|
-
|
|
45
|
-
opts?: { maxTimeSkewInMS?: number }
|
|
69
|
+
originalPresentation: OriginalVerifiablePresentation,
|
|
70
|
+
opts?: { maxTimeSkewInMS?: number },
|
|
46
71
|
): WrappedVerifiablePresentation {
|
|
47
|
-
const original =
|
|
72
|
+
const original = originalPresentation
|
|
48
73
|
const isJwtEncoded: boolean = CredentialMapper.isJwtEncoded(original)
|
|
49
74
|
const isJwtDecoded: boolean = CredentialMapper.isJwtDecodedPresentation(original)
|
|
50
75
|
|
|
51
76
|
const type = isJwtEncoded ? OriginalType.JWT_ENCODED : isJwtDecoded ? OriginalType.JWT_DECODED : OriginalType.JSONLD
|
|
52
77
|
const format: PresentationFormat = isJwtDecoded || isJwtEncoded ? 'jwt_vp' : 'ldp_vp'
|
|
53
78
|
const decoded = CredentialMapper.decodeVerifiablePresentation(original)
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
79
|
+
let vp: OriginalVerifiablePresentation
|
|
80
|
+
if (isJwtEncoded || isJwtDecoded) {
|
|
81
|
+
vp = CredentialMapper.jwtDecodedPresentationToUniformPresentation(decoded as JwtDecodedVerifiablePresentation, false, opts)
|
|
82
|
+
} else {
|
|
83
|
+
vp = decoded as IVerifiablePresentation
|
|
84
|
+
}
|
|
85
|
+
if (!vp || !('verifiableCredential' in vp) || !vp.verifiableCredential || vp.verifiableCredential.length === 0) {
|
|
86
|
+
throw Error(`VP needs to have at least one verifiable credential at this point`)
|
|
87
|
+
}
|
|
88
|
+
const vcs: WrappedVerifiableCredential[] = CredentialMapper.toWrappedVerifiableCredentials(vp.verifiableCredential/*.map(value => value.original)*/, opts)
|
|
59
89
|
|
|
60
|
-
|
|
90
|
+
const presentation = {
|
|
91
|
+
...vp,
|
|
92
|
+
verifiableCredential: vcs, // We overwrite the credentials with wrapped versions, making it an InternalVerifiablePresentation. Note: we keep the singular key name of the vc data model
|
|
93
|
+
} as UniformVerifiablePresentation
|
|
61
94
|
return {
|
|
62
95
|
type,
|
|
63
96
|
format,
|
|
64
97
|
original,
|
|
65
98
|
decoded,
|
|
66
|
-
presentation
|
|
67
|
-
...vp,
|
|
68
|
-
verifiableCredential: vcs, // We overwrite the credentials with wrapped versions, making it an InternalVerifiablePresentation. Note: we keep the singular key name of the vc data model
|
|
69
|
-
type: vp.type? vp.type: vp['@type']
|
|
70
|
-
},
|
|
99
|
+
presentation,
|
|
71
100
|
vcs,
|
|
72
101
|
}
|
|
73
102
|
}
|
|
74
103
|
|
|
75
104
|
static toWrappedVerifiableCredentials(
|
|
76
105
|
verifiableCredentials: OriginalVerifiableCredential[],
|
|
77
|
-
opts?: { maxTimeSkewInMS?: number }
|
|
106
|
+
opts?: { maxTimeSkewInMS?: number },
|
|
78
107
|
): WrappedVerifiableCredential[] {
|
|
79
108
|
return verifiableCredentials.map((vc) => CredentialMapper.toWrappedVerifiableCredential(vc, opts))
|
|
80
109
|
}
|
|
81
110
|
|
|
82
111
|
static toWrappedVerifiableCredential(
|
|
83
112
|
verifiableCredential: OriginalVerifiableCredential,
|
|
84
|
-
opts?: { maxTimeSkewInMS?: number }
|
|
113
|
+
opts?: { maxTimeSkewInMS?: number },
|
|
85
114
|
): WrappedVerifiableCredential {
|
|
86
115
|
const original = verifiableCredential
|
|
87
|
-
|
|
88
116
|
const decoded = CredentialMapper.decodeVerifiableCredential(verifiableCredential)
|
|
89
117
|
|
|
90
118
|
const isJwtEncoded = CredentialMapper.isJwtEncoded(original)
|
|
@@ -92,11 +120,11 @@ export class CredentialMapper {
|
|
|
92
120
|
const type = isJwtEncoded ? OriginalType.JWT_ENCODED : isJwtDecoded ? OriginalType.JWT_DECODED : OriginalType.JSONLD
|
|
93
121
|
|
|
94
122
|
const credential =
|
|
95
|
-
|
|
123
|
+
isJwtEncoded || isJwtDecoded
|
|
96
124
|
? CredentialMapper.jwtDecodedCredentialToUniformCredential(decoded as JwtDecodedVerifiableCredential, opts)
|
|
97
|
-
: (decoded as
|
|
98
|
-
|
|
99
|
-
|
|
125
|
+
: (decoded as IVerifiableCredential)
|
|
126
|
+
|
|
127
|
+
const format = isJwtEncoded || isJwtDecoded ? 'jwt_vc' : 'ldp_vc'
|
|
100
128
|
return {
|
|
101
129
|
original,
|
|
102
130
|
decoded,
|
|
@@ -110,7 +138,7 @@ export class CredentialMapper {
|
|
|
110
138
|
return ObjectUtils.isString(original) && (original as string).startsWith('ey')
|
|
111
139
|
}
|
|
112
140
|
|
|
113
|
-
private static
|
|
141
|
+
private static isJsonLdAsString(original: OriginalVerifiableCredential | OriginalVerifiablePresentation) {
|
|
114
142
|
return ObjectUtils.isString(original) && (original as string).includes('@context')
|
|
115
143
|
}
|
|
116
144
|
|
|
@@ -125,7 +153,7 @@ export class CredentialMapper {
|
|
|
125
153
|
static jwtEncodedPresentationToUniformPresentation(
|
|
126
154
|
jwt: string,
|
|
127
155
|
makeCredentialsUniform: boolean = true,
|
|
128
|
-
opts?: { maxTimeSkewInMS?: number }
|
|
156
|
+
opts?: { maxTimeSkewInMS?: number },
|
|
129
157
|
): IPresentation {
|
|
130
158
|
return CredentialMapper.jwtDecodedPresentationToUniformPresentation(jwt_decode(jwt), makeCredentialsUniform, opts)
|
|
131
159
|
}
|
|
@@ -133,19 +161,19 @@ export class CredentialMapper {
|
|
|
133
161
|
static jwtDecodedPresentationToUniformPresentation(
|
|
134
162
|
decoded: JwtDecodedVerifiablePresentation,
|
|
135
163
|
makeCredentialsUniform: boolean = true,
|
|
136
|
-
opts?: { maxTimeSkewInMS?: number }
|
|
137
|
-
):
|
|
138
|
-
const presentation:
|
|
139
|
-
...(decoded.vp
|
|
164
|
+
opts?: { maxTimeSkewInMS?: number },
|
|
165
|
+
): IVerifiablePresentation {
|
|
166
|
+
const presentation: IVerifiablePresentation = {
|
|
167
|
+
...(decoded.vp),
|
|
140
168
|
}
|
|
141
169
|
if (makeCredentialsUniform) {
|
|
170
|
+
if (!decoded.vp.verifiableCredential) {
|
|
171
|
+
throw Error('Verifiable Presentation should have a verifiable credential at this point')
|
|
172
|
+
}
|
|
142
173
|
presentation.verifiableCredential = decoded.vp.verifiableCredential.map((vc) =>
|
|
143
|
-
CredentialMapper.toUniformCredential(vc, opts)
|
|
144
|
-
)
|
|
174
|
+
CredentialMapper.toUniformCredential(vc, opts),
|
|
175
|
+
)
|
|
145
176
|
}
|
|
146
|
-
// Since this is a presentation, we delete any proof just to be sure (should not occur on JWT, but better safe than sorry)
|
|
147
|
-
delete presentation.proof
|
|
148
|
-
|
|
149
177
|
if (decoded.iss) {
|
|
150
178
|
const holder = presentation.holder
|
|
151
179
|
if (holder) {
|
|
@@ -165,7 +193,7 @@ export class CredentialMapper {
|
|
|
165
193
|
return presentation
|
|
166
194
|
}
|
|
167
195
|
|
|
168
|
-
static toUniformCredential(verifiableCredential: OriginalVerifiableCredential, opts?: { maxTimeSkewInMS?: number }):
|
|
196
|
+
static toUniformCredential(verifiableCredential: OriginalVerifiableCredential, opts?: { maxTimeSkewInMS?: number }): IVerifiableCredential {
|
|
169
197
|
const original = verifiableCredential
|
|
170
198
|
const decoded = CredentialMapper.decodeVerifiableCredential(verifiableCredential)
|
|
171
199
|
|
|
@@ -175,11 +203,11 @@ export class CredentialMapper {
|
|
|
175
203
|
if (isJwtDecoded || isJwtEncoded) {
|
|
176
204
|
return CredentialMapper.jwtDecodedCredentialToUniformCredential(decoded as JwtDecodedVerifiableCredential, opts)
|
|
177
205
|
} else {
|
|
178
|
-
return decoded as
|
|
206
|
+
return decoded as IVerifiableCredential
|
|
179
207
|
}
|
|
180
208
|
}
|
|
181
209
|
|
|
182
|
-
static toUniformPresentation(presentation: OriginalVerifiablePresentation, opts?: { maxTimeSkewInMS?: number }):
|
|
210
|
+
static toUniformPresentation(presentation: OriginalVerifiablePresentation, opts?: { maxTimeSkewInMS?: number }): IVerifiablePresentation {
|
|
183
211
|
const original = presentation
|
|
184
212
|
const decoded = CredentialMapper.decodeVerifiablePresentation(original)
|
|
185
213
|
const isJwtEncoded: boolean = CredentialMapper.isJwtEncoded(original)
|
|
@@ -187,30 +215,28 @@ export class CredentialMapper {
|
|
|
187
215
|
const uniformPresentation =
|
|
188
216
|
isJwtEncoded || isJwtDecoded
|
|
189
217
|
? CredentialMapper.jwtDecodedPresentationToUniformPresentation(decoded as JwtDecodedVerifiablePresentation, false)
|
|
190
|
-
: (decoded as
|
|
218
|
+
: (decoded as IVerifiablePresentation)
|
|
191
219
|
uniformPresentation.verifiableCredential = uniformPresentation.verifiableCredential?.map((vc) =>
|
|
192
|
-
CredentialMapper.toUniformCredential(vc, opts)
|
|
220
|
+
CredentialMapper.toUniformCredential(vc, opts),
|
|
193
221
|
) as IVerifiableCredential[] // We cast it because we IPresentation needs a VC. The internal Credential doesn't have the required Proof anymore (that is intended)
|
|
194
222
|
return uniformPresentation
|
|
195
223
|
}
|
|
196
224
|
|
|
197
|
-
static jwtEncodedCredentialToUniformCredential(jwt: string, opts?: { maxTimeSkewInMS?: number }):
|
|
225
|
+
static jwtEncodedCredentialToUniformCredential(jwt: string, opts?: { maxTimeSkewInMS?: number }): IVerifiableCredential {
|
|
198
226
|
return CredentialMapper.jwtDecodedCredentialToUniformCredential(jwt_decode(jwt), opts)
|
|
199
227
|
}
|
|
200
228
|
|
|
201
|
-
static jwtDecodedCredentialToUniformCredential(decoded: JwtDecodedVerifiableCredential, opts?: { maxTimeSkewInMS?: number }):
|
|
202
|
-
const credential:
|
|
203
|
-
...(decoded.vc
|
|
229
|
+
static jwtDecodedCredentialToUniformCredential(decoded: JwtDecodedVerifiableCredential, opts?: { maxTimeSkewInMS?: number }): IVerifiableCredential {
|
|
230
|
+
const credential: IVerifiableCredential = {
|
|
231
|
+
...(decoded.vc),
|
|
204
232
|
}
|
|
205
|
-
// Since this is a credential, we delete any proof just to be sure (should not occur on JWT, but better safe than sorry)
|
|
206
|
-
delete credential.proof
|
|
207
233
|
|
|
208
234
|
const maxSkewInMS = opts?.maxTimeSkewInMS !== undefined ? opts.maxTimeSkewInMS : 999
|
|
209
235
|
|
|
210
236
|
if (decoded.exp) {
|
|
211
237
|
const expDate = credential.expirationDate
|
|
212
238
|
const jwtExp = parseInt(decoded.exp.toString())
|
|
213
|
-
// fix seconds to
|
|
239
|
+
// fix seconds to millisecond for the date
|
|
214
240
|
const expDateAsStr = jwtExp < 9999999999 ? new Date(jwtExp * 1000).toISOString().replace(/\.000Z/, 'Z') : new Date(jwtExp).toISOString()
|
|
215
241
|
if (expDate && expDate !== expDateAsStr) {
|
|
216
242
|
const diff = Math.abs(new Date(expDateAsStr).getTime() - new Date(expDate).getTime())
|
|
@@ -271,6 +297,105 @@ export class CredentialMapper {
|
|
|
271
297
|
}
|
|
272
298
|
credential.id = decoded.jti
|
|
273
299
|
}
|
|
300
|
+
|
|
301
|
+
return credential
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
static toExternalVerifiableCredential(verifiableCredential: any): IVerifiableCredential {
|
|
305
|
+
let proof
|
|
306
|
+
if (verifiableCredential.proof) {
|
|
307
|
+
if (!verifiableCredential.proof.type) {
|
|
308
|
+
throw new Error('Verifiable credential proof is missing a type')
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
if (!verifiableCredential.proof.created) {
|
|
312
|
+
throw new Error('Verifiable credential proof is missing a created date')
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
if (!verifiableCredential.proof.proofPurpose) {
|
|
316
|
+
throw new Error('Verifiable credential proof is missing a proof purpose')
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
if (!verifiableCredential.proof.verificationMethod) {
|
|
320
|
+
throw new Error('Verifiable credential proof is missing a verification method')
|
|
321
|
+
}
|
|
322
|
+
proof = {
|
|
323
|
+
...verifiableCredential.proof,
|
|
324
|
+
type: verifiableCredential.proof.type,
|
|
325
|
+
created: verifiableCredential.proof.created,
|
|
326
|
+
proofPurpose: verifiableCredential.proof.proofPurpose,
|
|
327
|
+
verificationMethod: verifiableCredential.proof.verificationMethod,
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
return {
|
|
332
|
+
...verifiableCredential,
|
|
333
|
+
type: verifiableCredential.type
|
|
334
|
+
? typeof verifiableCredential.type === 'string'
|
|
335
|
+
? [verifiableCredential.type]
|
|
336
|
+
: verifiableCredential.type
|
|
337
|
+
: ['VerifiableCredential'],
|
|
338
|
+
proof,
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
static storedCredentialToOriginalFormat(credential: W3CVerifiableCredential): W3CVerifiableCredential {
|
|
343
|
+
const type: DocumentFormat = CredentialMapper.detectDocumentType(credential)
|
|
344
|
+
if (typeof credential === 'string') {
|
|
345
|
+
if (type === DocumentFormat.JWT) {
|
|
346
|
+
return CredentialMapper.toCompactJWT(credential)
|
|
347
|
+
} else if (type === DocumentFormat.JSONLD) {
|
|
348
|
+
return JSON.parse(credential)
|
|
349
|
+
}
|
|
350
|
+
}
|
|
274
351
|
return credential
|
|
275
352
|
}
|
|
353
|
+
|
|
354
|
+
static storedPresentationToOriginalFormat(presentation: W3CVerifiablePresentation): W3CVerifiablePresentation {
|
|
355
|
+
const type: DocumentFormat = CredentialMapper.detectDocumentType(presentation)
|
|
356
|
+
if (typeof presentation === 'string') {
|
|
357
|
+
if (type === DocumentFormat.JWT) {
|
|
358
|
+
return CredentialMapper.toCompactJWT(presentation)
|
|
359
|
+
} else if (type === DocumentFormat.JSONLD) {
|
|
360
|
+
return JSON.parse(presentation)
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
return presentation
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
static toCompactJWT(jwtDocument: W3CVerifiableCredential | JwtDecodedVerifiableCredential | W3CVerifiablePresentation | JwtDecodedVerifiablePresentation): string {
|
|
367
|
+
if (CredentialMapper.detectDocumentType(jwtDocument) !== DocumentFormat.JWT) {
|
|
368
|
+
throw Error('Cannot convert non JWT credential to JWT')
|
|
369
|
+
}
|
|
370
|
+
if (typeof jwtDocument === 'string') {
|
|
371
|
+
return jwtDocument
|
|
372
|
+
}
|
|
373
|
+
let proof: string | undefined
|
|
374
|
+
if ('vp' in jwtDocument) {
|
|
375
|
+
proof = jwtDocument.vp.proof
|
|
376
|
+
} else if ('vc' in jwtDocument) {
|
|
377
|
+
proof = jwtDocument.vc.proof
|
|
378
|
+
} else {
|
|
379
|
+
proof = Array.isArray(jwtDocument.proof) ? jwtDocument.proof[0].jwt : jwtDocument.proof.jwt
|
|
380
|
+
}
|
|
381
|
+
if (!proof) {
|
|
382
|
+
throw Error(`Could not get JWT from supplied document`)
|
|
383
|
+
}
|
|
384
|
+
return proof
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
static detectDocumentType(document: W3CVerifiableCredential | W3CVerifiablePresentation | JwtDecodedVerifiableCredential | JwtDecodedVerifiablePresentation): DocumentFormat {
|
|
388
|
+
if (typeof document === 'string') {
|
|
389
|
+
return this.isJsonLdAsString(document) ? DocumentFormat.JSONLD : DocumentFormat.JWT
|
|
390
|
+
}
|
|
391
|
+
const proofs = 'vc' in document ? document.vc.proof : 'vp' in document ? document.vp.proof : (<IVerifiableCredential>document).proof
|
|
392
|
+
const proof: IProof = Array.isArray(proofs) ? proofs[0] : proofs
|
|
393
|
+
|
|
394
|
+
if (proof.jwt) {
|
|
395
|
+
return DocumentFormat.JWT
|
|
396
|
+
} else if (proof.type === 'EthereumEip712Signature2021') {
|
|
397
|
+
return DocumentFormat.EIP712
|
|
398
|
+
}
|
|
399
|
+
return DocumentFormat.JSONLD
|
|
400
|
+
}
|
|
276
401
|
}
|
package/src/types/did.ts
CHANGED
|
@@ -19,6 +19,7 @@ export enum IProofType {
|
|
|
19
19
|
JcsEd25519Signature2020 = 'JcsEd25519Signature2020',
|
|
20
20
|
BbsBlsSignatureProof2020 = 'BbsBlsSignatureProof2020',
|
|
21
21
|
BbsBlsBoundSignatureProof2020 = 'BbsBlsBoundSignatureProof2020',
|
|
22
|
+
JwtProof2020 = 'JwtProof2020'
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
export interface IParsedDID {
|
package/src/types/vc.ts
CHANGED
|
@@ -5,8 +5,9 @@ export type AdditionalClaims = Record<string, any>
|
|
|
5
5
|
|
|
6
6
|
export type IIssuerId = string
|
|
7
7
|
|
|
8
|
-
export interface
|
|
8
|
+
export interface ICredential {
|
|
9
9
|
'@context': ICredentialContextType | ICredentialContextType[]
|
|
10
|
+
type: string[]
|
|
10
11
|
credentialSchema?: undefined | ICredentialSchemaType | ICredentialSchemaType[]
|
|
11
12
|
// If iss is present, the value MUST be used to set the issuer property of the new credential JSON object or the holder property of the new presentation JSON object.
|
|
12
13
|
issuer: IIssuerId | IIssuer
|
|
@@ -18,7 +19,6 @@ export interface ICredentialWithoutType {
|
|
|
18
19
|
expirationDate?: string
|
|
19
20
|
// If jti is present, the value MUST be used to set the value of the id property of the new JSON object.
|
|
20
21
|
id?: string
|
|
21
|
-
'@id'?: string
|
|
22
22
|
credentialStatus?: ICredentialStatus
|
|
23
23
|
description?: string
|
|
24
24
|
name?: string
|
|
@@ -26,16 +26,6 @@ export interface ICredentialWithoutType {
|
|
|
26
26
|
[x: string]: any
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
export interface VerifiableDataTypeProperty {
|
|
30
|
-
type: string[]
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export interface VerifiableDataAtTypeProperty {
|
|
34
|
-
'@type': string[]
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export type ICredential = ICredentialWithoutType & (VerifiableDataAtTypeProperty | VerifiableDataTypeProperty)
|
|
38
|
-
|
|
39
29
|
export interface ICredentialSubject {
|
|
40
30
|
id?: string
|
|
41
31
|
}
|
|
@@ -63,6 +53,7 @@ export interface IProof {
|
|
|
63
53
|
domain?: string // A string restricting the (usage of a) proof to the domain and protects against replay attacks
|
|
64
54
|
proofValue?: string // One of any number of valid representations of proof values
|
|
65
55
|
jws?: string // JWS based proof
|
|
56
|
+
jwt?: string //Jwt 2020 proof. Used to map a JWT VC onto a uniform presentation, and retain access to the original JWT
|
|
66
57
|
nonce?: string // Similar to challenge. A nonce to protect against replay attacks, used in some ZKP proofs
|
|
67
58
|
requiredRevealStatements?: string[] // The parts of the proof that must be revealed in a derived proof
|
|
68
59
|
|
|
@@ -98,19 +89,17 @@ export type CompactJWT = string
|
|
|
98
89
|
*/
|
|
99
90
|
export type W3CVerifiableCredential = IVerifiableCredential | CompactJWT
|
|
100
91
|
|
|
101
|
-
export interface
|
|
92
|
+
export interface IPresentation {
|
|
102
93
|
id?: string
|
|
103
|
-
'@id'?: string
|
|
104
94
|
'@context': ICredentialContextType | ICredentialContextType[]
|
|
105
|
-
|
|
95
|
+
type?: string | string[]
|
|
96
|
+
verifiableCredential?: W3CVerifiableCredential[]
|
|
106
97
|
presentation_submission?: PresentationSubmission
|
|
107
98
|
holder?: string
|
|
108
99
|
|
|
109
100
|
[x: string]: any
|
|
110
101
|
}
|
|
111
102
|
|
|
112
|
-
export type IPresentation = IPresentationWithoutType & (VerifiableDataTypeProperty | VerifiableDataAtTypeProperty)
|
|
113
|
-
|
|
114
103
|
export type IVerifiablePresentation = IPresentation & IHasProof
|
|
115
104
|
|
|
116
105
|
/**
|
|
@@ -138,9 +127,9 @@ export interface WrappedVerifiableCredential {
|
|
|
138
127
|
*/
|
|
139
128
|
format: CredentialFormat
|
|
140
129
|
/**
|
|
141
|
-
* Internal stable representation of a Credential
|
|
130
|
+
* Internal stable representation of a Credential
|
|
142
131
|
*/
|
|
143
|
-
credential:
|
|
132
|
+
credential: IVerifiableCredential
|
|
144
133
|
}
|
|
145
134
|
|
|
146
135
|
export interface WrappedVerifiablePresentation {
|
|
@@ -178,14 +167,14 @@ export enum OriginalType {
|
|
|
178
167
|
|
|
179
168
|
export interface UniformVerifiablePresentation {
|
|
180
169
|
'@context': ICredentialContextType | ICredentialContextType[]
|
|
181
|
-
type: string[]
|
|
170
|
+
type: string | string[]
|
|
182
171
|
verifiableCredential: WrappedVerifiableCredential[]
|
|
183
172
|
presentation_submission?: PresentationSubmission
|
|
184
173
|
holder?: string
|
|
185
174
|
}
|
|
186
175
|
|
|
187
176
|
export interface JwtDecodedVerifiableCredential {
|
|
188
|
-
vc:
|
|
177
|
+
vc: IVerifiableCredential
|
|
189
178
|
exp: string
|
|
190
179
|
iss: string
|
|
191
180
|
nbf: string
|
|
@@ -213,3 +202,9 @@ export type ClaimFormat = CredentialFormat | PresentationFormat
|
|
|
213
202
|
export type OriginalVerifiableCredential = W3CVerifiableCredential | JwtDecodedVerifiableCredential
|
|
214
203
|
export type OriginalVerifiablePresentation = W3CVerifiablePresentation | JwtDecodedVerifiablePresentation
|
|
215
204
|
export type Original = OriginalVerifiablePresentation | OriginalVerifiableCredential
|
|
205
|
+
|
|
206
|
+
export const enum DocumentFormat {
|
|
207
|
+
JWT,
|
|
208
|
+
JSONLD,
|
|
209
|
+
EIP712,
|
|
210
|
+
}
|