From 8277e2cbd33ee714093562477a1ace5a3e595267 Mon Sep 17 00:00:00 2001 From: Arun M Date: Sun, 5 Nov 2017 12:31:32 +0530 Subject: [PATCH] JWT encoding --- include/jwt/base64.hpp | 34 ++++++++++-- include/jwt/impl/jwt.ipp | 69 +++++++++++++++++++++++++ include/jwt/jwt.hpp | 32 ++++++++++++ include/jwt/test/test_jwt_signature | Bin 0 -> 299488 bytes include/jwt/test/test_jwt_signature.cc | 24 +++++++++ 5 files changed, 156 insertions(+), 3 deletions(-) create mode 100755 include/jwt/test/test_jwt_signature create mode 100644 include/jwt/test/test_jwt_signature.cc diff --git a/include/jwt/base64.hpp b/include/jwt/base64.hpp index faaad0f..552ec4c 100644 --- a/include/jwt/base64.hpp +++ b/include/jwt/base64.hpp @@ -3,10 +3,11 @@ #include #include +#include "jwt/string_view.hpp" namespace jwt { -/* +/*! * Encoding map. */ class EMap @@ -30,7 +31,8 @@ private: }; }; - +/*! + */ std::string base64_encode(const char* in, size_t len) { std::string result; @@ -120,7 +122,8 @@ private: }; }; - +/*! + */ std::string base64_decode(const char* in, size_t len) { std::string result; @@ -184,6 +187,31 @@ std::string base64_decode(const char* in, size_t len) return result; } +/*! + */ +void base64_uri_encode(char* data, size_t len) noexcept +{ + size_t i = 0; + size_t j = 0; + + for (; i < len; ++i) { + switch (data[i]) { + case '+': + data[j++] = '-'; + break; + case '/': + data[j++] = '_'; + break; + case '=': + break; + default: + data[j++] = data[i]; + }; + } + + return; +} + } // END namespace jwt diff --git a/include/jwt/impl/jwt.ipp b/include/jwt/impl/jwt.ipp index af84bd8..134142d 100644 --- a/include/jwt/impl/jwt.ipp +++ b/include/jwt/impl/jwt.ipp @@ -30,6 +30,75 @@ std::ostream& operator<< (std::ostream& os, const T& obj) return os; } +std::string jwt_signature::encode(const jwt_header& header, + const jwt_payload& payload) +{ + std::string jwt_msg; + //TODO: Optimize allocations + + sign_func_t sign_fn = get_algorithm_impl(header); + + std::string hdr_sign = header.base64_encode(); + std::string pld_sign = payload.base64_encode(); + + base64_uri_encode(&hdr_sign[0], hdr_sign.length()); + base64_uri_encode(&pld_sign[0], pld_sign.length()); + + std::string data = hdr_sign + '.' + pld_sign; + auto res = sign_fn(key_, data); + + std::string b64hash = base64_encode(res.first.c_str(), res.first.length()); + base64_uri_encode(&b64hash[0], b64hash.length()); + + jwt_msg = data + '.' + b64hash; + + return jwt_msg; +} + + +sign_func_t +jwt_signature::get_algorithm_impl(const jwt_header& hdr) const noexcept +{ + sign_func_t ret = nullptr; + + switch (hdr.algo()) { + case algorithm::HS256: + ret = HMACSign::sign; + break; + case algorithm::HS384: + ret = HMACSign::sign; + break; + case algorithm::HS512: + ret = HMACSign::sign; + break; + case algorithm::NONE: + ret = HMACSign::sign; + break; + case algorithm::RS256: + ret = PEMSign::sign; + break; + case algorithm::RS384: + ret = PEMSign::sign; + break; + case algorithm::RS512: + ret = PEMSign::sign; + break; + case algorithm::ES256: + ret = PEMSign::sign; + break; + case algorithm::ES384: + ret = PEMSign::sign; + break; + case algorithm::ES512: + ret = PEMSign::sign; + break; + default: + assert (0 && "Code not reached"); + }; + + return ret; +} + } // END namespace jwt diff --git a/include/jwt/jwt.hpp b/include/jwt/jwt.hpp index 5df200b..1d1e2cc 100644 --- a/include/jwt/jwt.hpp +++ b/include/jwt/jwt.hpp @@ -8,6 +8,7 @@ #include #include "jwt/base64.hpp" +#include "jwt/algorithm.hpp" #include "jwt/string_view.hpp" #include "jwt/detail/meta.hpp" #include "jwt/json/json.hpp" @@ -342,6 +343,37 @@ private: */ struct jwt_signature { +public: // 'tors + /// Default constructor + jwt_signature() = default; + + /*! + */ + jwt_signature(string_view key) + : key_(key.data(), key.length()) + { + } + + /// Default copy and assignment operator + jwt_signature(const jwt_signature&) = default; + jwt_signature& operator=(const jwt_signature&) = default; + + ~jwt_signature() = default; + +public: // Exposed APIs + /*! + */ + std::string encode(const jwt_header& header, + const jwt_payload& payload); + +private: // Private implementation + /*! + */ + sign_func_t get_algorithm_impl(const jwt_header& hdr) const noexcept; + +private: // Data members; + /// The key for creating the JWS + std::string key_; }; diff --git a/include/jwt/test/test_jwt_signature b/include/jwt/test/test_jwt_signature new file mode 100755 index 0000000000000000000000000000000000000000..d4482a19da6d7e3ce2a42916dbe58a1fcf4ee9a9 GIT binary patch literal 299488 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 literal 0 HcmV?d00001 diff --git a/include/jwt/test/test_jwt_signature.cc b/include/jwt/test/test_jwt_signature.cc new file mode 100644 index 0000000..7a95082 --- /dev/null +++ b/include/jwt/test/test_jwt_signature.cc @@ -0,0 +1,24 @@ +#include +#include "jwt/jwt.hpp" + +void basic_sign_test() +{ + // Create header + jwt::jwt_header hdr; + hdr = jwt::jwt_header{jwt::algorithm::HS256}; + + // Create payload + jwt::jwt_payload jp; + jp.add_claim("sub", "1234567890"); + jp.add_claim("name", "John Doe"); + jp.add_claim("admin", true); + + jwt::jwt_signature sgn{"secret"}; + auto res = sgn.sign(hdr, jp); + std::cout << res << std::endl; +} + +int main() { + basic_sign_test(); + return 0; +}