From 97ca849c85e2e77dc475718b0b4e2a1d32def911 Mon Sep 17 00:00:00 2001 From: Kulikova Svetlana Date: Thu, 9 Jun 2022 18:07:51 +0300 Subject: [PATCH] fix --- DesktopEditor/xmlsec/src/ooxmlsignature.pro | 6 ++---- PdfWriter/Src/Document.cpp | 4 ++-- PdfWriter/Src/Document.h | 2 +- PdfWriter/Src/EncryptDictionary.cpp | 5 +++++ PdfWriter/Src/EncryptDictionary.h | 4 ++-- PdfWriter/test/test.cpp | 3 +-- 6 files changed, 13 insertions(+), 11 deletions(-) diff --git a/DesktopEditor/xmlsec/src/ooxmlsignature.pro b/DesktopEditor/xmlsec/src/ooxmlsignature.pro index 6dbea24c3b..f60599b6da 100644 --- a/DesktopEditor/xmlsec/src/ooxmlsignature.pro +++ b/DesktopEditor/xmlsec/src/ooxmlsignature.pro @@ -23,8 +23,7 @@ HEADERS += \ include/Certificate.h \ include/CertificateCommon.h \ include/OOXMLSigner.h \ - include/OOXMLVerifier.h \ - include/PDFSigner.h + include/OOXMLVerifier.h HEADERS += \ src/XmlCanonicalizator.h \ @@ -35,8 +34,7 @@ SOURCES += \ src/XmlTransform.cpp \ src/CertificateCommon.cpp \ src/OOXMLSigner.cpp \ - src/OOXMLVerifier.cpp \ - src/PDFSigner.cpp + src/OOXMLVerifier.cpp core_windows { HEADERS += src/Certificate_mscrypto.h diff --git a/PdfWriter/Src/Document.cpp b/PdfWriter/Src/Document.cpp index a412cfa01e..a88cd88b49 100644 --- a/PdfWriter/Src/Document.cpp +++ b/PdfWriter/Src/Document.cpp @@ -1290,11 +1290,11 @@ namespace PdfWriter m_pXref = NULL; return true; } - void CDocument::Sign(const unsigned int& unPageNum, const TRect& oRect, ICertificate* pCertificate) + void CDocument::Sign(const unsigned int& unPageNum, const TRect& oRect, ICertificate* pCertificate) { CSignatureField* pField = CreateSignatureField(); if (m_pSignatureDict) - m_pSignatureDict->SetCert(pCertificate); + m_pSignatureDict->SetCert(pCertificate); // Сейчас подпись невидимая // TODO DR, DA и AP (внешнее отображение подписи) должны заполняться в CPdfRenderer::AddFormField(const CFormFieldInfo &oInfo) diff --git a/PdfWriter/Src/Document.h b/PdfWriter/Src/Document.h index 25f3127059..3198a75feb 100644 --- a/PdfWriter/Src/Document.h +++ b/PdfWriter/Src/Document.h @@ -159,7 +159,7 @@ namespace PdfWriter CPage* AddPage(int nPageIndex); bool DeletePage(int nPageIndex); bool AddToFile(const std::wstring& wsPath, const std::wstring& sTrailer, const std::wstring& sInfo); - void Sign(const unsigned int& unPageNum, const TRect& oRect, ICertificate* pCert); + void Sign(const unsigned int& unPageNum, const TRect& oRect, ICertificate* pCert); CSignatureDict* GetSignatureDict() { return m_pSignatureDict; } private: diff --git a/PdfWriter/Src/EncryptDictionary.cpp b/PdfWriter/Src/EncryptDictionary.cpp index 58b96630d5..0c6a080c1c 100644 --- a/PdfWriter/Src/EncryptDictionary.cpp +++ b/PdfWriter/Src/EncryptDictionary.cpp @@ -335,6 +335,11 @@ namespace PdfWriter // TODO шифрование записи Contents, для случая одновремменного запароливания и сертификации pdf pStream->Write(pContents, NULL); RELEASEOBJECT(pContents); + + // Стереть лишний > + BYTE cChar = '0'; + pStream->Seek(pStream->Tell() - 1, EWhenceMode::SeekSet); + pStream->Write(&cChar, 1); } } void CSignatureDict::SetCert(ICertificate* pCert) diff --git a/PdfWriter/Src/EncryptDictionary.h b/PdfWriter/Src/EncryptDictionary.h index ddb83561f2..ee7d9f181a 100644 --- a/PdfWriter/Src/EncryptDictionary.h +++ b/PdfWriter/Src/EncryptDictionary.h @@ -79,14 +79,14 @@ namespace PdfWriter void SetByteRange(int nLen1, int nOffset2); void ByteRangeOffset(int nBegin, int nEnd); void WriteToStream(CStream* pStream, int nFileEnd); - void SetCert(ICertificate* pCert); + void SetCert(ICertificate* pCert); void SetName(const std::string& sName); void SetReason(const std::string& sReason); void SetContacts(const std::string& sContacts); void SetDate(); private: - ICertificate* m_pCertificate; + ICertificate* m_pCertificate; int m_nLen1; // Длина первого интервала сигнатуры int m_nOffset2; // Начало второго интервала сигнатуры diff --git a/PdfWriter/test/test.cpp b/PdfWriter/test/test.cpp index 2f24121349..5513e9aa19 100644 --- a/PdfWriter/test/test.cpp +++ b/PdfWriter/test/test.cpp @@ -85,7 +85,7 @@ int main() { std::wstring sCertificateFile = NSFile::GetProcessDirectory() + L"/test.pfx"; std::wstring sPrivateKeyFile = L""; - std::string sCertificateFilePassword = "Sveta03011997"; + std::string sCertificateFilePassword = "test"; std::string sPrivateFilePassword = ""; pCertificate = NSCertificate::FromFiles(sPrivateKeyFile, sPrivateFilePassword, sCertificateFile, sCertificateFilePassword); @@ -100,7 +100,6 @@ int main() RELEASEOBJECT(pReader); RELEASEINTERFACE(pApplicationFonts); - RELEASEOBJECT(pCertificate); return 0; if (bResult && pReader->EditPdf(&pdfWriter, sPassword))