aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/gpg/result_analyse/DecryptResultAnalyse.cpp36
-rw-r--r--src/gpg/result_analyse/DecryptResultAnalyse.h4
-rw-r--r--test/GpgCoreTestBasicOpera.cpp71
3 files changed, 81 insertions, 30 deletions
diff --git a/src/gpg/result_analyse/DecryptResultAnalyse.cpp b/src/gpg/result_analyse/DecryptResultAnalyse.cpp
index 9c3e7dd0..4f5cf936 100644
--- a/src/gpg/result_analyse/DecryptResultAnalyse.cpp
+++ b/src/gpg/result_analyse/DecryptResultAnalyse.cpp
@@ -24,11 +24,13 @@
#include "gpg/result_analyse/DecryptResultAnalyse.h"
+#include <utility>
+
#include "gpg/function/GpgKeyGetter.h"
-GpgFrontend::DecryptResultAnalyse::DecryptResultAnalyse(GpgError error,
- GpgDecrResult result)
- : error(error), result(std::move(result)) {}
+GpgFrontend::DecryptResultAnalyse::DecryptResultAnalyse(GpgError m_error,
+ GpgDecrResult m_result)
+ : error(m_error), result(std::move(m_result)) {}
void GpgFrontend::DecryptResultAnalyse::do_analyse() {
stream << "[#]" << _("Decrypt Operation");
@@ -55,11 +57,11 @@ void GpgFrontend::DecryptResultAnalyse::do_analyse() {
stream << _("MIME") << ": " << _("true") << std::endl;
}
- auto reci = result->recipients;
- if (reci != nullptr) stream << _("Recipient(s)") << ": " << std::endl;
- while (reci != nullptr) {
- print_reci(stream, reci);
- reci = reci->next;
+ auto recipient = result->recipients;
+ if (recipient != nullptr) stream << _("Recipient(s)") << ": " << std::endl;
+ while (recipient != nullptr) {
+ print_recipient(stream, recipient);
+ recipient = recipient->next;
}
stream << "<------------" << std::endl;
}
@@ -67,12 +69,13 @@ void GpgFrontend::DecryptResultAnalyse::do_analyse() {
stream << std::endl;
}
-bool GpgFrontend::DecryptResultAnalyse::print_reci(std::stringstream &stream,
- gpgme_recipient_t reci) {
- bool keyFound = true;
- stream << " {>} " << _("Recipient") << ": ";
+void GpgFrontend::DecryptResultAnalyse::print_recipient(
+ std::stringstream &stream, gpgme_recipient_t recipient) {
+ // check
+ if (recipient->keyid == nullptr || recipient->pubkey_algo) return;
- auto key = GpgFrontend::GpgKeyGetter::GetInstance().GetKey(reci->keyid);
+ stream << " {>} " << _("Recipient") << ": ";
+ auto key = GpgFrontend::GpgKeyGetter::GetInstance().GetKey(recipient->keyid);
if (key.good()) {
stream << key.name().c_str();
if (!key.email().empty()) {
@@ -81,14 +84,11 @@ bool GpgFrontend::DecryptResultAnalyse::print_reci(std::stringstream &stream,
} else {
stream << "<" << _("Unknown") << ">";
setStatus(0);
- keyFound = false;
}
stream << std::endl;
- stream << " " << _("Keu ID") << ": " << reci->keyid << std::endl;
+ stream << " " << _("Keu ID") << ": " << recipient->keyid << std::endl;
stream << " " << _("Public Algo") << ": "
- << gpgme_pubkey_algo_name(reci->pubkey_algo) << std::endl;
-
- return keyFound;
+ << gpgme_pubkey_algo_name(recipient->pubkey_algo) << std::endl;
}
diff --git a/src/gpg/result_analyse/DecryptResultAnalyse.h b/src/gpg/result_analyse/DecryptResultAnalyse.h
index 0864c23b..729d8853 100644
--- a/src/gpg/result_analyse/DecryptResultAnalyse.h
+++ b/src/gpg/result_analyse/DecryptResultAnalyse.h
@@ -32,13 +32,13 @@ namespace GpgFrontend {
class DecryptResultAnalyse : public ResultAnalyse {
public:
- explicit DecryptResultAnalyse(GpgError error, GpgDecrResult result);
+ explicit DecryptResultAnalyse(GpgError m_error, GpgDecrResult m_result);
protected:
void do_analyse() final;
private:
- bool print_reci(std::stringstream &stream, gpgme_recipient_t reci);
+ void print_recipient(std::stringstream &stream, gpgme_recipient_t recipient);
GpgError error;
GpgDecrResult result;
diff --git a/test/GpgCoreTestBasicOpera.cpp b/test/GpgCoreTestBasicOpera.cpp
index b06068a1..283ceb82 100644
--- a/test/GpgCoreTestBasicOpera.cpp
+++ b/test/GpgCoreTestBasicOpera.cpp
@@ -31,18 +31,18 @@
#include "gpg/GpgConstants.h"
#include "gpg/function/BasicOperator.h"
#include "gpg/function/GpgKeyGetter.h"
-#include "gpg/model/GpgKey.h"
+#include "gpg/result_analyse/DecryptResultAnalyse.h"
using namespace GpgFrontend;
TEST_F(GpgCoreTest, CoreEncryptDecrTest) {
- auto encrpyt_key = GpgKeyGetter::GetInstance(default_channel)
+ auto encrypt_key = GpgKeyGetter::GetInstance(default_channel)
.GetPubkey("467F14220CE8DCF780CF4BAD8465C55B25C9B7D1");
ByteArray encrypt_text = "Hello GpgFrontend!";
ByteArrayPtr encr_out_data;
GpgEncrResult e_result;
KeyListPtr keys = std::make_unique<KeyArgsList>();
- keys->push_back(std::move(encrpyt_key));
+ keys->push_back(std::move(encrypt_key));
auto err =
BasicOperator::GetInstance(default_channel)
.Encrypt(std::move(keys), encrypt_text, encr_out_data, e_result);
@@ -59,14 +59,65 @@ TEST_F(GpgCoreTest, CoreEncryptDecrTest) {
ASSERT_EQ(*decr_out_data, encrypt_text);
}
+TEST_F(GpgCoreTest, CoreEncryptDecrTest_KeyNotFound_1) {
+ ByteArrayPtr encr_out_data = std::make_unique<ByteArray>(
+ "-----BEGIN PGP MESSAGE-----\n"
+ "\n"
+ "hQEMA6UM/S9sZ32MAQf9Fb6gp6nvgKTQBv2mmjXia6ODXYq6kNeLsPVzLCbHyWOs\n"
+ "0GDED11R1NksA3EQxFf4fzLkDpbo68r5bWy7c28c99Fr68IRET19Tw6Gu65MQezD\n"
+ "Rdzo1oVqmK9sfKqOT3+0S2H+suFYw5kfBztMZLVGGl9R9fOXdKcj0fqGs2br3e9D\n"
+ "ArBFqq07Bae2DD1J8mckWB2x9Uem4vjRiY+vEJcEdAS1N5xu1n7qzzyDgcRcS34X\n"
+ "PNBQeTrFMc2RS7mnip2DbyZVEjORobhguK6xZyqXXbvFacStGWDLptV3dcCn4JRO\n"
+ "dIORyt5wugqAtgE4qEGTvr/pJ/oXPw4Wve/trece/9I/AR38vW8ntVmDa/hV75iZ\n"
+ "4QGAhQ8grD4kq31GHXHUOmBX51XXW9SINmplC8elEx3R460EUZJjjb0OvTih+eZH\n"
+ "=8n2H\n"
+ "-----END PGP MESSAGE-----");
+
+ GpgDecrResult d_result;
+ ByteArrayPtr decr_out_data;
+ auto err = BasicOperator::GetInstance(default_channel)
+ .Decrypt(*encr_out_data, decr_out_data, d_result);
+ ASSERT_EQ(check_gpg_error_2_err_code(err), GPG_ERR_NO_SECKEY);
+ ASSERT_NE(d_result->recipients, nullptr);
+ ASSERT_EQ(std::string(d_result->recipients->keyid), "A50CFD2F6C677D8C");
+}
+
+TEST_F(GpgCoreTest, CoreEncryptDecrTest_KeyNotFound_ResultAnalyse) {
+ ByteArrayPtr encr_out_data = std::make_unique<ByteArray>(
+ "-----BEGIN PGP MESSAGE-----\n"
+ "\n"
+ "hQEMA6UM/S9sZ32MAQf9Fb6gp6nvgKTQBv2mmjXia6ODXYq6kNeLsPVzLCbHyWOs\n"
+ "0GDED11R1NksA3EQxFf4fzLkDpbo68r5bWy7c28c99Fr68IRET19Tw6Gu65MQezD\n"
+ "Rdzo1oVqmK9sfKqOT3+0S2H+suFYw5kfBztMZLVGGl9R9fOXdKcj0fqGs2br3e9D\n"
+ "ArBFqq07Bae2DD1J8mckWB2x9Uem4vjRiY+vEJcEdAS1N5xu1n7qzzyDgcRcS34X\n"
+ "PNBQeTrFMc2RS7mnip2DbyZVEjORobhguK6xZyqXXbvFacStGWDLptV3dcCn4JRO\n"
+ "dIORyt5wugqAtgE4qEGTvr/pJ/oXPw4Wve/trece/9I/AR38vW8ntVmDa/hV75iZ\n"
+ "4QGAhQ8grD4kq31GHXHUOmBX51XXW9SINmplC8elEx3R460EUZJjjb0OvTih+eZH\n"
+ "=8n2H\n"
+ "-----END PGP MESSAGE-----");
+
+ GpgDecrResult d_result;
+ ByteArrayPtr decr_out_data;
+ auto err = BasicOperator::GetInstance(default_channel)
+ .Decrypt(*encr_out_data, decr_out_data, d_result);
+ ASSERT_EQ(check_gpg_error_2_err_code(err), GPG_ERR_NO_SECKEY);
+ ASSERT_NE(d_result->recipients, nullptr);
+ ASSERT_EQ(std::string(d_result->recipients->keyid), "A50CFD2F6C677D8C");
+
+ DecryptResultAnalyse analyse{err, d_result};
+ analyse.analyse();
+ ASSERT_EQ(analyse.getStatus(), -1);
+ ASSERT_FALSE(analyse.getResultReport().empty());
+}
+
TEST_F(GpgCoreTest, CoreSignVerifyNormalTest) {
- auto encrpyt_key = GpgKeyGetter::GetInstance(default_channel)
+ auto encrypt_key = GpgKeyGetter::GetInstance(default_channel)
.GetPubkey("467F14220CE8DCF780CF4BAD8465C55B25C9B7D1");
ByteArray sign_text = "Hello GpgFrontend!";
ByteArrayPtr sign_out_data;
GpgSignResult s_result;
KeyListPtr keys = std::make_unique<KeyArgsList>();
- keys->push_back(std::move(encrpyt_key));
+ keys->push_back(std::move(encrypt_key));
auto err = BasicOperator::GetInstance(default_channel)
.Sign(std::move(keys), sign_text, sign_out_data,
GPGME_SIG_MODE_NORMAL, s_result);
@@ -85,13 +136,13 @@ TEST_F(GpgCoreTest, CoreSignVerifyNormalTest) {
}
TEST_F(GpgCoreTest, CoreSignVerifyDetachTest) {
- auto encrpyt_key = GpgKeyGetter::GetInstance(default_channel)
+ auto encrypt_key = GpgKeyGetter::GetInstance(default_channel)
.GetPubkey("467F14220CE8DCF780CF4BAD8465C55B25C9B7D1");
ByteArray sign_text = "Hello GpgFrontend!";
ByteArrayPtr sign_out_data;
GpgSignResult s_result;
KeyListPtr keys = std::make_unique<KeyArgsList>();
- keys->push_back(std::move(encrpyt_key));
+ keys->push_back(std::move(encrypt_key));
auto err = BasicOperator::GetInstance(default_channel)
.Sign(std::move(keys), sign_text, sign_out_data,
GPGME_SIG_MODE_DETACH, s_result);
@@ -134,12 +185,12 @@ TEST_F(GpgCoreTest, CoreSignVerifyClearTest) {
}
TEST_F(GpgCoreTest, CoreEncryptSignDecrVerifyTest) {
- auto encrpyt_key = GpgKeyGetter::GetInstance(default_channel)
+ auto encrypt_key = GpgKeyGetter::GetInstance(default_channel)
.GetPubkey("467F14220CE8DCF780CF4BAD8465C55B25C9B7D1");
auto sign_key = GpgKeyGetter::GetInstance(default_channel)
.GetKey("8933EB283A18995F45D61DAC021D89771B680FFB");
// Question?
- // ASSERT_FALSE(encrpyt_key.is_private_key());
+ // ASSERT_FALSE(encrypt_key.is_private_key());
ASSERT_TRUE(sign_key.is_private_key());
ASSERT_TRUE(sign_key.CanSignActual());
ByteArray encrypt_text = "Hello GpgFrontend!";
@@ -149,7 +200,7 @@ TEST_F(GpgCoreTest, CoreEncryptSignDecrVerifyTest) {
KeyListPtr keys = std::make_unique<KeyArgsList>(),
sign_keys = std::make_unique<KeyArgsList>();
- keys->push_back(std::move(encrpyt_key));
+ keys->push_back(std::move(encrypt_key));
sign_keys->push_back(std::move(sign_key));
auto err = BasicOperator::GetInstance(default_channel)