added _SLS to MD5 functions, added a separate lib for the md5 C code

This commit is contained in:
Erik Frojdh 2021-09-16 14:10:02 +02:00
parent 2ff50750f5
commit 7fd174c21e
8 changed files with 61 additions and 43 deletions

View File

@ -96,6 +96,20 @@ target_compile_options(slsProjectWarnings INTERFACE
)
#Settings for C code
add_library(slsProjectCSettings INTERFACE)
target_compile_features(slsProjectCSettings INTERFACE c_std_99)
target_compile_options(slsProjectCSettings INTERFACE
-Wall
-Wextra
-Wno-unused-parameter
-Wdouble-promotion
-Wformat=2
-Wredundant-decls
-Wdouble-promotion
-Werror=return-type
)
#Testing for minimum version for compilers
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")

View File

@ -1,17 +1,5 @@
add_library(slsProjectCSettings INTERFACE)
target_compile_features(slsProjectCSettings INTERFACE c_std_99)
target_compile_options(slsProjectCSettings INTERFACE
-Wall
-Wextra
-Wno-unused-parameter #Needs to be slowly mitigated
-Wdouble-promotion
-Wformat=2
-Wredundant-decls
# -Wconversion
-Wdouble-promotion
-Werror=return-type
)
# Install fake the library
install(TARGETS slsProjectCSettings

View File

@ -184,13 +184,13 @@ int verifyChecksumFromBuffer(char *mess, char *clientChecksum, char *buffer,
ssize_t bytes) {
LOG(logINFO, ("\tVerifying Checksum...\n"));
MD5_CTX c;
if (!MD5_Init(&c)) {
strcpy(mess, "Unable to calculate checksum (MD5_Init)\n");
if (!MD5_Init_SLS(&c)) {
strcpy(mess, "Unable to calculate checksum (MD5_Init_SLS)\n");
LOG(logERROR, (mess));
return FAIL;
}
if (!MD5_Update(&c, buffer, bytes)) {
strcpy(mess, "Unable to calculate checksum (MD5_Update)\n");
if (!MD5_Update_SLS(&c, buffer, bytes)) {
strcpy(mess, "Unable to calculate checksum (MD5_Update_SLS)\n");
LOG(logERROR, (mess));
return FAIL;
}
@ -209,9 +209,9 @@ int verifyChecksumFromFile(char *mess, char *clientChecksum, char *fname) {
}
MD5_CTX c;
if (!MD5_Init(&c)) {
if (!MD5_Init_SLS(&c)) {
fclose(fp);
strcpy(mess, "Unable to calculate checksum (MD5_Init)\n");
strcpy(mess, "Unable to calculate checksum (MD5_Init_SLS)\n");
LOG(logERROR, (mess));
return FAIL;
}
@ -220,9 +220,9 @@ int verifyChecksumFromFile(char *mess, char *clientChecksum, char *fname) {
ssize_t bytes = fread(buf, 1, readUnitSize, fp);
ssize_t totalBytesRead = bytes;
while (bytes > 0) {
if (!MD5_Update(&c, buf, bytes)) {
if (!MD5_Update_SLS(&c, buf, bytes)) {
fclose(fp);
strcpy(mess, "Unable to calculate checksum (MD5_Update)\n");
strcpy(mess, "Unable to calculate checksum (MD5_Update_SLS)\n");
LOG(logERROR, (mess));
return FAIL;
}
@ -247,9 +247,9 @@ int verifyChecksumFromFlash(char *mess, char *clientChecksum, char *fname,
}
MD5_CTX c;
if (!MD5_Init(&c)) {
if (!MD5_Init_SLS(&c)) {
fclose(fp);
strcpy(mess, "Unable to calculate checksum (MD5_Init)\n");
strcpy(mess, "Unable to calculate checksum (MD5_Init_SLS)\n");
LOG(logERROR, (mess));
return FAIL;
}
@ -267,9 +267,9 @@ int verifyChecksumFromFlash(char *mess, char *clientChecksum, char *fname,
oldProgress = progress;
}
if (!MD5_Update(&c, buf, bytes)) {
if (!MD5_Update_SLS(&c, buf, bytes)) {
fclose(fp);
strcpy(mess, "Unable to calculate checksum (MD5_Update)\n");
strcpy(mess, "Unable to calculate checksum (MD5_Update_SLS)\n");
LOG(logERROR, (mess));
return FAIL;
}
@ -293,8 +293,8 @@ int verifyChecksumFromFlash(char *mess, char *clientChecksum, char *fname,
int verifyChecksum(char *mess, char *clientChecksum, MD5_CTX *c, char *msg) {
unsigned char out[MD5_DIGEST_LENGTH];
if (!MD5_Final(out, c)) {
strcpy(mess, "Unable to calculate checksum (MD5_Final)\n");
if (!MD5_Final_SLS(out, c)) {
strcpy(mess, "Unable to calculate checksum (MD5_Final_SLS)\n");
LOG(logERROR, (mess));
return FAIL;
}

View File

@ -10,8 +10,6 @@ set(SOURCES
src/ZmqSocket.cpp
src/UdpRxSocket.cpp
src/sls_detector_exceptions.cpp
# src/sls_detector_defs.cpp
src/md5.c
src/md5_helper.cpp
)
@ -51,6 +49,20 @@ if(SLS_DEVEL_HEADERS)
)
endif()
# Library for md5 c code that we are using (and potentially other c code)
# Maybe this should be broken out into it's own folder etc.
add_library(md5sls STATIC
src/md5.c
)
target_include_directories(md5sls
PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
)
# Create an object library to avoid building the library twice
add_library(slsSupportObject OBJECT
${SOURCES}
@ -69,7 +81,8 @@ target_link_libraries(slsSupportObject
libzmq
rapidjson
PRIVATE
slsProjectWarnings
slsProjectWarnings
md5sls
)
if (SLS_USE_TESTS)
@ -107,6 +120,9 @@ if((CMAKE_BUILD_TYPE STREQUAL "Release") AND SLS_LTO_AVAILABLE)
set_property(TARGET ${SUPPORT_LIBRARY_TARGETS} PROPERTY INTERPROCEDURAL_OPTIMIZATION True)
endif()
list(APPEND SUPPORT_LIBRARY_TARGETS md5sls)
install(TARGETS ${SUPPORT_LIBRARY_TARGETS}
EXPORT "${TARGETS_EXPORT_NAME}"
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}

View File

@ -296,9 +296,9 @@ extern "C" {
* #define HASH_LONG MD5_LONG
* #define HASH_CTX MD5_CTX
* #define HASH_CBLOCK MD5_CBLOCK
* #define HASH_UPDATE MD5_Update
* #define HASH_UPDATE MD5_Update_SLS
* #define HASH_TRANSFORM MD5_Transform
* #define HASH_FINAL MD5_Final
* #define HASH_FINAL MD5_Final_SLS
* #define HASH_BLOCK_DATA_ORDER md5_block_data_order
*/
# define MD32_REG_T int
@ -318,9 +318,9 @@ extern "C" {
#define HASH_LONG MD5_LONG
#define HASH_CTX MD5_CTX
#define HASH_CBLOCK MD5_CBLOCK
#define HASH_UPDATE MD5_Update
#define HASH_UPDATE MD5_Update_SLS
#define HASH_TRANSFORM MD5_Transform
#define HASH_FINAL MD5_Final
#define HASH_FINAL MD5_Final_SLS
#define HASH_BLOCK_DATA_ORDER md5_block_data_order
#define HASH_MAKE_STRING(c,s) do { \
unsigned long ll; \
@ -367,9 +367,9 @@ typedef struct MD5state_st {
unsigned int num;
} MD5_CTX;
int MD5_Init(MD5_CTX *c);
int MD5_Update(MD5_CTX *c, const void *data, size_t len);
int MD5_Final(unsigned char *md, MD5_CTX *c);
int MD5_Init_SLS(MD5_CTX *c);
int MD5_Update_SLS(MD5_CTX *c, const void *data, size_t len);
int MD5_Final_SLS(unsigned char *md, MD5_CTX *c);
/**
* Modification 2021 Paul Scherrer Institut

View File

@ -1,7 +1,5 @@
#pragma once
#include "sls/md5.h"
#include <string>
namespace sls {

View File

@ -276,7 +276,7 @@ namespace sls {
#define INIT_DATA_C (unsigned long)0x98badcfeL
#define INIT_DATA_D (unsigned long)0x10325476L
int MD5_Init(MD5_CTX *c)
int MD5_Init_SLS(MD5_CTX *c)
{
memset(c, 0, sizeof(*c));
c->A = INIT_DATA_A;

View File

@ -1,5 +1,7 @@
#include "sls/md5_helper.h"
#include "sls/md5.h"
#include <iomanip>
#include <sstream>
#include <stdexcept>
@ -8,15 +10,15 @@ namespace sls {
std::string md5_calculate_checksum(char *buffer, ssize_t bytes) {
MD5_CTX c;
if (!MD5_Init(&c)) {
if (!MD5_Init_SLS(&c)) {
throw std::runtime_error(
"Could not calculate md5 checksum.[initializing]");
}
if (!MD5_Update(&c, buffer, bytes)) {
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(out, &c)) {
if (!MD5_Final_SLS(out, &c)) {
throw std::runtime_error("Could not calculate md5 checksum.[Final]");
}
std::ostringstream oss;