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

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
  /**
@@ -2535,13 +2621,17 @@ Object.defineProperty(exports, 'setGlobalConfig', {
2535
2621
  return __openid4vc_utils.setGlobalConfig;
2536
2622
  }
2537
2623
  });
2624
+ exports.verifyClientAttestationJwt = verifyClientAttestationJwt;
2538
2625
  exports.verifyJwt = verifyJwt;
2626
+ exports.verifyJwtIdToken = verifyJwtIdToken;
2539
2627
  exports.verifyResourceRequest = verifyResourceRequest;
2540
2628
  exports.zAlgValueNotNone = zAlgValueNotNone;
2541
2629
  exports.zAuthorizationCodeGrantIdentifier = zAuthorizationCodeGrantIdentifier;
2542
2630
  exports.zAuthorizationServerMetadata = zAuthorizationServerMetadata;
2543
2631
  exports.zCompactJwe = zCompactJwe;
2544
2632
  exports.zCompactJwt = zCompactJwt;
2633
+ exports.zIdTokenJwtHeader = zIdTokenJwtHeader;
2634
+ exports.zIdTokenJwtPayload = zIdTokenJwtPayload;
2545
2635
  exports.zJwk = zJwk;
2546
2636
  exports.zJwkSet = zJwkSet;
2547
2637
  exports.zJwtHeader = zJwtHeader;