cmCryptoHash: Add support for SHA-3 algorithms

This commit is contained in:
Brad King
2016-11-10 16:31:34 -05:00
parent 979e8ba6c6
commit c326209fa3
2 changed files with 29 additions and 8 deletions

View File

@@ -9,12 +9,16 @@
static unsigned int const cmCryptoHashAlgoToId[] = {
/* clang-format needs this comment to break after the opening brace */
RHASH_MD5, //
RHASH_SHA1, //
RHASH_SHA224, //
RHASH_SHA256, //
RHASH_SHA384, //
RHASH_SHA512
RHASH_MD5, //
RHASH_SHA1, //
RHASH_SHA224, //
RHASH_SHA256, //
RHASH_SHA384, //
RHASH_SHA512, //
RHASH_SHA3_224, //
RHASH_SHA3_256, //
RHASH_SHA3_384, //
RHASH_SHA3_512
};
static int cmCryptoHash_rhash_library_initialized;
@@ -59,6 +63,18 @@ CM_AUTO_PTR<cmCryptoHash> cmCryptoHash::New(const char* algo)
if (strcmp(algo, "SHA512") == 0) {
return CM_AUTO_PTR<cmCryptoHash>(new cmCryptoHash(AlgoSHA512));
}
if (strcmp(algo, "SHA3_224") == 0) {
return CM_AUTO_PTR<cmCryptoHash>(new cmCryptoHash(AlgoSHA3_224));
}
if (strcmp(algo, "SHA3_256") == 0) {
return CM_AUTO_PTR<cmCryptoHash>(new cmCryptoHash(AlgoSHA3_256));
}
if (strcmp(algo, "SHA3_384") == 0) {
return CM_AUTO_PTR<cmCryptoHash>(new cmCryptoHash(AlgoSHA3_384));
}
if (strcmp(algo, "SHA3_512") == 0) {
return CM_AUTO_PTR<cmCryptoHash>(new cmCryptoHash(AlgoSHA3_512));
}
return CM_AUTO_PTR<cmCryptoHash>(CM_NULLPTR);
}

View File

@@ -22,7 +22,11 @@ public:
AlgoSHA224,
AlgoSHA256,
AlgoSHA384,
AlgoSHA512
AlgoSHA512,
AlgoSHA3_224,
AlgoSHA3_256,
AlgoSHA3_384,
AlgoSHA3_512
};
cmCryptoHash(Algo algo);
@@ -30,7 +34,8 @@ public:
/// @brief Returns a new hash generator of the requested type
/// @arg algo Hash type name. Supported hash types are
/// MD5, SHA1, SHA224, SHA256, SHA384, SHA512
/// MD5, SHA1, SHA224, SHA256, SHA384, SHA512,
/// SHA3_224, SHA3_256, SHA3_384, SHA3_512
/// @return A valid auto pointer if algo is supported or
/// an invalid/NULL pointer otherwise
static CM_AUTO_PTR<cmCryptoHash> New(const char* algo);