@openid4vc/oauth2 0.3.0-alpha-20251029103950 → 0.3.0-alpha-20251030140425

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 CHANGED
@@ -189,6 +189,7 @@ const zJwtPayload = zod.default.object({
189
189
  nbf: __openid4vc_utils.zInteger.optional(),
190
190
  nonce: zod.default.string().optional(),
191
191
  jti: zod.default.string().optional(),
192
+ sub: zod.default.string().optional(),
192
193
  cnf: zJwtConfirmationPayload.optional(),
193
194
  status: zod.default.record(zod.default.string(), zod.default.any()).optional(),
194
195
  trust_chain: zod.default.tuple([zod.default.string()], zod.default.string()).optional()
@@ -868,6 +869,91 @@ var Oauth2ResourceUnauthorizedError = class Oauth2ResourceUnauthorizedError exte
868
869
  }
869
870
  };
870
871
 
872
+ //#endregion
873
+ //#region src/id-token/z-id-token-jwt.ts
874
+ const zIdTokenJwtHeader = zod.default.object({ ...zJwtHeader.shape }).loose();
875
+ const zIdTokenJwtPayload = zod.default.object({
876
+ ...zJwtPayload.shape,
877
+ iss: zod.default.string(),
878
+ sub: zod.default.string(),
879
+ aud: zod.default.string(),
880
+ exp: __openid4vc_utils.zInteger,
881
+ iat: __openid4vc_utils.zInteger,
882
+ auth_time: __openid4vc_utils.zInteger.optional(),
883
+ acr: zod.default.string().optional(),
884
+ amr: zod.default.array(zod.default.string()).optional(),
885
+ azp: zod.default.string().optional(),
886
+ name: zod.default.string().optional(),
887
+ given_name: zod.default.string().optional(),
888
+ family_name: zod.default.string().optional(),
889
+ middle_name: zod.default.string().optional(),
890
+ nickname: zod.default.string().optional(),
891
+ preferred_username: zod.default.string().optional(),
892
+ profile: zod.default.url().optional(),
893
+ picture: zod.default.url().optional(),
894
+ website: zod.default.url().optional(),
895
+ email: zod.default.email().optional(),
896
+ email_verified: zod.default.boolean().optional(),
897
+ gender: zod.default.enum(["male", "female"]).or(zod.default.string()).optional(),
898
+ birthdate: zod.default.iso.date().optional(),
899
+ zoneinfo: zod.default.string().optional(),
900
+ locale: zod.default.string().optional(),
901
+ phone_number: zod.default.string().optional(),
902
+ phone_number_verified: zod.default.boolean().optional(),
903
+ address: zod.default.object({
904
+ formatted: zod.default.string().optional(),
905
+ street_address: zod.default.string().optional(),
906
+ locality: zod.default.string().optional(),
907
+ region: zod.default.string().optional(),
908
+ postal_code: zod.default.string().optional(),
909
+ country: zod.default.string().optional()
910
+ }).loose().optional(),
911
+ updated_at: __openid4vc_utils.zInteger.optional()
912
+ }).loose();
913
+
914
+ //#endregion
915
+ //#region src/id-token/verify-id-token.ts
916
+ /**
917
+ * Verify an ID Token JWT.
918
+ */
919
+ async function verifyJwtIdToken(options) {
920
+ const { header, payload } = decodeJwt({
921
+ jwt: options.idToken,
922
+ headerSchema: zIdTokenJwtHeader,
923
+ payloadSchema: zIdTokenJwtPayload
924
+ });
925
+ const jwksUrl = options.authorizationServer.jwks_uri;
926
+ if (!jwksUrl) throw new Oauth2Error(`Authorization server '${options.authorizationServer.issuer}' does not have a 'jwks_uri' parameter to fetch JWKs.`);
927
+ if (payload.iss !== options.authorizationServer.issuer) throw new Oauth2Error(`Invalid 'iss' claim in id token jwt. Expected '${options.authorizationServer.issuer}', got '${payload.iss}'.`);
928
+ if (payload.azp && payload.azp !== options.clientId) throw new Oauth2Error(`Invalid 'azp' claim in id token jwt. Expected '${options.clientId}', got '${payload.azp}'.`);
929
+ const jwks = await fetchJwks(jwksUrl, options.callbacks.fetch);
930
+ const publicJwk = extractJwkFromJwksForJwt({
931
+ kid: header.kid,
932
+ jwks,
933
+ use: "sig"
934
+ });
935
+ await verifyJwt({
936
+ compact: options.idToken,
937
+ header,
938
+ payload,
939
+ signer: {
940
+ method: "jwk",
941
+ publicJwk,
942
+ alg: header.alg
943
+ },
944
+ verifyJwtCallback: options.callbacks.verifyJwt,
945
+ errorMessage: "Error during verification of id token jwt.",
946
+ now: options.now,
947
+ expectedAudience: options.clientId,
948
+ expectedIssuer: options.authorizationServer.issuer,
949
+ expectedNonce: options.expectedNonce
950
+ });
951
+ return {
952
+ header,
953
+ payload
954
+ };
955
+ }
956
+
871
957
  //#endregion
872
958
  //#region src/metadata/fetch-well-known-metadata.ts
873
959
  /**
@@ -2502,6 +2588,12 @@ exports.Oauth2ServerErrorResponseError = Oauth2ServerErrorResponseError;
2502
2588
  exports.PkceCodeChallengeMethod = PkceCodeChallengeMethod;
2503
2589
  exports.SupportedAuthenticationScheme = SupportedAuthenticationScheme;
2504
2590
  exports.SupportedClientAuthenticationMethod = SupportedClientAuthenticationMethod;
2591
+ Object.defineProperty(exports, 'VerifiedClientAttestationJwt', {
2592
+ enumerable: true,
2593
+ get: function () {
2594
+ return VerifiedClientAttestationJwt;
2595
+ }
2596
+ });
2505
2597
  exports.authorizationCodeGrantIdentifier = authorizationCodeGrantIdentifier;
2506
2598
  exports.calculateJwkThumbprint = calculateJwkThumbprint;
2507
2599
  exports.clientAuthenticationAnonymous = clientAuthenticationAnonymous;
@@ -2535,13 +2627,17 @@ Object.defineProperty(exports, 'setGlobalConfig', {
2535
2627
  return __openid4vc_utils.setGlobalConfig;
2536
2628
  }
2537
2629
  });
2630
+ exports.verifyClientAttestationJwt = verifyClientAttestationJwt;
2538
2631
  exports.verifyJwt = verifyJwt;
2632
+ exports.verifyJwtIdToken = verifyJwtIdToken;
2539
2633
  exports.verifyResourceRequest = verifyResourceRequest;
2540
2634
  exports.zAlgValueNotNone = zAlgValueNotNone;
2541
2635
  exports.zAuthorizationCodeGrantIdentifier = zAuthorizationCodeGrantIdentifier;
2542
2636
  exports.zAuthorizationServerMetadata = zAuthorizationServerMetadata;
2543
2637
  exports.zCompactJwe = zCompactJwe;
2544
2638
  exports.zCompactJwt = zCompactJwt;
2639
+ exports.zIdTokenJwtHeader = zIdTokenJwtHeader;
2640
+ exports.zIdTokenJwtPayload = zIdTokenJwtPayload;
2545
2641
  exports.zJwk = zJwk;
2546
2642
  exports.zJwkSet = zJwkSet;
2547
2643
  exports.zJwtHeader = zJwtHeader;