#ifndef SIGNATURE_H__ #define SIGNATURE_H__ #include #include #include "CryptoConst.h" namespace i2p { namespace crypto { class Verifier { public: virtual ~Verifier () {}; virtual bool Verify (const uint8_t * buf, size_t len, const uint8_t * signature) = 0; }; class DSAVerifier: public Verifier { public: DSAVerifier (const uint8_t * signingKey) { m_PublicKey.Initialize (dsap, dsaq, dsag, CryptoPP::Integer (signingKey, 128)); } bool Verify (const uint8_t * buf, size_t len, const uint8_t * signature) { CryptoPP::DSA::Verifier verifier (m_PublicKey); return verifier.VerifyMessage (buf, len, signature, 40); } private: CryptoPP::DSA::PublicKey m_PublicKey; }; } } #endif