Revert digest

This commit is contained in:
WolverinDEV 2019-07-07 18:02:46 +02:00
parent d48c0f99f5
commit cf40917d60
2 changed files with 41 additions and 45 deletions

View File

@ -1,14 +1,18 @@
#include "./digest.h" #include "./digest.h"
#ifdef NO_OPEN_SSL #ifdef NO_OPEN_SSL
#include <tomcrypt.h> #include <tomcrypt.h>
#define DECLARE_DIGEST(name, _unused_, digestLength) \ #define DECLARE_DIGEST(name, _unused_, digestLength) \
void digest::tomcrypt::name(const char* input, size_t length, uint8_t(& result)[digestLength]) { \ std::string digest::tomcrypt::name(const std::string& input) { \
hash_state hash{}; \ hash_state hash{}; \
\ \
name ##_init(&hash); \ uint8_t buffer[digestLength]; \
name ##_process(&hash, (uint8_t*) input, length); \ \
name ##_done(&hash, result); \ name ##_init(&hash); \
name ##_process(&hash, (uint8_t*) input.data(), input.length()); \
name ##_done(&hash, buffer); \
\
return std::string((const char*) buffer, digestLength); \
} }
DECLARE_DIGEST(sha1, SHA1, SHA_DIGEST_LENGTH) DECLARE_DIGEST(sha1, SHA1, SHA_DIGEST_LENGTH)

View File

@ -5,48 +5,40 @@
#include <cstring> #include <cstring>
#ifdef NO_OPEN_SSL #ifdef NO_OPEN_SSL
#define SHA_DIGEST_LENGTH (20) #define SHA_DIGEST_LENGTH 20
#define SHA256_DIGEST_LENGTH (32) #define SHA256_DIGEST_LENGTH 32
#define SHA512_DIGEST_LENGTH (64) #define SHA512_DIGEST_LENGTH 64
#define DECLARE_DIGEST(name, _unused_, digestLength) \ #define DECLARE_DIGEST(name, _unused_, digestLength) \
namespace tomcrypt { \ namespace tomcrypt { \
extern void name(const char* input, size_t length, uint8_t(& result)[digestLength]); \ extern std::string name(const std::string&); \
} \ } \
inline std::string name(const std::string& input) { \ inline std::string name(const std::string& input) { \
uint8_t result[digestLength]; \ return tomcrypt::name(input); \
tomcrypt::name(input.data(), input.length(), result); \ } \
return std::string((const char*) result, (size_t) digestLength); \ \
} \ inline std::string name(const char* input, int64_t length = -1) { \
\ if(length == -1) length = strlen(input); \
inline std::string __ ##name(const char* input, int64_t length = -1) { \ return name(std::string{input, (size_t) length}); \
if(length == -1) length = strlen(input); \ } \
uint8_t result[digestLength]; \
tomcrypt::name(input, length, result); \
return std::string((const char*) result, (size_t) digestLength); \
} \
\
inline void name(const char* input, size_t length, uint8_t(& result)[digestLength]) { \
tomcrypt::name(input, length, result); \
}
#else #else
#include <openssl/sha.h> #include <openssl/sha.h>
#define DECLARE_DIGEST(name, method, digestLength) \ #define DECLARE_DIGEST(name, method, digestLength) \
inline std::string name(const std::string& input) { \ inline std::string name(const std::string& input) { \
u_char buffer[digestLength]; \ u_char buffer[digestLength]; \
method((u_char*) input.data(), input.length(), buffer); \ method((u_char*) input.data(), input.length(), buffer); \
return std::string((const char*) buffer, (size_t) digestLength); \ return std::string((const char*) buffer, digestLength); \
} \ } \
\ \
inline std::string name(const char* input, ssize_t length = -1) { \ inline std::string name(const char* input, ssize_t length = -1) { \
if(length == -1) length = strlen(input); \ if(length == -1) length = strlen(input); \
return name(std::string(input, (size_t) length)); \ return name(std::string(input, length)); \
} \ } \
\ \
inline void name(const char* input, size_t length, uint8_t(& result)[digestLength]) { \ inline void name(const char* input, size_t length, uint8_t(& result)[digestLength]) { \
method((u_char*) input, length, result); \ method((u_char*) input, length, result); \
} }
#endif #endif