@sphereon/oid4vci-client 0.8.2-next.12 → 0.8.2-next.26
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/AccessTokenClient.d.ts.map +1 -1
- package/dist/AccessTokenClient.js +8 -8
- package/dist/AccessTokenClient.js.map +1 -1
- package/dist/CredentialRequestClient.d.ts.map +1 -1
- package/dist/CredentialRequestClient.js +4 -5
- package/dist/CredentialRequestClient.js.map +1 -1
- package/dist/CredentialRequestClientBuilder.d.ts +6 -0
- package/dist/CredentialRequestClientBuilder.d.ts.map +1 -1
- package/dist/CredentialRequestClientBuilder.js +9 -0
- package/dist/CredentialRequestClientBuilder.js.map +1 -1
- package/dist/OpenID4VCIClient.d.ts +15 -5
- package/dist/OpenID4VCIClient.d.ts.map +1 -1
- package/dist/OpenID4VCIClient.js +99 -38
- package/dist/OpenID4VCIClient.js.map +1 -1
- package/dist/ProofOfPossessionBuilder.d.ts +3 -1
- package/dist/ProofOfPossessionBuilder.d.ts.map +1 -1
- package/dist/ProofOfPossessionBuilder.js +5 -0
- package/dist/ProofOfPossessionBuilder.js.map +1 -1
- package/dist/functions/ProofUtil.d.ts +2 -1
- package/dist/functions/ProofUtil.d.ts.map +1 -1
- package/dist/functions/ProofUtil.js +6 -4
- package/dist/functions/ProofUtil.js.map +1 -1
- package/lib/AccessTokenClient.ts +10 -8
- package/lib/CredentialRequestClient.ts +4 -5
- package/lib/CredentialRequestClientBuilder.ts +19 -0
- package/lib/OpenID4VCIClient.ts +130 -38
- package/lib/ProofOfPossessionBuilder.ts +8 -0
- package/lib/__tests__/CredentialRequestClient.spec.ts +9 -2
- package/lib/__tests__/EBSIE2E.spec.test.ts +138 -0
- package/lib/__tests__/MetadataClient.spec.ts +4 -1
- package/lib/__tests__/OpenID4VCIClient.spec.ts +5 -0
- package/lib/__tests__/SdJwt.spec.ts +161 -0
- package/lib/__tests__/data/VciDataFixtures.ts +1 -1
- package/lib/functions/ProofUtil.ts +18 -4
- package/package.json +6 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessTokenClient.d.ts","sourceRoot":"","sources":["../lib/AccessTokenClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EAEnB,uBAAuB,EAEvB,gBAAgB,EAGhB,UAAU,EACV,cAAc,EAKf,MAAM,0BAA0B,CAAC;AASlC,qBAAa,iBAAiB;IACf,kBAAkB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"AccessTokenClient.d.ts","sourceRoot":"","sources":["../lib/AccessTokenClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EAEnB,uBAAuB,EAEvB,gBAAgB,EAGhB,UAAU,EACV,cAAc,EAKf,MAAM,0BAA0B,CAAC;AASlC,qBAAa,iBAAiB;IACf,kBAAkB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;IA+B9F,8BAA8B,CAAC,EAC1C,kBAAkB,EAClB,aAAa,EACb,QAAQ,EACR,MAAM,EACN,UAAU,GACX,EAAE;QACD,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;QAC5B,MAAM,CAAC,EAAE,uBAAuB,CAAC;QACjC,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB,GAAG,OAAO,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;IAgBnC,wBAAwB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoChG,OAAO,CAAC,4BAA4B;IAMpC,OAAO,CAAC,4BAA4B;IAMpC,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,+BAA+B;IAOvC,OAAO,CAAC,0BAA0B;IAOlC,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,yBAAyB;IAOjC,OAAO,CAAC,QAAQ;YAeF,YAAY;WAIZ,iBAAiB,CAAC,EAC9B,MAAM,EACN,UAAU,EACV,QAAQ,GACT,EAAE;QACD,MAAM,CAAC,EAAE,uBAAuB,CAAC;QACjC,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;KAC7B,GAAG,MAAM;IAuBV,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAUnC,OAAO,CAAC,qBAAqB;CAI9B"}
|
|
@@ -24,9 +24,9 @@ class AccessTokenClient {
|
|
|
24
24
|
var _a;
|
|
25
25
|
return __awaiter(this, void 0, void 0, function* () {
|
|
26
26
|
const { asOpts, pin, codeVerifier, code, redirectUri, metadata } = opts;
|
|
27
|
-
const credentialOffer = yield (0, oid4vci_common_1.assertedUniformCredentialOffer)(opts.credentialOffer);
|
|
28
|
-
const isPinRequired = this.isPinRequiredValue(credentialOffer.credential_offer);
|
|
29
|
-
const issuer = (_a =
|
|
27
|
+
const credentialOffer = opts.credentialOffer ? yield (0, oid4vci_common_1.assertedUniformCredentialOffer)(opts.credentialOffer) : undefined;
|
|
28
|
+
const isPinRequired = credentialOffer && this.isPinRequiredValue(credentialOffer.credential_offer);
|
|
29
|
+
const issuer = (_a = opts.credentialIssuer) !== null && _a !== void 0 ? _a : (credentialOffer ? (0, oid4vci_common_1.getIssuerFromCredentialOfferPayload)(credentialOffer.credential_offer) : metadata === null || metadata === void 0 ? void 0 : metadata.issuer);
|
|
30
30
|
if (!issuer) {
|
|
31
31
|
throw Error('Issuer required at this point');
|
|
32
32
|
}
|
|
@@ -68,12 +68,12 @@ class AccessTokenClient {
|
|
|
68
68
|
var _a, _b;
|
|
69
69
|
return __awaiter(this, void 0, void 0, function* () {
|
|
70
70
|
const { asOpts, pin, codeVerifier, code, redirectUri } = opts;
|
|
71
|
-
const credentialOfferRequest = yield (0, oid4vci_common_1.toUniformCredentialOfferRequest)(opts.credentialOffer);
|
|
71
|
+
const credentialOfferRequest = opts.credentialOffer ? yield (0, oid4vci_common_1.toUniformCredentialOfferRequest)(opts.credentialOffer) : undefined;
|
|
72
72
|
const request = {};
|
|
73
73
|
if (asOpts === null || asOpts === void 0 ? void 0 : asOpts.clientId) {
|
|
74
74
|
request.client_id = asOpts.clientId;
|
|
75
75
|
}
|
|
76
|
-
if (credentialOfferRequest.supportedFlows.includes(oid4vci_common_1.AuthzFlowType.PRE_AUTHORIZED_CODE_FLOW)) {
|
|
76
|
+
if (credentialOfferRequest === null || credentialOfferRequest === void 0 ? void 0 : credentialOfferRequest.supportedFlows.includes(oid4vci_common_1.AuthzFlowType.PRE_AUTHORIZED_CODE_FLOW)) {
|
|
77
77
|
this.assertNumericPin(this.isPinRequiredValue(credentialOfferRequest.credential_offer), pin);
|
|
78
78
|
request.user_pin = pin;
|
|
79
79
|
request.grant_type = oid4vci_common_1.GrantTypes.PRE_AUTHORIZED_CODE;
|
|
@@ -82,7 +82,7 @@ class AccessTokenClient {
|
|
|
82
82
|
(_b = (_a = credentialOfferRequest === null || credentialOfferRequest === void 0 ? void 0 : credentialOfferRequest.credential_offer.grants) === null || _a === void 0 ? void 0 : _a['urn:ietf:params:oauth:grant-type:pre-authorized_code']) === null || _b === void 0 ? void 0 : _b[oid4vci_common_1.PRE_AUTH_CODE_LITERAL];
|
|
83
83
|
return request;
|
|
84
84
|
}
|
|
85
|
-
if (credentialOfferRequest.supportedFlows.includes(oid4vci_common_1.AuthzFlowType.AUTHORIZATION_CODE_FLOW)) {
|
|
85
|
+
if (!credentialOfferRequest || credentialOfferRequest.supportedFlows.includes(oid4vci_common_1.AuthzFlowType.AUTHORIZATION_CODE_FLOW)) {
|
|
86
86
|
request.grant_type = oid4vci_common_1.GrantTypes.AUTHORIZATION_CODE;
|
|
87
87
|
request.code = code;
|
|
88
88
|
request.redirect_uri = redirectUri;
|
|
@@ -207,8 +207,8 @@ class AccessTokenClient {
|
|
|
207
207
|
return `${scheme ? scheme + '://' : 'https://'}${hostname}${endpoint}`;
|
|
208
208
|
}
|
|
209
209
|
throwNotSupportedFlow() {
|
|
210
|
-
debug(`Only pre-authorized
|
|
211
|
-
throw new Error('Only pre-authorized-code
|
|
210
|
+
debug(`Only pre-authorized or authorization code flows supported.`);
|
|
211
|
+
throw new Error('Only pre-authorized-code or authorization code flows are supported');
|
|
212
212
|
}
|
|
213
213
|
}
|
|
214
214
|
exports.AccessTokenClient = AccessTokenClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessTokenClient.js","sourceRoot":"","sources":["../lib/AccessTokenClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6DAgBkC;AAClC,mDAAkD;AAClD,kDAA0B;AAE1B,qDAAkD;AAClD,2CAAyD;AAEzD,MAAM,KAAK,GAAG,IAAA,eAAK,EAAC,wBAAwB,CAAC,CAAC;AAE9C,MAAa,iBAAiB;IACf,kBAAkB,CAAC,IAA4B;;;YAC1D,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;YAExE,MAAM,eAAe,GAAG,MAAM,IAAA,+CAA8B,EAAC,IAAI,CAAC,eAAe,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"AccessTokenClient.js","sourceRoot":"","sources":["../lib/AccessTokenClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CredentialRequestClient.d.ts","sourceRoot":"","sources":["../lib/CredentialRequestClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAGlB,uBAAuB,EACvB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,wBAAwB,EAEzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAKtE,MAAM,WAAW,qBAAqB;IACpC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,gBAAgB,GAAG,uBAAuB,CAAC;IACpD,KAAK,EAAE,iBAAiB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,iBAAiB,CAAC;CAC5B;AAED,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAiC;IAExE,IAAI,qBAAqB,IAAI,qBAAqB,CAEjD;IAEM,qBAAqB,IAAI,MAAM;gBAInB,OAAO,EAAE,8BAA8B;IAI7C,4BAA4B,CAAC,MAAM,EAAE,IAAI,EAAE;QACtD,UAAU,EAAE,wBAAwB,CAAC,MAAM,CAAC,GAAG,iBAAiB,CAAC;QACjE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QACpC,MAAM,CAAC,EAAE,gBAAgB,GAAG,uBAAuB,CAAC;KACrD,GAAG,OAAO,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;IAOlC,8BAA8B,CAAC,cAAc,EAAE,wBAAwB,GAAG,OAAO,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"CredentialRequestClient.d.ts","sourceRoot":"","sources":["../lib/CredentialRequestClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAGlB,uBAAuB,EACvB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,wBAAwB,EAEzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAKtE,MAAM,WAAW,qBAAqB;IACpC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,gBAAgB,GAAG,uBAAuB,CAAC;IACpD,KAAK,EAAE,iBAAiB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,iBAAiB,CAAC;CAC5B;AAED,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAiC;IAExE,IAAI,qBAAqB,IAAI,qBAAqB,CAEjD;IAEM,qBAAqB,IAAI,MAAM;gBAInB,OAAO,EAAE,8BAA8B;IAI7C,4BAA4B,CAAC,MAAM,EAAE,IAAI,EAAE;QACtD,UAAU,EAAE,wBAAwB,CAAC,MAAM,CAAC,GAAG,iBAAiB,CAAC;QACjE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QACpC,MAAM,CAAC,EAAE,gBAAgB,GAAG,uBAAuB,CAAC;KACrD,GAAG,OAAO,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;IAOlC,8BAA8B,CAAC,cAAc,EAAE,wBAAwB,GAAG,OAAO,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;IAerH,uBAAuB,CAAC,MAAM,EAAE,IAAI,EAAE;QACjD,UAAU,EAAE,wBAAwB,CAAC,MAAM,CAAC,GAAG,iBAAiB,CAAC;QACjE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QACpC,MAAM,CAAC,EAAE,gBAAgB,GAAG,uBAAuB,CAAC;QACpD,OAAO,EAAE,iBAAiB,CAAC;KAC5B,GAAG,OAAO,CAAC,wBAAwB,CAAC;IA0DrC,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,aAAa;CAGtB"}
|
|
@@ -44,9 +44,10 @@ class CredentialRequestClient {
|
|
|
44
44
|
throw new Error(oid4vci_common_1.URL_NOT_VALID);
|
|
45
45
|
}
|
|
46
46
|
debug(`Acquiring credential(s) from: ${credentialEndpoint}`);
|
|
47
|
+
debug(`request\n: ${JSON.stringify(request, null, 2)}`);
|
|
47
48
|
const requestToken = this.credentialRequestOpts.token;
|
|
48
49
|
const response = yield (0, functions_1.post)(credentialEndpoint, JSON.stringify(request), { bearerToken: requestToken });
|
|
49
|
-
debug(`Credential endpoint ${credentialEndpoint} response:\r\n${response}`);
|
|
50
|
+
debug(`Credential endpoint ${credentialEndpoint} response:\r\n${JSON.stringify(response, null, 2)}`);
|
|
50
51
|
return response;
|
|
51
52
|
});
|
|
52
53
|
}
|
|
@@ -74,7 +75,7 @@ class CredentialRequestClient {
|
|
|
74
75
|
? yield ProofOfPossessionBuilder_1.ProofOfPossessionBuilder.fromProof(proofInput, opts.version).build()
|
|
75
76
|
: yield proofInput.build();
|
|
76
77
|
// TODO: we should move format specific logic
|
|
77
|
-
if (format === 'jwt_vc_json') {
|
|
78
|
+
if (format === 'jwt_vc_json' || format === 'jwt_vc') {
|
|
78
79
|
return {
|
|
79
80
|
types,
|
|
80
81
|
format,
|
|
@@ -99,9 +100,7 @@ class CredentialRequestClient {
|
|
|
99
100
|
return {
|
|
100
101
|
format,
|
|
101
102
|
proof,
|
|
102
|
-
|
|
103
|
-
vct: types[0],
|
|
104
|
-
},
|
|
103
|
+
vct: types[0],
|
|
105
104
|
};
|
|
106
105
|
}
|
|
107
106
|
throw new Error(`Unsupported format: ${format}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CredentialRequestClient.js","sourceRoot":"","sources":["../lib/CredentialRequestClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6DAUkC;AAElC,kDAA0B;AAG1B,yEAAsE;AACtE,2CAA+C;AAE/C,MAAM,KAAK,GAAG,IAAA,eAAK,EAAC,6BAA6B,CAAC,CAAC;AAWnD,MAAa,uBAAuB;IAGlC,IAAI,qBAAqB;QACvB,OAAO,IAAI,CAAC,sBAA+C,CAAC;IAC9D,CAAC;IAEM,qBAAqB;QAC1B,OAAO,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC;IACvD,CAAC;IAED,YAAmB,OAAuC;QACxD,IAAI,CAAC,sBAAsB,qBAAQ,OAAO,CAAE,CAAC;IAC/C,CAAC;IAEY,4BAA4B,CAAS,IAIjD;;YACC,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;YAErD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACrH,OAAO,MAAM,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;QAC5D,CAAC;KAAA;IAEY,8BAA8B,CAAC,cAAwC;;YAClF,MAAM,OAAO,GAAG,IAAA,+CAA8B,EAAC,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/E,MAAM,kBAAkB,GAAW,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC;YACjF,IAAI,CAAC,IAAA,sBAAU,EAAC,kBAAkB,CAAC,EAAE;gBACnC,KAAK,CAAC,gCAAgC,kBAAkB,EAAE,CAAC,CAAC;gBAC5D,MAAM,IAAI,KAAK,CAAC,8BAAa,CAAC,CAAC;aAChC;YACD,KAAK,CAAC,iCAAiC,kBAAkB,EAAE,CAAC,CAAC;YAC7D,MAAM,YAAY,GAAW,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;YAC9D,MAAM,QAAQ,GAAuC,MAAM,IAAA,gBAAI,EAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC;YAC5I,KAAK,CAAC,uBAAuB,kBAAkB,iBAAiB,QAAQ,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"CredentialRequestClient.js","sourceRoot":"","sources":["../lib/CredentialRequestClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,12 @@ export declare class CredentialRequestClientBuilder {
|
|
|
7
7
|
format?: CredentialFormat | OID4VCICredentialFormat;
|
|
8
8
|
token?: string;
|
|
9
9
|
version?: OpenId4VCIVersion;
|
|
10
|
+
static fromCredentialIssuer({ credentialIssuer, metadata, version, credentialTypes, }: {
|
|
11
|
+
credentialIssuer: string;
|
|
12
|
+
metadata?: EndpointMetadata;
|
|
13
|
+
version?: OpenId4VCIVersion;
|
|
14
|
+
credentialTypes: string | string[];
|
|
15
|
+
}): CredentialRequestClientBuilder;
|
|
10
16
|
static fromURI({ uri, metadata }: {
|
|
11
17
|
uri: string;
|
|
12
18
|
metadata?: EndpointMetadata;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CredentialRequestClientBuilder.d.ts","sourceRoot":"","sources":["../lib/CredentialRequestClientBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EAExB,iCAAiC,EAEjC,gBAAgB,EAGhB,uBAAuB,EACvB,iBAAiB,EACjB,6BAA6B,EAC9B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,qBAAa,8BAA8B;IACzC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,EAAE,CAAM;IAC/B,MAAM,CAAC,EAAE,gBAAgB,GAAG,uBAAuB,CAAC;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"CredentialRequestClientBuilder.d.ts","sourceRoot":"","sources":["../lib/CredentialRequestClientBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EAExB,iCAAiC,EAEjC,gBAAgB,EAGhB,uBAAuB,EACvB,iBAAiB,EACjB,6BAA6B,EAC9B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,qBAAa,8BAA8B;IACzC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,EAAE,CAAM;IAC/B,MAAM,CAAC,EAAE,gBAAgB,GAAG,uBAAuB,CAAC;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,iBAAiB,CAAC;WAEd,oBAAoB,CAAC,EACjC,gBAAgB,EAChB,QAAQ,EACR,OAAO,EACP,eAAe,GAChB,EAAE;QACD,gBAAgB,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;QAC5B,OAAO,CAAC,EAAE,iBAAiB,CAAC;QAC5B,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;KACpC,GAAG,8BAA8B;WASd,OAAO,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAA;KAAE,GAAG,OAAO,CAAC,8BAA8B,CAAC;WAKvH,0BAA0B,CAAC,IAAI,EAAE;QAC7C,OAAO,EAAE,6BAA6B,CAAC;QACvC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,iBAAiB,CAAC;QAC5B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;KAC7B,GAAG,8BAA8B;WAmBpB,mBAAmB,CAAC,EAChC,eAAe,EACf,QAAQ,GACT,EAAE;QACD,eAAe,EAAE,iCAAiC,CAAC;QACnD,QAAQ,CAAC,EAAE,gBAAgB,CAAC;KAC7B,GAAG,8BAA8B;IAQ3B,kCAAkC,CAAC,QAAQ,EAAE,wBAAwB,GAAG,8BAA8B;IAKtG,sBAAsB,CAAC,kBAAkB,EAAE,MAAM,GAAG,8BAA8B;IAKlF,kBAAkB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,8BAA8B;IAKtF,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,uBAAuB,GAAG,8BAA8B;IAK9F,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,8BAA8B;IAK9D,qBAAqB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,8BAA8B;IAKpF,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,8BAA8B;IAKvE,KAAK,IAAI,uBAAuB;CAMxC"}
|
|
@@ -17,6 +17,15 @@ class CredentialRequestClientBuilder {
|
|
|
17
17
|
constructor() {
|
|
18
18
|
this.credentialTypes = [];
|
|
19
19
|
}
|
|
20
|
+
static fromCredentialIssuer({ credentialIssuer, metadata, version, credentialTypes, }) {
|
|
21
|
+
var _a;
|
|
22
|
+
const issuer = credentialIssuer;
|
|
23
|
+
const builder = new CredentialRequestClientBuilder();
|
|
24
|
+
builder.withVersion(version !== null && version !== void 0 ? version : oid4vci_common_1.OpenId4VCIVersion.VER_1_0_11);
|
|
25
|
+
builder.withCredentialEndpoint((_a = metadata === null || metadata === void 0 ? void 0 : metadata.credential_endpoint) !== null && _a !== void 0 ? _a : (issuer.endsWith('/') ? `${issuer}credential` : `${issuer}/credential`));
|
|
26
|
+
builder.withCredentialType(credentialTypes);
|
|
27
|
+
return builder;
|
|
28
|
+
}
|
|
20
29
|
static fromURI({ uri, metadata }) {
|
|
21
30
|
return __awaiter(this, void 0, void 0, function* () {
|
|
22
31
|
const offer = yield CredentialOfferClient_1.CredentialOfferClient.fromURI(uri);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CredentialRequestClientBuilder.js","sourceRoot":"","sources":["../lib/CredentialRequestClientBuilder.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6DAYkC;AAGlC,mEAAgE;AAChE,uEAAoE;AAEpE,MAAa,8BAA8B;IAA3C;QAEE,oBAAe,GAAa,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"CredentialRequestClientBuilder.js","sourceRoot":"","sources":["../lib/CredentialRequestClientBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AccessTokenResponse, Alg, AuthzFlowType, CodeChallengeMethod, CredentialOfferRequestWithBaseUrl, CredentialResponse, CredentialSupported, EndpointMetadataResult, OID4VCICredentialFormat, OpenId4VCIVersion, ProofOfPossessionCallbacks } from '@sphereon/oid4vci-common';
|
|
1
|
+
import { AccessTokenResponse, Alg, AuthzFlowType, CodeChallengeMethod, CredentialOfferRequestWithBaseUrl, CredentialResponse, CredentialSupported, EndpointMetadataResult, JWK, OID4VCICredentialFormat, OpenId4VCIVersion, ProofOfPossessionCallbacks } from '@sphereon/oid4vci-common';
|
|
2
2
|
import { CredentialFormat } from '@sphereon/ssi-types';
|
|
3
3
|
interface AuthDetails {
|
|
4
4
|
type: 'openid_credential' | string;
|
|
@@ -8,19 +8,28 @@ interface AuthDetails {
|
|
|
8
8
|
}
|
|
9
9
|
interface AuthRequestOpts {
|
|
10
10
|
codeChallenge: string;
|
|
11
|
-
codeChallengeMethod
|
|
11
|
+
codeChallengeMethod?: CodeChallengeMethod;
|
|
12
12
|
authorizationDetails?: AuthDetails | AuthDetails[];
|
|
13
13
|
redirectUri: string;
|
|
14
14
|
scope?: string;
|
|
15
15
|
}
|
|
16
16
|
export declare class OpenID4VCIClient {
|
|
17
|
-
private readonly _credentialOffer
|
|
17
|
+
private readonly _credentialOffer?;
|
|
18
|
+
private _credentialIssuer;
|
|
18
19
|
private _clientId?;
|
|
19
20
|
private _kid;
|
|
21
|
+
private _jwk;
|
|
20
22
|
private _alg;
|
|
21
23
|
private _endpointMetadata;
|
|
22
24
|
private _accessTokenResponse;
|
|
23
25
|
private constructor();
|
|
26
|
+
static fromCredentialIssuer({ kid, alg, retrieveServerMetadata, clientId, credentialIssuer, }: {
|
|
27
|
+
credentialIssuer: string;
|
|
28
|
+
kid?: string;
|
|
29
|
+
alg?: Alg | string;
|
|
30
|
+
retrieveServerMetadata?: boolean;
|
|
31
|
+
clientId?: string;
|
|
32
|
+
}): Promise<OpenID4VCIClient>;
|
|
24
33
|
static fromURI({ uri, kid, alg, retrieveServerMetadata, clientId, resolveOfferUri, }: {
|
|
25
34
|
uri: string;
|
|
26
35
|
kid?: string;
|
|
@@ -41,18 +50,19 @@ export declare class OpenID4VCIClient {
|
|
|
41
50
|
code?: string;
|
|
42
51
|
redirectUri?: string;
|
|
43
52
|
}): Promise<AccessTokenResponse>;
|
|
44
|
-
acquireCredentials({ credentialTypes, proofCallbacks, format, kid, alg, jti, }: {
|
|
53
|
+
acquireCredentials({ credentialTypes, proofCallbacks, format, kid, jwk, alg, jti, }: {
|
|
45
54
|
credentialTypes: string | string[];
|
|
46
55
|
proofCallbacks: ProofOfPossessionCallbacks<any>;
|
|
47
56
|
format?: CredentialFormat | OID4VCICredentialFormat;
|
|
48
57
|
kid?: string;
|
|
58
|
+
jwk?: JWK;
|
|
49
59
|
alg?: Alg | string;
|
|
50
60
|
jti?: string;
|
|
51
61
|
}): Promise<CredentialResponse>;
|
|
52
62
|
getCredentialsSupported(restrictToInitiationTypes: boolean, format?: (OID4VCICredentialFormat | string) | (OID4VCICredentialFormat | string)[]): CredentialSupported[];
|
|
53
63
|
getCredentialOfferTypes(): string[][];
|
|
54
64
|
issuerSupportedFlowTypes(): AuthzFlowType[];
|
|
55
|
-
get credentialOffer(): CredentialOfferRequestWithBaseUrl;
|
|
65
|
+
get credentialOffer(): CredentialOfferRequestWithBaseUrl | undefined;
|
|
56
66
|
version(): OpenId4VCIVersion;
|
|
57
67
|
get endpointMetadata(): EndpointMetadataResult;
|
|
58
68
|
get kid(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenID4VCIClient.d.ts","sourceRoot":"","sources":["../lib/OpenID4VCIClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,GAAG,EACH,aAAa,EACb,mBAAmB,EAEnB,iCAAiC,EACjC,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"OpenID4VCIClient.d.ts","sourceRoot":"","sources":["../lib/OpenID4VCIClient.ts"],"names":[],"mappings":"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"}
|
package/dist/OpenID4VCIClient.js
CHANGED
|
@@ -14,7 +14,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.OpenID4VCIClient = void 0;
|
|
16
16
|
const oid4vci_common_1 = require("@sphereon/oid4vci-common");
|
|
17
|
-
const IssuerMetadataUtils_1 = require("@sphereon/oid4vci-common/dist/functions/IssuerMetadataUtils");
|
|
18
17
|
const debug_1 = __importDefault(require("debug"));
|
|
19
18
|
const AccessTokenClient_1 = require("./AccessTokenClient");
|
|
20
19
|
const CredentialOfferClient_1 = require("./CredentialOfferClient");
|
|
@@ -24,15 +23,34 @@ const ProofOfPossessionBuilder_1 = require("./ProofOfPossessionBuilder");
|
|
|
24
23
|
const functions_1 = require("./functions");
|
|
25
24
|
const debug = (0, debug_1.default)('sphereon:oid4vci');
|
|
26
25
|
class OpenID4VCIClient {
|
|
27
|
-
constructor(credentialOffer, kid, alg,
|
|
26
|
+
constructor({ credentialOffer, clientId, kid, alg, credentialIssuer, }) {
|
|
28
27
|
this._credentialOffer = credentialOffer;
|
|
28
|
+
const issuer = credentialIssuer !== null && credentialIssuer !== void 0 ? credentialIssuer : (credentialOffer ? (0, oid4vci_common_1.getIssuerFromCredentialOfferPayload)(credentialOffer.credential_offer) : undefined);
|
|
29
|
+
if (!issuer) {
|
|
30
|
+
throw Error('No credential issuer supplied or deduced from offer');
|
|
31
|
+
}
|
|
32
|
+
this._credentialIssuer = issuer;
|
|
29
33
|
this._kid = kid;
|
|
30
34
|
this._alg = alg;
|
|
31
35
|
this._clientId = clientId;
|
|
32
36
|
}
|
|
37
|
+
static fromCredentialIssuer({ kid, alg, retrieveServerMetadata, clientId, credentialIssuer, }) {
|
|
38
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
const client = new OpenID4VCIClient({ kid, alg, clientId, credentialIssuer });
|
|
40
|
+
if (retrieveServerMetadata === undefined || retrieveServerMetadata) {
|
|
41
|
+
yield client.retrieveServerMetadata();
|
|
42
|
+
}
|
|
43
|
+
return client;
|
|
44
|
+
});
|
|
45
|
+
}
|
|
33
46
|
static fromURI({ uri, kid, alg, retrieveServerMetadata, clientId, resolveOfferUri, }) {
|
|
34
47
|
return __awaiter(this, void 0, void 0, function* () {
|
|
35
|
-
const client = new OpenID4VCIClient(
|
|
48
|
+
const client = new OpenID4VCIClient({
|
|
49
|
+
credentialOffer: yield CredentialOfferClient_1.CredentialOfferClient.fromURI(uri, { resolve: resolveOfferUri }),
|
|
50
|
+
kid,
|
|
51
|
+
alg,
|
|
52
|
+
clientId,
|
|
53
|
+
});
|
|
36
54
|
if (retrieveServerMetadata === undefined || retrieveServerMetadata) {
|
|
37
55
|
yield client.retrieveServerMetadata();
|
|
38
56
|
}
|
|
@@ -43,17 +61,37 @@ class OpenID4VCIClient {
|
|
|
43
61
|
return __awaiter(this, void 0, void 0, function* () {
|
|
44
62
|
this.assertIssuerData();
|
|
45
63
|
if (!this._endpointMetadata) {
|
|
46
|
-
|
|
64
|
+
if (this.credentialOffer) {
|
|
65
|
+
this._endpointMetadata = yield MetadataClient_1.MetadataClient.retrieveAllMetadataFromCredentialOffer(this.credentialOffer);
|
|
66
|
+
}
|
|
67
|
+
else if (this._credentialIssuer) {
|
|
68
|
+
this._endpointMetadata = yield MetadataClient_1.MetadataClient.retrieveAllMetadata(this._credentialIssuer);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
throw Error(`Cannot retrieve issuer metadata without either a credential offer, or issuer value`);
|
|
72
|
+
}
|
|
47
73
|
}
|
|
48
74
|
return this.endpointMetadata;
|
|
49
75
|
});
|
|
50
76
|
}
|
|
77
|
+
// todo: Unify this method with the par method
|
|
51
78
|
createAuthorizationRequestUrl({ codeChallengeMethod, codeChallenge, authorizationDetails, redirectUri, scope }) {
|
|
52
|
-
var _a;
|
|
79
|
+
var _a, _b;
|
|
53
80
|
// Scope and authorization_details can be used in the same authorization request
|
|
54
81
|
// https://datatracker.ietf.org/doc/html/draft-ietf-oauth-rar-23#name-relationship-to-scope-param
|
|
55
82
|
if (!scope && !authorizationDetails) {
|
|
56
|
-
|
|
83
|
+
if (!this.credentialOffer) {
|
|
84
|
+
throw Error('Please provide a scope or authorization_details');
|
|
85
|
+
}
|
|
86
|
+
const creds = this.credentialOffer.credential_offer.credentials;
|
|
87
|
+
authorizationDetails = creds
|
|
88
|
+
.flatMap((cred) => (typeof cred === 'string' ? this.getCredentialsSupported(true) : cred))
|
|
89
|
+
.map((cred) => {
|
|
90
|
+
return Object.assign(Object.assign({}, cred), { type: 'openid_credential', locations: [this._credentialIssuer], format: cred.format });
|
|
91
|
+
});
|
|
92
|
+
if (authorizationDetails.length === 0) {
|
|
93
|
+
throw Error(`Could not create authorization details from credential offer. Please pass in explicit details`);
|
|
94
|
+
}
|
|
57
95
|
}
|
|
58
96
|
// todo: Probably can go with current logic in MetadataClient who will always set the authorization_endpoint when found
|
|
59
97
|
// handling this because of the support for v1_0-08
|
|
@@ -71,7 +109,7 @@ class OpenID4VCIClient {
|
|
|
71
109
|
}
|
|
72
110
|
const queryObj = {
|
|
73
111
|
response_type: oid4vci_common_1.ResponseType.AUTH_CODE,
|
|
74
|
-
code_challenge_method: codeChallengeMethod,
|
|
112
|
+
code_challenge_method: codeChallengeMethod !== null && codeChallengeMethod !== void 0 ? codeChallengeMethod : oid4vci_common_1.CodeChallengeMethod.SHA256,
|
|
75
113
|
code_challenge: codeChallenge,
|
|
76
114
|
authorization_details: JSON.stringify(this.handleAuthorizationDetails(authorizationDetails)),
|
|
77
115
|
redirect_uri: redirectUri,
|
|
@@ -80,7 +118,7 @@ class OpenID4VCIClient {
|
|
|
80
118
|
if (this.clientId) {
|
|
81
119
|
queryObj['client_id'] = this.clientId;
|
|
82
120
|
}
|
|
83
|
-
if (this.credentialOffer.issuerState) {
|
|
121
|
+
if ((_b = this.credentialOffer) === null || _b === void 0 ? void 0 : _b.issuerState) {
|
|
84
122
|
queryObj['issuer_state'] = this.credentialOffer.issuerState;
|
|
85
123
|
}
|
|
86
124
|
return (0, functions_1.convertJsonToURI)(queryObj, {
|
|
@@ -90,8 +128,9 @@ class OpenID4VCIClient {
|
|
|
90
128
|
// We do not add the version here, as this always needs to be form encoded
|
|
91
129
|
});
|
|
92
130
|
}
|
|
131
|
+
// todo: Unify this method with the create auth request url method
|
|
93
132
|
acquirePushedAuthorizationRequestURI({ codeChallengeMethod, codeChallenge, authorizationDetails, redirectUri, scope, }) {
|
|
94
|
-
var _a, _b;
|
|
133
|
+
var _a, _b, _c;
|
|
95
134
|
return __awaiter(this, void 0, void 0, function* () {
|
|
96
135
|
// Scope and authorization_details can be used in the same authorization request
|
|
97
136
|
// https://datatracker.ietf.org/doc/html/draft-ietf-oauth-rar-23#name-relationship-to-scope-param
|
|
@@ -114,7 +153,7 @@ class OpenID4VCIClient {
|
|
|
114
153
|
}
|
|
115
154
|
const queryObj = {
|
|
116
155
|
response_type: oid4vci_common_1.ResponseType.AUTH_CODE,
|
|
117
|
-
code_challenge_method: codeChallengeMethod,
|
|
156
|
+
code_challenge_method: codeChallengeMethod !== null && codeChallengeMethod !== void 0 ? codeChallengeMethod : oid4vci_common_1.CodeChallengeMethod.SHA256,
|
|
118
157
|
code_challenge: codeChallenge,
|
|
119
158
|
authorization_details: JSON.stringify(this.handleAuthorizationDetails(authorizationDetails)),
|
|
120
159
|
redirect_uri: redirectUri,
|
|
@@ -123,11 +162,11 @@ class OpenID4VCIClient {
|
|
|
123
162
|
if (this.clientId) {
|
|
124
163
|
queryObj['client_id'] = this.clientId;
|
|
125
164
|
}
|
|
126
|
-
if (this.credentialOffer.issuerState) {
|
|
165
|
+
if ((_b = this.credentialOffer) === null || _b === void 0 ? void 0 : _b.issuerState) {
|
|
127
166
|
queryObj['issuer_state'] = this.credentialOffer.issuerState;
|
|
128
167
|
}
|
|
129
168
|
const response = yield (0, functions_1.formPost)(parEndpoint, new URLSearchParams(queryObj));
|
|
130
|
-
return (0, functions_1.convertJsonToURI)({ request_uri: (
|
|
169
|
+
return (0, functions_1.convertJsonToURI)({ request_uri: (_c = response.successBody) === null || _c === void 0 ? void 0 : _c.request_uri }, {
|
|
131
170
|
baseUrl: this._endpointMetadata.credentialIssuerMetadata.authorization_endpoint,
|
|
132
171
|
uriTypeProperties: ['request_uri'],
|
|
133
172
|
mode: oid4vci_common_1.JsonURIMode.X_FORM_WWW_URLENCODED,
|
|
@@ -176,6 +215,7 @@ class OpenID4VCIClient {
|
|
|
176
215
|
const response = yield accessTokenClient.acquireAccessToken({
|
|
177
216
|
credentialOffer: this.credentialOffer,
|
|
178
217
|
metadata: this.endpointMetadata,
|
|
218
|
+
credentialIssuer: this.getIssuer(),
|
|
179
219
|
pin,
|
|
180
220
|
codeVerifier,
|
|
181
221
|
code,
|
|
@@ -195,34 +235,45 @@ class OpenID4VCIClient {
|
|
|
195
235
|
return this.accessTokenResponse;
|
|
196
236
|
});
|
|
197
237
|
}
|
|
198
|
-
acquireCredentials({ credentialTypes, proofCallbacks, format, kid, alg, jti, }) {
|
|
238
|
+
acquireCredentials({ credentialTypes, proofCallbacks, format, kid, jwk, alg, jti, }) {
|
|
199
239
|
var _a, _b, _c;
|
|
200
240
|
return __awaiter(this, void 0, void 0, function* () {
|
|
201
|
-
if (
|
|
202
|
-
|
|
241
|
+
if ([jwk, kid].filter((v) => v !== undefined).length > 1) {
|
|
242
|
+
throw new Error(oid4vci_common_1.KID_JWK_X5C_ERROR + `. jwk: ${jwk !== undefined}, kid: ${kid !== undefined}`);
|
|
203
243
|
}
|
|
204
|
-
if (
|
|
244
|
+
if (alg)
|
|
245
|
+
this._alg = alg;
|
|
246
|
+
if (jwk)
|
|
247
|
+
this._jwk = jwk;
|
|
248
|
+
if (kid)
|
|
205
249
|
this._kid = kid;
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
250
|
+
const requestBuilder = this.credentialOffer
|
|
251
|
+
? CredentialRequestClientBuilder_1.CredentialRequestClientBuilder.fromCredentialOffer({
|
|
252
|
+
credentialOffer: this.credentialOffer,
|
|
253
|
+
metadata: this.endpointMetadata,
|
|
254
|
+
})
|
|
255
|
+
: CredentialRequestClientBuilder_1.CredentialRequestClientBuilder.fromCredentialIssuer({
|
|
256
|
+
credentialIssuer: this.getIssuer(),
|
|
257
|
+
credentialTypes,
|
|
258
|
+
metadata: this.endpointMetadata,
|
|
259
|
+
version: this.version(),
|
|
260
|
+
});
|
|
211
261
|
requestBuilder.withTokenFromResponse(this.accessTokenResponse);
|
|
212
262
|
if ((_a = this.endpointMetadata) === null || _a === void 0 ? void 0 : _a.credentialIssuerMetadata) {
|
|
213
263
|
const metadata = this.endpointMetadata.credentialIssuerMetadata;
|
|
214
|
-
const types = Array.isArray(credentialTypes) ? credentialTypes.sort() : [credentialTypes];
|
|
264
|
+
const types = Array.isArray(credentialTypes) ? [...credentialTypes].sort() : [credentialTypes];
|
|
215
265
|
if (metadata.credentials_supported && Array.isArray(metadata.credentials_supported)) {
|
|
216
266
|
let typeSupported = false;
|
|
217
267
|
metadata.credentials_supported.forEach((supportedCredential) => {
|
|
218
|
-
const subTypes = (0,
|
|
268
|
+
const subTypes = (0, oid4vci_common_1.getTypesFromCredentialSupported)(supportedCredential);
|
|
219
269
|
if (subTypes.sort().every((t, i) => types[i] === t) ||
|
|
220
270
|
(types.length === 1 && (types[0] === supportedCredential.id || subTypes.includes(types[0])))) {
|
|
221
271
|
typeSupported = true;
|
|
222
272
|
}
|
|
223
273
|
});
|
|
224
274
|
if (!typeSupported) {
|
|
225
|
-
|
|
275
|
+
console.log(`Not all credential types ${JSON.stringify(credentialTypes)} are present in metadata for ${this.getIssuer()}`);
|
|
276
|
+
// throw Error(`Not all credential types ${JSON.stringify(credentialTypes)} are supported by issuer ${this.getIssuer()}`);
|
|
226
277
|
}
|
|
227
278
|
}
|
|
228
279
|
else if (metadata.credentials_supported && !Array.isArray(metadata.credentials_supported)) {
|
|
@@ -240,8 +291,13 @@ class OpenID4VCIClient {
|
|
|
240
291
|
version: this.version(),
|
|
241
292
|
})
|
|
242
293
|
.withIssuer(this.getIssuer())
|
|
243
|
-
.withAlg(this.alg)
|
|
244
|
-
|
|
294
|
+
.withAlg(this.alg);
|
|
295
|
+
if (this._jwk) {
|
|
296
|
+
proofBuilder.withJWK(this._jwk);
|
|
297
|
+
}
|
|
298
|
+
if (this._kid) {
|
|
299
|
+
proofBuilder.withKid(this._kid);
|
|
300
|
+
}
|
|
245
301
|
if (this.clientId) {
|
|
246
302
|
proofBuilder.withClientId(this.clientId);
|
|
247
303
|
}
|
|
@@ -254,7 +310,7 @@ class OpenID4VCIClient {
|
|
|
254
310
|
format,
|
|
255
311
|
});
|
|
256
312
|
if (response.errorBody) {
|
|
257
|
-
debug(`Credential request error:\r\n${response.errorBody}`);
|
|
313
|
+
debug(`Credential request error:\r\n${JSON.stringify(response.errorBody)}`);
|
|
258
314
|
throw Error(`Retrieving a credential from ${(_b = this._endpointMetadata) === null || _b === void 0 ? void 0 : _b.credential_endpoint} for issuer ${this.getIssuer()} failed with status: ${response.origResponse.status}`);
|
|
259
315
|
}
|
|
260
316
|
else if (!response.successBody) {
|
|
@@ -269,7 +325,7 @@ class OpenID4VCIClient {
|
|
|
269
325
|
// When < v11 convert into a v12 object. When v12 object retain it.
|
|
270
326
|
// Then match the object array on server metadata
|
|
271
327
|
getCredentialsSupported(restrictToInitiationTypes, format) {
|
|
272
|
-
return (0,
|
|
328
|
+
return (0, oid4vci_common_1.getSupportedCredentials)({
|
|
273
329
|
issuerMetadata: this.endpointMetadata.credentialIssuerMetadata,
|
|
274
330
|
version: this.version(),
|
|
275
331
|
format: format,
|
|
@@ -277,7 +333,10 @@ class OpenID4VCIClient {
|
|
|
277
333
|
});
|
|
278
334
|
}
|
|
279
335
|
getCredentialOfferTypes() {
|
|
280
|
-
if (this.credentialOffer
|
|
336
|
+
if (!this.credentialOffer) {
|
|
337
|
+
return [];
|
|
338
|
+
}
|
|
339
|
+
else if (this.credentialOffer.version < oid4vci_common_1.OpenId4VCIVersion.VER_1_0_11) {
|
|
281
340
|
const orig = this.credentialOffer.original_credential_offer;
|
|
282
341
|
const types = typeof orig.credential_type === 'string' ? [orig.credential_type] : orig.credential_type;
|
|
283
342
|
const result = [];
|
|
@@ -292,8 +351,8 @@ class OpenID4VCIClient {
|
|
|
292
351
|
else if ('types' in c) {
|
|
293
352
|
return c.types;
|
|
294
353
|
}
|
|
295
|
-
else if ('vct' in c
|
|
296
|
-
return [c.
|
|
354
|
+
else if ('vct' in c) {
|
|
355
|
+
return [c.vct];
|
|
297
356
|
}
|
|
298
357
|
else {
|
|
299
358
|
return c.credential_definition.types;
|
|
@@ -302,13 +361,15 @@ class OpenID4VCIClient {
|
|
|
302
361
|
}
|
|
303
362
|
}
|
|
304
363
|
issuerSupportedFlowTypes() {
|
|
305
|
-
|
|
364
|
+
var _a, _b;
|
|
365
|
+
return (_b = (_a = this.credentialOffer) === null || _a === void 0 ? void 0 : _a.supportedFlows) !== null && _b !== void 0 ? _b : [oid4vci_common_1.AuthzFlowType.AUTHORIZATION_CODE_FLOW];
|
|
306
366
|
}
|
|
307
367
|
get credentialOffer() {
|
|
308
368
|
return this._credentialOffer;
|
|
309
369
|
}
|
|
310
370
|
version() {
|
|
311
|
-
|
|
371
|
+
var _a, _b;
|
|
372
|
+
return (_b = (_a = this.credentialOffer) === null || _a === void 0 ? void 0 : _a.version) !== null && _b !== void 0 ? _b : oid4vci_common_1.OpenId4VCIVersion.VER_1_0_11;
|
|
312
373
|
}
|
|
313
374
|
get endpointMetadata() {
|
|
314
375
|
this.assertServerMetadata();
|
|
@@ -330,9 +391,6 @@ class OpenID4VCIClient {
|
|
|
330
391
|
return this._alg;
|
|
331
392
|
}
|
|
332
393
|
get clientId() {
|
|
333
|
-
/*if (!this._clientId) {
|
|
334
|
-
throw Error('No client id present');
|
|
335
|
-
}*/
|
|
336
394
|
return this._clientId;
|
|
337
395
|
}
|
|
338
396
|
get accessTokenResponse() {
|
|
@@ -342,7 +400,7 @@ class OpenID4VCIClient {
|
|
|
342
400
|
}
|
|
343
401
|
getIssuer() {
|
|
344
402
|
this.assertIssuerData();
|
|
345
|
-
return this.
|
|
403
|
+
return this._credentialIssuer;
|
|
346
404
|
}
|
|
347
405
|
getAccessTokenEndpoint() {
|
|
348
406
|
this.assertIssuerData();
|
|
@@ -355,9 +413,12 @@ class OpenID4VCIClient {
|
|
|
355
413
|
return this.endpointMetadata ? this.endpointMetadata.credential_endpoint : `${this.getIssuer()}/credential`;
|
|
356
414
|
}
|
|
357
415
|
assertIssuerData() {
|
|
358
|
-
if (!this._credentialOffer) {
|
|
416
|
+
if (!this._credentialOffer && this.issuerSupportedFlowTypes().includes(oid4vci_common_1.AuthzFlowType.PRE_AUTHORIZED_CODE_FLOW)) {
|
|
359
417
|
throw Error(`No issuance initiation or credential offer present`);
|
|
360
418
|
}
|
|
419
|
+
else if (!this._credentialIssuer) {
|
|
420
|
+
throw Error(`No credential issuer value present`);
|
|
421
|
+
}
|
|
361
422
|
}
|
|
362
423
|
assertServerMetadata() {
|
|
363
424
|
if (!this._endpointMetadata) {
|