diff --git a/release_notes.md b/release_notes.md index d59cdcc3..a2fa6ff8 100644 --- a/release_notes.md +++ b/release_notes.md @@ -27,6 +27,10 @@ - Support to new sensor with milliseconds delay and legacy sensors +## Code + +- Updated to stop using deprecated OpenSSL functions for computing SHA1 + # Version 0.9.0 ## General Features diff --git a/src/BrokerLib/dcc/Device.cpp b/src/BrokerLib/dcc/Device.cpp index d2b92de5..f5f19b7e 100644 --- a/src/BrokerLib/dcc/Device.cpp +++ b/src/BrokerLib/dcc/Device.cpp @@ -147,7 +147,7 @@ namespace dcclite::broker } dcclite::Log::Trace("[Device::{}] [Load] stored config token {}", this->GetName(), storedConfigToken); - dcclite::Log::Trace("[Device::{}] [Load] config token {}", this->GetName(), m_ConfigToken); + dcclite::Log::Trace("[Device::{}] [Load] currently config token {}", this->GetName(), m_ConfigToken); dcclite::Log::Trace("[Device::{}] [Load] reading config {}", this->GetName(), m_pathConfigFile.string()); rapidjson::IStreamWrapper isw(configFile); diff --git a/src/BrokerLib/sys/Project.cpp b/src/BrokerLib/sys/Project.cpp index 0fbbdd3f..5804adea 100644 --- a/src/BrokerLib/sys/Project.cpp +++ b/src/BrokerLib/sys/Project.cpp @@ -43,7 +43,7 @@ namespace dcclite::broker dcclite::Sha1 currentFileHash; currentFileHash.ComputeForFile(this->GetFilePath(fileName)); - //dcclite::Log::Trace("hash {} -> {}", filePath.string(), currentFileHash.ToString()); + dcclite::Log::Trace("[Project::GetFileToken] {} hash is {}", fileName, currentFileHash.ToString()); dcclite::Guid token; dcclite::Sha1 storedHash; @@ -95,13 +95,13 @@ namespace dcclite::broker } else { - dcclite::Log::Info("[Project::GetFileToken] Project state file for {} not found", fileName); + dcclite::Log::Info("[Project::GetFileToken] {} Project state file not found", fileName); } SKIP_LOAD: if (storedHash != currentFileHash) { - dcclite::Log::Info("[Project::GetFileToken] Project config file {} modified", fileName); + dcclite::Log::Info("[Project::GetFileToken] {} Project config file modified", fileName); token = dcclite::GuidCreate(); @@ -113,7 +113,7 @@ namespace dcclite::broker if (ec) { - dcclite::Log::Error("[Project::GetFileToken] Cannot create app path for storing state for {}, system error: {}", fileName, ec.message()); + dcclite::Log::Error("[Project::GetFileToken] {} Cannot create app path for storing state, system error: {}", fileName, ec.message()); } else { @@ -129,9 +129,13 @@ namespace dcclite::broker newStateFile << responseWriter.GetString(); - dcclite::Log::Info("[Project::GetFileToken] Stored {} state data on {}", fileName, stateFilePath.string()); + dcclite::Log::Info("[Project::GetFileToken] {} state data on {}", fileName, stateFilePath.string()); } } + else + { + dcclite::Log::Info("[Project::GetFileToken] {} Stored hash on state match {}", fileName, storedHash.ToString()); + } } return token; diff --git a/src/Common/Sha1_linux.cpp b/src/Common/Sha1_linux.cpp index 58d065d7..df9e842e 100644 --- a/src/Common/Sha1_linux.cpp +++ b/src/Common/Sha1_linux.cpp @@ -9,51 +9,49 @@ // defined by the Mozilla Public License, v. 2.0. -#include +#include #include #include "Sha1.h" - class Hasher : public dcclite::detail::NonCopyable { public: Hasher() - { - assert(dcclite::SHA1_LENGTH == SHA_DIGEST_LENGTH); + { + m_pContext = EVP_MD_CTX_new(); + if(m_pContext == nullptr) + { + throw std::runtime_error("[Hasher] Cannot create SSL context"); + } + + if(!EVP_DigestInit(m_pContext, EVP_sha1())) + { + EVP_MD_CTX_free(m_pContext); - SHA1_Init(&m_Context); + throw std::runtime_error("[Hasher] Cannot init SSL digest"); + } } ~Hasher() - { - if (!m_fFinalized) - { - unsigned char hash[dcclite::SHA1_LENGTH]; - - SHA1_Final(hash, &m_Context); - } + { + EVP_MD_CTX_free(m_pContext); } void Compute(const void* data, size_t length) { - assert(!m_fFinalized); - - SHA1_Update(&m_Context, data, length); + EVP_DigestUpdate(m_pContext, data, length); } void Finalize(unsigned char hash[dcclite::SHA1_LENGTH]) { - assert(!m_fFinalized); + unsigned int s = dcclite::SHA1_LENGTH; - SHA1_Final(hash, &m_Context); - m_fFinalized = true; + EVP_DigestFinal_ex(m_pContext, hash, &s); } - private: - bool m_fFinalized = false; - - SHA_CTX m_Context; + private: + EVP_MD_CTX *m_pContext; }; void dcclite::Sha1::ComputeForFile(const dcclite::fs::path &fileName) diff --git a/todo.txt b/todo.txt index 344a904b..a3dc7eb5 100644 --- a/todo.txt +++ b/todo.txt @@ -30,8 +30,6 @@ DCCLite - update route section to know next section and avoid re-ocupying the block -- remove deprecate SHA1 usage on Linux - LitePanelSDL ------------