From daaa83549d42395161e34a40e18c3615801b1501 Mon Sep 17 00:00:00 2001 From: Saturneric Date: Sun, 29 Aug 2021 18:49:58 +0800 Subject: Start to rewrite gpg core. --- src/gpg/function/BasicOperator.cpp | 254 +++++++++++++++++++++++++++++++++++++ 1 file changed, 254 insertions(+) create mode 100644 src/gpg/function/BasicOperator.cpp (limited to 'src/gpg/function/BasicOperator.cpp') diff --git a/src/gpg/function/BasicOperator.cpp b/src/gpg/function/BasicOperator.cpp new file mode 100644 index 00000000..f81e9f71 --- /dev/null +++ b/src/gpg/function/BasicOperator.cpp @@ -0,0 +1,254 @@ +/** + * This file is part of GPGFrontend. + * + * GPGFrontend is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Foobar is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Foobar. If not, see . + * + * The initial version of the source code is inherited from gpg4usb-team. + * Their source code version also complies with GNU General Public License. + * + * The source code version of this software was modified and released + * by Saturneric starting on May 12, 2021. + * + */ + +#include "gpg/function/BasicOperator.h" +#include "gpg/function/GpgKeyGetter.h" + +/** + * Read gpgme-Data to QByteArray + * mainly from http://basket.kde.org/ (kgpgme.cpp) + */ +#define BUF_SIZE (32 * 1024) + +gpgme_error_t read_2_buffer(gpgme_data_t data_in, GpgFrontend::BypeArrayPtr &out_buffer) { + gpgme_off_t ret = gpgme_data_seek(data_in, 0, SEEK_SET); + gpgme_error_t err = gpg_error(GPG_ERR_NO_ERROR); + + if (ret) { + err = gpgme_err_code_from_errno(errno); + GpgFrontend::check_gpg_error(err, "failed data_seek data_in read_2_buffer"); + } else { + char buf[BUF_SIZE + 2]; + + while ((ret = gpgme_data_read(data_in, buf, BUF_SIZE)) > 0) { + const size_t size = out_buffer->size(); + out_buffer->resize(static_cast(size + ret)); + memcpy(out_buffer->data() + size, buf, ret); + } + if (ret < 0) { + err = gpgme_err_code_from_errno(errno); + GpgFrontend::check_gpg_error(err, "failed data_read data_in read_2_buffer"); + } + } + return err; +} + +gpg_error_t GpgFrontend::BasicOperator::encrypt(std::vector &keys, GpgFrontend::BypeArrayRef in_buffer, + GpgFrontend::BypeArrayPtr &out_buffer, + GpgFrontend::GpgEncrResult &result) { + + gpgme_data_t data_in = nullptr, data_out = nullptr; + out_buffer->resize(0); + + // gpgme_encrypt_result_t e_result; + gpgme_key_t recipients[keys.size() + 1]; + + int index = 0; + for (const auto &key : keys) recipients[index++] = gpgme_key_t(key); + + // Last entry data_in array has to be nullptr + recipients[keys.size()] = nullptr; + + gpgme_error_t err; + + // If the last parameter isnt 0, a private copy of data is made + check_gpg_error(gpgme_data_new_from_mem(&data_in, in_buffer.data(), in_buffer.size(), 1)); + check_gpg_error(gpgme_data_new(&data_out)); + err = check_gpg_error(gpgme_op_encrypt(ctx, recipients, GPGME_ENCRYPT_ALWAYS_TRUST, data_in, data_out)); + check_gpg_error(read_2_buffer(data_out, out_buffer)); + + if (data_in) gpgme_data_release(data_in); + if (data_out) gpgme_data_release(data_out); + + result = GpgEncrResult(gpgme_op_encrypt_result(ctx), [&](gpgme_encrypt_result_t res) { gpgme_result_unref(res); }); + return err; +} + +gpgme_error_t GpgFrontend::BasicOperator::decrypt(BypeArrayRef in_buffer, GpgFrontend::BypeArrayPtr &out_buffer, + GpgFrontend::GpgDecrResult &result) { + gpgme_data_t data_in = nullptr, data_out = nullptr; + out_buffer->resize(0); + + gpgme_error_t err; + + check_gpg_error(gpgme_data_new_from_mem(&data_in, in_buffer.data(), in_buffer.size(), 1)); + check_gpg_error(gpgme_data_new(&data_out)); + err = check_gpg_error(gpgme_op_decrypt(ctx, data_in, data_out)); + check_gpg_error(read_2_buffer(data_out, out_buffer)); + + if (data_in) gpgme_data_release(data_in); + if (data_out) gpgme_data_release(data_out); + + result = GpgDecrResult(gpgme_op_decrypt_result(ctx), [&](gpgme_decrypt_result_t res) { gpgme_result_unref(res); }); + + return err; +} + +gpgme_error_t GpgFrontend::BasicOperator::verify(QByteArray &in_buffer, QByteArray &sig_buffer, + GpgFrontend::GpgVerifyResult &result) const { + gpgme_data_t data_in; + gpgme_error_t err; + gpgme_verify_result_t m_result; + + check_gpg_error(gpgme_data_new_from_mem(&data_in, in_buffer.data(), in_buffer.size(), 1)); + + if (sig_buffer != nullptr) { + gpgme_data_t sig_data; + check_gpg_error(gpgme_data_new_from_mem(&sig_data, sig_buffer.data(), sig_buffer.size(), 1)); + err = check_gpg_error(gpgme_op_verify(ctx, sig_data, data_in, nullptr)); + } else + err = check_gpg_error(gpgme_op_verify(ctx, data_in, nullptr, data_in)); + + result = GpgVerifyResult(gpgme_op_verify_result(ctx), [&](gpgme_verify_result_t res) { gpgme_result_unref(res); }); + + return err; +} + +gpg_error_t +GpgFrontend::BasicOperator::sign(KeyFprArgsList key_fprs, BypeArrayRef in_buffer, BypeArrayPtr &out_buffer, + gpgme_sig_mode_t mode, GpgSignResult &result) { + gpgme_error_t err; + gpgme_data_t data_in, data_out; + + out_buffer->resize(0); + + std::vector keys; + auto &key_getter = GpgKeyGetter::getInstance(); + + for (const auto &key_fpr : key_fprs) + keys.push_back(key_getter.getKey(key_fpr)); + + // Set Singers of this opera + setSigners(keys); + + check_gpg_error(gpgme_data_new_from_mem(&data_in, in_buffer.data(), in_buffer.size(), 1)); + check_gpg_error(gpgme_data_new(&data_out)); + + /** + `GPGME_SIG_MODE_NORMAL' + A normal signature is made, the output includes the plaintext + and the signature. + + `GPGME_SIG_MODE_DETACH' + A detached signature is made. + + `GPGME_SIG_MODE_CLEAR' + A clear text signature is made. The ASCII armor and text + mode settings of the context are ignored. + */ + + err = check_gpg_error(gpgme_op_sign(ctx, data_in, data_out, mode)); + check_gpg_error(read_2_buffer(data_out, out_buffer)); + + gpgme_data_release(data_in); + gpgme_data_release(data_out); + + result = GpgSignResult(gpgme_op_sign_result(ctx), [&](gpgme_sign_result_t res) { gpgme_result_unref(res); }); + + return err; +} + +gpgme_error_t +GpgFrontend::BasicOperator::decryptVerify(const BypeArrayRef in_buffer, BypeArrayPtr &out_buffer, + GpgDecrResult &decrypt_result, GpgVerifyResult &verify_result) { + gpgme_error_t err; + gpgme_data_t data_in, data_out; + out_buffer->resize(0); + + check_gpg_error(gpgme_data_new_from_mem(&data_in, in_buffer.data(), in_buffer.size(), 1)); + check_gpg_error(gpgme_data_new(&data_out)); + err = check_gpg_error(gpgme_op_decrypt_verify(ctx, data_in, data_out)); + + check_gpg_error(read_2_buffer(data_out, out_buffer)); + + if (data_in) gpgme_data_release(data_in); + if (data_out) gpgme_data_release(data_out); + + decrypt_result = GpgDecrResult(gpgme_op_decrypt_result(ctx), + [&](gpgme_decrypt_result_t res) { gpgme_result_unref(res); }); + verify_result = GpgVerifyResult(gpgme_op_verify_result(ctx), + [&](gpgme_verify_result_t res) { gpgme_result_unref(res); }); + + + return err; +} + +gpgme_error_t GpgFrontend::BasicOperator::encryptSign(std::vector &keys, std::vector &signers, + BypeArrayRef in_buffer, + BypeArrayPtr &out_buffer, GpgEncrResult &encr_result, + GpgSignResult &sign_result) { + gpgme_error_t err; + gpgme_data_t data_in, data_out; + out_buffer->resize(0); + + setSigners(signers); + + //gpgme_encrypt_result_t e_result; + gpgme_key_t recipients[keys.size() + 1]; + + // set key for user + int index = 0; + for (const auto &key : keys) recipients[index++] = gpgme_key_t(key); + + // Last entry dataIn array has to be nullptr + recipients[keys.size()] = nullptr; + + // If the last parameter isnt 0, a private copy of data is made + check_gpg_error(gpgme_data_new_from_mem(&data_in, in_buffer.data(), in_buffer.size(), 1)); + check_gpg_error(gpgme_data_new(&data_out)); + err = check_gpg_error(gpgme_op_encrypt_sign(ctx, recipients, GPGME_ENCRYPT_ALWAYS_TRUST, data_in, data_out)); + + check_gpg_error(read_2_buffer(data_out, out_buffer)); + + if (data_in) gpgme_data_release(data_in); + if (data_out) gpgme_data_release(data_out); + + encr_result = GpgEncrResult(gpgme_op_encrypt_result(ctx), + [&](gpgme_encrypt_result_t res) { gpgme_result_unref(res); }); + sign_result = GpgSignResult(gpgme_op_sign_result(ctx), [&](gpgme_sign_result_t res) { gpgme_result_unref(res); }); + + return err; +} + +void GpgFrontend::BasicOperator::setSigners(KeyArgsList keys) { + gpgme_signers_clear(ctx); + for (const GpgKey &key : keys) { + if (key.canSignActual()) { + auto gpgmeError = gpgme_signers_add(ctx, gpgme_key_t(key)); + check_gpg_error(gpgmeError); + } + } + if (keys.size() != gpgme_signers_count(ctx)) + qDebug() << "No All Signers Added"; +} + +std::unique_ptr> GpgFrontend::BasicOperator::getSigners() { + auto count = gpgme_signers_count(ctx); + auto signers = std::make_unique>(); + for (auto i = 0; i < count; i++) { + auto key = GpgKey(gpgme_signers_enum(ctx, i)); + signers->push_back(std::move(GpgKey(std::move(key)))); + } + return signers; +} -- cgit v1.2.3 From 39440522111abf3adeef6b56cb23722119fbf3c2 Mon Sep 17 00:00:00 2001 From: Saturneric Date: Sun, 5 Sep 2021 15:02:19 +0000 Subject: Rewrite the core. Adjust the structure. --- src/gpg/function/BasicOperator.cpp | 312 +++++++++++++++++-------------------- 1 file changed, 142 insertions(+), 170 deletions(-) (limited to 'src/gpg/function/BasicOperator.cpp') diff --git a/src/gpg/function/BasicOperator.cpp b/src/gpg/function/BasicOperator.cpp index f81e9f71..c76f581a 100644 --- a/src/gpg/function/BasicOperator.cpp +++ b/src/gpg/function/BasicOperator.cpp @@ -25,230 +25,202 @@ #include "gpg/function/BasicOperator.h" #include "gpg/function/GpgKeyGetter.h" -/** - * Read gpgme-Data to QByteArray - * mainly from http://basket.kde.org/ (kgpgme.cpp) - */ -#define BUF_SIZE (32 * 1024) - -gpgme_error_t read_2_buffer(gpgme_data_t data_in, GpgFrontend::BypeArrayPtr &out_buffer) { - gpgme_off_t ret = gpgme_data_seek(data_in, 0, SEEK_SET); - gpgme_error_t err = gpg_error(GPG_ERR_NO_ERROR); - - if (ret) { - err = gpgme_err_code_from_errno(errno); - GpgFrontend::check_gpg_error(err, "failed data_seek data_in read_2_buffer"); - } else { - char buf[BUF_SIZE + 2]; - - while ((ret = gpgme_data_read(data_in, buf, BUF_SIZE)) > 0) { - const size_t size = out_buffer->size(); - out_buffer->resize(static_cast(size + ret)); - memcpy(out_buffer->data() + size, buf, ret); - } - if (ret < 0) { - err = gpgme_err_code_from_errno(errno); - GpgFrontend::check_gpg_error(err, "failed data_read data_in read_2_buffer"); - } - } - return err; -} - -gpg_error_t GpgFrontend::BasicOperator::encrypt(std::vector &keys, GpgFrontend::BypeArrayRef in_buffer, - GpgFrontend::BypeArrayPtr &out_buffer, - GpgFrontend::GpgEncrResult &result) { +GpgFrontend::GpgError GpgFrontend::BasicOperator::Encrypt( + std::vector &keys, GpgFrontend::BypeArrayRef in_buffer, + GpgFrontend::BypeArrayPtr &out_buffer, GpgFrontend::GpgEncrResult &result) { - gpgme_data_t data_in = nullptr, data_out = nullptr; - out_buffer->resize(0); + // gpgme_encrypt_result_t e_result; + gpgme_key_t recipients[keys.size() + 1]; - // gpgme_encrypt_result_t e_result; - gpgme_key_t recipients[keys.size() + 1]; + int index = 0; + for (const auto &key : keys) + recipients[index++] = gpgme_key_t(key); - int index = 0; - for (const auto &key : keys) recipients[index++] = gpgme_key_t(key); + // Last entry data_in array has to be nullptr + recipients[keys.size()] = nullptr; - // Last entry data_in array has to be nullptr - recipients[keys.size()] = nullptr; + GpgData data_in(in_buffer.data(), in_buffer.size()), data_out; - gpgme_error_t err; + gpgme_error_t err = check_gpg_error(gpgme_op_encrypt( + ctx, recipients, GPGME_ENCRYPT_ALWAYS_TRUST, data_in, data_out)); - // If the last parameter isnt 0, a private copy of data is made - check_gpg_error(gpgme_data_new_from_mem(&data_in, in_buffer.data(), in_buffer.size(), 1)); - check_gpg_error(gpgme_data_new(&data_out)); - err = check_gpg_error(gpgme_op_encrypt(ctx, recipients, GPGME_ENCRYPT_ALWAYS_TRUST, data_in, data_out)); - check_gpg_error(read_2_buffer(data_out, out_buffer)); + auto temp_data_out = data_out.Read2Buffer(); + std::swap(temp_data_out, out_buffer); - if (data_in) gpgme_data_release(data_in); - if (data_out) gpgme_data_release(data_out); + auto temp_result = GpgEncrResult( + gpgme_op_encrypt_result(ctx), + [&](gpgme_encrypt_result_t res) { gpgme_result_unref(res); }); + std::swap(result, temp_result); - result = GpgEncrResult(gpgme_op_encrypt_result(ctx), [&](gpgme_encrypt_result_t res) { gpgme_result_unref(res); }); - return err; + return err; } -gpgme_error_t GpgFrontend::BasicOperator::decrypt(BypeArrayRef in_buffer, GpgFrontend::BypeArrayPtr &out_buffer, - GpgFrontend::GpgDecrResult &result) { - gpgme_data_t data_in = nullptr, data_out = nullptr; - out_buffer->resize(0); +GpgFrontend::GpgError +GpgFrontend::BasicOperator::Decrypt(BypeArrayRef in_buffer, + GpgFrontend::BypeArrayPtr &out_buffer, + GpgFrontend::GpgDecrResult &result) { - gpgme_error_t err; + gpgme_error_t err; - check_gpg_error(gpgme_data_new_from_mem(&data_in, in_buffer.data(), in_buffer.size(), 1)); - check_gpg_error(gpgme_data_new(&data_out)); - err = check_gpg_error(gpgme_op_decrypt(ctx, data_in, data_out)); - check_gpg_error(read_2_buffer(data_out, out_buffer)); + GpgData data_in(in_buffer.data(), in_buffer.size()), data_out; + err = check_gpg_error(gpgme_op_decrypt(ctx, data_in, data_out)); - if (data_in) gpgme_data_release(data_in); - if (data_out) gpgme_data_release(data_out); + auto temp_data_out = data_out.Read2Buffer(); + std::swap(temp_data_out, out_buffer); - result = GpgDecrResult(gpgme_op_decrypt_result(ctx), [&](gpgme_decrypt_result_t res) { gpgme_result_unref(res); }); + auto temp_result = GpgDecrResult( + gpgme_op_decrypt_result(ctx), + [&](gpgme_decrypt_result_t res) { gpgme_result_unref(res); }); + std::swap(result, temp_result); - return err; + return err; } -gpgme_error_t GpgFrontend::BasicOperator::verify(QByteArray &in_buffer, QByteArray &sig_buffer, - GpgFrontend::GpgVerifyResult &result) const { - gpgme_data_t data_in; - gpgme_error_t err; - gpgme_verify_result_t m_result; +GpgFrontend::GpgError +GpgFrontend::BasicOperator::Verify(QByteArray &in_buffer, + BypeArrayPtr &sig_buffer, + GpgVerifyResult &result) const { + gpgme_error_t err; + gpgme_verify_result_t m_result; - check_gpg_error(gpgme_data_new_from_mem(&data_in, in_buffer.data(), in_buffer.size(), 1)); + GpgData data_in(in_buffer.data(), in_buffer.size()); - if (sig_buffer != nullptr) { - gpgme_data_t sig_data; - check_gpg_error(gpgme_data_new_from_mem(&sig_data, sig_buffer.data(), sig_buffer.size(), 1)); - err = check_gpg_error(gpgme_op_verify(ctx, sig_data, data_in, nullptr)); - } else - err = check_gpg_error(gpgme_op_verify(ctx, data_in, nullptr, data_in)); + if (sig_buffer != nullptr) { + GpgData sig_data(sig_buffer->data(), sig_buffer->size()); + err = check_gpg_error(gpgme_op_verify(ctx, sig_data, data_in, nullptr)); + } else + err = check_gpg_error(gpgme_op_verify(ctx, data_in, nullptr, data_in)); - result = GpgVerifyResult(gpgme_op_verify_result(ctx), [&](gpgme_verify_result_t res) { gpgme_result_unref(res); }); + auto temp_result = GpgVerifyResult( + gpgme_op_verify_result(ctx), + [&](gpgme_verify_result_t res) { gpgme_result_unref(res); }); + std::swap(result, temp_result); - return err; + return err; } -gpg_error_t -GpgFrontend::BasicOperator::sign(KeyFprArgsList key_fprs, BypeArrayRef in_buffer, BypeArrayPtr &out_buffer, - gpgme_sig_mode_t mode, GpgSignResult &result) { - gpgme_error_t err; - gpgme_data_t data_in, data_out; +GpgFrontend::GpgError GpgFrontend::BasicOperator::Sign(KeyArgsList &keys, + BypeArrayRef in_buffer, + BypeArrayPtr &out_buffer, + gpgme_sig_mode_t mode, + GpgSignResult &result) { + gpgme_error_t err; - out_buffer->resize(0); + // Set Singers of this opera + SetSigners(keys); - std::vector keys; - auto &key_getter = GpgKeyGetter::getInstance(); + GpgData data_in(in_buffer.data(), in_buffer.size()), data_out; - for (const auto &key_fpr : key_fprs) - keys.push_back(key_getter.getKey(key_fpr)); + /** + `GPGME_SIG_MODE_NORMAL' + A normal signature is made, the output includes the plaintext + and the signature. - // Set Singers of this opera - setSigners(keys); + `GPGME_SIG_MODE_DETACH' + A detached signature is made. - check_gpg_error(gpgme_data_new_from_mem(&data_in, in_buffer.data(), in_buffer.size(), 1)); - check_gpg_error(gpgme_data_new(&data_out)); + `GPGME_SIG_MODE_CLEAR' + A clear text signature is made. The ASCII armor and text + mode settings of the context are ignored. + */ - /** - `GPGME_SIG_MODE_NORMAL' - A normal signature is made, the output includes the plaintext - and the signature. + err = check_gpg_error(gpgme_op_sign(ctx, data_in, data_out, mode)); - `GPGME_SIG_MODE_DETACH' - A detached signature is made. + auto temp_data_out = data_out.Read2Buffer(); + std::swap(temp_data_out, out_buffer); - `GPGME_SIG_MODE_CLEAR' - A clear text signature is made. The ASCII armor and text - mode settings of the context are ignored. - */ + auto temp_result = + GpgSignResult(gpgme_op_sign_result(ctx), + [&](gpgme_sign_result_t res) { gpgme_result_unref(res); }); - err = check_gpg_error(gpgme_op_sign(ctx, data_in, data_out, mode)); - check_gpg_error(read_2_buffer(data_out, out_buffer)); + std::swap(result, temp_result); - gpgme_data_release(data_in); - gpgme_data_release(data_out); - - result = GpgSignResult(gpgme_op_sign_result(ctx), [&](gpgme_sign_result_t res) { gpgme_result_unref(res); }); - - return err; + return err; } -gpgme_error_t -GpgFrontend::BasicOperator::decryptVerify(const BypeArrayRef in_buffer, BypeArrayPtr &out_buffer, - GpgDecrResult &decrypt_result, GpgVerifyResult &verify_result) { - gpgme_error_t err; - gpgme_data_t data_in, data_out; - out_buffer->resize(0); +gpgme_error_t GpgFrontend::BasicOperator::DecryptVerify( + BypeArrayRef in_buffer, BypeArrayPtr &out_buffer, + GpgDecrResult &decrypt_result, GpgVerifyResult &verify_result) { + gpgme_error_t err; - check_gpg_error(gpgme_data_new_from_mem(&data_in, in_buffer.data(), in_buffer.size(), 1)); - check_gpg_error(gpgme_data_new(&data_out)); - err = check_gpg_error(gpgme_op_decrypt_verify(ctx, data_in, data_out)); + GpgData data_in(in_buffer.data(), in_buffer.size()), data_out; - check_gpg_error(read_2_buffer(data_out, out_buffer)); + err = check_gpg_error(gpgme_op_decrypt_verify(ctx, data_in, data_out)); - if (data_in) gpgme_data_release(data_in); - if (data_out) gpgme_data_release(data_out); + auto temp_data_out = data_out.Read2Buffer(); + std::swap(temp_data_out, out_buffer); - decrypt_result = GpgDecrResult(gpgme_op_decrypt_result(ctx), - [&](gpgme_decrypt_result_t res) { gpgme_result_unref(res); }); - verify_result = GpgVerifyResult(gpgme_op_verify_result(ctx), - [&](gpgme_verify_result_t res) { gpgme_result_unref(res); }); + auto temp_decr_result = GpgDecrResult( + gpgme_op_decrypt_result(ctx), + [&](gpgme_decrypt_result_t res) { gpgme_result_unref(res); }); + std::swap(decrypt_result, temp_decr_result); + auto temp_verify_result = GpgVerifyResult( + gpgme_op_verify_result(ctx), + [&](gpgme_verify_result_t res) { gpgme_result_unref(res); }); + std::swap(verify_result, temp_verify_result); - return err; + return err; } -gpgme_error_t GpgFrontend::BasicOperator::encryptSign(std::vector &keys, std::vector &signers, - BypeArrayRef in_buffer, - BypeArrayPtr &out_buffer, GpgEncrResult &encr_result, - GpgSignResult &sign_result) { - gpgme_error_t err; - gpgme_data_t data_in, data_out; - out_buffer->resize(0); +gpgme_error_t GpgFrontend::BasicOperator::EncryptSign( + std::vector &keys, std::vector &signers, + BypeArrayRef in_buffer, BypeArrayPtr &out_buffer, + GpgEncrResult &encr_result, GpgSignResult &sign_result) { + gpgme_error_t err; + SetSigners(signers); - setSigners(signers); + // gpgme_encrypt_result_t e_result; + gpgme_key_t recipients[keys.size() + 1]; - //gpgme_encrypt_result_t e_result; - gpgme_key_t recipients[keys.size() + 1]; + // set key for user + int index = 0; + for (const auto &key : keys) + recipients[index++] = gpgme_key_t(key); - // set key for user - int index = 0; - for (const auto &key : keys) recipients[index++] = gpgme_key_t(key); + // Last entry dataIn array has to be nullptr + recipients[keys.size()] = nullptr; - // Last entry dataIn array has to be nullptr - recipients[keys.size()] = nullptr; + GpgData data_in(in_buffer.data(), in_buffer.size()), data_out; - // If the last parameter isnt 0, a private copy of data is made - check_gpg_error(gpgme_data_new_from_mem(&data_in, in_buffer.data(), in_buffer.size(), 1)); - check_gpg_error(gpgme_data_new(&data_out)); - err = check_gpg_error(gpgme_op_encrypt_sign(ctx, recipients, GPGME_ENCRYPT_ALWAYS_TRUST, data_in, data_out)); + // If the last parameter isnt 0, a private copy of data is made + err = check_gpg_error(gpgme_op_encrypt_sign( + ctx, recipients, GPGME_ENCRYPT_ALWAYS_TRUST, data_in, data_out)); - check_gpg_error(read_2_buffer(data_out, out_buffer)); + auto temp_data_out = data_out.Read2Buffer(); + std::swap(temp_data_out, out_buffer); - if (data_in) gpgme_data_release(data_in); - if (data_out) gpgme_data_release(data_out); + auto temp_encr_result = GpgEncrResult( + gpgme_op_encrypt_result(ctx), + [&](gpgme_encrypt_result_t res) { gpgme_result_unref(res); }); + swap(encr_result, temp_encr_result); + auto temp_sign_result = + GpgSignResult(gpgme_op_sign_result(ctx), + [&](gpgme_sign_result_t res) { gpgme_result_unref(res); }); + swap(sign_result, temp_sign_result); - encr_result = GpgEncrResult(gpgme_op_encrypt_result(ctx), - [&](gpgme_encrypt_result_t res) { gpgme_result_unref(res); }); - sign_result = GpgSignResult(gpgme_op_sign_result(ctx), [&](gpgme_sign_result_t res) { gpgme_result_unref(res); }); - - return err; + return err; } -void GpgFrontend::BasicOperator::setSigners(KeyArgsList keys) { - gpgme_signers_clear(ctx); - for (const GpgKey &key : keys) { - if (key.canSignActual()) { - auto gpgmeError = gpgme_signers_add(ctx, gpgme_key_t(key)); - check_gpg_error(gpgmeError); - } +void GpgFrontend::BasicOperator::SetSigners(KeyArgsList &keys) { + gpgme_signers_clear(ctx); + for (const GpgKey &key : keys) { + if (key.CanSignActual()) { + auto gpgmeError = gpgme_signers_add(ctx, gpgme_key_t(key)); + check_gpg_error(gpgmeError); } - if (keys.size() != gpgme_signers_count(ctx)) - qDebug() << "No All Signers Added"; + } + if (keys.size() != gpgme_signers_count(ctx)) + qDebug() << "No All Signers Added"; } -std::unique_ptr> GpgFrontend::BasicOperator::getSigners() { - auto count = gpgme_signers_count(ctx); - auto signers = std::make_unique>(); - for (auto i = 0; i < count; i++) { - auto key = GpgKey(gpgme_signers_enum(ctx, i)); - signers->push_back(std::move(GpgKey(std::move(key)))); - } - return signers; +std::unique_ptr> +GpgFrontend::BasicOperator::GetSigners() { + auto count = gpgme_signers_count(ctx); + auto signers = std::make_unique>(); + for (auto i = 0; i < count; i++) { + auto key = GpgKey(gpgme_signers_enum(ctx, i)); + signers->push_back(std::move(GpgKey(std::move(key)))); + } + return signers; } -- cgit v1.2.3 From e2d30cc0194db74b77e3c06dbaf9c597bb82c860 Mon Sep 17 00:00:00 2001 From: Saturneric Date: Sun, 5 Sep 2021 21:41:00 +0000 Subject: Adjust the code structure. Introduce log library. Remove Qt from the core code. --- src/gpg/function/BasicOperator.cpp | 36 ++++++++++-------------------------- 1 file changed, 10 insertions(+), 26 deletions(-) (limited to 'src/gpg/function/BasicOperator.cpp') diff --git a/src/gpg/function/BasicOperator.cpp b/src/gpg/function/BasicOperator.cpp index c76f581a..295b6433 100644 --- a/src/gpg/function/BasicOperator.cpp +++ b/src/gpg/function/BasicOperator.cpp @@ -47,9 +47,7 @@ GpgFrontend::GpgError GpgFrontend::BasicOperator::Encrypt( auto temp_data_out = data_out.Read2Buffer(); std::swap(temp_data_out, out_buffer); - auto temp_result = GpgEncrResult( - gpgme_op_encrypt_result(ctx), - [&](gpgme_encrypt_result_t res) { gpgme_result_unref(res); }); + auto temp_result = GpgEncrResult(gpgme_op_encrypt_result(ctx)); std::swap(result, temp_result); return err; @@ -68,16 +66,14 @@ GpgFrontend::BasicOperator::Decrypt(BypeArrayRef in_buffer, auto temp_data_out = data_out.Read2Buffer(); std::swap(temp_data_out, out_buffer); - auto temp_result = GpgDecrResult( - gpgme_op_decrypt_result(ctx), - [&](gpgme_decrypt_result_t res) { gpgme_result_unref(res); }); + auto temp_result = GpgDecrResult(gpgme_op_decrypt_result(ctx)); std::swap(result, temp_result); return err; } GpgFrontend::GpgError -GpgFrontend::BasicOperator::Verify(QByteArray &in_buffer, +GpgFrontend::BasicOperator::Verify(BypeArrayRef &in_buffer, BypeArrayPtr &sig_buffer, GpgVerifyResult &result) const { gpgme_error_t err; @@ -91,9 +87,7 @@ GpgFrontend::BasicOperator::Verify(QByteArray &in_buffer, } else err = check_gpg_error(gpgme_op_verify(ctx, data_in, nullptr, data_in)); - auto temp_result = GpgVerifyResult( - gpgme_op_verify_result(ctx), - [&](gpgme_verify_result_t res) { gpgme_result_unref(res); }); + auto temp_result = GpgVerifyResult(gpgme_op_verify_result(ctx)); std::swap(result, temp_result); return err; @@ -129,9 +123,7 @@ GpgFrontend::GpgError GpgFrontend::BasicOperator::Sign(KeyArgsList &keys, auto temp_data_out = data_out.Read2Buffer(); std::swap(temp_data_out, out_buffer); - auto temp_result = - GpgSignResult(gpgme_op_sign_result(ctx), - [&](gpgme_sign_result_t res) { gpgme_result_unref(res); }); + auto temp_result = GpgSignResult(gpgme_op_sign_result(ctx)); std::swap(result, temp_result); @@ -150,14 +142,10 @@ gpgme_error_t GpgFrontend::BasicOperator::DecryptVerify( auto temp_data_out = data_out.Read2Buffer(); std::swap(temp_data_out, out_buffer); - auto temp_decr_result = GpgDecrResult( - gpgme_op_decrypt_result(ctx), - [&](gpgme_decrypt_result_t res) { gpgme_result_unref(res); }); + auto temp_decr_result = GpgDecrResult(gpgme_op_decrypt_result(ctx)); std::swap(decrypt_result, temp_decr_result); - auto temp_verify_result = GpgVerifyResult( - gpgme_op_verify_result(ctx), - [&](gpgme_verify_result_t res) { gpgme_result_unref(res); }); + auto temp_verify_result = GpgVerifyResult(gpgme_op_verify_result(ctx)); std::swap(verify_result, temp_verify_result); return err; @@ -190,13 +178,9 @@ gpgme_error_t GpgFrontend::BasicOperator::EncryptSign( auto temp_data_out = data_out.Read2Buffer(); std::swap(temp_data_out, out_buffer); - auto temp_encr_result = GpgEncrResult( - gpgme_op_encrypt_result(ctx), - [&](gpgme_encrypt_result_t res) { gpgme_result_unref(res); }); + auto temp_encr_result = GpgEncrResult(gpgme_op_encrypt_result(ctx)); swap(encr_result, temp_encr_result); - auto temp_sign_result = - GpgSignResult(gpgme_op_sign_result(ctx), - [&](gpgme_sign_result_t res) { gpgme_result_unref(res); }); + auto temp_sign_result = GpgSignResult(gpgme_op_sign_result(ctx)); swap(sign_result, temp_sign_result); return err; @@ -211,7 +195,7 @@ void GpgFrontend::BasicOperator::SetSigners(KeyArgsList &keys) { } } if (keys.size() != gpgme_signers_count(ctx)) - qDebug() << "No All Signers Added"; + LOG(INFO) << "No All Signers Added"; } std::unique_ptr> -- cgit v1.2.3 From 4e076fa1982812ea7d1222c7e981879799ca8853 Mon Sep 17 00:00:00 2001 From: Saturneric Date: Fri, 10 Sep 2021 23:58:09 +0000 Subject: Continue to optimize and improve the code. --- src/gpg/function/BasicOperator.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src/gpg/function/BasicOperator.cpp') diff --git a/src/gpg/function/BasicOperator.cpp b/src/gpg/function/BasicOperator.cpp index 295b6433..268b7c6d 100644 --- a/src/gpg/function/BasicOperator.cpp +++ b/src/gpg/function/BasicOperator.cpp @@ -77,7 +77,6 @@ GpgFrontend::BasicOperator::Verify(BypeArrayRef &in_buffer, BypeArrayPtr &sig_buffer, GpgVerifyResult &result) const { gpgme_error_t err; - gpgme_verify_result_t m_result; GpgData data_in(in_buffer.data(), in_buffer.size()); @@ -204,7 +203,7 @@ GpgFrontend::BasicOperator::GetSigners() { auto signers = std::make_unique>(); for (auto i = 0; i < count; i++) { auto key = GpgKey(gpgme_signers_enum(ctx, i)); - signers->push_back(std::move(GpgKey(std::move(key)))); + signers->push_back(GpgKey(std::move(key))); } return signers; } -- cgit v1.2.3 From 4d792921af4170e8574e9b2841fe54e796902833 Mon Sep 17 00:00:00 2001 From: Saturneric Date: Sat, 11 Sep 2021 14:50:48 +0800 Subject: Improve and optimize the code. --- src/gpg/function/BasicOperator.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/gpg/function/BasicOperator.cpp') diff --git a/src/gpg/function/BasicOperator.cpp b/src/gpg/function/BasicOperator.cpp index 268b7c6d..50a2e2e3 100644 --- a/src/gpg/function/BasicOperator.cpp +++ b/src/gpg/function/BasicOperator.cpp @@ -201,7 +201,7 @@ std::unique_ptr> GpgFrontend::BasicOperator::GetSigners() { auto count = gpgme_signers_count(ctx); auto signers = std::make_unique>(); - for (auto i = 0; i < count; i++) { + for (auto i = 0u; i < count; i++) { auto key = GpgKey(gpgme_signers_enum(ctx, i)); signers->push_back(GpgKey(std::move(key))); } -- cgit v1.2.3 From 8544bb3ed9ccf09f3082c3032381a1b61dc5e122 Mon Sep 17 00:00:00 2001 From: Saturneric Date: Mon, 20 Sep 2021 17:35:57 +0800 Subject: The basic functions of the core pass the test. Adjust and improve the core part of the interface. --- src/gpg/function/BasicOperator.cpp | 58 +++++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 26 deletions(-) (limited to 'src/gpg/function/BasicOperator.cpp') diff --git a/src/gpg/function/BasicOperator.cpp b/src/gpg/function/BasicOperator.cpp index 50a2e2e3..fbf9afb1 100644 --- a/src/gpg/function/BasicOperator.cpp +++ b/src/gpg/function/BasicOperator.cpp @@ -23,17 +23,19 @@ */ #include "gpg/function/BasicOperator.h" +#include #include "gpg/function/GpgKeyGetter.h" GpgFrontend::GpgError GpgFrontend::BasicOperator::Encrypt( - std::vector &keys, GpgFrontend::BypeArrayRef in_buffer, - GpgFrontend::BypeArrayPtr &out_buffer, GpgFrontend::GpgEncrResult &result) { - + GpgFrontend::KeyArgsList&& keys, + GpgFrontend::BypeArrayRef in_buffer, + GpgFrontend::BypeArrayPtr& out_buffer, + GpgFrontend::GpgEncrResult& result) { // gpgme_encrypt_result_t e_result; gpgme_key_t recipients[keys.size() + 1]; int index = 0; - for (const auto &key : keys) + for (const auto& key : keys) recipients[index++] = gpgme_key_t(key); // Last entry data_in array has to be nullptr @@ -53,11 +55,10 @@ GpgFrontend::GpgError GpgFrontend::BasicOperator::Encrypt( return err; } -GpgFrontend::GpgError -GpgFrontend::BasicOperator::Decrypt(BypeArrayRef in_buffer, - GpgFrontend::BypeArrayPtr &out_buffer, - GpgFrontend::GpgDecrResult &result) { - +GpgFrontend::GpgError GpgFrontend::BasicOperator::Decrypt( + BypeArrayRef in_buffer, + GpgFrontend::BypeArrayPtr& out_buffer, + GpgFrontend::GpgDecrResult& result) { gpgme_error_t err; GpgData data_in(in_buffer.data(), in_buffer.size()), data_out; @@ -72,10 +73,10 @@ GpgFrontend::BasicOperator::Decrypt(BypeArrayRef in_buffer, return err; } -GpgFrontend::GpgError -GpgFrontend::BasicOperator::Verify(BypeArrayRef &in_buffer, - BypeArrayPtr &sig_buffer, - GpgVerifyResult &result) const { +GpgFrontend::GpgError GpgFrontend::BasicOperator::Verify( + BypeArrayRef& in_buffer, + BypeArrayPtr& sig_buffer, + GpgVerifyResult& result) const { gpgme_error_t err; GpgData data_in(in_buffer.data(), in_buffer.size()); @@ -92,11 +93,11 @@ GpgFrontend::BasicOperator::Verify(BypeArrayRef &in_buffer, return err; } -GpgFrontend::GpgError GpgFrontend::BasicOperator::Sign(KeyArgsList &keys, +GpgFrontend::GpgError GpgFrontend::BasicOperator::Sign(KeyArgsList&& keys, BypeArrayRef in_buffer, - BypeArrayPtr &out_buffer, + BypeArrayPtr& out_buffer, gpgme_sig_mode_t mode, - GpgSignResult &result) { + GpgSignResult& result) { gpgme_error_t err; // Set Singers of this opera @@ -130,8 +131,10 @@ GpgFrontend::GpgError GpgFrontend::BasicOperator::Sign(KeyArgsList &keys, } gpgme_error_t GpgFrontend::BasicOperator::DecryptVerify( - BypeArrayRef in_buffer, BypeArrayPtr &out_buffer, - GpgDecrResult &decrypt_result, GpgVerifyResult &verify_result) { + BypeArrayRef in_buffer, + BypeArrayPtr& out_buffer, + GpgDecrResult& decrypt_result, + GpgVerifyResult& verify_result) { gpgme_error_t err; GpgData data_in(in_buffer.data(), in_buffer.size()), data_out; @@ -151,9 +154,12 @@ gpgme_error_t GpgFrontend::BasicOperator::DecryptVerify( } gpgme_error_t GpgFrontend::BasicOperator::EncryptSign( - std::vector &keys, std::vector &signers, - BypeArrayRef in_buffer, BypeArrayPtr &out_buffer, - GpgEncrResult &encr_result, GpgSignResult &sign_result) { + KeyArgsList&& keys, + KeyArgsList&& signers, + BypeArrayRef in_buffer, + BypeArrayPtr& out_buffer, + GpgEncrResult& encr_result, + GpgSignResult& sign_result) { gpgme_error_t err; SetSigners(signers); @@ -162,7 +168,7 @@ gpgme_error_t GpgFrontend::BasicOperator::EncryptSign( // set key for user int index = 0; - for (const auto &key : keys) + for (const auto& key : keys) recipients[index++] = gpgme_key_t(key); // Last entry dataIn array has to be nullptr @@ -185,19 +191,19 @@ gpgme_error_t GpgFrontend::BasicOperator::EncryptSign( return err; } -void GpgFrontend::BasicOperator::SetSigners(KeyArgsList &keys) { +void GpgFrontend::BasicOperator::SetSigners(KeyArgsList& keys) { gpgme_signers_clear(ctx); - for (const GpgKey &key : keys) { + for (const GpgKey& key : keys) { if (key.CanSignActual()) { auto gpgmeError = gpgme_signers_add(ctx, gpgme_key_t(key)); check_gpg_error(gpgmeError); } } if (keys.size() != gpgme_signers_count(ctx)) - LOG(INFO) << "No All Signers Added"; + DLOG(INFO) << "No All Signers Added"; } -std::unique_ptr> +std::unique_ptr GpgFrontend::BasicOperator::GetSigners() { auto count = gpgme_signers_count(ctx); auto signers = std::make_unique>(); -- cgit v1.2.3 From 3c65d087eeee687ac01af2e80f3dd538f9a2c230 Mon Sep 17 00:00:00 2001 From: Saturneric Date: Sat, 2 Oct 2021 22:08:50 +0800 Subject: UI Framework Modified. --- src/gpg/function/BasicOperator.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/gpg/function/BasicOperator.cpp') diff --git a/src/gpg/function/BasicOperator.cpp b/src/gpg/function/BasicOperator.cpp index fbf9afb1..0e44c9e0 100644 --- a/src/gpg/function/BasicOperator.cpp +++ b/src/gpg/function/BasicOperator.cpp @@ -29,7 +29,7 @@ GpgFrontend::GpgError GpgFrontend::BasicOperator::Encrypt( GpgFrontend::KeyArgsList&& keys, GpgFrontend::BypeArrayRef in_buffer, - GpgFrontend::BypeArrayPtr& out_buffer, + GpgFrontend::ByteArrayPtr& out_buffer, GpgFrontend::GpgEncrResult& result) { // gpgme_encrypt_result_t e_result; gpgme_key_t recipients[keys.size() + 1]; @@ -57,7 +57,7 @@ GpgFrontend::GpgError GpgFrontend::BasicOperator::Encrypt( GpgFrontend::GpgError GpgFrontend::BasicOperator::Decrypt( BypeArrayRef in_buffer, - GpgFrontend::BypeArrayPtr& out_buffer, + GpgFrontend::ByteArrayPtr& out_buffer, GpgFrontend::GpgDecrResult& result) { gpgme_error_t err; @@ -75,7 +75,7 @@ GpgFrontend::GpgError GpgFrontend::BasicOperator::Decrypt( GpgFrontend::GpgError GpgFrontend::BasicOperator::Verify( BypeArrayRef& in_buffer, - BypeArrayPtr& sig_buffer, + ByteArrayPtr& sig_buffer, GpgVerifyResult& result) const { gpgme_error_t err; @@ -95,7 +95,7 @@ GpgFrontend::GpgError GpgFrontend::BasicOperator::Verify( GpgFrontend::GpgError GpgFrontend::BasicOperator::Sign(KeyArgsList&& keys, BypeArrayRef in_buffer, - BypeArrayPtr& out_buffer, + ByteArrayPtr& out_buffer, gpgme_sig_mode_t mode, GpgSignResult& result) { gpgme_error_t err; @@ -132,7 +132,7 @@ GpgFrontend::GpgError GpgFrontend::BasicOperator::Sign(KeyArgsList&& keys, gpgme_error_t GpgFrontend::BasicOperator::DecryptVerify( BypeArrayRef in_buffer, - BypeArrayPtr& out_buffer, + ByteArrayPtr& out_buffer, GpgDecrResult& decrypt_result, GpgVerifyResult& verify_result) { gpgme_error_t err; @@ -157,7 +157,7 @@ gpgme_error_t GpgFrontend::BasicOperator::EncryptSign( KeyArgsList&& keys, KeyArgsList&& signers, BypeArrayRef in_buffer, - BypeArrayPtr& out_buffer, + ByteArrayPtr& out_buffer, GpgEncrResult& encr_result, GpgSignResult& sign_result) { gpgme_error_t err; -- cgit v1.2.3 From 1ae8663decb3163b92d32b80cefb46eb678a5af6 Mon Sep 17 00:00:00 2001 From: Saturneric Date: Thu, 2 Dec 2021 01:25:46 +0800 Subject: Add i18n Support 1. Remove Qt Linguist. 2. Add GNU gettext libraries. 3. Modified source codes to meet with i18n support. --- src/gpg/function/BasicOperator.cpp | 37 ++++++++++++++----------------------- 1 file changed, 14 insertions(+), 23 deletions(-) (limited to 'src/gpg/function/BasicOperator.cpp') diff --git a/src/gpg/function/BasicOperator.cpp b/src/gpg/function/BasicOperator.cpp index 0e44c9e0..e92d4cfe 100644 --- a/src/gpg/function/BasicOperator.cpp +++ b/src/gpg/function/BasicOperator.cpp @@ -1,7 +1,7 @@ /** - * This file is part of GPGFrontend. + * This file is part of GpgFrontend. * - * GPGFrontend is free software: you can redistribute it and/or modify + * GpgFrontend is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. @@ -23,20 +23,19 @@ */ #include "gpg/function/BasicOperator.h" + #include + #include "gpg/function/GpgKeyGetter.h" GpgFrontend::GpgError GpgFrontend::BasicOperator::Encrypt( - GpgFrontend::KeyArgsList&& keys, - GpgFrontend::BypeArrayRef in_buffer, - GpgFrontend::ByteArrayPtr& out_buffer, - GpgFrontend::GpgEncrResult& result) { + GpgFrontend::KeyArgsList&& keys, GpgFrontend::BypeArrayRef in_buffer, + GpgFrontend::ByteArrayPtr& out_buffer, GpgFrontend::GpgEncrResult& result) { // gpgme_encrypt_result_t e_result; gpgme_key_t recipients[keys.size() + 1]; int index = 0; - for (const auto& key : keys) - recipients[index++] = gpgme_key_t(key); + for (const auto& key : keys) recipients[index++] = gpgme_key_t(key); // Last entry data_in array has to be nullptr recipients[keys.size()] = nullptr; @@ -56,8 +55,7 @@ GpgFrontend::GpgError GpgFrontend::BasicOperator::Encrypt( } GpgFrontend::GpgError GpgFrontend::BasicOperator::Decrypt( - BypeArrayRef in_buffer, - GpgFrontend::ByteArrayPtr& out_buffer, + BypeArrayRef in_buffer, GpgFrontend::ByteArrayPtr& out_buffer, GpgFrontend::GpgDecrResult& result) { gpgme_error_t err; @@ -74,8 +72,7 @@ GpgFrontend::GpgError GpgFrontend::BasicOperator::Decrypt( } GpgFrontend::GpgError GpgFrontend::BasicOperator::Verify( - BypeArrayRef& in_buffer, - ByteArrayPtr& sig_buffer, + BypeArrayRef& in_buffer, ByteArrayPtr& sig_buffer, GpgVerifyResult& result) const { gpgme_error_t err; @@ -131,10 +128,8 @@ GpgFrontend::GpgError GpgFrontend::BasicOperator::Sign(KeyArgsList&& keys, } gpgme_error_t GpgFrontend::BasicOperator::DecryptVerify( - BypeArrayRef in_buffer, - ByteArrayPtr& out_buffer, - GpgDecrResult& decrypt_result, - GpgVerifyResult& verify_result) { + BypeArrayRef in_buffer, ByteArrayPtr& out_buffer, + GpgDecrResult& decrypt_result, GpgVerifyResult& verify_result) { gpgme_error_t err; GpgData data_in(in_buffer.data(), in_buffer.size()), data_out; @@ -154,11 +149,8 @@ gpgme_error_t GpgFrontend::BasicOperator::DecryptVerify( } gpgme_error_t GpgFrontend::BasicOperator::EncryptSign( - KeyArgsList&& keys, - KeyArgsList&& signers, - BypeArrayRef in_buffer, - ByteArrayPtr& out_buffer, - GpgEncrResult& encr_result, + KeyArgsList&& keys, KeyArgsList&& signers, BypeArrayRef in_buffer, + ByteArrayPtr& out_buffer, GpgEncrResult& encr_result, GpgSignResult& sign_result) { gpgme_error_t err; SetSigners(signers); @@ -168,8 +160,7 @@ gpgme_error_t GpgFrontend::BasicOperator::EncryptSign( // set key for user int index = 0; - for (const auto& key : keys) - recipients[index++] = gpgme_key_t(key); + for (const auto& key : keys) recipients[index++] = gpgme_key_t(key); // Last entry dataIn array has to be nullptr recipients[keys.size()] = nullptr; -- cgit v1.2.3 From 1e3f1d13a6fb1bfc8f24be83032df1e92350dbcc Mon Sep 17 00:00:00 2001 From: Saturneric Date: Fri, 3 Dec 2021 05:35:16 +0800 Subject: Fixed. 1. Fixed known issue in File Operations. --- src/gpg/function/BasicOperator.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'src/gpg/function/BasicOperator.cpp') diff --git a/src/gpg/function/BasicOperator.cpp b/src/gpg/function/BasicOperator.cpp index e92d4cfe..912119e2 100644 --- a/src/gpg/function/BasicOperator.cpp +++ b/src/gpg/function/BasicOperator.cpp @@ -29,16 +29,16 @@ #include "gpg/function/GpgKeyGetter.h" GpgFrontend::GpgError GpgFrontend::BasicOperator::Encrypt( - GpgFrontend::KeyArgsList&& keys, GpgFrontend::BypeArrayRef in_buffer, + KeyListPtr keys, GpgFrontend::BypeArrayRef in_buffer, GpgFrontend::ByteArrayPtr& out_buffer, GpgFrontend::GpgEncrResult& result) { // gpgme_encrypt_result_t e_result; - gpgme_key_t recipients[keys.size() + 1]; + gpgme_key_t recipients[keys->size() + 1]; int index = 0; - for (const auto& key : keys) recipients[index++] = gpgme_key_t(key); + for (const auto& key : *keys) recipients[index++] = gpgme_key_t(key); // Last entry data_in array has to be nullptr - recipients[keys.size()] = nullptr; + recipients[keys->size()] = nullptr; GpgData data_in(in_buffer.data(), in_buffer.size()), data_out; @@ -90,7 +90,7 @@ GpgFrontend::GpgError GpgFrontend::BasicOperator::Verify( return err; } -GpgFrontend::GpgError GpgFrontend::BasicOperator::Sign(KeyArgsList&& keys, +GpgFrontend::GpgError GpgFrontend::BasicOperator::Sign(KeyListPtr keys, BypeArrayRef in_buffer, ByteArrayPtr& out_buffer, gpgme_sig_mode_t mode, @@ -98,7 +98,7 @@ GpgFrontend::GpgError GpgFrontend::BasicOperator::Sign(KeyArgsList&& keys, gpgme_error_t err; // Set Singers of this opera - SetSigners(keys); + SetSigners(*keys); GpgData data_in(in_buffer.data(), in_buffer.size()), data_out; @@ -149,21 +149,21 @@ gpgme_error_t GpgFrontend::BasicOperator::DecryptVerify( } gpgme_error_t GpgFrontend::BasicOperator::EncryptSign( - KeyArgsList&& keys, KeyArgsList&& signers, BypeArrayRef in_buffer, + KeyListPtr keys, KeyListPtr signers, BypeArrayRef in_buffer, ByteArrayPtr& out_buffer, GpgEncrResult& encr_result, GpgSignResult& sign_result) { gpgme_error_t err; - SetSigners(signers); + SetSigners(*signers); // gpgme_encrypt_result_t e_result; - gpgme_key_t recipients[keys.size() + 1]; + gpgme_key_t recipients[keys->size() + 1]; // set key for user int index = 0; - for (const auto& key : keys) recipients[index++] = gpgme_key_t(key); + for (const auto& key : *keys) recipients[index++] = gpgme_key_t(key); // Last entry dataIn array has to be nullptr - recipients[keys.size()] = nullptr; + recipients[keys->size()] = nullptr; GpgData data_in(in_buffer.data(), in_buffer.size()), data_out; -- cgit v1.2.3