resolve cyclic dependency with zstd
[platform/upstream/cmake.git] / Source / cmUuid.h
1 /* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2    file Copyright.txt or https://cmake.org/licensing for details.  */
3 #pragma once
4
5 #include "cmConfigure.h" // IWYU pragma: keep
6
7 #include <string>
8 #include <vector>
9
10 /** \class cmUuid
11  * \brief Utility class to generate UUIDs as defined by RFC4122
12  *
13  */
14 class cmUuid
15 {
16 public:
17   std::string FromMd5(std::vector<unsigned char> const& uuidNamespace,
18                       std::string const& name) const;
19
20   std::string FromSha1(std::vector<unsigned char> const& uuidNamespace,
21                        std::string const& name) const;
22
23   bool StringToBinary(std::string const& input,
24                       std::vector<unsigned char>& output) const;
25
26 private:
27   std::string ByteToHex(unsigned char byte) const;
28
29   void CreateHashInput(std::vector<unsigned char> const& uuidNamespace,
30                        std::string const& name,
31                        std::vector<unsigned char>& output) const;
32
33   std::string FromDigest(const unsigned char* digest,
34                          unsigned char version) const;
35
36   bool StringToBinaryImpl(std::string const& input,
37                           std::vector<unsigned char>& output) const;
38
39   std::string BinaryToString(const unsigned char* input) const;
40
41   bool IntFromHexDigit(char input, char& output) const;
42 };