@@ -2051,8 +2051,8 @@ namespace jwt {
2051
2051
};
2052
2052
2053
2053
template <typename object_type, typename string_type>
2054
- using is_count_signature = typename std::is_integral<decltype (
2055
- std::declval<const object_type>().count(std::declval< const string_type>()))>;
2054
+ using is_count_signature = typename std::is_integral<decltype (std::declval< const object_type>().count(
2055
+ std::declval<const string_type>()))>;
2056
2056
2057
2057
template <typename object_type, typename string_type>
2058
2058
struct has_subcription_operator {
@@ -3784,7 +3784,8 @@ namespace jwt {
3784
3784
using iterator = typename jwt_vector_t ::iterator;
3785
3785
using const_iterator = typename jwt_vector_t ::const_iterator;
3786
3786
3787
- JWT_CLAIM_EXPLICIT jwks (const typename json_traits::string_type& str) {
3787
+ template <typename Decode>
3788
+ jwks (const typename json_traits::string_type& str, Decode decode) {
3788
3789
typename json_traits::value_type parsed_val;
3789
3790
if (!json_traits::parse (parsed_val, str)) throw error::invalid_json_exception ();
3790
3791
@@ -3793,9 +3794,16 @@ namespace jwt {
3793
3794
3794
3795
auto jwk_list = jwks_json.get_claim (" keys" ).as_array ();
3795
3796
std::transform (jwk_list.begin (), jwk_list.end (), std::back_inserter (jwk_claims),
3796
- [](const typename json_traits::value_type& val) { return jwk_t { val} ; });
3797
+ [& ](const typename json_traits::value_type& val) { return jwk_t ( val, decode) ; });
3797
3798
}
3798
3799
3800
+ #ifndef JWT_DISABLE_BASE64
3801
+ JWT_CLAIM_EXPLICIT jwks (const typename json_traits::string_type& str)
3802
+ : jwks(str, [](const typename json_traits::string_type& str) {
3803
+ return base::decode<alphabet::base64url>(base::pad<alphabet::base64url>(str));
3804
+ }) {}
3805
+ #endif
3806
+
3799
3807
iterator begin () { return jwk_claims.begin (); }
3800
3808
iterator end () { return jwk_claims.end (); }
3801
3809
const_iterator cbegin () const { return jwk_claims.begin (); }
0 commit comments