mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-21 11:20:04 +02:00
33 lines
939 B
C++
33 lines
939 B
C++
// SPDX-License-Identifier: LGPL-3.0-or-other
|
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
|
#include "sls/md5_helper.h"
|
|
|
|
#include "sls/md5.h"
|
|
|
|
#include <iomanip>
|
|
#include <sstream>
|
|
#include <stdexcept>
|
|
|
|
namespace sls {
|
|
|
|
std::string md5_calculate_checksum(char *buffer, ssize_t bytes) {
|
|
MD5_CTX c;
|
|
if (!MD5_Init_SLS(&c)) {
|
|
throw std::runtime_error(
|
|
"Could not calculate md5 checksum.[initializing]");
|
|
}
|
|
if (!MD5_Update_SLS(&c, buffer, bytes)) {
|
|
throw std::runtime_error("Could not calculate md5 checksum.[Updating]");
|
|
}
|
|
unsigned char out[MD5_DIGEST_LENGTH];
|
|
if (!MD5_Final_SLS(out, &c)) {
|
|
throw std::runtime_error("Could not calculate md5 checksum.[Final]");
|
|
}
|
|
std::ostringstream oss;
|
|
for (int i = 0; i != MD5_DIGEST_LENGTH; ++i)
|
|
oss << std::hex << std::setw(2) << std::setfill('0') << +out[i];
|
|
return oss.str();
|
|
}
|
|
|
|
} // namespace sls
|