From b19191b2864b0534b3d425302fd177930a8e2268 Mon Sep 17 00:00:00 2001 From: Oleg Korshul Date: Thu, 15 Jun 2017 11:13:18 +0300 Subject: [PATCH] openssl signing bugs --- .../xmlsec/src/src/XmlSigner_openssl.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/DesktopEditor/xmlsec/src/src/XmlSigner_openssl.cpp b/DesktopEditor/xmlsec/src/src/XmlSigner_openssl.cpp index 9728cfb998..89c2b59947 100644 --- a/DesktopEditor/xmlsec/src/src/XmlSigner_openssl.cpp +++ b/DesktopEditor/xmlsec/src/src/XmlSigner_openssl.cpp @@ -75,6 +75,17 @@ public: EVP_PKEY_FREE(m_key); } +protected: + static void string_replace(std::string& text, const std::string& replaceFrom, const std::string& replaceTo) + { + size_t posn = 0; + while (std::string::npos != (posn = text.find(replaceFrom, posn))) + { + text.replace(posn, replaceFrom.length(), replaceTo); + posn += replaceTo.length(); + } + } + public: std::string GetNumber() { @@ -143,6 +154,7 @@ public: std::string::size_type nStart = nPos1 + sFindFirst.length(); sReturn = sReturn.substr(nStart, nPos2 - nStart); } + string_replace(sReturn, "\n", ""); BIO_free(bio); return sReturn; @@ -278,12 +290,12 @@ public: int nDigestLen = 0; NSFile::CBase64Converter::Decode(sXmlSignature.c_str(), (int)sXmlSignature.length(), pDigestValue, nDigestLen); - int n2 = EVP_VerifyUpdate(pCtx, pDigestValue, (size_t)nDigestLen); + int n2 = EVP_VerifyUpdate(pCtx, (BYTE*)sXml.c_str(), (size_t)sXml.length()); n2 = n2; EVP_PKEY* pubkey = X509_get_pubkey(m_cert); - int n3 = EVP_VerifyFinal(pCtx, (BYTE*)sXml.c_str(), (unsigned int)sXml.length(), pubkey); + int n3 = EVP_VerifyFinal(pCtx, pDigestValue, (unsigned int)nDigestLen, pubkey); n3 = n3; EVP_MD_CTX_destroy(pCtx);