18 #include <flecsi/utils/logging.hh> 20 #if !defined(ENABLE_OPENSSL) 21 #error ENABLE_OPENSSL not defined! This file depends on OpenSSL! 24 #include <openssl/evp.h> 30 unsigned char value[EVP_MAX_MD_SIZE];
31 char strvalue[EVP_MAX_MD_SIZE * 2 + 1];
50 const char * digest =
"md5") {
51 std::size_t bytes = elements *
sizeof(T);
53 EVP_MD_CTX * ctx = EVP_MD_CTX_create();
58 OpenSSL_add_all_digests();
68 const EVP_MD * md = EVP_get_digestbyname(digest);
69 clog_assert(md,
"invalid digest");
74 EVP_DigestInit_ex(ctx, md, NULL);
79 EVP_DigestUpdate(ctx, reinterpret_cast<void *>(buffer), bytes);
84 EVP_DigestFinal_ex(ctx, sum.value, &sum.length);
89 EVP_MD_CTX_destroy(ctx);
92 strcpy(sum.strvalue,
"");
94 for(std::size_t i(0); i < sum.length; i++) {
95 sprintf(tmp,
"%02x", sum.value[i]);
96 strcat(sum.strvalue, tmp);
Definition: checksum.hh:29
void checksum(T *buffer, std::size_t elements, checksum_t &sum, const char *digest="md5")
Definition: checksum.hh:47
Definition: default_node.hh:20