Skip to content
Snippets Groups Projects
Commit f582dba6 authored by Sebastian Holtermann's avatar Sebastian Holtermann Committed by Brad King
Browse files

cmCryptoHash: Return byte vector from internal Finalize method

Some callers may want the raw byte vector instead of the hex character
string.  Convert the internal implementation to use this so that we
can later add public APIs to get it.
parent 74f0d4ab
Branches
Tags
No related merge requests found
......@@ -70,7 +70,7 @@ std::string cmCryptoHash::HashString(const std::string& input)
this->Initialize();
this->Append(reinterpret_cast<unsigned char const*>(input.c_str()),
static_cast<int>(input.size()));
return this->Finalize();
return ByteHashToString(this->Finalize());
}
std::string cmCryptoHash::HashFile(const std::string& file)
......@@ -99,7 +99,7 @@ std::string cmCryptoHash::HashFile(const std::string& file)
}
}
if (fin.eof()) {
return this->Finalize();
return ByteHashToString(this->Finalize());
}
return "";
}
......@@ -124,11 +124,11 @@ void cmCryptoHashMD5::Append(unsigned char const* buf, int sz)
cmsysMD5_Append(this->MD5, buf, sz);
}
std::string cmCryptoHashMD5::Finalize()
std::vector<unsigned char> cmCryptoHashMD5::Finalize()
{
char md5out[32];
cmsysMD5_FinalizeHex(this->MD5, md5out);
return std::string(md5out, 32);
std::vector<unsigned char> hash(16, 0);
cmsysMD5_Finalize(this->MD5, &hash[0]);
return hash;
}
#define cmCryptoHash_SHA_CLASS_IMPL(SHA) \
......@@ -142,11 +142,11 @@ std::string cmCryptoHashMD5::Finalize()
{ \
SHA##_Update(this->SHA, buf, sz); \
} \
std::string cmCryptoHash##SHA::Finalize() \
std::vector<unsigned char> cmCryptoHash##SHA::Finalize() \
{ \
char out[SHA##_DIGEST_STRING_LENGTH]; \
SHA##_End(this->SHA, out); \
return std::string(out, SHA##_DIGEST_STRING_LENGTH - 1); \
std::vector<unsigned char> hash(SHA##_DIGEST_LENGTH, 0); \
SHA##_Final(&hash[0], this->SHA); \
return hash; \
}
cmCryptoHash_SHA_CLASS_IMPL(SHA1) cmCryptoHash_SHA_CLASS_IMPL(SHA224)
......
......@@ -48,7 +48,7 @@ public:
protected:
virtual void Initialize() = 0;
virtual void Append(unsigned char const*, int) = 0;
virtual std::string Finalize() = 0;
virtual std::vector<unsigned char> Finalize() = 0;
};
class cmCryptoHashMD5 : public cmCryptoHash
......@@ -62,7 +62,7 @@ public:
protected:
void Initialize() CM_OVERRIDE;
void Append(unsigned char const* buf, int sz) CM_OVERRIDE;
std::string Finalize() CM_OVERRIDE;
std::vector<unsigned char> Finalize() CM_OVERRIDE;
};
#define cmCryptoHash_SHA_CLASS_DECL(SHA) \
......@@ -77,7 +77,7 @@ protected:
protected: \
virtual void Initialize(); \
virtual void Append(unsigned char const* buf, int sz); \
virtual std::string Finalize(); \
virtual std::vector<unsigned char> Finalize(); \
}
cmCryptoHash_SHA_CLASS_DECL(SHA1);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment