Add support to function length inside the hash functions

This commit is contained in:
Anthony Louis committed 2021-04-09 19:34:23 -03:00
1 parent be7ebee19e
commit 6c906e7f09
2 files changed
+30 -8

No files matched your search

+17 -5
View File
@@ -4,14 +4,24 @@
#include "execution_context.h"
namespace gandiva {
const char * HashUtils::hash_using_SHA256(int64_t context, const void *message, size_t message_length) {
return HashUtils::get_hash(context, message, message_length, EVP_sha256());
const char* HashUtils::hash_using_SHA256(int64_t context,
const void* message,
size_t message_length,
u_int32_t* out_length) {
return HashUtils::get_hash(context, message, message_length, EVP_sha256(), out_length);
}
const char * HashUtils::hash_using_SHA128(int64_t context, const void *message, size_t message_length) {
return HashUtils::get_hash(context, message, message_length, EVP_sha1());
const char* HashUtils::hash_using_SHA128(int64_t context,
const void* message,
size_t message_length,
u_int32_t* out_length) {
return HashUtils::get_hash(context, message, message_length, EVP_sha1(), out_length);
}
const char* HashUtils::get_hash(int64_t context, const void *message, size_t message_length, const EVP_MD *hash_type){
const char * HashUtils::get_hash(int64_t context,
const void* message,
size_t message_length,
const EVP_MD *hash_type,
u_int32_t* out_length) {
if(message == nullptr){
HashUtils::error_message(context, "A null value was given to be hashed.");
return "";
@@ -51,6 +61,8 @@ namespace gandiva {
delete[] hex_buffer;
free(result);
*out_length = strlen(result_buffer);
return result_buffer;
}
+13 -3
View File
@@ -9,15 +9,25 @@
namespace gandiva {
class GANDIVA_EXPORT HashUtils {
public:
static const char * hash_using_SHA256(int64_t context, const void *message, size_t message_length);
static const char *hash_using_SHA256(int64_t context,
const void *message,
size_t message_length,
u_int32_t *out_length);
static const char *hash_using_SHA128(int64_t context, const void *message, size_t message_length);
static const char *hash_using_SHA128(int64_t context,
const void *message,
size_t message_length,
u_int32_t *out_length);
static uint64_t double_to_long(double value);
private:
static inline void clean_char_array(char *buffer);
static const char *get_hash(int64_t context, const void *message, size_t message_length, const EVP_MD *hash_type);
static const char *get_hash(int64_t context,
const void *message,
size_t message_length,
const EVP_MD *hash_type,
u_int32_t *out_length);
static void error_message(int64_t context_ptr, char const *err_msg);
};