40 const std::string& signature) {
43 CryptoPP::RSA::PublicKey rsa_public_key;
45 CryptoPP::StringSource(public_key,
true,
new CryptoPP::HexDecoder())
49 std::string decoded_signature;
50 CryptoPP::StringSource ss(
52 new CryptoPP::HexDecoder(
new CryptoPP::StringSink(decoded_signature)));
56 CryptoPP::RSASS<CryptoPP::PSSR, CryptoPP::Whirlpool>::Verifier verifier(
58 CryptoPP::StringSource ss2(
59 decoded_signature + message,
true,
60 new CryptoPP::SignatureVerificationFilter(
62 new CryptoPP::ArraySink((CryptoPP::byte*)&result,
sizeof(result))));
66 LOG(ERROR) <<
"key not valid";
72 const std::string& public_key,
73 const std::string& signature) {
76 CryptoPP::StringSource(
78 new CryptoPP::HexDecoder(
new CryptoPP::StringSink(decoded))
81 CryptoPP::ECDSA<CryptoPP::ECP, CryptoPP::SHA256>::PublicKey dsa_public_key;
83 CryptoPP::StringSource(public_key,
true,
new CryptoPP::HexDecoder())
85 CryptoPP::ECDSA<CryptoPP::ECP, CryptoPP::SHA256>::Verifier verifier(
89 CryptoPP::StringSource(
90 decoded + message,
true,
91 new CryptoPP::SignatureVerificationFilter(
93 new CryptoPP::ArraySink((CryptoPP::byte*)&valid,
sizeof(valid))));
95 LOG(ERROR) <<
"signature invalid. signature len:" << signature.size()
96 <<
" message len:" << message.size();
102 const std::string& message) {
104 CryptoPP::RSA::PrivateKey rsa_private_key;
105 rsa_private_key.Load(
106 CryptoPP::StringSource(private_key,
true,
new CryptoPP::HexDecoder())
110 std::string signature;
111 CryptoPP::RSASS<CryptoPP::PSSR, CryptoPP::Whirlpool>::Signer signer(
113 CryptoPP::AutoSeededRandomPool rng;
114 CryptoPP::StringSource ss(
116 new CryptoPP::SignerFilter(
118 new CryptoPP::HexEncoder(
new CryptoPP::StringSink(signature))));
123 const std::string& message) {
125 CryptoPP::ECDSA<CryptoPP::ECP, CryptoPP::SHA256>::PrivateKey privateKey;
127 CryptoPP::StringSource(private_key,
true,
new CryptoPP::HexDecoder())
129 CryptoPP::AutoSeededRandomPool prng;
130 std::string signature;
132 CryptoPP::StringSource ss1(
134 new CryptoPP::SignerFilter(
136 CryptoPP::ECDSA<CryptoPP::ECP, CryptoPP::SHA256>::Signer(
138 new CryptoPP::StringSink(signature)));
141 CryptoPP::StringSource(signature,
true,
142 new CryptoPP::HexEncoder(
143 new CryptoPP::StringSink(output))
147 LOG(ERROR) <<
"sign error";