/*============================================================================ CMake - Cross Platform Makefile Generator Copyright 2014 Kitware, Inc., Insight Software Consortium Distributed under the OSI-approved BSD License (the "License"); see accompanying file Copyright.txt for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ #ifndef cmUuid_h #define cmUuid_h #include "cmStandardIncludes.h" /** \class cmUuid * \brief Utility class to generate UUIDs as defined by RFC4122 * */ class cmUuid { public: cmUuid(); std::string FromMd5(std::vector const& uuidNamespace, std::string const& name) const; std::string FromSha1(std::vector const& uuidNamespace, std::string const& name) const; bool StringToBinary(std::string const& input, std::vector &output) const; private: std::string ByteToHex(unsigned char byte) const; void CreateHashInput(std::vector const& uuidNamespace, std::string const& name, std::vector &output) const; std::string FromDigest(const unsigned char* digest, unsigned char version) const; bool StringToBinaryImpl(std::string const& input, std::vector &output) const; std::string BinaryToString(const unsigned char* input) const; bool IntFromHexDigit(char input, char& output) const; std::vector Groups; }; #endif