cmCryptoHash: Provide factory "New" method
Construct a cmCryptoHash subclass instance based on the name of the desired hash algorithm.
This commit is contained in:
parent
46ab0561fc
commit
293a7f4e2a
|
@ -14,6 +14,25 @@
|
||||||
#include <cmsys/MD5.h>
|
#include <cmsys/MD5.h>
|
||||||
#include "cm_sha2.h"
|
#include "cm_sha2.h"
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
cmsys::auto_ptr<cmCryptoHash> cmCryptoHash::New(const char* algo)
|
||||||
|
{
|
||||||
|
if(strcmp(algo,"MD5") == 0)
|
||||||
|
{ return cmsys::auto_ptr<cmCryptoHash>(new cmCryptoHashMD5); }
|
||||||
|
else if(strcmp(algo,"SHA1") == 0)
|
||||||
|
{ return cmsys::auto_ptr<cmCryptoHash>(new cmCryptoHashSHA1); }
|
||||||
|
else if(strcmp(algo,"SHA224") == 0)
|
||||||
|
{ return cmsys::auto_ptr<cmCryptoHash>(new cmCryptoHashSHA224); }
|
||||||
|
else if(strcmp(algo,"SHA256") == 0)
|
||||||
|
{ return cmsys::auto_ptr<cmCryptoHash>(new cmCryptoHashSHA256); }
|
||||||
|
else if(strcmp(algo,"SHA384") == 0)
|
||||||
|
{ return cmsys::auto_ptr<cmCryptoHash>(new cmCryptoHashSHA384); }
|
||||||
|
else if(strcmp(algo,"SHA512") == 0)
|
||||||
|
{ return cmsys::auto_ptr<cmCryptoHash>(new cmCryptoHashSHA512); }
|
||||||
|
else
|
||||||
|
{ return cmsys::auto_ptr<cmCryptoHash>(0); }
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::string cmCryptoHash::HashString(const char* input)
|
std::string cmCryptoHash::HashString(const char* input)
|
||||||
{
|
{
|
||||||
|
|
|
@ -14,9 +14,12 @@
|
||||||
|
|
||||||
#include "cmStandardIncludes.h"
|
#include "cmStandardIncludes.h"
|
||||||
|
|
||||||
|
#include <cmsys/auto_ptr.hxx>
|
||||||
|
|
||||||
class cmCryptoHash
|
class cmCryptoHash
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
static cmsys::auto_ptr<cmCryptoHash> New(const char* algo);
|
||||||
std::string HashString(const char* input);
|
std::string HashString(const char* input);
|
||||||
std::string HashFile(const char* file);
|
std::string HashFile(const char* file);
|
||||||
protected:
|
protected:
|
||||||
|
|
|
@ -360,19 +360,7 @@ bool cmFileCommand::HandleHashCommand(std::vector<std::string> const& args)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmsys::auto_ptr<cmCryptoHash> hash;
|
cmsys::auto_ptr<cmCryptoHash> hash(cmCryptoHash::New(args[0].c_str()));
|
||||||
if(args[0] == "MD5")
|
|
||||||
{ hash.reset(new cmCryptoHashMD5); }
|
|
||||||
else if(args[0] == "SHA1")
|
|
||||||
{ hash.reset(new cmCryptoHashSHA1); }
|
|
||||||
else if(args[0] == "SHA224")
|
|
||||||
{ hash.reset(new cmCryptoHashSHA224); }
|
|
||||||
else if(args[0] == "SHA256")
|
|
||||||
{ hash.reset(new cmCryptoHashSHA256); }
|
|
||||||
else if(args[0] == "SHA384")
|
|
||||||
{ hash.reset(new cmCryptoHashSHA384); }
|
|
||||||
else if(args[0] == "SHA512")
|
|
||||||
{ hash.reset(new cmCryptoHashSHA512); }
|
|
||||||
if(hash.get())
|
if(hash.get())
|
||||||
{
|
{
|
||||||
std::string out = hash->HashFile(args[1].c_str());
|
std::string out = hash->HashFile(args[1].c_str());
|
||||||
|
|
Loading…
Reference in New Issue