diff options
author | saturneric <[email protected]> | 2023-12-16 07:11:32 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2023-12-16 07:11:32 +0000 |
commit | 08dd9b43481d189c60acc58941005dc25a58c77f (patch) | |
tree | 38e79c1a255339d9a80f39c8dbbd94a28ec124b7 /src/test/core/GpgCoreTestBasicOpera.cpp | |
parent | fix: use secure memory management at impl class (diff) | |
download | GpgFrontend-08dd9b43481d189c60acc58941005dc25a58c77f.tar.gz GpgFrontend-08dd9b43481d189c60acc58941005dc25a58c77f.zip |
fix: repair test cases
Diffstat (limited to 'src/test/core/GpgCoreTestBasicOpera.cpp')
-rw-r--r-- | src/test/core/GpgCoreTestBasicOpera.cpp | 386 |
1 files changed, 192 insertions, 194 deletions
diff --git a/src/test/core/GpgCoreTestBasicOpera.cpp b/src/test/core/GpgCoreTestBasicOpera.cpp index 19af4918..d54b4f20 100644 --- a/src/test/core/GpgCoreTestBasicOpera.cpp +++ b/src/test/core/GpgCoreTestBasicOpera.cpp @@ -36,199 +36,197 @@ namespace GpgFrontend::Test { -// TEST_F(GpgCoreTest, CoreEncryptDecrTest) { -// auto encrypt_key = GpgKeyGetter::GetInstance(kGpgFrontendDefaultChannel) -// .GetPubkey("467F14220CE8DCF780CF4BAD8465C55B25C9B7D1"); -// ByteArray encrypt_text = "Hello GpgFrontend!"; -// KeyListPtr keys = std::make_unique<KeyArgsList>(); -// keys->push_back(std::move(encrypt_key)); -// GpgBasicOperator::GetInstance(kGpgFrontendDefaultChannel) -// .Encrypt(std::move(keys), encrypt_text, -// [](GpgError err, const DataObjectPtr&) { - -// }); - -// // ASSERT_EQ(e_result->invalid_recipients, nullptr); -// // ASSERT_EQ(CheckGpgError(err), GPG_ERR_NO_ERROR); - -// // GpgDecrResult d_result; -// // ByteArrayPtr decr_out_data; -// // err = GpgBasicOperator::GetInstance(kGpgFrontendDefaultChannel) -// // .Decrypt(*encr_out_data, decr_out_data, d_result); -// // ASSERT_EQ(CheckGpgError(err), GPG_ERR_NO_ERROR); -// // ASSERT_NE(d_result->recipients, nullptr); -// // ASSERT_EQ(std::string(d_result->recipients->keyid), -// "F89C95A05088CC93"); -// // 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 = GpgBasicOperator::GetInstance(kGpgFrontendDefaultChannel) -// // .Decrypt(*encr_out_data, decr_out_data, d_result); -// // ASSERT_EQ(CheckGpgError(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 = GpgBasicOperator::GetInstance(kGpgFrontendDefaultChannel) -// // .Decrypt(*encr_out_data, decr_out_data, d_result); -// // ASSERT_EQ(CheckGpgError(err), GPG_ERR_NO_SECKEY); -// // ASSERT_NE(d_result->recipients, nullptr); -// // ASSERT_EQ(std::string(d_result->recipients->keyid), "A50CFD2F6C677D8C"); - -// // GpgDecryptResultAnalyse analyse{err, d_result}; -// // analyse.Analyse(); -// // ASSERT_EQ(analyse.GetStatus(), -1); -// // ASSERT_FALSE(analyse.GetResultReport().empty()); -// } - -// TEST_F(GpgCoreTest, CoreSignVerifyNormalTest) { -// // auto encrypt_key = GpgKeyGetter::GetInstance(kGpgFrontendDefaultChannel) -// // .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(encrypt_key)); -// // auto err = GpgBasicOperator::GetInstance(kGpgFrontendDefaultChannel) -// // .Sign(std::move(keys), sign_text, sign_out_data, -// // GPGME_SIG_MODE_NORMAL, s_result); -// // ASSERT_EQ(CheckGpgError(err), GPG_ERR_NO_ERROR); -// // ASSERT_EQ(s_result->invalid_signers, nullptr); - -// // GpgVerifyResult v_result; -// // ByteArrayPtr sign_buff = nullptr; -// // err = GpgBasicOperator::GetInstance(kGpgFrontendDefaultChannel) -// // .Verify(*sign_out_data, sign_buff, v_result); -// // ASSERT_EQ(CheckGpgError(err), GPG_ERR_NO_ERROR); -// // ASSERT_NE(v_result->signatures, nullptr); -// // ASSERT_EQ(std::string(v_result->signatures->fpr), -// // "467F14220CE8DCF780CF4BAD8465C55B25C9B7D1"); -// // ASSERT_EQ(v_result->signatures->next, nullptr); -// } - -// TEST_F(GpgCoreTest, CoreSignVerifyDetachTest) { -// // auto encrypt_key = GpgKeyGetter::GetInstance(kGpgFrontendDefaultChannel) -// // .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(encrypt_key)); -// // auto err = GpgBasicOperator::GetInstance(kGpgFrontendDefaultChannel) -// // .Sign(std::move(keys), sign_text, sign_out_data, -// // GPGME_SIG_MODE_DETACH, s_result); -// // ASSERT_EQ(CheckGpgError(err), GPG_ERR_NO_ERROR); -// // ASSERT_EQ(s_result->invalid_signers, nullptr); - -// // GpgVerifyResult v_result; -// // err = GpgBasicOperator::GetInstance(kGpgFrontendDefaultChannel) -// // .Verify(sign_text, sign_out_data, v_result); -// // ASSERT_EQ(CheckGpgError(err), GPG_ERR_NO_ERROR); -// // ASSERT_NE(v_result->signatures, nullptr); -// // ASSERT_EQ(std::string(v_result->signatures->fpr), -// // "467F14220CE8DCF780CF4BAD8465C55B25C9B7D1"); -// // ASSERT_EQ(v_result->signatures->next, nullptr); -// } - -// TEST_F(GpgCoreTest, CoreSignVerifyClearTest) { -// // auto sign_key = GpgKeyGetter::GetInstance(kGpgFrontendDefaultChannel) -// // .GetKey("467F14220CE8DCF780CF4BAD8465C55B25C9B7D1"); -// // ByteArray sign_text = "Hello GpgFrontend!"; -// // ByteArrayPtr sign_out_data; -// // GpgSignResult s_result; -// // KeyListPtr keys = std::make_unique<KeyArgsList>(); -// // keys->push_back(std::move(sign_key)); -// // auto err = GpgBasicOperator::GetInstance(kGpgFrontendDefaultChannel) -// // .Sign(std::move(keys), sign_text, sign_out_data, -// // GPGME_SIG_MODE_CLEAR, s_result); -// // ASSERT_EQ(CheckGpgError(err), GPG_ERR_NO_ERROR); -// // ASSERT_EQ(s_result->invalid_signers, nullptr); - -// // GpgVerifyResult v_result; -// // ByteArrayPtr sign_buff = nullptr; -// // err = GpgBasicOperator::GetInstance(kGpgFrontendDefaultChannel) -// // .Verify(*sign_out_data, sign_buff, v_result); -// // ASSERT_EQ(CheckGpgError(err), GPG_ERR_NO_ERROR); -// // ASSERT_NE(v_result->signatures, nullptr); -// // ASSERT_EQ(std::string(v_result->signatures->fpr), -// // "467F14220CE8DCF780CF4BAD8465C55B25C9B7D1"); -// // ASSERT_EQ(v_result->signatures->next, nullptr); -// } - -// TEST_F(GpgCoreTest, CoreEncryptSignDecrVerifyTest) { -// // auto encrypt_key = GpgKeyGetter::GetInstance(kGpgFrontendDefaultChannel) -// // .GetPubkey("467F14220CE8DCF780CF4BAD8465C55B25C9B7D1"); -// // auto sign_key = GpgKeyGetter::GetInstance(kGpgFrontendDefaultChannel) -// // .GetKey("8933EB283A18995F45D61DAC021D89771B680FFB"); -// // // Question? -// // // ASSERT_FALSE(encrypt_key.is_private_key()); -// // ASSERT_TRUE(sign_key.IsPrivateKey()); -// // ASSERT_TRUE(sign_key.IsHasActualSigningCapability()); -// // ByteArray encrypt_text = "Hello GpgFrontend!"; -// // ByteArrayPtr encr_out_data; -// // GpgEncrResult e_result; -// // GpgSignResult s_result; - -// // KeyListPtr keys = std::make_unique<KeyArgsList>(), -// // sign_keys = std::make_unique<KeyArgsList>(); -// // keys->push_back(std::move(encrypt_key)); -// // sign_keys->push_back(std::move(sign_key)); - -// // auto err = GpgBasicOperator::GetInstance(kGpgFrontendDefaultChannel) -// // .EncryptSign(std::move(keys), std::move(sign_keys), -// // encrypt_text, encr_out_data, e_result, -// // s_result); -// // ASSERT_EQ(CheckGpgError(err), GPG_ERR_NO_ERROR); -// // ASSERT_EQ(e_result->invalid_recipients, nullptr); -// // ASSERT_EQ(s_result->invalid_signers, nullptr); - -// // GpgDecrResult d_result; -// // GpgVerifyResult v_result; -// // ByteArrayPtr decr_out_data = nullptr; -// // err = GpgBasicOperator::GetInstance(kGpgFrontendDefaultChannel) -// // .DecryptVerify(*encr_out_data, decr_out_data, d_result, -// // v_result); -// // ASSERT_EQ(CheckGpgError(err), GPG_ERR_NO_ERROR); -// // ASSERT_NE(d_result->recipients, nullptr); -// // ASSERT_EQ(std::string(d_result->recipients->keyid), "F89C95A05088CC93"); -// // ASSERT_EQ(*decr_out_data, encrypt_text); -// // ASSERT_NE(v_result->signatures, nullptr); -// // ASSERT_EQ(std::string(v_result->signatures->fpr), -// // "8933EB283A18995F45D61DAC021D89771B680FFB"); -// // ASSERT_EQ(v_result->signatures->next, nullptr); -// } +TEST_F(GpgCoreTest, CoreEncryptDecrTest) { + auto encrypt_key = GpgKeyGetter::GetInstance().GetPubkey( + "E87C6A2D8D95C818DE93B3AE6A2764F8298DEB29"); + ByteArray encrypt_text = "Hello GpgFrontend!"; + KeyListPtr keys = std::make_unique<KeyArgsList>(); + keys->push_back(std::move(encrypt_key)); + + GpgBasicOperator::GetInstance().Encrypt( + keys, encrypt_text, + [encrypt_text](GpgError err, const DataObjectPtr& data_obj) { + auto result = ExtractParams<GpgEncrResult>(data_obj, 0); + auto encr_out_buffer = ExtractParams<ByteArrayPtr>(data_obj, 1); + ASSERT_EQ(result->invalid_recipients, nullptr); + ASSERT_EQ(CheckGpgError(err), GPG_ERR_NO_ERROR); + + GpgDecrResult d_result; + ByteArrayPtr decr_out_data; + err = GpgBasicOperator::GetInstance(kGpgFrontendDefaultChannel) + .Decrypt(*encr_out_buffer, decr_out_data, d_result); + ASSERT_EQ(CheckGpgError(err), GPG_ERR_NO_ERROR); + ASSERT_NE(d_result->recipients, nullptr); + ASSERT_EQ(std::string(d_result->recipients->keyid), "6A2764F8298DEB29"); + 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 = GpgBasicOperator::GetInstance(kGpgFrontendDefaultChannel) + .Decrypt(*encr_out_data, decr_out_data, d_result); + ASSERT_EQ(CheckGpgError(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 = GpgBasicOperator::GetInstance(kGpgFrontendDefaultChannel) + .Decrypt(*encr_out_data, decr_out_data, d_result); + ASSERT_EQ(CheckGpgError(err), GPG_ERR_NO_SECKEY); + ASSERT_NE(d_result->recipients, nullptr); + ASSERT_EQ(std::string(d_result->recipients->keyid), "A50CFD2F6C677D8C"); + + GpgDecryptResultAnalyse analyse{err, d_result}; + analyse.Analyse(); + ASSERT_EQ(analyse.GetStatus(), -1); + ASSERT_FALSE(analyse.GetResultReport().empty()); +} + +TEST_F(GpgCoreTest, CoreSignVerifyNormalTest) { + auto encrypt_key = GpgKeyGetter::GetInstance(kGpgFrontendDefaultChannel) + .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(encrypt_key)); + auto err = GpgBasicOperator::GetInstance(kGpgFrontendDefaultChannel) + .Sign(std::move(keys), sign_text, sign_out_data, + GPGME_SIG_MODE_NORMAL, s_result); + ASSERT_EQ(CheckGpgError(err), GPG_ERR_NO_ERROR); + ASSERT_EQ(s_result->invalid_signers, nullptr); + + GpgVerifyResult v_result; + ByteArrayPtr sign_buff = nullptr; + err = GpgBasicOperator::GetInstance(kGpgFrontendDefaultChannel) + .Verify(*sign_out_data, sign_buff, v_result); + ASSERT_EQ(CheckGpgError(err), GPG_ERR_NO_ERROR); + ASSERT_NE(v_result->signatures, nullptr); + ASSERT_EQ(std::string(v_result->signatures->fpr), + "467F14220CE8DCF780CF4BAD8465C55B25C9B7D1"); + ASSERT_EQ(v_result->signatures->next, nullptr); +} + +TEST_F(GpgCoreTest, CoreSignVerifyDetachTest) { + auto encrypt_key = GpgKeyGetter::GetInstance(kGpgFrontendDefaultChannel) + .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(encrypt_key)); + auto err = GpgBasicOperator::GetInstance(kGpgFrontendDefaultChannel) + .Sign(std::move(keys), sign_text, sign_out_data, + GPGME_SIG_MODE_DETACH, s_result); + ASSERT_EQ(CheckGpgError(err), GPG_ERR_NO_ERROR); + ASSERT_EQ(s_result->invalid_signers, nullptr); + + GpgVerifyResult v_result; + err = GpgBasicOperator::GetInstance(kGpgFrontendDefaultChannel) + .Verify(sign_text, sign_out_data, v_result); + ASSERT_EQ(CheckGpgError(err), GPG_ERR_NO_ERROR); + ASSERT_NE(v_result->signatures, nullptr); + ASSERT_EQ(std::string(v_result->signatures->fpr), + "467F14220CE8DCF780CF4BAD8465C55B25C9B7D1"); + ASSERT_EQ(v_result->signatures->next, nullptr); +} + +TEST_F(GpgCoreTest, CoreSignVerifyClearTest) { + auto sign_key = GpgKeyGetter::GetInstance(kGpgFrontendDefaultChannel) + .GetKey("467F14220CE8DCF780CF4BAD8465C55B25C9B7D1"); + ByteArray sign_text = "Hello GpgFrontend!"; + ByteArrayPtr sign_out_data; + GpgSignResult s_result; + KeyListPtr keys = std::make_unique<KeyArgsList>(); + keys->push_back(std::move(sign_key)); + auto err = GpgBasicOperator::GetInstance(kGpgFrontendDefaultChannel) + .Sign(std::move(keys), sign_text, sign_out_data, + GPGME_SIG_MODE_CLEAR, s_result); + ASSERT_EQ(CheckGpgError(err), GPG_ERR_NO_ERROR); + ASSERT_EQ(s_result->invalid_signers, nullptr); + + GpgVerifyResult v_result; + ByteArrayPtr sign_buff = nullptr; + err = GpgBasicOperator::GetInstance(kGpgFrontendDefaultChannel) + .Verify(*sign_out_data, sign_buff, v_result); + ASSERT_EQ(CheckGpgError(err), GPG_ERR_NO_ERROR); + ASSERT_NE(v_result->signatures, nullptr); + ASSERT_EQ(std::string(v_result->signatures->fpr), + "467F14220CE8DCF780CF4BAD8465C55B25C9B7D1"); + ASSERT_EQ(v_result->signatures->next, nullptr); +} + +TEST_F(GpgCoreTest, CoreEncryptSignDecrVerifyTest) { + auto encrypt_key = GpgKeyGetter::GetInstance(kGpgFrontendDefaultChannel) + .GetPubkey("467F14220CE8DCF780CF4BAD8465C55B25C9B7D1"); + auto sign_key = GpgKeyGetter::GetInstance(kGpgFrontendDefaultChannel) + .GetKey("8933EB283A18995F45D61DAC021D89771B680FFB"); + // Question? + // ASSERT_FALSE(encrypt_key.is_private_key()); + ASSERT_TRUE(sign_key.IsPrivateKey()); + ASSERT_TRUE(sign_key.IsHasActualSigningCapability()); + ByteArray encrypt_text = "Hello GpgFrontend!"; + ByteArrayPtr encr_out_data; + GpgEncrResult e_result; + GpgSignResult s_result; + + KeyListPtr keys = std::make_unique<KeyArgsList>(); + KeyListPtr sign_keys = std::make_unique<KeyArgsList>(); + + keys->push_back(std::move(encrypt_key)); + sign_keys->push_back(std::move(sign_key)); + + auto err = GpgBasicOperator::GetInstance(kGpgFrontendDefaultChannel) + .EncryptSign(std::move(keys), std::move(sign_keys), + encrypt_text, encr_out_data, e_result, s_result); + ASSERT_EQ(CheckGpgError(err), GPG_ERR_NO_ERROR); + ASSERT_EQ(e_result->invalid_recipients, nullptr); + ASSERT_EQ(s_result->invalid_signers, nullptr); + + GpgDecrResult d_result; + GpgVerifyResult v_result; + ByteArrayPtr decr_out_data = nullptr; + err = GpgBasicOperator::GetInstance(kGpgFrontendDefaultChannel) + .DecryptVerify(*encr_out_data, decr_out_data, d_result, v_result); + ASSERT_EQ(CheckGpgError(err), GPG_ERR_NO_ERROR); + ASSERT_NE(d_result->recipients, nullptr); + ASSERT_EQ(std::string(d_result->recipients->keyid), "F89C95A05088CC93"); + ASSERT_EQ(*decr_out_data, encrypt_text); + ASSERT_NE(v_result->signatures, nullptr); + ASSERT_EQ(std::string(v_result->signatures->fpr), + "8933EB283A18995F45D61DAC021D89771B680FFB"); + ASSERT_EQ(v_result->signatures->next, nullptr); +} } // namespace GpgFrontend::Test |