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.
This commit is contained in:
parent
74f0d4abcd
commit
f582dba666
|
@ -70,7 +70,7 @@ std::string cmCryptoHash::HashString(const std::string& input)
|
||||||
this->Initialize();
|
this->Initialize();
|
||||||
this->Append(reinterpret_cast<unsigned char const*>(input.c_str()),
|
this->Append(reinterpret_cast<unsigned char const*>(input.c_str()),
|
||||||
static_cast<int>(input.size()));
|
static_cast<int>(input.size()));
|
||||||
return this->Finalize();
|
return ByteHashToString(this->Finalize());
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string cmCryptoHash::HashFile(const std::string& file)
|
std::string cmCryptoHash::HashFile(const std::string& file)
|
||||||
|
@ -99,7 +99,7 @@ std::string cmCryptoHash::HashFile(const std::string& file)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (fin.eof()) {
|
if (fin.eof()) {
|
||||||
return this->Finalize();
|
return ByteHashToString(this->Finalize());
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
@ -124,11 +124,11 @@ void cmCryptoHashMD5::Append(unsigned char const* buf, int sz)
|
||||||
cmsysMD5_Append(this->MD5, buf, sz);
|
cmsysMD5_Append(this->MD5, buf, sz);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string cmCryptoHashMD5::Finalize()
|
std::vector<unsigned char> cmCryptoHashMD5::Finalize()
|
||||||
{
|
{
|
||||||
char md5out[32];
|
std::vector<unsigned char> hash(16, 0);
|
||||||
cmsysMD5_FinalizeHex(this->MD5, md5out);
|
cmsysMD5_Finalize(this->MD5, &hash[0]);
|
||||||
return std::string(md5out, 32);
|
return hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define cmCryptoHash_SHA_CLASS_IMPL(SHA) \
|
#define cmCryptoHash_SHA_CLASS_IMPL(SHA) \
|
||||||
|
@ -142,11 +142,11 @@ std::string cmCryptoHashMD5::Finalize()
|
||||||
{ \
|
{ \
|
||||||
SHA##_Update(this->SHA, buf, sz); \
|
SHA##_Update(this->SHA, buf, sz); \
|
||||||
} \
|
} \
|
||||||
std::string cmCryptoHash##SHA::Finalize() \
|
std::vector<unsigned char> cmCryptoHash##SHA::Finalize() \
|
||||||
{ \
|
{ \
|
||||||
char out[SHA##_DIGEST_STRING_LENGTH]; \
|
std::vector<unsigned char> hash(SHA##_DIGEST_LENGTH, 0); \
|
||||||
SHA##_End(this->SHA, out); \
|
SHA##_Final(&hash[0], this->SHA); \
|
||||||
return std::string(out, SHA##_DIGEST_STRING_LENGTH - 1); \
|
return hash; \
|
||||||
}
|
}
|
||||||
|
|
||||||
cmCryptoHash_SHA_CLASS_IMPL(SHA1) cmCryptoHash_SHA_CLASS_IMPL(SHA224)
|
cmCryptoHash_SHA_CLASS_IMPL(SHA1) cmCryptoHash_SHA_CLASS_IMPL(SHA224)
|
||||||
|
|
|
@ -48,7 +48,7 @@ public:
|
||||||
protected:
|
protected:
|
||||||
virtual void Initialize() = 0;
|
virtual void Initialize() = 0;
|
||||||
virtual void Append(unsigned char const*, int) = 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
|
class cmCryptoHashMD5 : public cmCryptoHash
|
||||||
|
@ -62,7 +62,7 @@ public:
|
||||||
protected:
|
protected:
|
||||||
void Initialize() CM_OVERRIDE;
|
void Initialize() CM_OVERRIDE;
|
||||||
void Append(unsigned char const* buf, int sz) 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) \
|
#define cmCryptoHash_SHA_CLASS_DECL(SHA) \
|
||||||
|
@ -77,7 +77,7 @@ protected:
|
||||||
protected: \
|
protected: \
|
||||||
virtual void Initialize(); \
|
virtual void Initialize(); \
|
||||||
virtual void Append(unsigned char const* buf, int sz); \
|
virtual void Append(unsigned char const* buf, int sz); \
|
||||||
virtual std::string Finalize(); \
|
virtual std::vector<unsigned char> Finalize(); \
|
||||||
}
|
}
|
||||||
|
|
||||||
cmCryptoHash_SHA_CLASS_DECL(SHA1);
|
cmCryptoHash_SHA_CLASS_DECL(SHA1);
|
||||||
|
|
Loading…
Reference in New Issue