diff options
author | saturneric <[email protected]> | 2023-02-04 13:48:38 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2023-02-04 13:48:50 +0000 |
commit | 104decb1b4933367c6ab44d1f85c630464387ce4 (patch) | |
tree | 6657de478503bb91eb91874f5957b5890158b675 | |
parent | feat: add cache recovery function (diff) | |
download | GpgFrontend-104decb1b4933367c6ab44d1f85c630464387ce4.tar.gz GpgFrontend-104decb1b4933367c6ab44d1f85c630464387ce4.zip |
fix: solve issue on the KeyPackage
-rw-r--r-- | src/core/function/KeyPackageOperator.cpp | 4 | ||||
-rw-r--r-- | src/core/function/gpg/GpgKeyImportExporter.cpp | 21 | ||||
-rw-r--r-- | src/core/function/gpg/GpgKeyImportExporter.h | 12 |
3 files changed, 35 insertions, 2 deletions
diff --git a/src/core/function/KeyPackageOperator.cpp b/src/core/function/KeyPackageOperator.cpp index 2dc786cf..19c572f8 100644 --- a/src/core/function/KeyPackageOperator.cpp +++ b/src/core/function/KeyPackageOperator.cpp @@ -50,8 +50,8 @@ bool KeyPackageOperator::GenerateKeyPackage( SPDLOG_INFO("generating key package: {}", key_package_name); ByteArrayPtr key_export_data = nullptr; - if (!GpgKeyImportExporter::GetInstance().ExportKeys(key_ids, key_export_data, - secret)) { + if (!GpgKeyImportExporter::GetInstance().ExportAllKeys( + key_ids, key_export_data, secret)) { SPDLOG_ERROR("failed to export keys"); return false; } diff --git a/src/core/function/gpg/GpgKeyImportExporter.cpp b/src/core/function/gpg/GpgKeyImportExporter.cpp index dc744e09..8c66ebe2 100644 --- a/src/core/function/gpg/GpgKeyImportExporter.cpp +++ b/src/core/function/gpg/GpgKeyImportExporter.cpp @@ -28,6 +28,8 @@ #include "GpgKeyImportExporter.h" +#include <memory> + #include "GpgConstants.h" #include "GpgKeyGetter.h" @@ -116,6 +118,25 @@ bool GpgFrontend::GpgKeyImportExporter::ExportKeys(const KeyArgsList& keys, } /** + * Export all the keys both private and public keys + * @param uid_list key ids + * @param out_buffer output byte array + * @return if success + */ +bool GpgFrontend::GpgKeyImportExporter::ExportAllKeys( + KeyIdArgsListPtr& uid_list, ByteArrayPtr& out_buffer, bool secret) const { + bool result = true; + result = ExportKeys(uid_list, out_buffer, false) & result; + + ByteArrayPtr temp_buffer; + if (secret) { + result = ExportKeys(uid_list, temp_buffer, true) & result; + } + out_buffer->append(*temp_buffer); + return true; +} + +/** * Export the secret key of a key pair(including subkeys) * @param key target key pair * @param outBuffer output byte array diff --git a/src/core/function/gpg/GpgKeyImportExporter.h b/src/core/function/gpg/GpgKeyImportExporter.h index 7603c17d..6e90f436 100644 --- a/src/core/function/gpg/GpgKeyImportExporter.h +++ b/src/core/function/gpg/GpgKeyImportExporter.h @@ -132,6 +132,18 @@ class GPGFRONTEND_CORE_EXPORT GpgKeyImportExporter /** * @brief * + * @param keys + * @param outBuffer + * @param secret + * @return true + * @return false + */ + bool ExportAllKeys(KeyIdArgsListPtr& uid_list, ByteArrayPtr& out_buffer, + bool secret) const; + + /** + * @brief + * * @param key * @param out_buffer * @return true |