Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 26 additions & 24 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,20 @@
CMAKE_MINIMUM_REQUIRED(VERSION 3.5...4.0)
SET(CMAKE_BUILD_TYPE Release)
SET(CMAKE_CXX_FLAGS_DEBUG "-g -Wall -Wconversion")
SET(CMAKE_CXX_FLAGS_RELEASE "-O2 -Wall -Wconversion")
INCLUDE(FindPkgConfig)

PROJECT(libdkim++)
PROJECT(libdkim++ CXX)
SET(TARGET_NAME "dkim++")

INCLUDE(GNUInstallDirs)
INCLUDE(FindPkgConfig)

IF(NOT CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE Release)
ENDIF()
SET(CMAKE_CXX_FLAGS_DEBUG "-g -Wall -Wconversion")
SET(CMAKE_CXX_FLAGS_RELEASE "-O2 -Wall -Wconversion")

SET(CMAKE_CXX_STANDARD 11)
SET(CMAKE_CXX_STANDARD_REQUIRED ON)
SET(CMAKE_CXX_EXTENSIONS OFF)

SET(TARGET_VERSION_MAJOR 2)
SET(TARGET_VERSION_MINOR 4)
Expand All @@ -16,10 +23,11 @@ SET(TARGET_VERSION_PATCH 1)
SET(TARGET_VERSION ${TARGET_VERSION_MAJOR}.${TARGET_VERSION_MINOR}.${TARGET_VERSION_PATCH})
SET(DKIM_RELEASE "lib${TARGET_NAME}-${TARGET_VERSION}")

LINK_DIRECTORIES(/usr/local/lib)
PKG_CHECK_MODULES(LIBSODIUM REQUIRED libsodium)
FIND_PACKAGE(OpenSSL REQUIRED)

LINK_DIRECTORIES(${LIBSODIUM_LIBRARY_DIRS})

