42 std::optional<std::chrono::seconds>
max_age;
51 std::function<std::optional<FetchResult>(std::string_view url)>;
56 using Clock = std::function<std::chrono::system_clock::time_point()>;
111 const std::span<const JWSAlgorithm> allowed_algorithms,
112 const std::string_view expected_issuer,
113 const std::string_view expected_audience,
114 const std::optional<std::string_view> expected_subject,
115 const std::optional<std::string_view> expected_type)
116 -> std::optional<JWTVerificationError>;
121 const JWT &token,
const std::span<const JWSAlgorithm> allowed_algorithms,
122 const std::string_view expected_issuer,
123 const std::string_view expected_audience,
124 const std::optional<std::string_view> expected_subject = std::nullopt)
125 -> std::optional<JWTVerificationError>;
134 const std::span<const JWSAlgorithm> allowed_algorithms,
135 const std::string_view expected_issuer,
136 const std::string_view expected_audience,
137 const std::optional<std::string_view> expected_subject,
138 const std::optional<std::string_view> expected_type,
139 std::chrono::system_clock::time_point &resolved_now)
140 -> std::optional<JWTVerificationError>;
143 auto verify_at(
const JWT &token,
144 const std::span<const JWSAlgorithm> allowed_algorithms,
145 const std::string_view expected_issuer,
146 const std::string_view expected_audience,
147 const std::optional<std::string_view> expected_subject,
148 const std::optional<std::string_view> expected_type,
149 const std::chrono::system_clock::time_point now)
150 -> std::optional<JWTVerificationError>;
151 auto fetch_and_install_locked(std::chrono::system_clock::time_point now)
153 auto refresh_locked(std::chrono::system_clock::time_point now)
154 -> std::shared_ptr<const JWKS>;
155 auto refetch_for_unknown_kid_locked(std::chrono::system_clock::time_point now)
156 -> std::shared_ptr<const JWKS>;
159#pragma warning(disable : 4251)
161 const std::string jwks_uri_;
166 std::shared_ptr<const JWKS> keys_;
167 std::chrono::system_clock::time_point next_refresh_{};
168 std::chrono::system_clock::time_point unknown_kid_cooldown_until_{};
170#pragma warning(default : 4251)
auto verify(const JWT &token, const std::span< const JWSAlgorithm > allowed_algorithms, const std::string_view expected_issuer, const std::string_view expected_audience, const std::optional< std::string_view > expected_subject, const std::optional< std::string_view > expected_type) -> std::optional< JWTVerificationError >
auto verify_access_token(const JWT &token, const std::span< const JWSAlgorithm > allowed_algorithms, const std::string_view expected_issuer, const std::string_view expected_audience, const std::optional< std::string_view > expected_subject=std::nullopt) -> std::optional< JWTVerificationError >
auto verify(const JWT &token, const std::span< const JWSAlgorithm > allowed_algorithms, const std::string_view expected_issuer, const std::string_view expected_audience, const std::optional< std::string_view > expected_subject, const std::optional< std::string_view > expected_type, std::chrono::system_clock::time_point &resolved_now) -> std::optional< JWTVerificationError >