aboutsummaryrefslogtreecommitdiffstats
path: root/src/gpg/gpg_context/GpgContextBasicOpera.cpp
diff options
context:
space:
mode:
authorSaturneric <[email protected]>2021-08-23 09:48:21 +0000
committerSaturneric <[email protected]>2021-08-23 09:48:21 +0000
commit03d37859e3e6c644085fb56c86c126536525d721 (patch)
treeb0d01772a97095191405a1c7c682ac35e4bdf5a0 /src/gpg/gpg_context/GpgContextBasicOpera.cpp
parentImprove the automatic key exchange function; fix some known problems; (diff)
downloadGpgFrontend-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.cpp17
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);