hasher512& hasher512::update(span<char const> data) { TORRENT_ASSERT(!data.empty()); #ifdef TORRENT_USE_LIBGCRYPT gcry_md_write(m_context, data.data(), data.size()); #elif TORRENT_USE_COMMONCRYPTO CC_SHA512_Update(&m_context, reinterpret_cast<unsigned char const*>(data.data()), CC_LONG(data.size())); #elif TORRENT_USE_CRYPTOAPI_SHA_512 m_context.update(data); #elif defined TORRENT_USE_LIBCRYPTO SHA512_Update(&m_context, reinterpret_cast<unsigned char const*>(data.data()), data.size()); #else SHA512_update(&m_context, reinterpret_cast<unsigned char const*>(data.data()), data.size()); #endif return *this; }
hasher512& hasher512::update(span<char const> data) { TORRENT_ASSERT(!data.empty()); #ifdef TORRENT_USE_LIBGCRYPT gcry_md_write(m_context, data.data(), data.size()); #elif TORRENT_USE_COMMONCRYPTO CC_SHA512_Update(&m_context, reinterpret_cast<unsigned char const*>(data.data()), data.size()); #elif TORRENT_USE_CRYPTOAPI if (CryptHashData(m_context, reinterpret_cast<BYTE const*>(data.data()), int(data.size()), 0) == false) { #ifndef BOOST_NO_EXCEPTIONS throw system_error(error_code(GetLastError(), system_category())); #else std::terminate(); #endif } #elif defined TORRENT_USE_LIBCRYPTO SHA512_Update(&m_context, reinterpret_cast<unsigned char const*>(data.data()), data.size()); #else SHA512_update(&m_context, reinterpret_cast<unsigned char const*>(data.data()), data.size()); #endif return *this; }