File indexing completed on 2024-06-23 05:19:20
0001 /* 0002 SPDX-FileCopyrightText: 2014-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "decryptverifybodypartmemento.h" 0008 0009 #include <QGpgME/DecryptVerifyJob> 0010 0011 using namespace QGpgME; 0012 using namespace GpgME; 0013 using namespace MimeTreeParser; 0014 0015 DecryptVerifyBodyPartMemento::DecryptVerifyBodyPartMemento(DecryptVerifyJob *job, const QByteArray &cipherText) 0016 : CryptoBodyPartMemento() 0017 , m_cipherText(cipherText) 0018 , m_job(job) 0019 { 0020 Q_ASSERT(m_job); 0021 } 0022 0023 DecryptVerifyBodyPartMemento::~DecryptVerifyBodyPartMemento() 0024 { 0025 if (m_job) { 0026 m_job->slotCancel(); 0027 } 0028 } 0029 0030 bool DecryptVerifyBodyPartMemento::start() 0031 { 0032 Q_ASSERT(m_job); 0033 if (const Error err = m_job->start(m_cipherText)) { 0034 m_dr = DecryptionResult(err); 0035 return false; 0036 } 0037 connect(m_job.data(), &DecryptVerifyJob::result, this, &DecryptVerifyBodyPartMemento::slotResult); 0038 setRunning(true); 0039 return true; 0040 } 0041 0042 void DecryptVerifyBodyPartMemento::exec() 0043 { 0044 Q_ASSERT(m_job); 0045 QByteArray plainText; 0046 setRunning(true); 0047 const std::pair<DecryptionResult, VerificationResult> p = m_job->exec(m_cipherText, plainText); 0048 saveResult(p.first, p.second, plainText); 0049 m_job->deleteLater(); // exec'ed jobs don't delete themselves 0050 m_job = nullptr; 0051 } 0052 0053 void DecryptVerifyBodyPartMemento::saveResult(const DecryptionResult &dr, const VerificationResult &vr, const QByteArray &plainText) 0054 { 0055 Q_ASSERT(m_job); 0056 setRunning(false); 0057 m_dr = dr; 0058 m_vr = vr; 0059 m_plainText = plainText; 0060 setAuditLog(m_job->auditLogError(), m_job->auditLogAsHtml()); 0061 } 0062 0063 void DecryptVerifyBodyPartMemento::slotResult(const DecryptionResult &dr, const VerificationResult &vr, const QByteArray &plainText) 0064 { 0065 saveResult(dr, vr, plainText); 0066 m_job = nullptr; 0067 notify(); 0068 } 0069 0070 #include "moc_decryptverifybodypartmemento.cpp"