FILE(GLOB_RECURSE SOURCE_FILES src/*.cpp)

ADD_LIBRARY(${TARGET_NAME} SHARED
Expand All @@ -28,38 +36,32 @@ ADD_LIBRARY(${TARGET_NAME} SHARED
SET_PROPERTY(TARGET ${TARGET_NAME} PROPERTY VERSION ${TARGET_VERSION})
SET_PROPERTY(TARGET ${TARGET_NAME} PROPERTY SOVERSION ${TARGET_VERSION_MAJOR})

IF("${CMAKE_SYSTEM}" MATCHES "Linux")
IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
SET(LIBRESOLV "resolv")
ENDIF("${CMAKE_SYSTEM}" MATCHES "Linux")
ENDIF()

# Try with res_init
ADD_DEFINITIONS(-DHAS_RES_NINIT)
ADD_DEFINITIONS("-std=c++11")

TARGET_LINK_LIBRARIES(${TARGET_NAME}
ssl
crypto
OpenSSL::SSL
OpenSSL::Crypto
${LIBSODIUM_LIBRARIES}
${LIBRESOLV}
)

INCLUDE_DIRECTORIES(
${DIRECTORY}
${CMAKE_SOURCE_DIR}
/usr/local/include/
${LIBSODIUM_INCLUDE_DIRS}
)

ENABLE_TESTING()
SUBDIRS(
tests
tools
)
ADD_SUBDIRECTORY(tests)
ADD_SUBDIRECTORY(tools)

FILE(GLOB_RECURSE files src/*.hpp)
INSTALL(FILES ${files} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libdkim++)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libdkim++.so DESTINATION ${CMAKE_INSTALL_LIBDIR})
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libdkim++.so.${TARGET_VERSION} DESTINATION ${CMAKE_INSTALL_LIBDIR})
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libdkim++.so.${TARGET_VERSION_MAJOR} DESTINATION ${CMAKE_INSTALL_LIBDIR})
INSTALL(TARGETS ${TARGET_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/libdkim++.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/libdkim++.pc @ONLY)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libdkim++.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)

Expand All @@ -69,9 +71,9 @@ SET(CPACK_GENERATOR TBZ2)
SET(CPACK_PACKAGE_FILE_NAME "${DKIM_RELEASE}")
SET(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 0)
INSTALL(CODE "
IF(\${CMAKE_INSTALL_PREFIX} MATCHES .*/_CPack_Packages/.*)
FILE(WRITE \"\${CMAKE_INSTALL_PREFIX}/+DESC\" \"libdkim++ is a lightweight and portable DKIM (RFC6376) library for *NIX\n\")
FILE(WRITE \"\${CMAKE_INSTALL_PREFIX}/+COMMENT\" \"libdkim++ is a lightweight and portable DKIM (RFC6376)\n\")
IF(\${CMAKE_INSTALL_PREFIX} MATCHES .*/_CPack_Packages/.*)
FILE(WRITE \"\${CMAKE_INSTALL_PREFIX}/+DESC\" \"libdkim++ is a lightweight and portable DKIM (RFC6376) library for *NIX\n\")
FILE(WRITE \"\${CMAKE_INSTALL_PREFIX}/+COMMENT\" \"libdkim++ is a lightweight and portable DKIM (RFC6376)\n\")
FILE(WRITE \"\${CMAKE_INSTALL_PREFIX}/+CONTENTS\" \"@comment PKG_FORMAT_REVISION:1.1\n\")
FILE(APPEND \"\${CMAKE_INSTALL_PREFIX}/+CONTENTS\" \"@name ${DKIM_RELEASE}\n\")
FILE(APPEND \"\${CMAKE_INSTALL_PREFIX}/+CONTENTS\" \"@comment ORIGIN:/dev/null\n\")
Expand All @@ -80,7 +82,7 @@ INSTALL(CODE "
FILE(RELATIVE_PATH file \${CMAKE_INSTALL_PREFIX} \${file})
FILE(APPEND \"\${CMAKE_INSTALL_PREFIX}/+CONTENTS\" \"\${file}\n\")
ENDFOREACH()
ENDIF(\${CMAKE_INSTALL_PREFIX} MATCHES .*/_CPack_Packages/.*)
ENDIF(\${CMAKE_INSTALL_PREFIX} MATCHES .*/_CPack_Packages/.*)
")
INCLUDE(CPack)
ENDIF (CMAKE_SYSTEM_NAME MATCHES BSD)
3 changes: 2 additions & 1 deletion libdkim++.pc.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@

Name: libdkim++
Description: libdkim++ is a lightweight and portable DKIM (RFC4871)
Description: libdkim++ is a lightweight and portable DKIM (RFC6376)
Version: @TARGET_VERSION@
Requires.private: libssl libcrypto libsodium
Libs: -L${libdir} -ldkim++
Cflags: -I${includedir}
4 changes: 2 additions & 2 deletions src/Base64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ std::string DKIM::Conversion::Base64_Decode(const std::string& data)
BIO_set_flags(i, BIO_FLAGS_BASE64_NO_NL);
o = BIO_new(BIO_s_mem());
l = BIO_push(i, o);
BIO_write(o, data.c_str(), data.size());
BIO_write(o, data.c_str(), (int)data.size());
(void) BIO_flush(o);

char b[1024];
Expand All @@ -52,7 +52,7 @@ std::string DKIM::Conversion::Base64_Encode(const std::string& data)
o = BIO_new(BIO_s_mem());
l = BIO_push(i, o);
BIO_set_flags(l, BIO_FLAGS_BASE64_NO_NL);
BIO_write(l, data.c_str(), data.size());
BIO_write(l, data.c_str(), (int)data.size());
(void) BIO_flush(l);
std::string str;

Expand Down
2 changes: 1 addition & 1 deletion src/Canonicalization.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ bool DKIM::Conversion::CanonicalizationBody(std::istream& stream, DKIM::CanonMod
stream.read(buffer, sizeof buffer);

std::string buf;
for (size_t i = 0; i < stream.gcount(); ++i)
for (std::streamsize i = 0; i < stream.gcount(); ++i)
{
if (buffer[i] == '\r')
continue;
Expand Down
2 changes: 1 addition & 1 deletion src/Signatory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ std::string Signatory::CreateSignature(const SignatoryOptions& options)

// create signature for our header
std::unique_ptr<EVP_MD_CTX, std::function<void(EVP_MD_CTX*)>> evpmdhead(EVP_MD_CTX_create(), [] (EVP_MD_CTX* p) { EVP_MD_CTX_destroy(p); });
int md_nid;
int md_nid = NID_undef;
switch (options.GetDigestAlgorithm())
{
case DKIM::DKIM_A_SHA1:
Expand Down
4 changes: 2 additions & 2 deletions src/SignatoryOptions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ SignatoryOptions& SignatoryOptions::SetPrivateKey(const std::string& privatekey)
BIO *o = BIO_new(BIO_s_mem());
if (!o)
throw DKIM::PermanentError("BIO could not be created for RSA key");
BIO_write(o, privatekey.c_str(), privatekey.size());
BIO_write(o, privatekey.c_str(), (int)privatekey.size());
(void) BIO_flush(o);
EVP_PKEY* privateKey = PEM_read_bio_PrivateKey(o, nullptr, nullptr, nullptr);
BIO_free_all(o);
Expand Down Expand Up @@ -328,7 +328,7 @@ AdditionalSignaturesOptions& AdditionalSignaturesOptions::SetPrivateKey(const st
BIO *o = BIO_new(BIO_s_mem());
if (!o)
throw DKIM::PermanentError("BIO could not be created for RSA key");
BIO_write(o, privatekey.c_str(), privatekey.size());
BIO_write(o, privatekey.c_str(), (int)privatekey.size());
(void) BIO_flush(o);
EVP_PKEY* privateKey = PEM_read_bio_PrivateKey(o, nullptr, nullptr, nullptr);
BIO_free_all(o);
Expand Down
2 changes: 1 addition & 1 deletion src/Validatory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ void Validatory::CheckSignature(const std::shared_ptr<DKIM::Header> header,

// create signature for our header
std::unique_ptr<EVP_MD_CTX, std::function<void(EVP_MD_CTX*)>> evpmdhead(EVP_MD_CTX_create(), [] (EVP_MD_CTX* p) { EVP_MD_CTX_destroy(p); });
int md_nid;
int md_nid = NID_undef;
switch (sig.GetDigestAlgorithm())
{
case DKIM::DKIM_A_SHA1:
Expand Down