aboutsummaryrefslogtreecommitdiffstats
path: root/src/gpg/function/GpgKeyOpera.cpp
diff options
context:
space:
mode:
authorSaturneric <[email protected]>2021-12-31 01:50:20 +0000
committerSaturneric <[email protected]>2021-12-31 01:50:20 +0000
commitcb10cffa20702ec3dac50adb5aeeebd6138279b0 (patch)
treec614cfb31b30d2c7f3a8175c8309ab2f738953d0 /src/gpg/function/GpgKeyOpera.cpp
parent<refactor, test>(core, test): core improved and test gpg alone mode (diff)
downloadGpgFrontend-cb10cffa20702ec3dac50adb5aeeebd6138279b0.tar.gz
GpgFrontend-cb10cffa20702ec3dac50adb5aeeebd6138279b0.zip
<refactor, test>(core, test): core improved and test gpg key generation
1. Refactor the initialization code of Context. 2. Improve some callback function support. 3. Improve the key deletion function. 4. Modify the key output of some functions. 5. Add test for key generation. 6. Delete all imported keys at the end of the test case. 7. Add setup mode initialization parameters for Context.
Diffstat (limited to '')
-rw-r--r--src/gpg/function/GpgKeyOpera.cpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/gpg/function/GpgKeyOpera.cpp b/src/gpg/function/GpgKeyOpera.cpp
index 4df06875..4cbc1d0a 100644
--- a/src/gpg/function/GpgKeyOpera.cpp
+++ b/src/gpg/function/GpgKeyOpera.cpp
@@ -47,11 +47,13 @@ void GpgFrontend::GpgKeyOpera::DeleteKeys(
for (const auto& tmp : *key_ids) {
auto key = GpgKeyGetter::GetInstance().GetKey(tmp);
if (key.good()) {
- LOG(INFO) << "GpgKeyOpera DeleteKeys Get Key Good";
- err = check_gpg_error(gpgme_op_delete(ctx, gpgme_key_t(key), 1));
+ err = check_gpg_error(
+ gpgme_op_delete_ext(ctx, gpgme_key_t(key),
+ GPGME_DELETE_ALLOW_SECRET | GPGME_DELETE_FORCE));
assert(gpg_err_code(err) == GPG_ERR_NO_ERROR);
- } else
- LOG(WARNING) << "GpgKeyOpera DeleteKeys get key failed" << key.fpr();
+ } else {
+ LOG(WARNING) << "GpgKeyOpera DeleteKeys get key failed" << tmp;
+ }
}
}
@@ -152,8 +154,7 @@ GpgFrontend::GpgError GpgFrontend::GpgKeyOpera::GenerateKey(
const char* userid = userid_utf8.c_str();
auto algo_utf8 = params->getAlgo() + params->getKeySizeStr();
- LOG(INFO) << "GpgFrontend::GpgKeyOpera::GenerateKey Params"
- << params->getAlgo() << params->getKeySizeStr();
+ LOG(INFO) << "params" << params->getAlgo() << params->getKeySizeStr();
const char* algo = algo_utf8.c_str();
unsigned long expires = 0;
@@ -176,14 +177,12 @@ GpgFrontend::GpgError GpgFrontend::GpgKeyOpera::GenerateKey(
if (params->isNonExpired()) flags |= GPGME_CREATE_NOEXPIRE;
if (params->isNoPassPhrase()) flags |= GPGME_CREATE_NOPASSWD;
- LOG(INFO) << "GpgFrontend::GpgKeyOpera::GenerateKey Args: " << userid
- << algo << expires << flags;
+ LOG(INFO) << "args: " << userid << algo << expires << flags;
err = gpgme_op_createkey(ctx, userid, algo, 0, expires, nullptr, flags);
} else {
std::stringstream ss;
-
auto param_format =
boost::format{
"<GnupgKeyParms format=\"internal\">\n"
@@ -203,6 +202,8 @@ GpgFrontend::GpgError GpgFrontend::GpgKeyOpera::GenerateKey(
ss << "</GnupgKeyParms>";
+ DLOG(INFO) << "params" << std::endl << ss.str();
+
err = gpgme_op_genkey(ctx, ss.str().c_str(), nullptr, nullptr);
}