@openid4vc/openid4vci 0.3.0-alpha-20251112081659 → 0.3.0-alpha-20251113095648
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.cjs +21 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +30 -30
- package/dist/index.d.mts +30 -30
- package/dist/index.mjs +22 -13
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ContentType, URL, URLSearchParams, ValidationError, arrayEqualsIgnoreOrder, createZodFetcher, dateToSeconds, encodeToBase64Url, formatZodError, getGlobalConfig, getQueryParams, isResponseContentType, joinUriParts, objectToQueryParams, parseWithErrorHandling, setGlobalConfig, zHttpsUrl, zInteger, zIs } from "@openid4vc/utils";
|
|
2
|
-
import { InvalidFetchResponseError, Oauth2AuthorizationServer, Oauth2Client, Oauth2ClientAuthorizationChallengeError, Oauth2Error, Oauth2ErrorCodes, Oauth2JwtVerificationError, Oauth2ServerErrorResponseError, authorizationCodeGrantIdentifier, createClientAttestationJwt, decodeJwt, fetchAuthorizationServerMetadata, fetchWellKnownMetadata, getAuthorizationServerMetadataFromList, isJwkInSet, jwtHeaderFromJwtSigner, jwtSignerFromJwt, preAuthorizedCodeGrantIdentifier, resourceRequest, verifyJwt, zAuthorizationServerMetadata, zCompactJwt, zJwk, zJwtHeader, zJwtPayload } from "@openid4vc/oauth2";
|
|
2
|
+
import { InvalidFetchResponseError, Oauth2AuthorizationServer, Oauth2Client, Oauth2ClientAuthorizationChallengeError, Oauth2Error, Oauth2ErrorCodes, Oauth2JwtVerificationError, Oauth2ServerErrorResponseError, authorizationCodeGrantIdentifier, createClientAttestationJwt, decodeJwt, fetchAuthorizationServerMetadata, fetchWellKnownMetadata, fullySpecifiedCoseAlgorithmArrayToJwaSignatureAlgorithmArray, getAuthorizationServerMetadataFromList, isJwkInSet, jwaSignatureAlgorithmArrayToFullySpecifiedCoseAlgorithmArray, jwtHeaderFromJwtSigner, jwtSignerFromJwt, preAuthorizedCodeGrantIdentifier, resourceRequest, verifyJwt, zAuthorizationServerMetadata, zCompactJwt, zJwk, zJwtHeader, zJwtPayload } from "@openid4vc/oauth2";
|
|
3
3
|
import z from "zod";
|
|
4
4
|
|
|
5
5
|
//#region src/version.ts
|
|
@@ -235,7 +235,7 @@ const zCredentialConfigurationSupportedCommonDraft15 = z.object({
|
|
|
235
235
|
format: z.string(),
|
|
236
236
|
scope: z.string().optional(),
|
|
237
237
|
cryptographic_binding_methods_supported: z.array(z.string()).optional(),
|
|
238
|
-
credential_signing_alg_values_supported: z.array(z.string()).
|
|
238
|
+
credential_signing_alg_values_supported: z.array(z.string()).optional(),
|
|
239
239
|
proof_types_supported: z.record(z.union([
|
|
240
240
|
z.literal("jwt"),
|
|
241
241
|
z.literal("attestation"),
|
|
@@ -257,6 +257,7 @@ const zMsoMdocFormatIdentifier = z.literal("mso_mdoc");
|
|
|
257
257
|
const zMsoMdocCredentialIssuerMetadata = zCredentialConfigurationSupportedCommon.extend({
|
|
258
258
|
format: zMsoMdocFormatIdentifier,
|
|
259
259
|
doctype: z.string(),
|
|
260
|
+
credential_signing_alg_values_supported: z.array(z.number()).optional(),
|
|
260
261
|
credential_metadata: zCredentialConfigurationSupportedCommonCredentialMetadata.extend({ claims: z.array(zMsoMdocIssuerMetadataClaimsDescription).optional() }).optional()
|
|
261
262
|
});
|
|
262
263
|
const zMsoMdocCredentialIssuerMetadataDraft15 = zCredentialConfigurationSupportedCommonDraft15.extend({
|
|
@@ -282,6 +283,7 @@ const zSdJwtDcFormatIdentifier = z.literal("dc+sd-jwt");
|
|
|
282
283
|
const zSdJwtDcCredentialIssuerMetadata = zCredentialConfigurationSupportedCommon.extend({
|
|
283
284
|
vct: z.string(),
|
|
284
285
|
format: zSdJwtDcFormatIdentifier,
|
|
286
|
+
credential_signing_alg_values_supported: z.array(z.string()).optional(),
|
|
285
287
|
credential_metadata: zCredentialConfigurationSupportedCommonCredentialMetadata.extend({ claims: z.array(zIssuerMetadataClaimsDescription).optional() }).optional()
|
|
286
288
|
});
|
|
287
289
|
const zSdJwtDcCredentialIssuerMetadataDraft15 = zCredentialConfigurationSupportedCommonDraft15.extend({
|
|
@@ -307,6 +309,7 @@ const zLegacySdJwtVcCredentialIssuerMetadataV1 = zCredentialConfigurationSupport
|
|
|
307
309
|
vct: z.string(),
|
|
308
310
|
format: zLegacySdJwtVcFormatIdentifier,
|
|
309
311
|
order: z.optional(z.array(z.string())),
|
|
312
|
+
credential_signing_alg_values_supported: z.array(z.string()).optional(),
|
|
310
313
|
credential_metadata: zCredentialConfigurationSupportedCommonCredentialMetadata.extend({ claims: z.array(zIssuerMetadataClaimsDescription).optional() }).optional(),
|
|
311
314
|
credential_definition: z.optional(z.never())
|
|
312
315
|
});
|
|
@@ -364,6 +367,7 @@ const zJwtVcJsonCredentialDefinitionDraft14 = zJwtVcJsonCredentialDefinition.ext
|
|
|
364
367
|
const zJwtVcJsonCredentialIssuerMetadata = zCredentialConfigurationSupportedCommon.extend({
|
|
365
368
|
format: zJwtVcJsonFormatIdentifier,
|
|
366
369
|
credential_definition: zJwtVcJsonCredentialDefinition,
|
|
370
|
+
credential_signing_alg_values_supported: z.array(z.string()).optional(),
|
|
367
371
|
credential_metadata: zCredentialConfigurationSupportedCommonCredentialMetadata.extend({ claims: z.array(zIssuerMetadataClaimsDescription).optional() }).optional()
|
|
368
372
|
});
|
|
369
373
|
const zJwtVcJsonCredentialIssuerMetadataDraft15 = zCredentialConfigurationSupportedCommonDraft15.extend({
|
|
@@ -424,6 +428,7 @@ const zJwtVcJsonLdFormatIdentifier = z.literal("jwt_vc_json-ld");
|
|
|
424
428
|
const zJwtVcJsonLdCredentialIssuerMetadata = zCredentialConfigurationSupportedCommon.extend({
|
|
425
429
|
format: zJwtVcJsonLdFormatIdentifier,
|
|
426
430
|
credential_definition: zW3cVcJsonLdCredentialDefinition,
|
|
431
|
+
credential_signing_alg_values_supported: z.array(z.string()).optional(),
|
|
427
432
|
credential_metadata: zCredentialConfigurationSupportedCommonCredentialMetadata.extend({ claims: z.array(zIssuerMetadataClaimsDescription).optional() }).optional()
|
|
428
433
|
});
|
|
429
434
|
const zJwtVcJsonLdCredentialIssuerMetadataDraft15 = zCredentialConfigurationSupportedCommonDraft15.extend({
|
|
@@ -489,6 +494,7 @@ const zLdpVcFormatIdentifier = z.literal("ldp_vc");
|
|
|
489
494
|
const zLdpVcCredentialIssuerMetadata = zCredentialConfigurationSupportedCommon.extend({
|
|
490
495
|
format: zLdpVcFormatIdentifier,
|
|
491
496
|
credential_definition: zW3cVcJsonLdCredentialDefinition,
|
|
497
|
+
credential_signing_alg_values_supported: z.array(z.string()).optional(),
|
|
492
498
|
credential_metadata: zCredentialConfigurationSupportedCommonCredentialMetadata.extend({ claims: z.array(zIssuerMetadataClaimsDescription).optional() }).optional()
|
|
493
499
|
});
|
|
494
500
|
const zLdpVcCredentialIssuerMetadataDraft15 = zCredentialConfigurationSupportedCommonDraft15.extend({
|
|
@@ -555,6 +561,7 @@ const zSdJwtW3VcCredentialDefinition = z.object({ type: z.tuple([z.string()], z.
|
|
|
555
561
|
const zSdJwtW3VcCredentialIssuerMetadata = zCredentialConfigurationSupportedCommon.extend({
|
|
556
562
|
format: zSdJwtW3VcFormatIdentifier,
|
|
557
563
|
credential_definition: zSdJwtW3VcCredentialDefinition,
|
|
564
|
+
credential_signing_alg_values_supported: z.array(z.string()).optional(),
|
|
558
565
|
credential_metadata: zCredentialConfigurationSupportedCommonCredentialMetadata.extend({ claims: z.array(zIssuerMetadataClaimsDescription).optional() }).optional(),
|
|
559
566
|
vct: z.optional(z.never())
|
|
560
567
|
});
|
|
@@ -628,7 +635,7 @@ const zCredentialIssuerMetadataDraft14Draft15V1 = z.object({
|
|
|
628
635
|
display: z.array(zCredentialIssuerMetadataDisplayEntry).optional(),
|
|
629
636
|
credential_configurations_supported: z.record(z.string(), zCredentialConfigurationSupportedWithFormats)
|
|
630
637
|
}).loose();
|
|
631
|
-
const
|
|
638
|
+
const zCredentialConfigurationSupportedDraft11ToV1 = z.object({
|
|
632
639
|
id: z.string().optional(),
|
|
633
640
|
format: z.string(),
|
|
634
641
|
cryptographic_suites_supported: z.array(z.string()).optional(),
|
|
@@ -637,9 +644,10 @@ const zCredentialConfigurationSupportedDraft11To16 = z.object({
|
|
|
637
644
|
background_image: z.object({ url: z.url().optional() }).loose().optional()
|
|
638
645
|
}).loose()).optional(),
|
|
639
646
|
claims: z.any().optional()
|
|
640
|
-
}).loose().transform(({ cryptographic_suites_supported, display, claims, id,...rest }) => ({
|
|
647
|
+
}).loose().transform(({ cryptographic_suites_supported, display, claims, id, format,...rest }) => ({
|
|
641
648
|
...rest,
|
|
642
|
-
|
|
649
|
+
format,
|
|
650
|
+
...cryptographic_suites_supported ? { credential_signing_alg_values_supported: format === zMsoMdocFormatIdentifier.value ? jwaSignatureAlgorithmArrayToFullySpecifiedCoseAlgorithmArray(cryptographic_suites_supported) : cryptographic_suites_supported } : {},
|
|
643
651
|
...claims || display ? { credential_metadata: {
|
|
644
652
|
...claims ? { claims } : {},
|
|
645
653
|
...display ? { display: display.map(({ logo, background_image,...displayRest }) => ({
|
|
@@ -666,9 +674,10 @@ const zCredentialConfigurationSupportedDraft11To16 = z.object({
|
|
|
666
674
|
const zCredentialConfigurationSupportedV1ToDraft11 = zCredentialConfigurationSupportedWithFormats.transform(({ credential_metadata,...rest }) => ({
|
|
667
675
|
...credential_metadata,
|
|
668
676
|
...rest
|
|
669
|
-
})).and(z.object({ id: z.string() }).loose()).transform(({ id, credential_signing_alg_values_supported, display, proof_types_supported, scope,...rest }) => ({
|
|
677
|
+
})).and(z.object({ id: z.string() }).loose()).transform(({ id, credential_signing_alg_values_supported, display, proof_types_supported, scope, format,...rest }) => ({
|
|
670
678
|
...rest,
|
|
671
|
-
|
|
679
|
+
format,
|
|
680
|
+
...credential_signing_alg_values_supported ? { cryptographic_suites_supported: format === zMsoMdocFormatIdentifier.value && typeof credential_signing_alg_values_supported[0] === "number" ? fullySpecifiedCoseAlgorithmArrayToJwaSignatureAlgorithmArray(credential_signing_alg_values_supported) : credential_signing_alg_values_supported } : {},
|
|
672
681
|
...display ? { display: display.map(({ logo, background_image,...displayRest }) => {
|
|
673
682
|
const { uri: logoUri,...logoRest } = logo ?? {};
|
|
674
683
|
const { uri: backgroundImageUri,...backgroundImageRest } = background_image ?? {};
|
|
@@ -695,7 +704,7 @@ const zCredentialConfigurationSupportedV1ToDraft11 = zCredentialConfigurationSup
|
|
|
695
704
|
zJwtVcJsonLdFormatIdentifier.value
|
|
696
705
|
].includes(input)) }).loose()
|
|
697
706
|
]));
|
|
698
|
-
const
|
|
707
|
+
const zCredentialIssuerMetadataDraft11ToV1 = z.object({
|
|
699
708
|
authorization_server: z.string().optional(),
|
|
700
709
|
credentials_supported: z.array(z.object({ id: z.string().optional() }).loose())
|
|
701
710
|
}).loose().transform(({ authorization_server, credentials_supported,...rest }) => {
|
|
@@ -704,7 +713,7 @@ const zCredentialIssuerMetadataDraft11To16 = z.object({
|
|
|
704
713
|
...authorization_server ? { authorization_servers: [authorization_server] } : {},
|
|
705
714
|
credential_configurations_supported: Object.fromEntries(credentials_supported.map((supported) => supported.id ? [supported.id, supported] : void 0).filter((i) => i !== void 0))
|
|
706
715
|
};
|
|
707
|
-
}).pipe(z.object({ credential_configurations_supported: z.record(z.string(),
|
|
716
|
+
}).pipe(z.object({ credential_configurations_supported: z.record(z.string(), zCredentialConfigurationSupportedDraft11ToV1) }).loose()).pipe(zCredentialIssuerMetadataDraft14Draft15V1);
|
|
708
717
|
const zCredentialIssuerMetadataWithDraft11 = zCredentialIssuerMetadataDraft14Draft15V1.transform((issuerMetadata) => ({
|
|
709
718
|
...issuerMetadata,
|
|
710
719
|
...issuerMetadata.authorization_servers ? { authorization_server: issuerMetadata.authorization_servers[0] } : {},
|
|
@@ -713,7 +722,7 @@ const zCredentialIssuerMetadataWithDraft11 = zCredentialIssuerMetadataDraft14Dra
|
|
|
713
722
|
id
|
|
714
723
|
}))
|
|
715
724
|
})).pipe(zCredentialIssuerMetadataDraft14Draft15V1.extend({ credentials_supported: z.array(zCredentialConfigurationSupportedV1ToDraft11) }));
|
|
716
|
-
const zCredentialIssuerMetadata = z.union([zCredentialIssuerMetadataDraft14Draft15V1,
|
|
725
|
+
const zCredentialIssuerMetadata = z.union([zCredentialIssuerMetadataDraft14Draft15V1, zCredentialIssuerMetadataDraft11ToV1]);
|
|
717
726
|
const zCredentialIssuerMetadataWithDraftVersion = z.union([zCredentialIssuerMetadataDraft14Draft15V1.transform((credentialIssuerMetadata) => {
|
|
718
727
|
const credentialConfigurations = Object.values(credentialIssuerMetadata.credential_configurations_supported);
|
|
719
728
|
const isDraft15 = credentialConfigurations.some((configuration) => {
|
|
@@ -725,9 +734,9 @@ const zCredentialIssuerMetadataWithDraftVersion = z.union([zCredentialIssuerMeta
|
|
|
725
734
|
});
|
|
726
735
|
return {
|
|
727
736
|
credentialIssuerMetadata,
|
|
728
|
-
originalDraftVersion: credentialConfigurations.some((configuration) => configuration.credential_metadata) ? Openid4vciDraftVersion.V1 : isDraft15 ? Openid4vciDraftVersion.Draft15 : Openid4vciDraftVersion.Draft14
|
|
737
|
+
originalDraftVersion: credentialConfigurations.some((configuration) => configuration.credential_metadata || configuration.format === "mso_mdoc" && configuration.credential_signing_alg_values_supported?.some((supported) => typeof supported === "number")) ? Openid4vciDraftVersion.V1 : isDraft15 ? Openid4vciDraftVersion.Draft15 : Openid4vciDraftVersion.Draft14
|
|
729
738
|
};
|
|
730
|
-
}),
|
|
739
|
+
}), zCredentialIssuerMetadataDraft11ToV1.transform((credentialIssuerMetadata) => ({
|
|
731
740
|
credentialIssuerMetadata,
|
|
732
741
|
originalDraftVersion: Openid4vciDraftVersion.Draft11
|
|
733
742
|
}))]);
|
|
@@ -949,7 +958,7 @@ function credentialsSupportedToCredentialConfigurationsSupported(credentialsSupp
|
|
|
949
958
|
for (let index = 0; index < credentialsSupported.length; index++) {
|
|
950
959
|
const credentialSupported = credentialsSupported[index];
|
|
951
960
|
if (!credentialSupported.id) throw new Openid4vciError(`Credential supported at index '${index}' does not have an 'id' property. Credential configuration requires the 'id' property as key`);
|
|
952
|
-
const parseResult =
|
|
961
|
+
const parseResult = zCredentialConfigurationSupportedDraft11ToV1.safeParse(credentialSupported);
|
|
953
962
|
if (!parseResult.success) throw new ValidationError(`Error transforming credential supported with id '${credentialSupported.id}' to credential configuration supported format`, parseResult.error);
|
|
954
963
|
credentialConfigurationsSupported[credentialSupported.id] = parseResult.data;
|
|
955
964
|
}
|