/* */ #ifndef D_APPLE_MESSAGE_DIGEST_IMPL_H #define D_APPLE_MESSAGE_DIGEST_IMPL_H #include "common.h" #include #include namespace aria2 { class MessageDigestImpl { public: virtual ~MessageDigestImpl() {} static std::unique_ptr sha1(); static std::unique_ptr create(const std::string& hashType); static bool supports(const std::string& hashType); static size_t getDigestLength(const std::string& hashType); public: virtual size_t getDigestLength() const = 0; virtual void reset() = 0; virtual void update(const void* data, size_t length) = 0; virtual void digest(unsigned char* md) = 0; protected: MessageDigestImpl() {} private: MessageDigestImpl(const MessageDigestImpl&); MessageDigestImpl& operator=(const MessageDigestImpl&); }; } // namespace aria2 #endif // D_APPLE_MESSAGE_DIGEST_IMPL_H