diff options
author | Saturneric <[email protected]> | 2021-09-19 15:54:06 +0000 |
---|---|---|
committer | Saturneric <[email protected]> | 2021-09-19 15:54:06 +0000 |
commit | 0f0b9510bbb8be150984bfa8af03f43e1d4135d3 (patch) | |
tree | 6436834f05ac0fe32646dbf47488d25a98ddf8fa /src/gpg/function/GpgKeyImportExportor.cpp | |
parent | Continue to write core test code. (diff) | |
download | GpgFrontend-0f0b9510bbb8be150984bfa8af03f43e1d4135d3.tar.gz GpgFrontend-0f0b9510bbb8be150984bfa8af03f43e1d4135d3.zip |
Support multi-channel Context.
Make the test configurable.
Other modifications.
Diffstat (limited to 'src/gpg/function/GpgKeyImportExportor.cpp')
-rw-r--r-- | src/gpg/function/GpgKeyImportExportor.cpp | 64 |
1 files changed, 48 insertions, 16 deletions
diff --git a/src/gpg/function/GpgKeyImportExportor.cpp b/src/gpg/function/GpgKeyImportExportor.cpp index 2ee261b4..7a7af4c7 100644 --- a/src/gpg/function/GpgKeyImportExportor.cpp +++ b/src/gpg/function/GpgKeyImportExportor.cpp @@ -1,32 +1,62 @@ +/** + * 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 <https://www.gnu.org/licenses/>. + * + * 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<[email protected]> starting on May 12, 2021. + * + */ + #include "gpg/function/GpgKeyImportExportor.h" + #include "GpgConstants.h" -#include <gpg-error.h> /** * Import key pair * @param inBuffer input byte array * @return Import information */ -GpgFrontend::GpgImportInformation -GpgFrontend::GpgKeyImportExportor::ImportKey(StdBypeArrayPtr in_buffer) { - LOG(INFO) << "ImportKey Called in_buffer Size " << in_buffer->size(); +GpgFrontend::GpgImportInformation GpgFrontend::GpgKeyImportExportor::ImportKey( + StdBypeArrayPtr in_buffer) { + DLOG(INFO) << "ImportKey called in_buffer Size " << in_buffer->size(); + + if (in_buffer->empty()) + return GpgImportInformation(); + GpgData data_in(in_buffer->data(), in_buffer->size()); + DLOG(INFO) << "ImportKey gpgme_op_import"; auto err = check_gpg_error(gpgme_op_import(ctx, data_in)); assert(gpgme_err_code(err) == GPG_ERR_NO_ERROR); gpgme_import_result_t result; - + DLOG(INFO) << "ImportKey gpgme_op_import_result"; result = gpgme_op_import_result(ctx); gpgme_import_status_t status = result->imports; auto import_info = std::make_unique<GpgImportInformation>(result); - LOG(INFO) << "ImportKey import_information " << result->not_imported << " " - << result->imported << " " << result->considered; + DLOG(INFO) << "ImportKey import_information " << result->not_imported << " " + << result->imported << " " << result->considered; while (status != nullptr) { GpgImportedKey key; key.import_status = static_cast<int>(status->status); key.fpr = status->fpr; import_info->importedKeys.emplace_back(key); status = status->next; - LOG(INFO) << "ImportKey Fpr " << key.fpr << " Status " << key.import_status; + DLOG(INFO) << "ImportKey Fpr " << key.fpr << " Status " + << key.import_status; } return *import_info; } @@ -38,7 +68,8 @@ GpgFrontend::GpgKeyImportExportor::ImportKey(StdBypeArrayPtr in_buffer) { * @return if success */ bool GpgFrontend::GpgKeyImportExportor::ExportKeys( - KeyIdArgsListPtr &uid_list, BypeArrayPtr &out_buffer) const { + KeyIdArgsListPtr& uid_list, + BypeArrayPtr& out_buffer) const { if (uid_list->empty()) return false; @@ -49,8 +80,8 @@ bool GpgFrontend::GpgKeyImportExportor::ExportKeys( auto err = gpgme_op_export(ctx, (*uid_list)[i].c_str(), 0, data_out); assert(gpgme_err_code(err) == GPG_ERR_NO_ERROR); - LOG(INFO) << "exportKeys read_bytes" - << gpgme_data_seek(data_out, 0, SEEK_END); + DLOG(INFO) << "exportKeys read_bytes" + << gpgme_data_seek(data_out, 0, SEEK_END); auto temp_out_buffer = data_out.Read2Buffer(); std::swap(out_buffer, temp_out_buffer); @@ -66,9 +97,10 @@ bool GpgFrontend::GpgKeyImportExportor::ExportKeys( * @return if success */ bool GpgFrontend::GpgKeyImportExportor::ExportKeys( - KeyArgsList &keys, BypeArrayPtr &out_buffer) const { + KeyArgsList& keys, + BypeArrayPtr& out_buffer) const { KeyIdArgsListPtr key_ids = std::make_unique<std::vector<std::string>>(); - for (const auto &key : keys) + for (const auto& key : keys) key_ids->push_back(key.id()); return ExportKeys(key_ids, out_buffer); } @@ -80,9 +112,9 @@ bool GpgFrontend::GpgKeyImportExportor::ExportKeys( * @return if successful */ bool GpgFrontend::GpgKeyImportExportor::ExportSecretKey( - const GpgKey &key, BypeArrayPtr out_buffer) const { - - LOG(INFO) << "Export Secret Key" << key.id().c_str(); + const GpgKey& key, + BypeArrayPtr out_buffer) const { + DLOG(INFO) << "Export Secret Key" << key.id().c_str(); gpgme_key_t target_key[2] = {gpgme_key_t(key), nullptr}; |