diff options
author | Saturneric <[email protected]> | 2021-08-23 09:48:21 +0000 |
---|---|---|
committer | Saturneric <[email protected]> | 2021-08-23 09:48:21 +0000 |
commit | 03d37859e3e6c644085fb56c86c126536525d721 (patch) | |
tree | b0d01772a97095191405a1c7c682ac35e4bdf5a0 /src/gpg/gpg_context/GpgContextBasicOpera.cpp | |
parent | Improve the automatic key exchange function; fix some known problems; (diff) | |
download | GpgFrontend-03d37859e3e6c644085fb56c86c126536525d721.tar.gz GpgFrontend-03d37859e3e6c644085fb56c86c126536525d721.zip |
Fix some problems; Ready to release a BETA version
Diffstat (limited to 'src/gpg/gpg_context/GpgContextBasicOpera.cpp')
-rw-r--r-- | src/gpg/gpg_context/GpgContextBasicOpera.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/gpg/gpg_context/GpgContextBasicOpera.cpp b/src/gpg/gpg_context/GpgContextBasicOpera.cpp index 8872acfe..d9bf0bdb 100644 --- a/src/gpg/gpg_context/GpgContextBasicOpera.cpp +++ b/src/gpg/gpg_context/GpgContextBasicOpera.cpp @@ -154,19 +154,24 @@ gpgme_error_t GpgME::GpgContext::verify(QByteArray *inBuffer, QByteArray *sigBuf * @return */ gpg_error_t GpgME::GpgContext::sign(const QVector<GpgKey> &keys, const QByteArray &inBuffer, QByteArray *outBuffer, - gpgme_sig_mode_t mode, gpgme_sign_result_t *result) { + gpgme_sig_mode_t mode, gpgme_sign_result_t *result, bool default_ctx) { gpgme_error_t gpgmeError; gpgme_data_t dataIn, dataOut; gpgme_sign_result_t m_result; + auto _ctx = mCtx; + + if(!default_ctx) + _ctx = create_ctx(); + if (keys.isEmpty()) { QMessageBox::critical(nullptr, tr("Key Selection"), tr("No Private Key Selected")); return false; } // Set Singers of this opera - setSigners(keys, mCtx); + setSigners(keys, _ctx); gpgmeError = gpgme_data_new_from_mem(&dataIn, inBuffer.data(), inBuffer.size(), 1); checkErr(gpgmeError); @@ -186,7 +191,7 @@ gpg_error_t GpgME::GpgContext::sign(const QVector<GpgKey> &keys, const QByteArra mode settings of the context are ignored. */ - gpgmeError = gpgme_op_sign(mCtx, dataIn, dataOut, mode); + gpgmeError = gpgme_op_sign(_ctx, dataIn, dataOut, mode); checkErr(gpgmeError); if (gpgmeError == GPG_ERR_CANCELED) return false; @@ -196,10 +201,14 @@ gpg_error_t GpgME::GpgContext::sign(const QVector<GpgKey> &keys, const QByteArra return false; } - m_result = gpgme_op_sign_result(mCtx); + if(default_ctx) + m_result = gpgme_op_sign_result(_ctx); + else m_result = nullptr; if (result != nullptr) *result = m_result; + if(!default_ctx) gpgme_release(_ctx); + gpgmeError = readToBuffer(dataOut, outBuffer); checkErr(gpgmeError); |