mirror of
https://github.com/ZoneMinder/zoneminder.git
synced 2026-10-27 00:38:30 -04:00
src/ should only contain our code. Move the in-tree dependencies to dep/ This allows us (if necessary) to e.g. exclude that part of the tree from being analyzed by various tools or mark it as external code in IDEs.
421 lines
17 KiB
C++
421 lines
17 KiB
C++
#include <gtest/gtest.h>
|
|
#include "include/jwt-cpp/jwt.h"
|
|
|
|
namespace {
|
|
extern std::string rsa_priv_key;
|
|
extern std::string rsa_pub_key;
|
|
extern std::string rsa_pub_key_invalid;
|
|
extern std::string rsa512_priv_key;
|
|
extern std::string rsa512_pub_key;
|
|
extern std::string rsa512_pub_key_invalid;
|
|
extern std::string ecdsa_priv_key;
|
|
extern std::string ecdsa_pub_key;
|
|
extern std::string ecdsa_pub_key_invalid;
|
|
}
|
|
|
|
TEST(TokenTest, DecodeToken) {
|
|
std::string token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXUyJ9.eyJpc3MiOiJhdXRoMCJ9.AbIJTDMFc7yUa5MhvcP03nJPyCPzZtQcGEp-zWfOkEE";
|
|
auto decoded = jwt::decode(token);
|
|
|
|
ASSERT_TRUE(decoded.has_algorithm());
|
|
ASSERT_TRUE(decoded.has_type());
|
|
ASSERT_FALSE(decoded.has_content_type());
|
|
ASSERT_FALSE(decoded.has_key_id());
|
|
ASSERT_TRUE(decoded.has_issuer());
|
|
ASSERT_FALSE(decoded.has_subject());
|
|
ASSERT_FALSE(decoded.has_audience());
|
|
ASSERT_FALSE(decoded.has_expires_at());
|
|
ASSERT_FALSE(decoded.has_not_before());
|
|
ASSERT_FALSE(decoded.has_issued_at());
|
|
ASSERT_FALSE(decoded.has_id());
|
|
|
|
ASSERT_EQ("HS256", decoded.get_algorithm());
|
|
ASSERT_EQ("JWS", decoded.get_type());
|
|
ASSERT_EQ("auth0", decoded.get_issuer());
|
|
}
|
|
|
|
TEST(TokenTest, CreateToken) {
|
|
auto token = jwt::create()
|
|
.set_issuer("auth0")
|
|
.set_type("JWS")
|
|
.sign(jwt::algorithm::none{});
|
|
ASSERT_EQ("eyJhbGciOiJub25lIiwidHlwIjoiSldTIn0.eyJpc3MiOiJhdXRoMCJ9.", token);
|
|
}
|
|
|
|
TEST(TokenTest, CreateTokenHS256) {
|
|
auto token = jwt::create()
|
|
.set_issuer("auth0")
|
|
.set_type("JWS")
|
|
.sign(jwt::algorithm::hs256{"secret"});
|
|
ASSERT_EQ("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXUyJ9.eyJpc3MiOiJhdXRoMCJ9.AbIJTDMFc7yUa5MhvcP03nJPyCPzZtQcGEp-zWfOkEE", token);
|
|
}
|
|
|
|
TEST(TokenTest, CreateTokenRS256) {
|
|
auto token = jwt::create()
|
|
.set_issuer("auth0")
|
|
.set_type("JWS")
|
|
.sign(jwt::algorithm::rs256(rsa_pub_key, rsa_priv_key, "", ""));
|
|
|
|
ASSERT_EQ(
|
|
"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXUyJ9.eyJpc3MiOiJhdXRoMCJ9.VA2i1ui1cnoD6I3wnji1WAVCf29EekysvevGrT2GXqK1dDMc8"
|
|
"HAZCTQxa1Q8NppnpYV-hlqxh-X3Bb0JOePTGzjynpNZoJh2aHZD-GKpZt7OO1Zp8AFWPZ3p8Cahq8536fD8RiBES9jRsvChZvOqA7gMcFc4"
|
|
"YD0iZhNIcI7a654u5yPYyTlf5kjR97prCf_OXWRn-bYY74zna4p_bP9oWCL4BkaoRcMxi-IR7kmVcCnvbYqyIrKloXP2qPO442RBGqU7Ov9"
|
|
"sGQxiVqtRHKXZR9RbfvjrErY1KGiCp9M5i2bsUHadZEY44FE2jiOmx-uc2z5c05CCXqVSpfCjWbh9gQ", token);
|
|
}
|
|
|
|
TEST(TokenTest, CreateTokenRS512) {
|
|
auto token = jwt::create()
|
|
.set_issuer("auth0")
|
|
.set_type("JWS")
|
|
.sign(jwt::algorithm::rs512(rsa512_pub_key, rsa512_priv_key, "", ""));
|
|
|
|
ASSERT_EQ(
|
|
"eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXUyJ9.eyJpc3MiOiJhdXRoMCJ9.GZhnjtsvBl2_KDSxg4JW6xnmNjr2mWhYSZSSQyLKvI0"
|
|
"TK86sJKchkt_HDy2IC5l5BGRhq_Xv9pHdA1umidQZG3a7gWvHsujqybCBgBraMTd1wJrCl4QxFg2RYHhHbRqb9BnPJgFD_vryd4GB"
|
|
"hfGgejPBCBlGrQtqFGFdHHOjNHY", token);
|
|
}
|
|
|
|
TEST(TokenTest, CreateTokenPS256) {
|
|
auto token = jwt::create()
|
|
.set_issuer("auth0")
|
|
.set_type("JWS")
|
|
.sign(jwt::algorithm::ps256(rsa_pub_key, rsa_priv_key, "", ""));
|
|
|
|
// TODO: Find a better way to check if generated signature is valid
|
|
// Can't do simple check for equal since pss adds random salt.
|
|
}
|
|
|
|
TEST(TokenTest, CreateTokenPS384) {
|
|
auto token = jwt::create()
|
|
.set_issuer("auth0")
|
|
.set_type("JWS")
|
|
.sign(jwt::algorithm::ps384(rsa_pub_key, rsa_priv_key, "", ""));
|
|
|
|
// TODO: Find a better way to check if generated signature is valid
|
|
// Can't do simple check for equal since pss adds random salt.
|
|
}
|
|
|
|
TEST(TokenTest, CreateTokenPS512) {
|
|
auto token = jwt::create()
|
|
.set_issuer("auth0")
|
|
.set_type("JWS")
|
|
.sign(jwt::algorithm::ps512(rsa_pub_key, rsa_priv_key, "", ""));
|
|
|
|
// TODO: Find a better way to check if generated signature is valid
|
|
// Can't do simple check for equal since pss adds random salt.
|
|
}
|
|
|
|
TEST(TokenTest, CreateTokenES256) {
|
|
|
|
auto token = jwt::create()
|
|
.set_issuer("auth0")
|
|
.set_type("JWS")
|
|
.sign(jwt::algorithm::es256("", ecdsa_priv_key, "", ""));
|
|
|
|
auto decoded = jwt::decode(token);
|
|
|
|
ASSERT_THROW(jwt::verify().allow_algorithm(jwt::algorithm::es256(ecdsa_pub_key_invalid, "", "", "")).verify(decoded), jwt::signature_verification_exception);
|
|
ASSERT_NO_THROW(jwt::verify().allow_algorithm(jwt::algorithm::es256(ecdsa_pub_key, "", "", "")).verify(decoded));
|
|
}
|
|
|
|
TEST(TokenTest, CreateTokenES256NoPrivate) {
|
|
|
|
ASSERT_THROW([](){
|
|
auto token = jwt::create()
|
|
.set_issuer("auth0")
|
|
.set_type("JWS")
|
|
.sign(jwt::algorithm::es256(ecdsa_pub_key, "", "", ""));
|
|
}(), jwt::signature_generation_exception);
|
|
}
|
|
|
|
TEST(TokenTest, VerifyTokenRS256) {
|
|
std::string token = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXUyJ9.eyJpc3MiOiJhdXRoMCJ9.VA2i1ui1cnoD6I3wnji1WAVCf29EekysvevGrT2GXqK1dDMc8"
|
|
"HAZCTQxa1Q8NppnpYV-hlqxh-X3Bb0JOePTGzjynpNZoJh2aHZD-GKpZt7OO1Zp8AFWPZ3p8Cahq8536fD8RiBES9jRsvChZvOqA7gMcFc4"
|
|
"YD0iZhNIcI7a654u5yPYyTlf5kjR97prCf_OXWRn-bYY74zna4p_bP9oWCL4BkaoRcMxi-IR7kmVcCnvbYqyIrKloXP2qPO442RBGqU7Ov9"
|
|
"sGQxiVqtRHKXZR9RbfvjrErY1KGiCp9M5i2bsUHadZEY44FE2jiOmx-uc2z5c05CCXqVSpfCjWbh9gQ";
|
|
|
|
auto verify = jwt::verify()
|
|
.allow_algorithm(jwt::algorithm::rs256(rsa_pub_key, rsa_priv_key, "", ""))
|
|
.with_issuer("auth0");
|
|
|
|
auto decoded_token = jwt::decode(token);
|
|
|
|
verify.verify(decoded_token);
|
|
}
|
|
|
|
TEST(TokenTest, VerifyTokenRS256PublicOnly) {
|
|
std::string token = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXUyJ9.eyJpc3MiOiJhdXRoMCJ9.VA2i1ui1cnoD6I3wnji1WAVCf29EekysvevGrT2GXqK1dDMc8"
|
|
"HAZCTQxa1Q8NppnpYV-hlqxh-X3Bb0JOePTGzjynpNZoJh2aHZD-GKpZt7OO1Zp8AFWPZ3p8Cahq8536fD8RiBES9jRsvChZvOqA7gMcFc4"
|
|
"YD0iZhNIcI7a654u5yPYyTlf5kjR97prCf_OXWRn-bYY74zna4p_bP9oWCL4BkaoRcMxi-IR7kmVcCnvbYqyIrKloXP2qPO442RBGqU7Ov9"
|
|
"sGQxiVqtRHKXZR9RbfvjrErY1KGiCp9M5i2bsUHadZEY44FE2jiOmx-uc2z5c05CCXqVSpfCjWbh9gQ";
|
|
|
|
auto verify = jwt::verify()
|
|
.allow_algorithm(jwt::algorithm::rs256(rsa_pub_key, "", "", ""))
|
|
.with_issuer("auth0");
|
|
|
|
auto decoded_token = jwt::decode(token);
|
|
|
|
verify.verify(decoded_token);
|
|
}
|
|
|
|
TEST(TokenTest, VerifyTokenRS256Fail) {
|
|
std::string token = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXUyJ9.eyJpc3MiOiJhdXRoMCJ9.VA2i1ui1cnoD6I3wnji1WAVCf29EekysvevGrT2GXqK1dDMc8"
|
|
"HAZCTQxa1Q8NppnpYV-hlqxh-X3Bb0JOePTGzjynpNZoJh2aHZD-GKpZt7OO1Zp8AFWPZ3p8Cahq8536fD8RiBES9jRsvChZvOqA7gMcFc4"
|
|
"YD0iZhNIcI7a654u5yPYyTlf5kjR97prCf_OXWRn-bYY74zna4p_bP9oWCL4BkaoRcMxi-IR7kmVcCnvbYqyIrKloXP2qPO442RBGqU7Ov9"
|
|
"sGQxiVqtRHKXZR9RbfvjrErY1KGiCp9M5i2bsUHadZEY44FE2jiOmx-uc2z5c05CCXqVSpfCjWbh9gQ";
|
|
|
|
auto verify = jwt::verify()
|
|
.allow_algorithm(jwt::algorithm::rs256(rsa_pub_key_invalid, "", "", ""))
|
|
.with_issuer("auth0");
|
|
|
|
auto decoded_token = jwt::decode(token);
|
|
|
|
ASSERT_THROW(verify.verify(decoded_token), jwt::signature_verification_exception);
|
|
}
|
|
|
|
TEST(TokenTest, VerifyTokenRS512) {
|
|
std::string token = "eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXUyJ9.eyJpc3MiOiJhdXRoMCJ9.GZhnjtsvBl2_KDSxg4JW6xnmNjr2mWhYSZ"
|
|
"SSQyLKvI0TK86sJKchkt_HDy2IC5l5BGRhq_Xv9pHdA1umidQZG3a7gWvHsujqybCBgBraMTd1wJrCl4QxFg2RYHhHbRqb9BnPJgFD_vryd4"
|
|
"GBhfGgejPBCBlGrQtqFGFdHHOjNHY";
|
|
|
|
auto verify = jwt::verify()
|
|
.allow_algorithm(jwt::algorithm::rs512(rsa512_pub_key, rsa512_priv_key, "", ""))
|
|
.with_issuer("auth0");
|
|
|
|
auto decoded_token = jwt::decode(token);
|
|
|
|
verify.verify(decoded_token);
|
|
}
|
|
|
|
TEST(TokenTest, VerifyTokenRS512PublicOnly) {
|
|
std::string token = "eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXUyJ9.eyJpc3MiOiJhdXRoMCJ9.GZhnjtsvBl2_KDSxg4JW6xnmNjr2mWhYSZ"
|
|
"SSQyLKvI0TK86sJKchkt_HDy2IC5l5BGRhq_Xv9pHdA1umidQZG3a7gWvHsujqybCBgBraMTd1wJrCl4QxFg2RYHhHbRqb9BnPJgFD_vryd4"
|
|
"GBhfGgejPBCBlGrQtqFGFdHHOjNHY";
|
|
|
|
auto verify = jwt::verify()
|
|
.allow_algorithm(jwt::algorithm::rs512(rsa512_pub_key, "", "", ""))
|
|
.with_issuer("auth0");
|
|
|
|
auto decoded_token = jwt::decode(token);
|
|
|
|
verify.verify(decoded_token);
|
|
}
|
|
|
|
TEST(TokenTest, VerifyTokenRS512Fail) {
|
|
std::string token = "eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXUyJ9.eyJpc3MiOiJhdXRoMCJ9.GZhnjtsvBl2_KDSxg4JW6xnmNjr2mWhYSZ"
|
|
"SSQyLKvI0TK86sJKchkt_HDy2IC5l5BGRhq_Xv9pHdA1umidQZG3a7gWvHsujqybCBgBraMTd1wJrCl4QxFg2RYHhHbRqb9BnPJgFD_vryd4"
|
|
"GBhfGgejPBCBlGrQtqFGFdHHOjNHY";
|
|
|
|
auto verify = jwt::verify()
|
|
.allow_algorithm(jwt::algorithm::rs512(rsa_pub_key_invalid, "", "", ""))
|
|
.with_issuer("auth0");
|
|
|
|
auto decoded_token = jwt::decode(token);
|
|
|
|
ASSERT_THROW(verify.verify(decoded_token), jwt::signature_verification_exception);
|
|
}
|
|
|
|
TEST(TokenTest, VerifyTokenHS256) {
|
|
std::string token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXUyJ9.eyJpc3MiOiJhdXRoMCJ9.AbIJTDMFc7yUa5MhvcP03nJPyCPzZtQcGEp-zWfOkEE";
|
|
|
|
auto verify = jwt::verify()
|
|
.allow_algorithm(jwt::algorithm::hs256{ "secret" })
|
|
.with_issuer("auth0");
|
|
|
|
auto decoded_token = jwt::decode(token);
|
|
verify.verify(decoded_token);
|
|
}
|
|
|
|
TEST(TokenTest, VerifyFail) {
|
|
auto token = jwt::create()
|
|
.set_issuer("auth0")
|
|
.set_type("JWS")
|
|
.sign(jwt::algorithm::none{});
|
|
|
|
auto decoded_token = jwt::decode(token);
|
|
|
|
{
|
|
auto verify = jwt::verify()
|
|
.allow_algorithm(jwt::algorithm::none{})
|
|
.with_issuer("auth");
|
|
ASSERT_THROW(verify.verify(decoded_token), jwt::token_verification_exception);
|
|
}
|
|
{
|
|
auto verify = jwt::verify()
|
|
.allow_algorithm(jwt::algorithm::none{})
|
|
.with_issuer("auth0")
|
|
.with_audience({ "test" });
|
|
ASSERT_THROW(verify.verify(decoded_token), jwt::token_verification_exception);
|
|
}
|
|
{
|
|
auto verify = jwt::verify()
|
|
.allow_algorithm(jwt::algorithm::none{})
|
|
.with_issuer("auth0")
|
|
.with_subject("test");
|
|
ASSERT_THROW(verify.verify(decoded_token), jwt::token_verification_exception);
|
|
}
|
|
{
|
|
auto verify = jwt::verify()
|
|
.allow_algorithm(jwt::algorithm::none{})
|
|
.with_issuer("auth0")
|
|
.with_claim("myclaim", jwt::claim(std::string("test")));
|
|
ASSERT_THROW(verify.verify(decoded_token), jwt::token_verification_exception);
|
|
}
|
|
}
|
|
|
|
TEST(TokenTest, VerifyTokenES256) {
|
|
const std::string token = "eyJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJhdXRoMCJ9.4iVk3-Y0v4RT4_9IaQlp-8dZ_4fsTzIylgrPTDLrEvTHBTyVS3tgPbr2_IZfLETtiKRqCg0aQ5sh9eIsTTwB1g";
|
|
|
|
auto verify = jwt::verify().allow_algorithm(jwt::algorithm::es256(ecdsa_pub_key, "", "", ""));
|
|
auto decoded_token = jwt::decode(token);
|
|
|
|
verify.verify(decoded_token);
|
|
}
|
|
|
|
TEST(TokenTest, VerifyTokenES256Fail) {
|
|
const std::string token = "eyJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJhdXRoMCJ9.4iVk3-Y0v4RT4_9IaQlp-8dZ_4fsTzIylgrPTDLrEvTHBTyVS3tgPbr2_IZfLETtiKRqCg0aQ5sh9eIsTTwB1g";
|
|
|
|
auto verify = jwt::verify()
|
|
.allow_algorithm(jwt::algorithm::es256(ecdsa_pub_key_invalid, "", "", ""));
|
|
auto decoded_token = jwt::decode(token);
|
|
|
|
ASSERT_THROW(verify.verify(decoded_token), jwt::signature_verification_exception);
|
|
}
|
|
|
|
TEST(TokenTest, VerifyTokenPS256) {
|
|
std::string token = "eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXUyJ9.eyJpc3MiOiJhdXRoMCJ9.CJ4XjVWdbV6vXGZkD4GdJbtYc80SN9cmPOqRhZBRzOyDRqTFE"
|
|
"4MsbdKyQuhAWcvuMOjn-24qOTjVMR_P_uTC1uG6WPLcucxZyLnbb56zbKnEklW2SX0mQnCGewr-93a_vDaFT6Cp45MsF_OwFPRCMaS5CJg-"
|
|
"N5KY67UrVSr3s9nkuK9ZTQkyODHfyEUh9F_FhRCATGrb5G7_qHqBYvTvaPUXqzhhpCjN855Tocg7A24Hl0yMwM-XdasucW5xNdKjG_YCkis"
|
|
"HX7ax--JiF5GNYCO61eLFteO4THUg-3Z0r4OlGqlppyWo5X5tjcxOZCvBh7WDWfkxA48KFZPRv0nlKA";
|
|
|
|
auto verify = jwt::verify()
|
|
.allow_algorithm(jwt::algorithm::ps256(rsa_pub_key, rsa_priv_key, "", ""))
|
|
.with_issuer("auth0");
|
|
|
|
auto decoded_token = jwt::decode(token);
|
|
|
|
verify.verify(decoded_token);
|
|
}
|
|
|
|
TEST(TokenTest, VerifyTokenPS256PublicOnly) {
|
|
std::string token = "eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXUyJ9.eyJpc3MiOiJhdXRoMCJ9.CJ4XjVWdbV6vXGZkD4GdJbtYc80SN9cmPOqRhZBRzOyDRqTFE"
|
|
"4MsbdKyQuhAWcvuMOjn-24qOTjVMR_P_uTC1uG6WPLcucxZyLnbb56zbKnEklW2SX0mQnCGewr-93a_vDaFT6Cp45MsF_OwFPRCMaS5CJg-"
|
|
"N5KY67UrVSr3s9nkuK9ZTQkyODHfyEUh9F_FhRCATGrb5G7_qHqBYvTvaPUXqzhhpCjN855Tocg7A24Hl0yMwM-XdasucW5xNdKjG_YCkis"
|
|
"HX7ax--JiF5GNYCO61eLFteO4THUg-3Z0r4OlGqlppyWo5X5tjcxOZCvBh7WDWfkxA48KFZPRv0nlKA";
|
|
|
|
auto verify = jwt::verify()
|
|
.allow_algorithm(jwt::algorithm::ps256(rsa_pub_key, "", "", ""))
|
|
.with_issuer("auth0");
|
|
|
|
auto decoded_token = jwt::decode(token);
|
|
|
|
verify.verify(decoded_token);
|
|
}
|
|
|
|
TEST(TokenTest, VerifyTokenPS256Fail) {
|
|
std::string token = "eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXUyJ9.eyJpc3MiOiJhdXRoMCJ9.CJ4XjVWdbV6vXGZkD4GdJbtYc80SN9cmPOqRhZBRzOyDRqTFE"
|
|
"4MsbdKyQuhAWcvuMOjn-24qOTjVMR_P_uTC1uG6WPLcucxZyLnbb56zbKnEklW2SX0mQnCGewr-93a_vDaFT6Cp45MsF_OwFPRCMaS5CJg-"
|
|
"N5KY67UrVSr3s9nkuK9ZTQkyODHfyEUh9F_FhRCATGrb5G7_qHqBYvTvaPUXqzhhpCjN855Tocg7A24Hl0yMwM-XdasucW5xNdKjG_YCkis"
|
|
"HX7ax--JiF5GNYCO61eLFteO4THUg-3Z0r4OlGqlppyWo5X5tjcxOZCvBh7WDWfkxA48KFZPRv0nlKA";
|
|
|
|
auto verify = jwt::verify()
|
|
.allow_algorithm(jwt::algorithm::ps256(rsa_pub_key_invalid, "", "", ""))
|
|
.with_issuer("auth0");
|
|
|
|
auto decoded_token = jwt::decode(token);
|
|
|
|
ASSERT_THROW(verify.verify(decoded_token), jwt::signature_verification_exception);
|
|
}
|
|
|
|
namespace {
|
|
std::string rsa_priv_key = R"(-----BEGIN PRIVATE KEY-----
|
|
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC4ZtdaIrd1BPIJ
|
|
tfnF0TjIK5inQAXZ3XlCrUlJdP+XHwIRxdv1FsN12XyMYO/6ymLmo9ryoQeIrsXB
|
|
XYqlET3zfAY+diwCb0HEsVvhisthwMU4gZQu6TYW2s9LnXZB5rVtcBK69hcSlA2k
|
|
ZudMZWxZcj0L7KMfO2rIvaHw/qaVOE9j0T257Z8Kp2CLF9MUgX0ObhIsdumFRLaL
|
|
DvDUmBPr2zuh/34j2XmWwn1yjN/WvGtdfhXW79Ki1S40HcWnygHgLV8sESFKUxxQ
|
|
mKvPUTwDOIwLFL5WtE8Mz7N++kgmDcmWMCHc8kcOIu73Ta/3D4imW7VbKgHZo9+K
|
|
3ESFE3RjAgMBAAECggEBAJTEIyjMqUT24G2FKiS1TiHvShBkTlQdoR5xvpZMlYbN
|
|
tVWxUmrAGqCQ/TIjYnfpnzCDMLhdwT48Ab6mQJw69MfiXwc1PvwX1e9hRscGul36
|
|
ryGPKIVQEBsQG/zc4/L2tZe8ut+qeaK7XuYrPp8bk/X1e9qK5m7j+JpKosNSLgJj
|
|
NIbYsBkG2Mlq671irKYj2hVZeaBQmWmZxK4fw0Istz2WfN5nUKUeJhTwpR+JLUg4
|
|
ELYYoB7EO0Cej9UBG30hbgu4RyXA+VbptJ+H042K5QJROUbtnLWuuWosZ5ATldwO
|
|
u03dIXL0SH0ao5NcWBzxU4F2sBXZRGP2x/jiSLHcqoECgYEA4qD7mXQpu1b8XO8U
|
|
6abpKloJCatSAHzjgdR2eRDRx5PMvloipfwqA77pnbjTUFajqWQgOXsDTCjcdQui
|
|
wf5XAaWu+TeAVTytLQbSiTsBhrnoqVrr3RoyDQmdnwHT8aCMouOgcC5thP9vQ8Us
|
|
rVdjvRRbnJpg3BeSNimH+u9AHgsCgYEA0EzcbOltCWPHRAY7B3Ge/AKBjBQr86Kv
|
|
TdpTlxePBDVIlH+BM6oct2gaSZZoHbqPjbq5v7yf0fKVcXE4bSVgqfDJ/sZQu9Lp
|
|
PTeV7wkk0OsAMKk7QukEpPno5q6tOTNnFecpUhVLLlqbfqkB2baYYwLJR3IRzboJ
|
|
FQbLY93E8gkCgYB+zlC5VlQbbNqcLXJoImqItgQkkuW5PCgYdwcrSov2ve5r/Acz
|
|
FNt1aRdSlx4176R3nXyibQA1Vw+ztiUFowiP9WLoM3PtPZwwe4bGHmwGNHPIfwVG
|
|
m+exf9XgKKespYbLhc45tuC08DATnXoYK7O1EnUINSFJRS8cezSI5eHcbQKBgQDC
|
|
PgqHXZ2aVftqCc1eAaxaIRQhRmY+CgUjumaczRFGwVFveP9I6Gdi+Kca3DE3F9Pq
|
|
PKgejo0SwP5vDT+rOGHN14bmGJUMsX9i4MTmZUZ5s8s3lXh3ysfT+GAhTd6nKrIE
|
|
kM3Nh6HWFhROptfc6BNusRh1kX/cspDplK5x8EpJ0QKBgQDWFg6S2je0KtbV5PYe
|
|
RultUEe2C0jYMDQx+JYxbPmtcopvZQrFEur3WKVuLy5UAy7EBvwMnZwIG7OOohJb
|
|
vkSpADK6VPn9lbqq7O8cTedEHttm6otmLt8ZyEl3hZMaL3hbuRj6ysjmoFKx6CrX
|
|
rK0/Ikt5ybqUzKCMJZg2VKGTxg==
|
|
-----END PRIVATE KEY-----)";
|
|
std::string rsa_pub_key = R"(-----BEGIN PUBLIC KEY-----
|
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuGbXWiK3dQTyCbX5xdE4
|
|
yCuYp0AF2d15Qq1JSXT/lx8CEcXb9RbDddl8jGDv+spi5qPa8qEHiK7FwV2KpRE9
|
|
83wGPnYsAm9BxLFb4YrLYcDFOIGULuk2FtrPS512Qea1bXASuvYXEpQNpGbnTGVs
|
|
WXI9C+yjHztqyL2h8P6mlThPY9E9ue2fCqdgixfTFIF9Dm4SLHbphUS2iw7w1JgT
|
|
69s7of9+I9l5lsJ9cozf1rxrXX4V1u/SotUuNB3Fp8oB4C1fLBEhSlMcUJirz1E8
|
|
AziMCxS+VrRPDM+zfvpIJg3JljAh3PJHDiLu902v9w+Iplu1WyoB2aPfitxEhRN0
|
|
YwIDAQAB
|
|
-----END PUBLIC KEY-----)";
|
|
std::string rsa_pub_key_invalid = R"(-----BEGIN PUBLIC KEY-----
|
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxzYuc22QSst/dS7geYYK
|
|
5l5kLxU0tayNdixkEQ17ix+CUcUbKIsnyftZxaCYT46rQtXgCaYRdJcbB3hmyrOa
|
|
vkhTpX79xJZnQmfuamMbZBqitvscxW9zRR9tBUL6vdi/0rpoUwPMEh8+Bw7CgYR0
|
|
FK0DhWYBNDfe9HKcyZEv3max8Cdq18htxjEsdYO0iwzhtKRXomBWTdhD5ykd/fAC
|
|
VTr4+KEY+IeLvubHVmLUhbE5NgWXxrRpGasDqzKhCTmsa2Ysf712rl57SlH0Wz/M
|
|
r3F7aM9YpErzeYLrl0GhQr9BVJxOvXcVd4kmY+XkiCcrkyS1cnghnllh+LCwQu1s
|
|
YwIDAQAB
|
|
-----END PUBLIC KEY-----)";
|
|
std::string rsa512_priv_key = R"(-----BEGIN RSA PRIVATE KEY-----
|
|
MIICWwIBAAKBgQDdlatRjRjogo3WojgGHFHYLugdUWAY9iR3fy4arWNA1KoS8kVw
|
|
33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQsHUfQrSDv+MuSUMAe8jzKE4qW
|
|
+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5Do2kQ+X5xK9cipRgEKwIDAQAB
|
|
AoGAD+onAtVye4ic7VR7V50DF9bOnwRwNXrARcDhq9LWNRrRGElESYYTQ6EbatXS
|
|
3MCyjjX2eMhu/aF5YhXBwkppwxg+EOmXeh+MzL7Zh284OuPbkglAaGhV9bb6/5Cp
|
|
uGb1esyPbYW+Ty2PC0GSZfIXkXs76jXAu9TOBvD0ybc2YlkCQQDywg2R/7t3Q2OE
|
|
2+yo382CLJdrlSLVROWKwb4tb2PjhY4XAwV8d1vy0RenxTB+K5Mu57uVSTHtrMK0
|
|
GAtFr833AkEA6avx20OHo61Yela/4k5kQDtjEf1N0LfI+BcWZtxsS3jDM3i1Hp0K
|
|
Su5rsCPb8acJo5RO26gGVrfAsDcIXKC+bQJAZZ2XIpsitLyPpuiMOvBbzPavd4gY
|
|
6Z8KWrfYzJoI/Q9FuBo6rKwl4BFoToD7WIUS+hpkagwWiz+6zLoX1dbOZwJACmH5
|
|
fSSjAkLRi54PKJ8TFUeOP15h9sQzydI8zJU+upvDEKZsZc/UhT/SySDOxQ4G/523
|
|
Y0sz/OZtSWcol/UMgQJALesy++GdvoIDLfJX5GBQpuFgFenRiRDabxrE9MNUZ2aP
|
|
FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==
|
|
-----END RSA PRIVATE KEY-----)";
|
|
std::string rsa512_pub_key = R"(-----BEGIN PUBLIC KEY-----
|
|
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugd
|
|
UWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQs
|
|
HUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D
|
|
o2kQ+X5xK9cipRgEKwIDAQAB
|
|
-----END PUBLIC KEY-----)";
|
|
std::string rsa512_pub_key_invalid = R"(-----BEGIN PUBLIC KEY-----
|
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxzYuc22QSst/dS7geYYK
|
|
5l5kLxU0tayNdixkEQ17ix+CUcUbKIsnyftZxaCYT46rQtXgCaYRdJcbB3hmyrOa
|
|
vkhTpX79xJZnQmfuamMbZBqitvscxW9zRR9tBUL6vdi/0rpoUwPMEh8+Bw7CgYR0
|
|
FK0DhWYBNDfe9HKcyZEv3max8Cdq18htxjEsdYO0iwzhtKRXomBWTdhD5ykd/fAC
|
|
VTr4+KEY+IeLvubHVmLUhbE5NgWXxrRpGasDqzKhCTmsa2Ysf712rl57SlH0Wz/M
|
|
r3F7aM9YpErzeYLrl0GhQr9BVJxOvXcVd4kmY+XkiCcrkyS1cnghnllh+LCwQu1s
|
|
YwIDAQAB
|
|
-----END PUBLIC KEY-----)";
|
|
std::string ecdsa_priv_key = R"(-----BEGIN PRIVATE KEY-----
|
|
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgPGJGAm4X1fvBuC1z
|
|
SpO/4Izx6PXfNMaiKaS5RUkFqEGhRANCAARCBvmeksd3QGTrVs2eMrrfa7CYF+sX
|
|
sjyGg+Bo5mPKGH4Gs8M7oIvoP9pb/I85tdebtKlmiCZHAZE5w4DfJSV6
|
|
-----END PRIVATE KEY-----)";
|
|
std::string ecdsa_pub_key = R"(-----BEGIN PUBLIC KEY-----
|
|
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQgb5npLHd0Bk61bNnjK632uwmBfr
|
|
F7I8hoPgaOZjyhh+BrPDO6CL6D/aW/yPObXXm7SpZogmRwGROcOA3yUleg==
|
|
-----END PUBLIC KEY-----)";
|
|
std::string ecdsa_pub_key_invalid = R"(-----BEGIN PUBLIC KEY-----
|
|
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEoBUyo8CQAFPeYPvv78ylh5MwFZjT
|
|
CLQeb042TjiMJxG+9DLFmRSMlBQ9T/RsLLc+PmpB1+7yPAR+oR5gZn3kJQ==
|
|
-----END PUBLIC KEY-----)";
|
|
}
|