@openid4vc/openid4vp 0.3.0-alpha-20250324175730 → 0.3.0-alpha-20250325212250
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/index.js +67 -63
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +6 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -62,7 +62,7 @@ module.exports = __toCommonJS(src_exports);
|
|
|
62
62
|
|
|
63
63
|
// src/client-identifier-scheme/parse-client-identifier-scheme.ts
|
|
64
64
|
var import_oauth23 = require("@openid4vc/oauth2");
|
|
65
|
-
var
|
|
65
|
+
var import_utils5 = require("@openid4vc/utils");
|
|
66
66
|
|
|
67
67
|
// src/authorization-request/z-authorization-request-dc-api.ts
|
|
68
68
|
var import_zod5 = require("zod");
|
|
@@ -230,6 +230,7 @@ function isOpenid4vpAuthorizationRequestDcApi(request) {
|
|
|
230
230
|
}
|
|
231
231
|
|
|
232
232
|
// src/client-identifier-scheme/z-client-id-scheme.ts
|
|
233
|
+
var import_utils4 = require("@openid4vc/utils");
|
|
233
234
|
var import_zod6 = require("zod");
|
|
234
235
|
var zClientIdScheme = import_zod6.z.enum([
|
|
235
236
|
"pre-registered",
|
|
@@ -243,7 +244,10 @@ var zClientIdScheme = import_zod6.z.enum([
|
|
|
243
244
|
]);
|
|
244
245
|
var zClientIdToClientIdScheme = import_zod6.z.union(
|
|
245
246
|
[
|
|
246
|
-
import_zod6.z.string({ message: "client_id MUST be a string" }).includes(":").transform((clientId) =>
|
|
247
|
+
import_zod6.z.string({ message: "client_id MUST be a string" }).includes(":").transform((clientId) => {
|
|
248
|
+
const clientIdScheme = clientId.split(":")[0];
|
|
249
|
+
return clientIdScheme === "http" && (0, import_utils4.getGlobalConfig)().allowInsecureUrls ? "https" : clientIdScheme;
|
|
250
|
+
}).pipe(zClientIdScheme.exclude(["pre-registered"])),
|
|
247
251
|
import_zod6.z.string().refine((clientId) => clientId.includes(":") === false).transform(() => "pre-registered")
|
|
248
252
|
],
|
|
249
253
|
{
|
|
@@ -350,7 +354,7 @@ function validateOpenid4vpClientId(options, parserConfig) {
|
|
|
350
354
|
});
|
|
351
355
|
}
|
|
352
356
|
if (clientIdScheme === "https") {
|
|
353
|
-
if (!
|
|
357
|
+
if (!import_utils5.zHttpsUrl.safeParse(clientId).success) {
|
|
354
358
|
throw new import_oauth23.Oauth2ServerErrorResponseError(
|
|
355
359
|
{
|
|
356
360
|
error: import_oauth23.Oauth2ErrorCodes.InvalidRequest,
|
|
@@ -474,7 +478,7 @@ function validateOpenid4vpClientId(options, parserConfig) {
|
|
|
474
478
|
}
|
|
475
479
|
if (!isOpenid4vpAuthorizationRequestDcApi(authorizationRequestPayload)) {
|
|
476
480
|
const uri = authorizationRequestPayload.redirect_uri ?? authorizationRequestPayload.response_uri;
|
|
477
|
-
if (!uri || new
|
|
481
|
+
if (!uri || new import_utils5.URL(uri).hostname !== identifierPart) {
|
|
478
482
|
throw new import_oauth23.Oauth2ServerErrorResponseError({
|
|
479
483
|
error: import_oauth23.Oauth2ErrorCodes.InvalidRequest,
|
|
480
484
|
error_description: "Invalid client identifier. The fully qualified domain name of the redirect_uri value MUST match the Client Identifier without the prefix x509_san_dns."
|
|
@@ -560,7 +564,7 @@ function extractJwksFromClientMetadata(clientMetadata) {
|
|
|
560
564
|
|
|
561
565
|
// src/jarm/jarm-authorization-response/jarm-validate-authorization-response.ts
|
|
562
566
|
var import_oauth25 = require("@openid4vc/oauth2");
|
|
563
|
-
var
|
|
567
|
+
var import_utils6 = require("@openid4vc/utils");
|
|
564
568
|
|
|
565
569
|
// src/jarm/jarm-authorization-response/z-jarm-authorization-response.ts
|
|
566
570
|
var import_oauth24 = require("@openid4vc/oauth2");
|
|
@@ -592,7 +596,7 @@ var jarmAuthorizationResponseValidate = (options) => {
|
|
|
592
596
|
`Invalid 'aud' claim in JARM authorization response. Expected '${expectedClientId}' received '${JSON.stringify(authorizationResponse.aud)}'.`
|
|
593
597
|
);
|
|
594
598
|
}
|
|
595
|
-
if (authorizationResponse.exp !== void 0 && authorizationResponse.exp < (0,
|
|
599
|
+
if (authorizationResponse.exp !== void 0 && authorizationResponse.exp < (0, import_utils6.dateToSeconds)()) {
|
|
596
600
|
throw new import_oauth25.Oauth2Error("Jarm auth response is expired.");
|
|
597
601
|
}
|
|
598
602
|
};
|
|
@@ -660,11 +664,11 @@ async function verifyJarmAuthorizationResponse(options) {
|
|
|
660
664
|
|
|
661
665
|
// src/authorization-request/create-authorization-request.ts
|
|
662
666
|
var import_oauth210 = require("@openid4vc/oauth2");
|
|
663
|
-
var
|
|
667
|
+
var import_utils9 = require("@openid4vc/utils");
|
|
664
668
|
|
|
665
669
|
// src/jar/create-jar-authorization-request.ts
|
|
666
670
|
var import_oauth27 = require("@openid4vc/oauth2");
|
|
667
|
-
var
|
|
671
|
+
var import_utils7 = require("@openid4vc/utils");
|
|
668
672
|
async function createJarAuthorizationRequest(options) {
|
|
669
673
|
const { jwtSigner, jweEncryptor, authorizationRequestPayload, requestUri, callbacks } = options;
|
|
670
674
|
let authorizationRequestJwt;
|
|
@@ -673,8 +677,8 @@ async function createJarAuthorizationRequest(options) {
|
|
|
673
677
|
const { jwt, signerJwk } = await callbacks.signJwt(jwtSigner, {
|
|
674
678
|
header: { ...(0, import_oauth27.jwtHeaderFromJwtSigner)(jwtSigner), typ: "oauth-authz-req+jwt" },
|
|
675
679
|
payload: {
|
|
676
|
-
iat: (0,
|
|
677
|
-
exp: (0,
|
|
680
|
+
iat: (0, import_utils7.dateToSeconds)(now),
|
|
681
|
+
exp: (0, import_utils7.dateToSeconds)((0, import_utils7.addSecondsToDate)(now, options.expiresInSeconds)),
|
|
678
682
|
...options.additionalJwtPayload,
|
|
679
683
|
...authorizationRequestPayload
|
|
680
684
|
}
|
|
@@ -692,7 +696,7 @@ async function createJarAuthorizationRequest(options) {
|
|
|
692
696
|
|
|
693
697
|
// src/authorization-request/validate-authorization-request.ts
|
|
694
698
|
var import_oauth28 = require("@openid4vc/oauth2");
|
|
695
|
-
var
|
|
699
|
+
var import_utils8 = require("@openid4vc/utils");
|
|
696
700
|
var validateOpenid4vpAuthorizationRequestPayload = (options) => {
|
|
697
701
|
const { params, walletVerificationOptions } = options;
|
|
698
702
|
if (!params.redirect_uri && !params.response_uri) {
|
|
@@ -727,7 +731,7 @@ var validateOpenid4vpAuthorizationRequestPayload = (options) => {
|
|
|
727
731
|
error_description: `The 'request_uri_method' parameter MUST be 'GET' or 'POST'. Current: ${params.request_uri_method}`
|
|
728
732
|
});
|
|
729
733
|
}
|
|
730
|
-
if (params.trust_chain && !
|
|
734
|
+
if (params.trust_chain && !import_utils8.zHttpsUrl.safeParse(params.client_id).success) {
|
|
731
735
|
throw new import_oauth28.Oauth2ServerErrorResponseError({
|
|
732
736
|
error: import_oauth28.Oauth2ErrorCodes.InvalidRequest,
|
|
733
737
|
error_description: 'The "trust_chain" parameter MUST NOT be present in the authorization request if the "client_id" is not an OpenId Federation Entity Identifier starting with http:// or https://.'
|
|
@@ -791,7 +795,7 @@ async function createOpenid4vpAuthorizationRequest(options) {
|
|
|
791
795
|
let additionalJwtPayload;
|
|
792
796
|
let authorizationRequestPayload;
|
|
793
797
|
if (isOpenid4vpAuthorizationRequestDcApi(options.authorizationRequestPayload)) {
|
|
794
|
-
authorizationRequestPayload = (0,
|
|
798
|
+
authorizationRequestPayload = (0, import_utils9.parseWithErrorHandling)(
|
|
795
799
|
zOpenid4vpAuthorizationRequestDcApi,
|
|
796
800
|
options.authorizationRequestPayload,
|
|
797
801
|
"Invalid authorization request. Could not parse openid4vp dc_api authorization request."
|
|
@@ -807,7 +811,7 @@ async function createOpenid4vpAuthorizationRequest(options) {
|
|
|
807
811
|
disableOriginValidation: true
|
|
808
812
|
});
|
|
809
813
|
} else {
|
|
810
|
-
authorizationRequestPayload = (0,
|
|
814
|
+
authorizationRequestPayload = (0, import_utils9.parseWithErrorHandling)(
|
|
811
815
|
zOpenid4vpAuthorizationRequest,
|
|
812
816
|
options.authorizationRequestPayload,
|
|
813
817
|
"Invalid authorization request. Could not parse openid4vp authorization request."
|
|
@@ -827,10 +831,10 @@ async function createOpenid4vpAuthorizationRequest(options) {
|
|
|
827
831
|
additionalJwtPayload,
|
|
828
832
|
callbacks
|
|
829
833
|
});
|
|
830
|
-
const url2 = new
|
|
831
|
-
url2.search = `?${new
|
|
834
|
+
const url2 = new import_utils9.URL(scheme);
|
|
835
|
+
url2.search = `?${new import_utils9.URLSearchParams([
|
|
832
836
|
...url2.searchParams.entries(),
|
|
833
|
-
...(0,
|
|
837
|
+
...(0, import_utils9.objectToQueryParams)(jarResult.jarAuthorizationRequest).entries(),
|
|
834
838
|
// Add client_id_scheme if defined for backwards compat
|
|
835
839
|
...authorizationRequestPayload.client_id_scheme ? [["client_id_scheme", authorizationRequestPayload.client_id_scheme]] : []
|
|
836
840
|
]).toString()}`;
|
|
@@ -841,10 +845,10 @@ async function createOpenid4vpAuthorizationRequest(options) {
|
|
|
841
845
|
jar: { ...jar, ...jarResult }
|
|
842
846
|
};
|
|
843
847
|
}
|
|
844
|
-
const url = new
|
|
845
|
-
url.search = `?${new
|
|
848
|
+
const url = new import_utils9.URL(scheme);
|
|
849
|
+
url.search = `?${new import_utils9.URLSearchParams([
|
|
846
850
|
...url.searchParams.entries(),
|
|
847
|
-
...(0,
|
|
851
|
+
...(0, import_utils9.objectToQueryParams)(authorizationRequestPayload).entries()
|
|
848
852
|
]).toString()}`;
|
|
849
853
|
return {
|
|
850
854
|
authorizationRequestPayload,
|
|
@@ -856,16 +860,16 @@ async function createOpenid4vpAuthorizationRequest(options) {
|
|
|
856
860
|
|
|
857
861
|
// src/authorization-request/parse-authorization-request-params.ts
|
|
858
862
|
var import_oauth212 = require("@openid4vc/oauth2");
|
|
859
|
-
var
|
|
863
|
+
var import_utils11 = require("@openid4vc/utils");
|
|
860
864
|
var import_zod10 = __toESM(require("zod"));
|
|
861
865
|
|
|
862
866
|
// src/jar/z-jar-authorization-request.ts
|
|
863
867
|
var import_oauth211 = require("@openid4vc/oauth2");
|
|
864
|
-
var
|
|
868
|
+
var import_utils10 = require("@openid4vc/utils");
|
|
865
869
|
var import_zod9 = require("zod");
|
|
866
870
|
var zJarAuthorizationRequest = import_zod9.z.object({
|
|
867
871
|
request: import_zod9.z.optional(import_zod9.z.string()),
|
|
868
|
-
request_uri: import_zod9.z.optional(
|
|
872
|
+
request_uri: import_zod9.z.optional(import_utils10.zHttpsUrl),
|
|
869
873
|
request_uri_method: import_zod9.z.optional(import_zod9.z.string()),
|
|
870
874
|
client_id: import_zod9.z.optional(import_zod9.z.string())
|
|
871
875
|
}).passthrough();
|
|
@@ -896,7 +900,7 @@ function parseOpenid4vpAuthorizationRequest(options) {
|
|
|
896
900
|
let params;
|
|
897
901
|
if (typeof authorizationRequest === "string") {
|
|
898
902
|
if (authorizationRequest.includes("://")) {
|
|
899
|
-
params = (0,
|
|
903
|
+
params = (0, import_utils11.parseWithErrorHandling)(
|
|
900
904
|
zOpenid4vpAuthorizationRequestFromUriParams,
|
|
901
905
|
authorizationRequest,
|
|
902
906
|
"Unable to parse openid4vp authorization request uri to a valid object"
|
|
@@ -910,7 +914,7 @@ function parseOpenid4vpAuthorizationRequest(options) {
|
|
|
910
914
|
} else {
|
|
911
915
|
params = authorizationRequest;
|
|
912
916
|
}
|
|
913
|
-
const parsedRequest = (0,
|
|
917
|
+
const parsedRequest = (0, import_utils11.parseWithErrorHandling)(
|
|
914
918
|
import_zod10.default.union([zOpenid4vpAuthorizationRequest, zJarAuthorizationRequest, zOpenid4vpAuthorizationRequestDcApi]),
|
|
915
919
|
params
|
|
916
920
|
);
|
|
@@ -937,19 +941,19 @@ function parseOpenid4vpAuthorizationRequest(options) {
|
|
|
937
941
|
|
|
938
942
|
// src/authorization-request/resolve-authorization-request.ts
|
|
939
943
|
var import_oauth219 = require("@openid4vc/oauth2");
|
|
940
|
-
var
|
|
944
|
+
var import_utils15 = require("@openid4vc/utils");
|
|
941
945
|
var import_zod14 = __toESM(require("zod"));
|
|
942
946
|
|
|
943
947
|
// src/fetch-client-metadata.ts
|
|
944
948
|
var import_oauth213 = require("@openid4vc/oauth2");
|
|
945
|
-
var
|
|
949
|
+
var import_utils12 = require("@openid4vc/utils");
|
|
946
950
|
async function fetchClientMetadata(options) {
|
|
947
951
|
const { fetch, clientMetadataUri } = options;
|
|
948
|
-
const fetcher = (0,
|
|
949
|
-
const { result, response } = await fetcher(zClientMetadata,
|
|
952
|
+
const fetcher = (0, import_utils12.createZodFetcher)(fetch);
|
|
953
|
+
const { result, response } = await fetcher(zClientMetadata, import_utils12.ContentType.Json, clientMetadataUri, {
|
|
950
954
|
method: "GET",
|
|
951
955
|
headers: {
|
|
952
|
-
Accept:
|
|
956
|
+
Accept: import_utils12.ContentType.Json
|
|
953
957
|
}
|
|
954
958
|
});
|
|
955
959
|
if (!response.ok) {
|
|
@@ -1035,7 +1039,7 @@ function parseAuthorizationRequestVersion(request) {
|
|
|
1035
1039
|
|
|
1036
1040
|
// src/jar/jar-request-object/fetch-jar-request-object.ts
|
|
1037
1041
|
var import_oauth215 = require("@openid4vc/oauth2");
|
|
1038
|
-
var
|
|
1042
|
+
var import_utils13 = require("@openid4vc/utils");
|
|
1039
1043
|
async function fetchJarRequestObject(options) {
|
|
1040
1044
|
const { requestUri, clientIdentifierScheme, method, wallet, fetch } = options;
|
|
1041
1045
|
let requestBody = wallet.metadata ? { wallet_metadata: wallet.metadata, wallet_nonce: wallet.nonce } : void 0;
|
|
@@ -1043,12 +1047,12 @@ async function fetchJarRequestObject(options) {
|
|
|
1043
1047
|
const { request_object_signing_alg_values_supported, ...rest } = requestBody.wallet_metadata;
|
|
1044
1048
|
requestBody = { ...requestBody, wallet_metadata: { ...rest } };
|
|
1045
1049
|
}
|
|
1046
|
-
const response = await (0,
|
|
1050
|
+
const response = await (0, import_utils13.createFetcher)(fetch)(requestUri, {
|
|
1047
1051
|
method,
|
|
1048
|
-
body: method === "POST" ? (0,
|
|
1052
|
+
body: method === "POST" ? (0, import_utils13.objectToQueryParams)(wallet.metadata ?? {}) : void 0,
|
|
1049
1053
|
headers: {
|
|
1050
|
-
Accept: `${
|
|
1051
|
-
"Content-Type":
|
|
1054
|
+
Accept: `${import_utils13.ContentType.OAuthAuthorizationRequestJwt}, ${import_utils13.ContentType.Jwt};q=0.9, text/plain`,
|
|
1055
|
+
"Content-Type": import_utils13.ContentType.XWwwFormUrlencoded
|
|
1052
1056
|
}
|
|
1053
1057
|
}).catch(() => {
|
|
1054
1058
|
throw new import_oauth215.Oauth2ServerErrorResponseError({
|
|
@@ -1114,7 +1118,7 @@ async function verifyJarRequest(options) {
|
|
|
1114
1118
|
error_description: 'Jar Request Object is missing the required "client_id" field.'
|
|
1115
1119
|
});
|
|
1116
1120
|
}
|
|
1117
|
-
if (jarRequestParams.client_id
|
|
1121
|
+
if (jarRequestParams.client_id !== authorizationRequestPayload.client_id) {
|
|
1118
1122
|
throw new import_oauth217.Oauth2ServerErrorResponseError({
|
|
1119
1123
|
error: import_oauth217.Oauth2ErrorCodes.InvalidRequest,
|
|
1120
1124
|
error_description: "client_id does not match the request object client_id."
|
|
@@ -1213,7 +1217,7 @@ async function verifyJarRequestObject(options) {
|
|
|
1213
1217
|
|
|
1214
1218
|
// src/transaction-data/parse-transaction-data.ts
|
|
1215
1219
|
var import_oauth218 = require("@openid4vc/oauth2");
|
|
1216
|
-
var
|
|
1220
|
+
var import_utils14 = require("@openid4vc/utils");
|
|
1217
1221
|
|
|
1218
1222
|
// src/transaction-data/z-transaction-data.ts
|
|
1219
1223
|
var import_zod13 = require("zod");
|
|
@@ -1227,7 +1231,7 @@ var zTransactionData = import_zod13.z.array(zTransactionEntry);
|
|
|
1227
1231
|
// src/transaction-data/parse-transaction-data.ts
|
|
1228
1232
|
function parseTransactionData(options) {
|
|
1229
1233
|
const { transactionData } = options;
|
|
1230
|
-
const decoded = transactionData.map((tdEntry) => (0,
|
|
1234
|
+
const decoded = transactionData.map((tdEntry) => (0, import_utils14.parseIfJson)((0, import_utils14.encodeToUtf8String)((0, import_utils14.decodeBase64)(tdEntry))));
|
|
1231
1235
|
const parsedResult = zTransactionData.safeParse(decoded);
|
|
1232
1236
|
if (!parsedResult.success) {
|
|
1233
1237
|
throw new import_oauth218.Oauth2ServerErrorResponseError({
|
|
@@ -1246,7 +1250,7 @@ function parseTransactionData(options) {
|
|
|
1246
1250
|
async function resolveOpenid4vpAuthorizationRequest(options) {
|
|
1247
1251
|
const { wallet, callbacks, origin, disableOriginValidation } = options;
|
|
1248
1252
|
let authorizationRequestPayload;
|
|
1249
|
-
const parsed = (0,
|
|
1253
|
+
const parsed = (0, import_utils15.parseWithErrorHandling)(
|
|
1250
1254
|
import_zod14.default.union([zOpenid4vpAuthorizationRequestDcApi, zOpenid4vpAuthorizationRequest, zJarAuthorizationRequest]),
|
|
1251
1255
|
options.authorizationRequestPayload,
|
|
1252
1256
|
"Invalid authorization request. Could not parse openid4vp authorization request as openid4vp or jar auth request."
|
|
@@ -1254,7 +1258,7 @@ async function resolveOpenid4vpAuthorizationRequest(options) {
|
|
|
1254
1258
|
let jar;
|
|
1255
1259
|
if (isJarAuthorizationRequest(parsed)) {
|
|
1256
1260
|
jar = await verifyJarRequest({ jarRequestParams: parsed, callbacks, wallet });
|
|
1257
|
-
const parsedJarAuthorizationRequestPayload = (0,
|
|
1261
|
+
const parsedJarAuthorizationRequestPayload = (0, import_utils15.parseWithErrorHandling)(
|
|
1258
1262
|
import_zod14.default.union([zOpenid4vpAuthorizationRequestDcApi, zOpenid4vpAuthorizationRequest]),
|
|
1259
1263
|
jar.authorizationRequestPayload,
|
|
1260
1264
|
"Invalid authorization request. Could not parse jar request payload as openid4vp auth request."
|
|
@@ -1335,7 +1339,7 @@ function validateOpenId4vpAuthorizationRequestPayload(options) {
|
|
|
1335
1339
|
|
|
1336
1340
|
// src/authorization-response/create-authorization-response.ts
|
|
1337
1341
|
var import_oauth222 = require("@openid4vc/oauth2");
|
|
1338
|
-
var
|
|
1342
|
+
var import_utils16 = require("@openid4vc/utils");
|
|
1339
1343
|
|
|
1340
1344
|
// ../utils/src/date.ts
|
|
1341
1345
|
function addSecondsToDate2(date, seconds) {
|
|
@@ -1484,7 +1488,7 @@ async function createOpenid4vpAuthorizationResponse(options) {
|
|
|
1484
1488
|
additionalJwtPayload = {
|
|
1485
1489
|
iss: jarm.authorizationServer,
|
|
1486
1490
|
aud: jarm.audience,
|
|
1487
|
-
exp: jarm.expiresInSeconds ?? (0,
|
|
1491
|
+
exp: jarm.expiresInSeconds ?? (0, import_utils16.dateToSeconds)(addSecondsToDate2(/* @__PURE__ */ new Date(), 60 * 10))
|
|
1488
1492
|
// default: 10 minutes
|
|
1489
1493
|
};
|
|
1490
1494
|
}
|
|
@@ -1516,25 +1520,25 @@ async function createOpenid4vpAuthorizationResponse(options) {
|
|
|
1516
1520
|
|
|
1517
1521
|
// src/authorization-response/submit-authorization-response.ts
|
|
1518
1522
|
var import_oauth224 = require("@openid4vc/oauth2");
|
|
1519
|
-
var import_utils17 = require("@openid4vc/utils");
|
|
1520
1523
|
var import_utils18 = require("@openid4vc/utils");
|
|
1524
|
+
var import_utils19 = require("@openid4vc/utils");
|
|
1521
1525
|
|
|
1522
1526
|
// src/jarm/jarm-authorizatino-response-send.ts
|
|
1523
1527
|
var import_oauth223 = require("@openid4vc/oauth2");
|
|
1524
|
-
var
|
|
1528
|
+
var import_utils17 = require("@openid4vc/utils");
|
|
1525
1529
|
var jarmAuthorizationResponseSend = (options) => {
|
|
1526
1530
|
const { authorizationRequestPayload, jarmAuthorizationResponseJwt, callbacks } = options;
|
|
1527
1531
|
const responseEndpoint = authorizationRequestPayload.response_uri ?? authorizationRequestPayload.redirect_uri;
|
|
1528
1532
|
if (!responseEndpoint) {
|
|
1529
1533
|
throw new import_oauth223.Oauth2Error(`Either 'response_uri' or 'redirect_uri' MUST be present in the authorization request`);
|
|
1530
1534
|
}
|
|
1531
|
-
const responseEndpointUrl = new
|
|
1535
|
+
const responseEndpointUrl = new import_utils17.URL(responseEndpoint);
|
|
1532
1536
|
return handleDirectPostJwt(responseEndpointUrl, jarmAuthorizationResponseJwt, callbacks);
|
|
1533
1537
|
};
|
|
1534
1538
|
async function handleDirectPostJwt(responseEndpoint, responseJwt, callbacks) {
|
|
1535
|
-
const response = await (0,
|
|
1539
|
+
const response = await (0, import_utils17.createFetcher)(callbacks.fetch)(responseEndpoint, {
|
|
1536
1540
|
method: "POST",
|
|
1537
|
-
headers: { "Content-Type":
|
|
1541
|
+
headers: { "Content-Type": import_utils17.ContentType.XWwwFormUrlencoded },
|
|
1538
1542
|
body: `response=${responseJwt}`
|
|
1539
1543
|
});
|
|
1540
1544
|
return {
|
|
@@ -1559,13 +1563,13 @@ async function submitOpenid4vpAuthorizationResponse(options) {
|
|
|
1559
1563
|
"Failed to submit OpenId4Vp Authorization Response. No redirect_uri or response_uri provided."
|
|
1560
1564
|
);
|
|
1561
1565
|
}
|
|
1562
|
-
const fetch = (0,
|
|
1563
|
-
const encodedResponse = (0,
|
|
1566
|
+
const fetch = (0, import_utils18.createFetcher)(callbacks.fetch);
|
|
1567
|
+
const encodedResponse = (0, import_utils19.objectToQueryParams)(authorizationResponsePayload);
|
|
1564
1568
|
const submissionResponse = await fetch(url, {
|
|
1565
1569
|
method: "POST",
|
|
1566
1570
|
body: encodedResponse.toString(),
|
|
1567
1571
|
headers: {
|
|
1568
|
-
"Content-Type":
|
|
1572
|
+
"Content-Type": import_utils18.ContentType.XWwwFormUrlencoded
|
|
1569
1573
|
}
|
|
1570
1574
|
});
|
|
1571
1575
|
return {
|
|
@@ -1578,7 +1582,7 @@ async function submitOpenid4vpAuthorizationResponse(options) {
|
|
|
1578
1582
|
var import_oauth225 = require("@openid4vc/oauth2");
|
|
1579
1583
|
|
|
1580
1584
|
// src/vp-token/parse-vp-token.ts
|
|
1581
|
-
var
|
|
1585
|
+
var import_utils20 = require("@openid4vc/utils");
|
|
1582
1586
|
|
|
1583
1587
|
// src/vp-token/z-vp-token.ts
|
|
1584
1588
|
var import_zod16 = require("zod");
|
|
@@ -1598,17 +1602,17 @@ var zVpToken = zVpTokenDcql.or(zVpTokenPex);
|
|
|
1598
1602
|
|
|
1599
1603
|
// src/vp-token/parse-vp-token.ts
|
|
1600
1604
|
function parsePexVpToken(vpToken) {
|
|
1601
|
-
const parsedVpToken = (0,
|
|
1605
|
+
const parsedVpToken = (0, import_utils20.parseWithErrorHandling)(
|
|
1602
1606
|
zVpTokenPex,
|
|
1603
|
-
(0,
|
|
1607
|
+
(0, import_utils20.parseIfJson)(vpToken),
|
|
1604
1608
|
"Could not parse presentation exchange vp_token. Expected a string or an array of strings"
|
|
1605
1609
|
);
|
|
1606
1610
|
return Array.isArray(parsedVpToken) ? parsedVpToken : [parsedVpToken];
|
|
1607
1611
|
}
|
|
1608
1612
|
function parseDcqlVpToken(vpToken) {
|
|
1609
|
-
return (0,
|
|
1613
|
+
return (0, import_utils20.parseWithErrorHandling)(
|
|
1610
1614
|
zVpTokenDcql,
|
|
1611
|
-
(0,
|
|
1615
|
+
(0, import_utils20.parseIfJson)(vpToken),
|
|
1612
1616
|
"Could not parse dcql vp_token. Expected an object where the values are encoded presentations"
|
|
1613
1617
|
);
|
|
1614
1618
|
}
|
|
@@ -1661,10 +1665,10 @@ function validateOpenid4vpAuthorizationResponsePayload(options) {
|
|
|
1661
1665
|
var import_oauth227 = require("@openid4vc/oauth2");
|
|
1662
1666
|
|
|
1663
1667
|
// src/authorization-response/parse-authorization-response-payload.ts
|
|
1664
|
-
var
|
|
1668
|
+
var import_utils22 = require("@openid4vc/utils");
|
|
1665
1669
|
|
|
1666
1670
|
// src/authorization-response/z-authorization-response.ts
|
|
1667
|
-
var
|
|
1671
|
+
var import_utils21 = require("@openid4vc/utils");
|
|
1668
1672
|
var import_zod18 = require("zod");
|
|
1669
1673
|
|
|
1670
1674
|
// src/models/z-pex.ts
|
|
@@ -1677,7 +1681,7 @@ var zOpenid4vpAuthorizationResponse = import_zod18.z.object({
|
|
|
1677
1681
|
state: import_zod18.z.string().optional(),
|
|
1678
1682
|
id_token: import_zod18.z.string().optional(),
|
|
1679
1683
|
vp_token: zVpToken,
|
|
1680
|
-
presentation_submission: zPexPresentationSubmission.or(
|
|
1684
|
+
presentation_submission: zPexPresentationSubmission.or(import_utils21.zStringToJson).optional(),
|
|
1681
1685
|
refresh_token: import_zod18.z.string().optional(),
|
|
1682
1686
|
token_type: import_zod18.z.string().optional(),
|
|
1683
1687
|
access_token: import_zod18.z.string().optional(),
|
|
@@ -1686,7 +1690,7 @@ var zOpenid4vpAuthorizationResponse = import_zod18.z.object({
|
|
|
1686
1690
|
|
|
1687
1691
|
// src/authorization-response/parse-authorization-response-payload.ts
|
|
1688
1692
|
function parseOpenid4VpAuthorizationResponsePayload(payload) {
|
|
1689
|
-
return (0,
|
|
1693
|
+
return (0, import_utils22.parseWithErrorHandling)(
|
|
1690
1694
|
zOpenid4vpAuthorizationResponse,
|
|
1691
1695
|
payload,
|
|
1692
1696
|
"Failed to parse openid4vp authorization response."
|
|
@@ -1695,11 +1699,11 @@ function parseOpenid4VpAuthorizationResponsePayload(payload) {
|
|
|
1695
1699
|
|
|
1696
1700
|
// src/authorization-response/parse-jarm-authorization-response.ts
|
|
1697
1701
|
var import_oauth226 = require("@openid4vc/oauth2");
|
|
1698
|
-
var
|
|
1702
|
+
var import_utils23 = require("@openid4vc/utils");
|
|
1699
1703
|
var import_zod19 = __toESM(require("zod"));
|
|
1700
1704
|
async function parseJarmAuthorizationResponse(options) {
|
|
1701
1705
|
const { jarmResponseJwt, callbacks, authorizationRequestPayload, expectedClientId } = options;
|
|
1702
|
-
const jarmAuthorizationResponseJwt = (0,
|
|
1706
|
+
const jarmAuthorizationResponseJwt = (0, import_utils23.parseWithErrorHandling)(
|
|
1703
1707
|
import_zod19.default.union([import_oauth226.zCompactJwt, import_oauth226.zCompactJwe]),
|
|
1704
1708
|
jarmResponseJwt,
|
|
1705
1709
|
"Invalid jarm authorization response jwt."
|
|
@@ -1798,7 +1802,7 @@ var Openid4vpClient = class {
|
|
|
1798
1802
|
|
|
1799
1803
|
// src/transaction-data/verify-transaction-data.ts
|
|
1800
1804
|
var import_oauth228 = require("@openid4vc/oauth2");
|
|
1801
|
-
var
|
|
1805
|
+
var import_utils24 = require("@openid4vc/utils");
|
|
1802
1806
|
async function verifyTransactionData(options) {
|
|
1803
1807
|
const parsedTransactionData = parseTransactionData({
|
|
1804
1808
|
transactionData: options.transactionData
|
|
@@ -1825,7 +1829,7 @@ async function verifyTransactionDataEntry({
|
|
|
1825
1829
|
);
|
|
1826
1830
|
const hashes = {};
|
|
1827
1831
|
for (const alg of supportedAlgs) {
|
|
1828
|
-
hashes[alg] = (0,
|
|
1832
|
+
hashes[alg] = (0, import_utils24.encodeToBase64Url)(await callbacks.hash((0, import_utils24.decodeUtf8String)(entry.encoded), alg));
|
|
1829
1833
|
}
|
|
1830
1834
|
for (const credentialId of entry.transactionData.credential_ids) {
|
|
1831
1835
|
const transactionDataHashesCredential = credentials[credentialId];
|