From b77325c68991650942f19af1707cb18f879ff893 Mon Sep 17 00:00:00 2001 From: orignal Date: Thu, 21 Aug 2014 14:26:15 -0400 Subject: [PATCH] ECDSA P-256 signature --- Signature.h | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/Signature.h b/Signature.h index 69c1bb86..79bbcb65 100644 --- a/Signature.h +++ b/Signature.h @@ -3,6 +3,9 @@ #include #include +#include +#include +#include #include "CryptoConst.h" namespace i2p @@ -35,7 +38,29 @@ namespace crypto private: CryptoPP::DSA::PublicKey m_PublicKey; - }; + }; + + class ECDSAP256Verifier: public Verifier + { + public: + + ECDSAP256Verifier (const uint8_t * signingKey) + { + m_PublicKey.Initialize (CryptoPP::ASN1::secp256r1(), + CryptoPP::ECP::Point (CryptoPP::Integer (signingKey, 32), + CryptoPP::Integer (signingKey + 32, 32))); + } + + bool Verify (const uint8_t * buf, size_t len, const uint8_t * signature) + { + CryptoPP::ECDSA::Verifier verifier (m_PublicKey); + return verifier.VerifyMessage (buf, len, signature, 64); + } + + private: + + CryptoPP::ECDSA::PublicKey m_PublicKey; + }; } }