aboutsummaryrefslogtreecommitdiffstats
path: root/test/GpgCoreTestKeygenAlone.cpp
diff options
context:
space:
mode:
authorSaturneric <[email protected]>2021-12-31 18:55:29 +0000
committerSaturneric <[email protected]>2021-12-31 18:55:29 +0000
commit5e0e6494c76154b1da5002bda05e23258678c403 (patch)
tree5bfe8fb8d7670f0349d9a562daf8bdf960214071 /test/GpgCoreTestKeygenAlone.cpp
parent<refactor, test>(core, test): core improved and test gpg key generation (diff)
downloadGpgFrontend-5e0e6494c76154b1da5002bda05e23258678c403.tar.gz
GpgFrontend-5e0e6494c76154b1da5002bda05e23258678c403.zip
<refactor, fix, test>(core, test): test key generation for standalone mode
1. add key generation test for standalone mode 2. add supported algos in standalone mode 3. changed support algo vectors from static value to static getter 4. modified name of some variables.
Diffstat (limited to 'test/GpgCoreTestKeygenAlone.cpp')
-rw-r--r--test/GpgCoreTestKeygenAlone.cpp156
1 files changed, 156 insertions, 0 deletions
diff --git a/test/GpgCoreTestKeygenAlone.cpp b/test/GpgCoreTestKeygenAlone.cpp
new file mode 100644
index 00000000..4a725ba7
--- /dev/null
+++ b/test/GpgCoreTestKeygenAlone.cpp
@@ -0,0 +1,156 @@
+/**
+ * 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 "GpgFrontendTest.h"
+#include "gpg/GpgGenKeyInfo.h"
+#include "gpg/function/GpgKeyGetter.h"
+#include "gpg/function/GpgKeyOpera.h"
+
+TEST_F(GpgCoreTest, GenerateKeyTestAlone) {
+ auto& key_opera = GpgFrontend::GpgKeyOpera::GetInstance(gpg_alone_channel);
+ auto keygen_info = std::make_unique<GpgFrontend::GenKeyInfo>(false, true);
+ keygen_info->setName("foobar");
+ keygen_info->setEmail("[email protected]");
+ keygen_info->setComment("hello");
+ keygen_info->setAlgo("rsa");
+ keygen_info->setNonExpired(true);
+ keygen_info->setNonPassPhrase(true);
+
+ GpgFrontend::GpgGenKeyResult result = nullptr;
+ auto err = GpgFrontend::check_gpg_error_2_err_code(
+ key_opera.GenerateKey(keygen_info, result));
+ ASSERT_EQ(err, GPG_ERR_NO_ERROR);
+
+ auto fpr = result->fpr;
+ ASSERT_FALSE(fpr == nullptr);
+
+ auto key =
+ GpgFrontend::GpgKeyGetter::GetInstance(gpg_alone_channel).GetKey(fpr);
+ ASSERT_TRUE(key.good());
+ key_opera.DeleteKey(fpr);
+}
+
+TEST_F(GpgCoreTest, GenerateKeyTestAlone_1) {
+ auto& key_opera = GpgFrontend::GpgKeyOpera::GetInstance(gpg_alone_channel);
+ auto keygen_info = std::make_unique<GpgFrontend::GenKeyInfo>(false, true);
+ keygen_info->setName("foobar");
+ keygen_info->setEmail("[email protected]");
+ keygen_info->setComment("hello gpgfrontend");
+ keygen_info->setAlgo("rsa");
+ keygen_info->setNonExpired(false);
+ keygen_info->setPassPhrase("abcdefg");
+ keygen_info->setExpired(boost::posix_time::second_clock::local_time() +
+ boost::posix_time::hours(24));
+ keygen_info->setNonPassPhrase(false);
+
+ GpgFrontend::GpgGenKeyResult result = nullptr;
+ auto err = GpgFrontend::check_gpg_error_2_err_code(
+ key_opera.GenerateKey(keygen_info, result));
+ ASSERT_EQ(err, GPG_ERR_NO_ERROR);
+
+ auto fpr = result->fpr;
+ ASSERT_FALSE(fpr == nullptr);
+
+ auto key =
+ GpgFrontend::GpgKeyGetter::GetInstance(gpg_alone_channel).GetKey(fpr);
+ ASSERT_TRUE(key.good());
+ key_opera.DeleteKey(fpr);
+}
+
+TEST_F(GpgCoreTest, GenerateKeyTestAlone_2) {
+ auto& key_opera = GpgFrontend::GpgKeyOpera::GetInstance(gpg_alone_channel);
+ auto keygen_info = std::make_unique<GpgFrontend::GenKeyInfo>(false, true);
+ keygen_info->setName("foobar");
+ keygen_info->setEmail("[email protected]");
+ keygen_info->setComment("hi");
+ keygen_info->setAlgo("rsa");
+ keygen_info->setKeySize(3072);
+ keygen_info->setNonExpired(true);
+ keygen_info->setNonPassPhrase(false);
+ keygen_info->setPassPhrase("abcdefg");
+
+ GpgFrontend::GpgGenKeyResult result = nullptr;
+ auto err = GpgFrontend::check_gpg_error_2_err_code(
+ key_opera.GenerateKey(keygen_info, result));
+ ASSERT_EQ(err, GPG_ERR_NO_ERROR);
+
+ auto fpr = result->fpr;
+ ASSERT_FALSE(fpr == nullptr);
+
+ auto key =
+ GpgFrontend::GpgKeyGetter::GetInstance(gpg_alone_channel).GetKey(fpr);
+ ASSERT_TRUE(key.good());
+ key_opera.DeleteKey(fpr);
+}
+
+TEST_F(GpgCoreTest, GenerateKeyTestAlone_3) {
+ auto& key_opera = GpgFrontend::GpgKeyOpera::GetInstance(gpg_alone_channel);
+ auto keygen_info = std::make_unique<GpgFrontend::GenKeyInfo>(false, true);
+ keygen_info->setName("foo");
+ keygen_info->setEmail("[email protected]");
+ keygen_info->setComment("hello");
+ keygen_info->setAlgo("rsa");
+ keygen_info->setKeySize(4096);
+ keygen_info->setNonExpired(true);
+ keygen_info->setNonPassPhrase(false);
+ keygen_info->setPassPhrase("abcdefg");
+
+ GpgFrontend::GpgGenKeyResult result = nullptr;
+ auto err = GpgFrontend::check_gpg_error_2_err_code(
+ key_opera.GenerateKey(keygen_info, result));
+ ASSERT_EQ(err, GPG_ERR_NO_ERROR);
+
+ auto fpr = result->fpr;
+ ASSERT_FALSE(fpr == nullptr);
+
+ auto key =
+ GpgFrontend::GpgKeyGetter::GetInstance(gpg_alone_channel).GetKey(fpr);
+ ASSERT_TRUE(key.good());
+ key_opera.DeleteKey(fpr);
+}
+
+TEST_F(GpgCoreTest, GenerateKeyTestAlone_4) {
+ auto& key_opera = GpgFrontend::GpgKeyOpera::GetInstance(gpg_alone_channel);
+ auto keygen_info = std::make_unique<GpgFrontend::GenKeyInfo>(false, true);
+ keygen_info->setName("foobar");
+ keygen_info->setEmail("[email protected]");
+ keygen_info->setComment("hello");
+ keygen_info->setAlgo("dsa");
+ keygen_info->setNonExpired(true);
+ keygen_info->setNonPassPhrase(false);
+ keygen_info->setPassPhrase("abcdefg");
+
+ GpgFrontend::GpgGenKeyResult result = nullptr;
+ auto err = GpgFrontend::check_gpg_error_2_err_code(
+ key_opera.GenerateKey(keygen_info, result));
+ ASSERT_EQ(err, GPG_ERR_NO_ERROR);
+
+ auto fpr = result->fpr;
+ ASSERT_FALSE(fpr == nullptr);
+
+ auto key =
+ GpgFrontend::GpgKeyGetter::GetInstance(gpg_alone_channel).GetKey(fpr);
+ ASSERT_TRUE(key.good());
+ key_opera.DeleteKey(fpr);
+} \ No newline at end of file