diff --git a/utils/UUID_gen.cc b/utils/UUID_gen.cc index c38209b6f7..052b37e1dd 100644 --- a/utils/UUID_gen.cc +++ b/utils/UUID_gen.cc @@ -107,16 +107,22 @@ static int64_t make_clock_seq_and_node() return lsb; } +UUID UUID_gen::get_name_UUID(bytes_view b) { + return get_name_UUID(reinterpret_cast(b.begin()), b.size()); +} -UUID UUID_gen::get_name_UUID(sstring_view str) { +UUID UUID_gen::get_name_UUID(sstring_view s) { + static_assert(sizeof(char) == sizeof(sstring_view::value_type), "Assumed that str.size() counts in chars"); + return get_name_UUID(reinterpret_cast(s.begin()), s.size()); +} + +UUID UUID_gen::get_name_UUID(const unsigned char *s, size_t len) { static_assert(CryptoPP::Weak1::MD5::DIGESTSIZE == 16, "MD5 digests should be 16 bytes long"); int8_t digest[16]; CryptoPP::Weak::MD5 hash; - static_assert(sizeof(char) == sizeof(sstring_view::value_type), "Assumed that str.size() counts in chars"); static_assert(sizeof(char) == sizeof(int8_t), "Assumed that chars are bytes"); - hash.CalculateDigest(reinterpret_cast(digest), - reinterpret_cast(str.begin()), str.size()); + hash.CalculateDigest(reinterpret_cast(digest), s, len); // set version to 3 digest[6] &= 0x0f; diff --git a/utils/UUID_gen.hh b/utils/UUID_gen.hh index cf9f9a61e9..37a3fdbffb 100644 --- a/utils/UUID_gen.hh +++ b/utils/UUID_gen.hh @@ -108,7 +108,9 @@ public: /** * Creates a type 3 (name based) UUID based on the specified byte array. */ + static UUID get_name_UUID(bytes_view b); static UUID get_name_UUID(sstring_view str); + static UUID get_name_UUID(const unsigned char* s, size_t len); /** decomposes a uuid into raw bytes. */ static std::array decompose(const UUID& uuid)