@sphereon/ssi-types 0.8.1-next.26 → 0.8.1-next.272
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 +34 -11
- package/dist/mapper/credential-mapper.d.ts.map +1 -1
- package/dist/mapper/credential-mapper.js +158 -41
- 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 +29 -21
- 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 +208 -57
- package/src/types/did.ts +1 -0
- package/src/types/vc.ts +18 -9
|
@@ -1,19 +1,42 @@
|
|
|
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(
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
static toWrappedVerifiablePresentation(originalPresentation: 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
|
-
private static
|
|
15
|
+
private static isJsonLdAsString;
|
|
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
|
+
}): IVerifiablePresentation;
|
|
24
|
+
static toUniformCredential(verifiableCredential: OriginalVerifiableCredential, opts?: {
|
|
25
|
+
maxTimeSkewInMS?: number;
|
|
26
|
+
}): IVerifiableCredential;
|
|
27
|
+
static toUniformPresentation(presentation: OriginalVerifiablePresentation, opts?: {
|
|
28
|
+
maxTimeSkewInMS?: number;
|
|
29
|
+
}): IVerifiablePresentation;
|
|
30
|
+
static jwtEncodedCredentialToUniformCredential(jwt: string, opts?: {
|
|
31
|
+
maxTimeSkewInMS?: number;
|
|
32
|
+
}): IVerifiableCredential;
|
|
33
|
+
static jwtDecodedCredentialToUniformCredential(decoded: JwtDecodedVerifiableCredential, opts?: {
|
|
34
|
+
maxTimeSkewInMS?: number;
|
|
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;
|
|
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,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,54 +33,70 @@ 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
|
}
|
|
60
|
-
static toWrappedVerifiableCredentials(verifiableCredentials) {
|
|
61
|
-
return verifiableCredentials.map(CredentialMapper.toWrappedVerifiableCredential);
|
|
87
|
+
static toWrappedVerifiableCredentials(verifiableCredentials, opts) {
|
|
88
|
+
return verifiableCredentials.map((vc) => CredentialMapper.toWrappedVerifiableCredential(vc, opts));
|
|
62
89
|
}
|
|
63
|
-
static toWrappedVerifiableCredential(verifiableCredential) {
|
|
90
|
+
static toWrappedVerifiableCredential(verifiableCredential, opts) {
|
|
64
91
|
const original = verifiableCredential;
|
|
65
92
|
const decoded = CredentialMapper.decodeVerifiableCredential(verifiableCredential);
|
|
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 =
|
|
70
|
-
? CredentialMapper.jwtDecodedCredentialToUniformCredential(decoded)
|
|
96
|
+
const credential = isJwtEncoded || isJwtDecoded
|
|
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) {
|
|
@@ -91,16 +117,17 @@ class CredentialMapper {
|
|
|
91
117
|
static isJwtDecodedPresentation(original) {
|
|
92
118
|
return original['vp'] !== undefined && original['iss'] !== undefined;
|
|
93
119
|
}
|
|
94
|
-
static jwtEncodedPresentationToUniformPresentation(jwt, makeCredentialsUniform = true) {
|
|
95
|
-
return CredentialMapper.jwtDecodedPresentationToUniformPresentation((0, jwt_decode_1.default)(jwt), makeCredentialsUniform);
|
|
120
|
+
static jwtEncodedPresentationToUniformPresentation(jwt, makeCredentialsUniform = true, opts) {
|
|
121
|
+
return CredentialMapper.jwtDecodedPresentationToUniformPresentation((0, jwt_decode_1.default)(jwt), makeCredentialsUniform, opts);
|
|
96
122
|
}
|
|
97
|
-
static jwtDecodedPresentationToUniformPresentation(decoded, makeCredentialsUniform = true) {
|
|
98
|
-
const presentation = Object.assign({}, decoded.vp);
|
|
123
|
+
static jwtDecodedPresentationToUniformPresentation(decoded, makeCredentialsUniform = true, opts) {
|
|
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) {
|
|
@@ -119,19 +146,19 @@ class CredentialMapper {
|
|
|
119
146
|
}
|
|
120
147
|
return presentation;
|
|
121
148
|
}
|
|
122
|
-
static toUniformCredential(verifiableCredential) {
|
|
149
|
+
static toUniformCredential(verifiableCredential, opts) {
|
|
123
150
|
const original = verifiableCredential;
|
|
124
151
|
const decoded = CredentialMapper.decodeVerifiableCredential(verifiableCredential);
|
|
125
152
|
const isJwtEncoded = CredentialMapper.isJwtEncoded(original);
|
|
126
153
|
const isJwtDecoded = CredentialMapper.isJwtDecodedCredential(original);
|
|
127
154
|
if (isJwtDecoded || isJwtEncoded) {
|
|
128
|
-
return CredentialMapper.jwtDecodedCredentialToUniformCredential(decoded);
|
|
155
|
+
return CredentialMapper.jwtDecodedCredentialToUniformCredential(decoded, opts);
|
|
129
156
|
}
|
|
130
157
|
else {
|
|
131
158
|
return decoded;
|
|
132
159
|
}
|
|
133
160
|
}
|
|
134
|
-
static toUniformPresentation(presentation) {
|
|
161
|
+
static toUniformPresentation(presentation, opts) {
|
|
135
162
|
var _a;
|
|
136
163
|
const original = presentation;
|
|
137
164
|
const decoded = CredentialMapper.decodeVerifiablePresentation(original);
|
|
@@ -140,23 +167,25 @@ class CredentialMapper {
|
|
|
140
167
|
const uniformPresentation = isJwtEncoded || isJwtDecoded
|
|
141
168
|
? CredentialMapper.jwtDecodedPresentationToUniformPresentation(decoded, false)
|
|
142
169
|
: 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)
|
|
170
|
+
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
171
|
return uniformPresentation;
|
|
145
172
|
}
|
|
146
|
-
static jwtEncodedCredentialToUniformCredential(jwt) {
|
|
147
|
-
return CredentialMapper.jwtDecodedCredentialToUniformCredential((0, jwt_decode_1.default)(jwt));
|
|
173
|
+
static jwtEncodedCredentialToUniformCredential(jwt, opts) {
|
|
174
|
+
return CredentialMapper.jwtDecodedCredentialToUniformCredential((0, jwt_decode_1.default)(jwt), opts);
|
|
148
175
|
}
|
|
149
|
-
static jwtDecodedCredentialToUniformCredential(decoded) {
|
|
150
|
-
const credential = Object.assign({}, decoded.vc);
|
|
151
|
-
|
|
152
|
-
delete credential.proof;
|
|
176
|
+
static jwtDecodedCredentialToUniformCredential(decoded, opts) {
|
|
177
|
+
const credential = Object.assign({}, (decoded.vc));
|
|
178
|
+
const maxSkewInMS = (opts === null || opts === void 0 ? void 0 : opts.maxTimeSkewInMS) !== undefined ? opts.maxTimeSkewInMS : 999;
|
|
153
179
|
if (decoded.exp) {
|
|
154
180
|
const expDate = credential.expirationDate;
|
|
155
181
|
const jwtExp = parseInt(decoded.exp.toString());
|
|
156
|
-
// fix seconds to
|
|
182
|
+
// fix seconds to millisecond for the date
|
|
157
183
|
const expDateAsStr = jwtExp < 9999999999 ? new Date(jwtExp * 1000).toISOString().replace(/\.000Z/, 'Z') : new Date(jwtExp).toISOString();
|
|
158
184
|
if (expDate && expDate !== expDateAsStr) {
|
|
159
|
-
|
|
185
|
+
const diff = Math.abs(new Date(expDateAsStr).getTime() - new Date(expDate).getTime());
|
|
186
|
+
if (!maxSkewInMS || diff > maxSkewInMS) {
|
|
187
|
+
throw new Error(`Inconsistent expiration dates between JWT claim (${expDateAsStr}) and VC value (${expDate})`);
|
|
188
|
+
}
|
|
160
189
|
}
|
|
161
190
|
credential.expirationDate = expDateAsStr;
|
|
162
191
|
}
|
|
@@ -166,7 +195,10 @@ class CredentialMapper {
|
|
|
166
195
|
// fix seconds to millisecs for the date
|
|
167
196
|
const nbfDateAsStr = jwtNbf < 9999999999 ? new Date(jwtNbf * 1000).toISOString().replace(/\.000Z/, 'Z') : new Date(jwtNbf).toISOString();
|
|
168
197
|
if (issuanceDate && issuanceDate !== nbfDateAsStr) {
|
|
169
|
-
|
|
198
|
+
const diff = Math.abs(new Date(nbfDateAsStr).getTime() - new Date(issuanceDate).getTime());
|
|
199
|
+
if (!maxSkewInMS || diff > maxSkewInMS) {
|
|
200
|
+
throw new Error(`Inconsistent issuance dates between JWT claim (${nbfDateAsStr}) and VC value (${issuanceDate})`);
|
|
201
|
+
}
|
|
170
202
|
}
|
|
171
203
|
credential.issuanceDate = nbfDateAsStr;
|
|
172
204
|
}
|
|
@@ -184,7 +216,9 @@ class CredentialMapper {
|
|
|
184
216
|
}
|
|
185
217
|
}
|
|
186
218
|
}
|
|
187
|
-
|
|
219
|
+
else {
|
|
220
|
+
credential.issuer = decoded.iss;
|
|
221
|
+
}
|
|
188
222
|
}
|
|
189
223
|
if (decoded.sub) {
|
|
190
224
|
const subjects = Array.isArray(credential.credentialSubject) ? credential.credentialSubject : [credential.credentialSubject];
|
|
@@ -207,6 +241,89 @@ class CredentialMapper {
|
|
|
207
241
|
}
|
|
208
242
|
return credential;
|
|
209
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
|
+
}
|
|
210
327
|
}
|
|
211
328
|
exports.CredentialMapper = CredentialMapper;
|
|
212
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,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;
|
|
@@ -38,6 +38,7 @@ export interface IProof {
|
|
|
38
38
|
domain?: string;
|
|
39
39
|
proofValue?: string;
|
|
40
40
|
jws?: string;
|
|
41
|
+
jwt?: string;
|
|
41
42
|
nonce?: string;
|
|
42
43
|
requiredRevealStatements?: string[];
|
|
43
44
|
[x: string]: any;
|
|
@@ -53,33 +54,33 @@ export interface IIssuer {
|
|
|
53
54
|
export interface IHasProof {
|
|
54
55
|
proof: IProof | IProof[];
|
|
55
56
|
}
|
|
56
|
-
export
|
|
57
|
+
export type IVerifiableCredential = ICredential & IHasProof;
|
|
57
58
|
/**
|
|
58
59
|
* Represents a Json Web Token in compact form.
|
|
59
60
|
*/
|
|
60
|
-
export
|
|
61
|
+
export type CompactJWT = string;
|
|
61
62
|
/**
|
|
62
63
|
* Represents a signed Verifiable Credential (includes proof), in either JSON or compact JWT format.
|
|
63
64
|
* See {@link https://www.w3.org/TR/vc-data-model/#credentials | VC data model}
|
|
64
65
|
* See {@link https://www.w3.org/TR/vc-data-model/#proof-formats | proof formats}
|
|
65
66
|
*/
|
|
66
|
-
export
|
|
67
|
+
export type W3CVerifiableCredential = IVerifiableCredential | CompactJWT;
|
|
67
68
|
export interface IPresentation {
|
|
68
69
|
id?: string;
|
|
69
70
|
'@context': ICredentialContextType | ICredentialContextType[];
|
|
70
|
-
type
|
|
71
|
-
verifiableCredential
|
|
71
|
+
type?: string | string[];
|
|
72
|
+
verifiableCredential?: W3CVerifiableCredential[];
|
|
72
73
|
presentation_submission?: PresentationSubmission;
|
|
73
74
|
holder?: string;
|
|
74
75
|
[x: string]: any;
|
|
75
76
|
}
|
|
76
|
-
export
|
|
77
|
+
export type IVerifiablePresentation = IPresentation & IHasProof;
|
|
77
78
|
/**
|
|
78
79
|
* Represents a signed Verifiable Presentation (includes proof), in either JSON or compact JWT format.
|
|
79
80
|
* See {@link https://www.w3.org/TR/vc-data-model/#presentations | VC data model}
|
|
80
81
|
* See {@link https://www.w3.org/TR/vc-data-model/#proof-formats | proof formats}
|
|
81
82
|
*/
|
|
82
|
-
export
|
|
83
|
+
export type W3CVerifiablePresentation = IVerifiablePresentation | CompactJWT;
|
|
83
84
|
export interface WrappedVerifiableCredential {
|
|
84
85
|
/**
|
|
85
86
|
* Original VC that we've received
|
|
@@ -96,11 +97,11 @@ export interface WrappedVerifiableCredential {
|
|
|
96
97
|
/**
|
|
97
98
|
* The claim format, typically used during exchange transport protocols
|
|
98
99
|
*/
|
|
99
|
-
format:
|
|
100
|
+
format: CredentialFormat;
|
|
100
101
|
/**
|
|
101
|
-
* Internal stable representation of a Credential
|
|
102
|
+
* Internal stable representation of a Credential
|
|
102
103
|
*/
|
|
103
|
-
credential:
|
|
104
|
+
credential: IVerifiableCredential;
|
|
104
105
|
}
|
|
105
106
|
export interface WrappedVerifiablePresentation {
|
|
106
107
|
/**
|
|
@@ -118,7 +119,7 @@ export interface WrappedVerifiablePresentation {
|
|
|
118
119
|
/**
|
|
119
120
|
* The claim format, typically used during exchange transport protocols
|
|
120
121
|
*/
|
|
121
|
-
format:
|
|
122
|
+
format: PresentationFormat;
|
|
122
123
|
/**
|
|
123
124
|
* Internal stable representation of a Presentation without proofs, created based on https://www.w3.org/TR/vc-data-model/#jwt-decoding
|
|
124
125
|
*/
|
|
@@ -135,13 +136,13 @@ export declare enum OriginalType {
|
|
|
135
136
|
}
|
|
136
137
|
export interface UniformVerifiablePresentation {
|
|
137
138
|
'@context': ICredentialContextType | ICredentialContextType[];
|
|
138
|
-
type: string[];
|
|
139
|
+
type: string | string[];
|
|
139
140
|
verifiableCredential: WrappedVerifiableCredential[];
|
|
140
141
|
presentation_submission?: PresentationSubmission;
|
|
141
142
|
holder?: string;
|
|
142
143
|
}
|
|
143
144
|
export interface JwtDecodedVerifiableCredential {
|
|
144
|
-
vc:
|
|
145
|
+
vc: IVerifiableCredential;
|
|
145
146
|
exp: string;
|
|
146
147
|
iss: string;
|
|
147
148
|
nbf: string;
|
|
@@ -158,8 +159,15 @@ export interface JwtDecodedVerifiablePresentation {
|
|
|
158
159
|
jti: string;
|
|
159
160
|
[x: string]: any;
|
|
160
161
|
}
|
|
161
|
-
export
|
|
162
|
-
export
|
|
163
|
-
export
|
|
164
|
-
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
|
+
}
|
|
165
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.8.1-next.
|
|
4
|
+
"version": "0.8.1-next.272+a34f653",
|
|
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": "a34f653b26d26b6d980aa9196b814ad42cfa5e3f"
|
|
41
42
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
ICredential,
|
|
2
|
+
DocumentFormat,
|
|
4
3
|
IPresentation,
|
|
4
|
+
IProof,
|
|
5
|
+
IProofPurpose,
|
|
6
|
+
IProofType,
|
|
5
7
|
IVerifiableCredential,
|
|
6
8
|
IVerifiablePresentation,
|
|
7
9
|
JwtDecodedVerifiableCredential,
|
|
@@ -9,6 +11,10 @@ import {
|
|
|
9
11
|
OriginalType,
|
|
10
12
|
OriginalVerifiableCredential,
|
|
11
13
|
OriginalVerifiablePresentation,
|
|
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,51 +46,73 @@ 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
|
|
40
65
|
}
|
|
41
66
|
}
|
|
42
67
|
|
|
43
|
-
static toWrappedVerifiablePresentation(
|
|
44
|
-
|
|
68
|
+
static toWrappedVerifiablePresentation(
|
|
69
|
+
originalPresentation: OriginalVerifiablePresentation,
|
|
70
|
+
opts?: { maxTimeSkewInMS?: number },
|
|
71
|
+
): WrappedVerifiablePresentation {
|
|
72
|
+
const original = originalPresentation
|
|
45
73
|
const isJwtEncoded: boolean = CredentialMapper.isJwtEncoded(original)
|
|
46
74
|
const isJwtDecoded: boolean = CredentialMapper.isJwtDecodedPresentation(original)
|
|
47
75
|
|
|
48
76
|
const type = isJwtEncoded ? OriginalType.JWT_ENCODED : isJwtDecoded ? OriginalType.JWT_DECODED : OriginalType.JSONLD
|
|
49
|
-
const format:
|
|
77
|
+
const format: PresentationFormat = isJwtDecoded || isJwtEncoded ? 'jwt_vp' : 'ldp_vp'
|
|
50
78
|
const decoded = CredentialMapper.decodeVerifiablePresentation(original)
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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)
|
|
56
89
|
|
|
57
|
-
|
|
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
|
|
58
94
|
return {
|
|
59
95
|
type,
|
|
60
96
|
format,
|
|
61
97
|
original,
|
|
62
98
|
decoded,
|
|
63
|
-
presentation
|
|
64
|
-
...vp,
|
|
65
|
-
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
|
|
66
|
-
},
|
|
99
|
+
presentation,
|
|
67
100
|
vcs,
|
|
68
101
|
}
|
|
69
102
|
}
|
|
70
103
|
|
|
71
|
-
static toWrappedVerifiableCredentials(
|
|
72
|
-
|
|
104
|
+
static toWrappedVerifiableCredentials(
|
|
105
|
+
verifiableCredentials: OriginalVerifiableCredential[],
|
|
106
|
+
opts?: { maxTimeSkewInMS?: number },
|
|
107
|
+
): WrappedVerifiableCredential[] {
|
|
108
|
+
return verifiableCredentials.map((vc) => CredentialMapper.toWrappedVerifiableCredential(vc, opts))
|
|
73
109
|
}
|
|
74
110
|
|
|
75
|
-
static toWrappedVerifiableCredential(
|
|
111
|
+
static toWrappedVerifiableCredential(
|
|
112
|
+
verifiableCredential: OriginalVerifiableCredential,
|
|
113
|
+
opts?: { maxTimeSkewInMS?: number },
|
|
114
|
+
): WrappedVerifiableCredential {
|
|
76
115
|
const original = verifiableCredential
|
|
77
|
-
|
|
78
116
|
const decoded = CredentialMapper.decodeVerifiableCredential(verifiableCredential)
|
|
79
117
|
|
|
80
118
|
const isJwtEncoded = CredentialMapper.isJwtEncoded(original)
|
|
@@ -82,11 +120,11 @@ export class CredentialMapper {
|
|
|
82
120
|
const type = isJwtEncoded ? OriginalType.JWT_ENCODED : isJwtDecoded ? OriginalType.JWT_DECODED : OriginalType.JSONLD
|
|
83
121
|
|
|
84
122
|
const credential =
|
|
85
|
-
|
|
86
|
-
? CredentialMapper.jwtDecodedCredentialToUniformCredential(decoded as JwtDecodedVerifiableCredential)
|
|
87
|
-
: (decoded as
|
|
88
|
-
|
|
89
|
-
|
|
123
|
+
isJwtEncoded || isJwtDecoded
|
|
124
|
+
? CredentialMapper.jwtDecodedCredentialToUniformCredential(decoded as JwtDecodedVerifiableCredential, opts)
|
|
125
|
+
: (decoded as IVerifiableCredential)
|
|
126
|
+
|
|
127
|
+
const format = isJwtEncoded || isJwtDecoded ? 'jwt_vc' : 'ldp_vc'
|
|
90
128
|
return {
|
|
91
129
|
original,
|
|
92
130
|
decoded,
|
|
@@ -100,7 +138,7 @@ export class CredentialMapper {
|
|
|
100
138
|
return ObjectUtils.isString(original) && (original as string).startsWith('ey')
|
|
101
139
|
}
|
|
102
140
|
|
|
103
|
-
private static
|
|
141
|
+
private static isJsonLdAsString(original: OriginalVerifiableCredential | OriginalVerifiablePresentation) {
|
|
104
142
|
return ObjectUtils.isString(original) && (original as string).includes('@context')
|
|
105
143
|
}
|
|
106
144
|
|
|
@@ -112,23 +150,30 @@ export class CredentialMapper {
|
|
|
112
150
|
return (<JwtDecodedVerifiablePresentation>original)['vp'] !== undefined && (<JwtDecodedVerifiablePresentation>original)['iss'] !== undefined
|
|
113
151
|
}
|
|
114
152
|
|
|
115
|
-
static jwtEncodedPresentationToUniformPresentation(
|
|
116
|
-
|
|
153
|
+
static jwtEncodedPresentationToUniformPresentation(
|
|
154
|
+
jwt: string,
|
|
155
|
+
makeCredentialsUniform: boolean = true,
|
|
156
|
+
opts?: { maxTimeSkewInMS?: number },
|
|
157
|
+
): IPresentation {
|
|
158
|
+
return CredentialMapper.jwtDecodedPresentationToUniformPresentation(jwt_decode(jwt), makeCredentialsUniform, opts)
|
|
117
159
|
}
|
|
118
160
|
|
|
119
161
|
static jwtDecodedPresentationToUniformPresentation(
|
|
120
162
|
decoded: JwtDecodedVerifiablePresentation,
|
|
121
|
-
makeCredentialsUniform: boolean = true
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
163
|
+
makeCredentialsUniform: boolean = true,
|
|
164
|
+
opts?: { maxTimeSkewInMS?: number },
|
|
165
|
+
): IVerifiablePresentation {
|
|
166
|
+
const presentation: IVerifiablePresentation = {
|
|
167
|
+
...(decoded.vp),
|
|
125
168
|
}
|
|
126
169
|
if (makeCredentialsUniform) {
|
|
127
|
-
|
|
170
|
+
if (!decoded.vp.verifiableCredential) {
|
|
171
|
+
throw Error('Verifiable Presentation should have a verifiable credential at this point')
|
|
172
|
+
}
|
|
173
|
+
presentation.verifiableCredential = decoded.vp.verifiableCredential.map((vc) =>
|
|
174
|
+
CredentialMapper.toUniformCredential(vc, opts),
|
|
175
|
+
)
|
|
128
176
|
}
|
|
129
|
-
// Since this is a presentation, we delete any proof just to be sure (should not occur on JWT, but better safe than sorry)
|
|
130
|
-
delete presentation.proof
|
|
131
|
-
|
|
132
177
|
if (decoded.iss) {
|
|
133
178
|
const holder = presentation.holder
|
|
134
179
|
if (holder) {
|
|
@@ -148,7 +193,7 @@ export class CredentialMapper {
|
|
|
148
193
|
return presentation
|
|
149
194
|
}
|
|
150
195
|
|
|
151
|
-
static toUniformCredential(verifiableCredential: OriginalVerifiableCredential):
|
|
196
|
+
static toUniformCredential(verifiableCredential: OriginalVerifiableCredential, opts?: { maxTimeSkewInMS?: number }): IVerifiableCredential {
|
|
152
197
|
const original = verifiableCredential
|
|
153
198
|
const decoded = CredentialMapper.decodeVerifiableCredential(verifiableCredential)
|
|
154
199
|
|
|
@@ -156,13 +201,13 @@ export class CredentialMapper {
|
|
|
156
201
|
const isJwtDecoded: boolean = CredentialMapper.isJwtDecodedCredential(original)
|
|
157
202
|
|
|
158
203
|
if (isJwtDecoded || isJwtEncoded) {
|
|
159
|
-
return CredentialMapper.jwtDecodedCredentialToUniformCredential(decoded as JwtDecodedVerifiableCredential)
|
|
204
|
+
return CredentialMapper.jwtDecodedCredentialToUniformCredential(decoded as JwtDecodedVerifiableCredential, opts)
|
|
160
205
|
} else {
|
|
161
|
-
return decoded as
|
|
206
|
+
return decoded as IVerifiableCredential
|
|
162
207
|
}
|
|
163
208
|
}
|
|
164
209
|
|
|
165
|
-
static toUniformPresentation(presentation: OriginalVerifiablePresentation):
|
|
210
|
+
static toUniformPresentation(presentation: OriginalVerifiablePresentation, opts?: { maxTimeSkewInMS?: number }): IVerifiablePresentation {
|
|
166
211
|
const original = presentation
|
|
167
212
|
const decoded = CredentialMapper.decodeVerifiablePresentation(original)
|
|
168
213
|
const isJwtEncoded: boolean = CredentialMapper.isJwtEncoded(original)
|
|
@@ -170,31 +215,34 @@ export class CredentialMapper {
|
|
|
170
215
|
const uniformPresentation =
|
|
171
216
|
isJwtEncoded || isJwtDecoded
|
|
172
217
|
? CredentialMapper.jwtDecodedPresentationToUniformPresentation(decoded as JwtDecodedVerifiablePresentation, false)
|
|
173
|
-
: (decoded as
|
|
174
|
-
uniformPresentation.verifiableCredential = uniformPresentation.verifiableCredential?.map(
|
|
175
|
-
CredentialMapper.toUniformCredential
|
|
218
|
+
: (decoded as IVerifiablePresentation)
|
|
219
|
+
uniformPresentation.verifiableCredential = uniformPresentation.verifiableCredential?.map((vc) =>
|
|
220
|
+
CredentialMapper.toUniformCredential(vc, opts),
|
|
176
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)
|
|
177
222
|
return uniformPresentation
|
|
178
223
|
}
|
|
179
224
|
|
|
180
|
-
static jwtEncodedCredentialToUniformCredential(jwt: string):
|
|
181
|
-
return CredentialMapper.jwtDecodedCredentialToUniformCredential(jwt_decode(jwt))
|
|
225
|
+
static jwtEncodedCredentialToUniformCredential(jwt: string, opts?: { maxTimeSkewInMS?: number }): IVerifiableCredential {
|
|
226
|
+
return CredentialMapper.jwtDecodedCredentialToUniformCredential(jwt_decode(jwt), opts)
|
|
182
227
|
}
|
|
183
228
|
|
|
184
|
-
static jwtDecodedCredentialToUniformCredential(decoded: JwtDecodedVerifiableCredential):
|
|
185
|
-
const credential:
|
|
186
|
-
...(decoded.vc
|
|
229
|
+
static jwtDecodedCredentialToUniformCredential(decoded: JwtDecodedVerifiableCredential, opts?: { maxTimeSkewInMS?: number }): IVerifiableCredential {
|
|
230
|
+
const credential: IVerifiableCredential = {
|
|
231
|
+
...(decoded.vc),
|
|
187
232
|
}
|
|
188
|
-
|
|
189
|
-
|
|
233
|
+
|
|
234
|
+
const maxSkewInMS = opts?.maxTimeSkewInMS !== undefined ? opts.maxTimeSkewInMS : 999
|
|
190
235
|
|
|
191
236
|
if (decoded.exp) {
|
|
192
237
|
const expDate = credential.expirationDate
|
|
193
238
|
const jwtExp = parseInt(decoded.exp.toString())
|
|
194
|
-
// fix seconds to
|
|
239
|
+
// fix seconds to millisecond for the date
|
|
195
240
|
const expDateAsStr = jwtExp < 9999999999 ? new Date(jwtExp * 1000).toISOString().replace(/\.000Z/, 'Z') : new Date(jwtExp).toISOString()
|
|
196
241
|
if (expDate && expDate !== expDateAsStr) {
|
|
197
|
-
|
|
242
|
+
const diff = Math.abs(new Date(expDateAsStr).getTime() - new Date(expDate).getTime())
|
|
243
|
+
if (!maxSkewInMS || diff > maxSkewInMS) {
|
|
244
|
+
throw new Error(`Inconsistent expiration dates between JWT claim (${expDateAsStr}) and VC value (${expDate})`)
|
|
245
|
+
}
|
|
198
246
|
}
|
|
199
247
|
credential.expirationDate = expDateAsStr
|
|
200
248
|
}
|
|
@@ -205,7 +253,10 @@ export class CredentialMapper {
|
|
|
205
253
|
// fix seconds to millisecs for the date
|
|
206
254
|
const nbfDateAsStr = jwtNbf < 9999999999 ? new Date(jwtNbf * 1000).toISOString().replace(/\.000Z/, 'Z') : new Date(jwtNbf).toISOString()
|
|
207
255
|
if (issuanceDate && issuanceDate !== nbfDateAsStr) {
|
|
208
|
-
|
|
256
|
+
const diff = Math.abs(new Date(nbfDateAsStr).getTime() - new Date(issuanceDate).getTime())
|
|
257
|
+
if (!maxSkewInMS || diff > maxSkewInMS) {
|
|
258
|
+
throw new Error(`Inconsistent issuance dates between JWT claim (${nbfDateAsStr}) and VC value (${issuanceDate})`)
|
|
259
|
+
}
|
|
209
260
|
}
|
|
210
261
|
credential.issuanceDate = nbfDateAsStr
|
|
211
262
|
}
|
|
@@ -222,8 +273,9 @@ export class CredentialMapper {
|
|
|
222
273
|
throw new Error(`Inconsistent issuers between JWT claim (${decoded.iss}) and VC value (${issuer.id})`)
|
|
223
274
|
}
|
|
224
275
|
}
|
|
276
|
+
} else {
|
|
277
|
+
credential.issuer = decoded.iss
|
|
225
278
|
}
|
|
226
|
-
credential.issuer = decoded.iss
|
|
227
279
|
}
|
|
228
280
|
|
|
229
281
|
if (decoded.sub) {
|
|
@@ -245,6 +297,105 @@ export class CredentialMapper {
|
|
|
245
297
|
}
|
|
246
298
|
credential.id = decoded.jti
|
|
247
299
|
}
|
|
300
|
+
|
|
248
301
|
return credential
|
|
249
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
|
+
}
|
|
351
|
+
return credential
|
|
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
|
+
}
|
|
250
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
|
@@ -53,6 +53,7 @@ export interface IProof {
|
|
|
53
53
|
domain?: string // A string restricting the (usage of a) proof to the domain and protects against replay attacks
|
|
54
54
|
proofValue?: string // One of any number of valid representations of proof values
|
|
55
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
|
|
56
57
|
nonce?: string // Similar to challenge. A nonce to protect against replay attacks, used in some ZKP proofs
|
|
57
58
|
requiredRevealStatements?: string[] // The parts of the proof that must be revealed in a derived proof
|
|
58
59
|
|
|
@@ -91,8 +92,8 @@ export type W3CVerifiableCredential = IVerifiableCredential | CompactJWT
|
|
|
91
92
|
export interface IPresentation {
|
|
92
93
|
id?: string
|
|
93
94
|
'@context': ICredentialContextType | ICredentialContextType[]
|
|
94
|
-
type
|
|
95
|
-
verifiableCredential
|
|
95
|
+
type?: string | string[]
|
|
96
|
+
verifiableCredential?: W3CVerifiableCredential[]
|
|
96
97
|
presentation_submission?: PresentationSubmission
|
|
97
98
|
holder?: string
|
|
98
99
|
|
|
@@ -124,11 +125,11 @@ export interface WrappedVerifiableCredential {
|
|
|
124
125
|
/**
|
|
125
126
|
* The claim format, typically used during exchange transport protocols
|
|
126
127
|
*/
|
|
127
|
-
format:
|
|
128
|
+
format: CredentialFormat
|
|
128
129
|
/**
|
|
129
|
-
* Internal stable representation of a Credential
|
|
130
|
+
* Internal stable representation of a Credential
|
|
130
131
|
*/
|
|
131
|
-
credential:
|
|
132
|
+
credential: IVerifiableCredential
|
|
132
133
|
}
|
|
133
134
|
|
|
134
135
|
export interface WrappedVerifiablePresentation {
|
|
@@ -147,7 +148,7 @@ export interface WrappedVerifiablePresentation {
|
|
|
147
148
|
/**
|
|
148
149
|
* The claim format, typically used during exchange transport protocols
|
|
149
150
|
*/
|
|
150
|
-
format:
|
|
151
|
+
format: PresentationFormat
|
|
151
152
|
/**
|
|
152
153
|
* Internal stable representation of a Presentation without proofs, created based on https://www.w3.org/TR/vc-data-model/#jwt-decoding
|
|
153
154
|
*/
|
|
@@ -166,14 +167,14 @@ export enum OriginalType {
|
|
|
166
167
|
|
|
167
168
|
export interface UniformVerifiablePresentation {
|
|
168
169
|
'@context': ICredentialContextType | ICredentialContextType[]
|
|
169
|
-
type: string[]
|
|
170
|
+
type: string | string[]
|
|
170
171
|
verifiableCredential: WrappedVerifiableCredential[]
|
|
171
172
|
presentation_submission?: PresentationSubmission
|
|
172
173
|
holder?: string
|
|
173
174
|
}
|
|
174
175
|
|
|
175
176
|
export interface JwtDecodedVerifiableCredential {
|
|
176
|
-
vc:
|
|
177
|
+
vc: IVerifiableCredential
|
|
177
178
|
exp: string
|
|
178
179
|
iss: string
|
|
179
180
|
nbf: string
|
|
@@ -194,8 +195,16 @@ export interface JwtDecodedVerifiablePresentation {
|
|
|
194
195
|
[x: string]: any
|
|
195
196
|
}
|
|
196
197
|
|
|
197
|
-
export type
|
|
198
|
+
export type CredentialFormat = 'jwt' | 'ldp' | 'jwt_vc' | 'ldp_vc' | string
|
|
199
|
+
export type PresentationFormat = 'jwt' | 'ldp' | 'jwt_vp' | 'ldp_vp' | string
|
|
200
|
+
export type ClaimFormat = CredentialFormat | PresentationFormat
|
|
198
201
|
|
|
199
202
|
export type OriginalVerifiableCredential = W3CVerifiableCredential | JwtDecodedVerifiableCredential
|
|
200
203
|
export type OriginalVerifiablePresentation = W3CVerifiablePresentation | JwtDecodedVerifiablePresentation
|
|
201
204
|
export type Original = OriginalVerifiablePresentation | OriginalVerifiableCredential
|
|
205
|
+
|
|
206
|
+
export const enum DocumentFormat {
|
|
207
|
+
JWT,
|
|
208
|
+
JSONLD,
|
|
209
|
+
EIP712,
|
|
210
|
+
}
|