Skip to content

Commit

Permalink
Check if array_type has a front() method
Browse files Browse the repository at this point in the history
Signed-off-by: Omar Mohamed <[email protected]>
  • Loading branch information
omar-mohamed-khallaf committed Sep 25, 2024
1 parent 776b792 commit 5e9c3f6
Showing 1 changed file with 30 additions and 29 deletions.
59 changes: 30 additions & 29 deletions include/jwt-cpp/jwt.h
Original file line number Diff line number Diff line change
Expand Up @@ -808,7 +808,7 @@ namespace jwt {
* \brief Load a public key from a string.
*
* The string should contain a pem encoded certificate or public key
*
*
* \deprecated Use the templated version helper::load_private_key_from_string with error::ecdsa_error
*
* \param key String containing the certificate encoded as pem
Expand Down Expand Up @@ -872,7 +872,7 @@ namespace jwt {
* The string should contain a pem encoded certificate or public key
*
* \deprecated Use the templated version helper::load_private_key_from_string with error::ecdsa_error
*
*
* \param key String containing the certificate or key encoded as pem
* \param password Password used to decrypt certificate or key (leave empty if not encrypted)
* \throw ecdsa_exception if an error occurred
Expand All @@ -887,7 +887,7 @@ namespace jwt {

/**
* \brief Load a private key from a string.
*
*
* \deprecated Use the templated version helper::load_private_key_from_string with error::ecdsa_error
*
* \param key String containing a private key as pem
Expand Down Expand Up @@ -1077,7 +1077,7 @@ namespace jwt {
* \brief Load a private key from a string.
*
* \deprecated Use the templated version helper::load_private_key_from_string with error::ecdsa_error
*
*
* \param key String containing a private key as pem
* \param password Password used to decrypt key (leave empty if not encrypted)
* \throw ecdsa_exception if an error occurred
Expand Down Expand Up @@ -1372,7 +1372,7 @@ namespace jwt {
struct hmacsha {
/**
* Construct new hmac algorithm
*
*
* \param key Key to use for HMAC
* \param md Pointer to hash function
* \param name Name of the algorithm
Expand All @@ -1381,7 +1381,7 @@ namespace jwt {
: secret(std::move(key)), md(md), alg_name(std::move(name)) {}
/**
* Sign jwt data
*
*
* \param data The data to sign
* \param ec error_code filled with details on error
* \return HMAC signature for the given data
Expand All @@ -1402,7 +1402,7 @@ namespace jwt {
}
/**
* Check if signature is valid
*
*
* \param data The data to check signature against
* \param signature Signature provided by the jwt
* \param ec Filled with details about failure.
Expand All @@ -1423,7 +1423,7 @@ namespace jwt {
}
/**
* Returns the algorithm name provided to the constructor
*
*
* \return algorithm's name
*/
std::string name() const { return alg_name; }
Expand All @@ -1442,7 +1442,7 @@ namespace jwt {
struct rsa {
/**
* Construct new rsa algorithm
*
*
* \param public_key RSA public key in PEM format
* \param private_key RSA private key or empty string if not available. If empty, signing will always fail.
* \param public_key_password Password to decrypt public key pem.
Expand Down Expand Up @@ -1495,7 +1495,7 @@ namespace jwt {
}
/**
* Check if signature is valid
*
*
* \param data The data to check signature against
* \param signature Signature provided by the jwt
* \param ec Filled with details on failure
Expand Down Expand Up @@ -2053,13 +2053,13 @@ namespace jwt {
};
/**
* RS256 algorithm.
*
*
* This data structure is used to describe the RSA256 and can be used to verify JWTs
*/
struct rs256 : public rsa {
/**
* \brief Construct new instance of algorithm
*
*
* \param public_key RSA public key in PEM format
* \param private_key RSA private key or empty string if not available. If empty, signing will always fail.
* \param public_key_password Password to decrypt public key pem.
Expand Down Expand Up @@ -2463,7 +2463,8 @@ namespace jwt {
static constexpr auto value = std::is_constructible<value_type, array_type>::value &&
is_iterable<array_type>::value &&
is_detected<value_type_t, array_type>::value &&
std::is_same<typename array_type::value_type, value_type>::value;
std::is_same<typename array_type::value_type, value_type>::value &&
!std::is_same<decltype(std::declval<array_type>().front()), void>::value;
};

template<typename string_type, typename integer_type>
Expand Down Expand Up @@ -3728,9 +3729,9 @@ namespace jwt {
* Specify a claim to check for using the specified operation.
* This is helpful for implementating application specific authentication checks
* such as the one seen in partial-claim-verifier.cpp
*
*
* \snippet{trimleft} partial-claim-verifier.cpp verifier check custom claim
*
*
* \param name Name of the claim to check for
* \param fn Function to use for verifying the claim
* \return *this to allow chaining
Expand All @@ -3743,9 +3744,9 @@ namespace jwt {
/**
* Specify a claim to check for equality (both type & value).
* See the private-claims.cpp example.
*
*
* \snippet{trimleft} private-claims.cpp verify exact claim
*
*
* \param name Name of the claim to check for
* \param c Claim to check for
* \return *this to allow chaining
Expand All @@ -3756,13 +3757,13 @@ namespace jwt {

/**
* \brief Add an algorithm available for checking.
*
*
* This is used to handle incomming tokens for predefined algorithms
* which the authorization server is provided. For example a small system
* where only a single RSA key-pair is used to sign tokens
*
*
* \snippet{trimleft} example/rsa-verify.cpp allow rsa algorithm
*
*
* \tparam Algorithm any algorithm such as those provided by jwt::algorithm
* \param alg Algorithm to allow
* \return *this to allow chaining
Expand Down Expand Up @@ -4122,18 +4123,18 @@ namespace jwt {
* Default clock class using std::chrono::system_clock as a backend.
*/
struct default_clock {
/**
/**
* Gets the current system time
* \return time_point of the host system
* \return time_point of the host system
*/
date now() const { return date::clock::now(); }
};

/**
* Create a verifier using the default_clock.
*
*
*
*
*
*
* \param c Clock instance to use
* \return verifier instance
*/
Expand All @@ -4153,7 +4154,7 @@ namespace jwt {
/**
* \brief Decode a token. This can be used to to help access important feild like 'x5c'
* for verifying tokens. See associated example rsa-verify.cpp for more details.
*
*
* \tparam json_traits JSON implementation traits
* \tparam Decode is callable, taking a string_type and returns a string_type.
* It should ensure the padding of the input and then base64url decode and
Expand All @@ -4172,7 +4173,7 @@ namespace jwt {
/**
* Decode a token. This can be used to to help access important feild like 'x5c'
* for verifying tokens. See associated example rsa-verify.cpp for more details.
*
*
* \tparam json_traits JSON implementation traits
* \param token Token to decode
* \return Decoded token
Expand All @@ -4194,10 +4195,10 @@ namespace jwt {
return jwk<json_traits>(jwk_);
}
/**
* Parse a JSON Web Key Set. This can be used to to help access
* Parse a JSON Web Key Set. This can be used to to help access
* important feild like 'x5c' for verifying tokens. See example
* jwks-verify.cpp for more information.
*
*
* \tparam json_traits JSON implementation traits
* \param jwks_ string buffer containing the JSON object
* \return Parsed JSON object containing the data of the JWK SET string
Expand Down

0 comments on commit 5e9c3f6

Please sign in to comment.