diff options
Diffstat (limited to 'src/lib/util/crypto.hpp')
-rw-r--r-- | src/lib/util/crypto.hpp | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/src/lib/util/crypto.hpp b/src/lib/util/crypto.hpp index 705aad6a375..e28f5b1f9f5 100644 --- a/src/lib/util/crypto.hpp +++ b/src/lib/util/crypto.hpp @@ -1,18 +1,31 @@ -// license:MIT -// copyright-holders:Miodrag Milanovic -#ifndef CRYPTO_HPP -#define CRYPTO_HPP +// license:BSD-3-Clause +// copyright-holders:Vas Crabb +#ifndef MAME_UTIL_CRYPTO_HPP +#define MAME_UTIL_CRYPTO_HPP + +#pragma once + +#include "hashing.h" + +#include <cstdint> +#include <limits> +#include <string> -#include "base64.hpp" -#include "sha1.hpp" inline std::string sha1_encode(const std::string& input) { - char message_digest[20]; - sha1::calc(input.c_str(),input.length(),reinterpret_cast<unsigned char*>(message_digest)); - - return std::string(message_digest, sizeof(message_digest)); + util::sha1_creator digester; + const char *ptr = input.c_str(); + std::string::size_type remain = input.length(); + while (remain > std::numeric_limits<uint32_t>::max()) + { + digester.append(ptr, std::numeric_limits<uint32_t>::max()); + ptr += std::numeric_limits<uint32_t>::max(); + remain -= std::numeric_limits<uint32_t>::max(); + } + digester.append(ptr, uint32_t(remain)); + return std::string(reinterpret_cast<const char *>(digester.finish().m_raw), 20); } -#endif /* CRYPTO_HPP */ +#endif // MAME_UTIL_CRYPTO_HPP |