MCPcopy Create free account
hub / github.com/axmolengine/axmol / computeDigest

Function computeDigest

core/base/Utils.cpp:422–452  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

420}
421
422std::string computeDigest(std::string_view data, std::string_view algorithm, DigestPresent present)
423{
424 unsigned char mdValue[EVP_MAX_MD_SIZE] = {0};
425 unsigned int mdLen = 0;
426
427 OpenSSL_add_all_digests();
428 const EVP_MD* md = EVP_get_digestbyname(algorithm.data());
429 if (!md)
430 return std::string{};
431
432 EVP_MD_CTX* mdctx = EVP_MD_CTX_create();
433 auto ok = EVP_DigestInit(mdctx, md);
434 if (!ok)
435 {
436 EVP_MD_CTX_destroy(mdctx);
437 return std::string{};
438 }
439 EVP_DigestUpdate(mdctx, data.data(), data.size());
440 EVP_DigestFinal(mdctx, mdValue, &mdLen);
441 EVP_MD_CTX_destroy(mdctx);
442
443 switch (present)
444 {
445 case DigestPresent::Base64:
446 return base64Encode(std::span<uint8_t>{mdValue, mdLen});
447 case DigestPresent::Hex:
448 return bin2hex(std::string_view{(const char*)mdValue, (size_t)mdLen});
449 default:
450 return std::string{(const char*)mdValue, (size_t)mdLen};
451 }
452}
453
454std::string computeFileDigest(std::string_view filename,
455 std::string_view algorithm,

Callers 3

getDataMD5HashFunction · 0.85
getStringMD5HashFunction · 0.85

Calls 4

bin2hexFunction · 0.85
base64EncodeFunction · 0.70
dataMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected