#pragma once #include #include #include namespace dxvk { using Sha1Digest = std::array; class Sha1Hash { public: Sha1Hash() { } Sha1Hash(const Sha1Digest& digest) : m_digest(digest) { } std::string toString() const; uint32_t dword(uint32_t id) const { return uint32_t(m_digest[4 + id + 0]) << 0 | uint32_t(m_digest[4 + id + 1]) << 8 | uint32_t(m_digest[4 + id + 2]) << 16 | uint32_t(m_digest[4 + id + 3]) << 24; } bool operator == (const Sha1Hash& other) const { return !std::memcmp( this->m_digest.data(), other.m_digest.data(), other.m_digest.size()); } static Sha1Hash compute( const uint8_t* data, size_t size); private: Sha1Digest m_digest; }; }