diff options
Diffstat (limited to '')
-rw-r--r-- | src/gpg/function/BasicOperator.cpp | 12 | ||||
-rw-r--r-- | src/gpg/function/BasicOperator.h | 12 | ||||
-rw-r--r-- | src/gpg/function/GpgFileOpera.h | 2 | ||||
-rw-r--r-- | src/gpg/function/GpgKeyGetter.cpp | 11 | ||||
-rw-r--r-- | src/gpg/function/GpgKeyGetter.h | 4 | ||||
-rw-r--r-- | src/gpg/function/GpgKeyImportExportor.cpp | 8 | ||||
-rw-r--r-- | src/gpg/function/GpgKeyImportExportor.h | 6 | ||||
-rw-r--r-- | src/gpg/function/GpgKeyManager.cpp | 41 | ||||
-rw-r--r-- | src/gpg/function/GpgKeyManager.h | 24 | ||||
-rw-r--r-- | src/gpg/function/GpgKeyOpera.cpp | 45 | ||||
-rw-r--r-- | src/gpg/function/GpgKeyOpera.h | 28 | ||||
-rw-r--r-- | src/gpg/function/UidOperator.cpp | 30 | ||||
-rw-r--r-- | src/gpg/function/UidOperator.h | 33 |
13 files changed, 147 insertions, 109 deletions
diff --git a/src/gpg/function/BasicOperator.cpp b/src/gpg/function/BasicOperator.cpp index fbf9afb1..0e44c9e0 100644 --- a/src/gpg/function/BasicOperator.cpp +++ b/src/gpg/function/BasicOperator.cpp @@ -29,7 +29,7 @@ GpgFrontend::GpgError GpgFrontend::BasicOperator::Encrypt( GpgFrontend::KeyArgsList&& keys, GpgFrontend::BypeArrayRef in_buffer, - GpgFrontend::BypeArrayPtr& out_buffer, + GpgFrontend::ByteArrayPtr& out_buffer, GpgFrontend::GpgEncrResult& result) { // gpgme_encrypt_result_t e_result; gpgme_key_t recipients[keys.size() + 1]; @@ -57,7 +57,7 @@ GpgFrontend::GpgError GpgFrontend::BasicOperator::Encrypt( GpgFrontend::GpgError GpgFrontend::BasicOperator::Decrypt( BypeArrayRef in_buffer, - GpgFrontend::BypeArrayPtr& out_buffer, + GpgFrontend::ByteArrayPtr& out_buffer, GpgFrontend::GpgDecrResult& result) { gpgme_error_t err; @@ -75,7 +75,7 @@ GpgFrontend::GpgError GpgFrontend::BasicOperator::Decrypt( GpgFrontend::GpgError GpgFrontend::BasicOperator::Verify( BypeArrayRef& in_buffer, - BypeArrayPtr& sig_buffer, + ByteArrayPtr& sig_buffer, GpgVerifyResult& result) const { gpgme_error_t err; @@ -95,7 +95,7 @@ GpgFrontend::GpgError GpgFrontend::BasicOperator::Verify( GpgFrontend::GpgError GpgFrontend::BasicOperator::Sign(KeyArgsList&& keys, BypeArrayRef in_buffer, - BypeArrayPtr& out_buffer, + ByteArrayPtr& out_buffer, gpgme_sig_mode_t mode, GpgSignResult& result) { gpgme_error_t err; @@ -132,7 +132,7 @@ GpgFrontend::GpgError GpgFrontend::BasicOperator::Sign(KeyArgsList&& keys, gpgme_error_t GpgFrontend::BasicOperator::DecryptVerify( BypeArrayRef in_buffer, - BypeArrayPtr& out_buffer, + ByteArrayPtr& out_buffer, GpgDecrResult& decrypt_result, GpgVerifyResult& verify_result) { gpgme_error_t err; @@ -157,7 +157,7 @@ gpgme_error_t GpgFrontend::BasicOperator::EncryptSign( KeyArgsList&& keys, KeyArgsList&& signers, BypeArrayRef in_buffer, - BypeArrayPtr& out_buffer, + ByteArrayPtr& out_buffer, GpgEncrResult& encr_result, GpgSignResult& sign_result) { gpgme_error_t err; diff --git a/src/gpg/function/BasicOperator.h b/src/gpg/function/BasicOperator.h index 2e5da307..e8fa943d 100644 --- a/src/gpg/function/BasicOperator.h +++ b/src/gpg/function/BasicOperator.h @@ -36,32 +36,32 @@ class BasicOperator : public SingletonFunctionObject<BasicOperator> { public: gpg_error_t Encrypt(KeyArgsList&& keys, BypeArrayRef in_buffer, - BypeArrayPtr& out_buffer, + ByteArrayPtr& out_buffer, GpgEncrResult& result); gpgme_error_t EncryptSign(KeyArgsList&& keys, KeyArgsList&& signers, BypeArrayRef in_buffer, - BypeArrayPtr& out_buffer, + ByteArrayPtr& out_buffer, GpgEncrResult& encr_result, GpgSignResult& sign_result); gpgme_error_t Decrypt(BypeArrayRef in_buffer, - BypeArrayPtr& out_buffer, + ByteArrayPtr& out_buffer, GpgDecrResult& result); gpgme_error_t DecryptVerify(BypeArrayRef in_buffer, - BypeArrayPtr& out_buffer, + ByteArrayPtr& out_buffer, GpgDecrResult& decrypt_result, GpgVerifyResult& verify_result); gpgme_error_t Verify(BypeArrayRef in_buffer, - BypeArrayPtr& sig_buffer, + ByteArrayPtr& sig_buffer, GpgVerifyResult& result) const; gpg_error_t Sign(KeyArgsList&& key_fprs, BypeArrayRef in_buffer, - BypeArrayPtr& out_buffer, + ByteArrayPtr& out_buffer, gpgme_sig_mode_t mode, GpgSignResult& result); diff --git a/src/gpg/function/GpgFileOpera.h b/src/gpg/function/GpgFileOpera.h index 2eac251b..dece2e52 100644 --- a/src/gpg/function/GpgFileOpera.h +++ b/src/gpg/function/GpgFileOpera.h @@ -31,7 +31,7 @@ namespace GpgFrontend { -class GpgFileOpera { +class GpgFileOpera : public SingletonFunctionObject<GpgFileOpera> { public: GpgError EncryptFile(KeyArgsList&& keys, const std::string& path, diff --git a/src/gpg/function/GpgKeyGetter.cpp b/src/gpg/function/GpgKeyGetter.cpp index f2413706..ce4c9899 100644 --- a/src/gpg/function/GpgKeyGetter.cpp +++ b/src/gpg/function/GpgKeyGetter.cpp @@ -44,10 +44,10 @@ GpgFrontend::GpgKey GpgFrontend::GpgKeyGetter::GetPubkey( return GpgKey(std::move(_p_key)); } -GpgFrontend::KeyListPtr GpgFrontend::GpgKeyGetter::FetchKey() { +GpgFrontend::KeyLinkListPtr GpgFrontend::GpgKeyGetter::FetchKey() { gpgme_error_t err; - auto keys_list = std::make_unique<std::vector<GpgKey>>(); + auto keys_list = std::make_unique<GpgKeyLinkList>(); err = gpgme_op_keylist_start(ctx, nullptr, 0); assert(check_gpg_error_2_err_code(err) == GPG_ERR_NO_ERROR); @@ -63,3 +63,10 @@ GpgFrontend::KeyListPtr GpgFrontend::GpgKeyGetter::FetchKey() { return keys_list; } +GpgFrontend::KeyListPtr GpgFrontend::GpgKeyGetter::GetKeys( + const KeyIdArgsListPtr& ids) { + auto keys = std::make_unique<KeyArgsList>(); + for (const auto& id : *ids) + keys->push_back(GetKey(id)); + return keys; +} diff --git a/src/gpg/function/GpgKeyGetter.h b/src/gpg/function/GpgKeyGetter.h index af22e2f2..8eab4e10 100644 --- a/src/gpg/function/GpgKeyGetter.h +++ b/src/gpg/function/GpgKeyGetter.h @@ -37,9 +37,11 @@ class GpgKeyGetter : public SingletonFunctionObject<GpgKeyGetter> { GpgKey GetKey(const std::string& fpr); + KeyListPtr GetKeys(const KeyIdArgsListPtr& ids); + GpgKey GetPubkey(const std::string& fpr); - KeyListPtr FetchKey(); + KeyLinkListPtr FetchKey(); private: GpgContext& ctx = diff --git a/src/gpg/function/GpgKeyImportExportor.cpp b/src/gpg/function/GpgKeyImportExportor.cpp index 98ffc328..bdfc25bd 100644 --- a/src/gpg/function/GpgKeyImportExportor.cpp +++ b/src/gpg/function/GpgKeyImportExportor.cpp @@ -61,7 +61,7 @@ GpgFrontend::GpgImportInformation GpgFrontend::GpgKeyImportExportor::ImportKey( */ bool GpgFrontend::GpgKeyImportExportor::ExportKeys( KeyIdArgsListPtr& uid_list, - BypeArrayPtr& out_buffer) const { + ByteArrayPtr& out_buffer) const { if (uid_list->empty()) return false; @@ -89,8 +89,8 @@ bool GpgFrontend::GpgKeyImportExportor::ExportKeys( * @return if success */ bool GpgFrontend::GpgKeyImportExportor::ExportKeys( - KeyArgsList& keys, - BypeArrayPtr& out_buffer) const { + const KeyArgsList& keys, + ByteArrayPtr& out_buffer) const { KeyIdArgsListPtr key_ids = std::make_unique<std::vector<std::string>>(); for (const auto& key : keys) key_ids->push_back(key.id()); @@ -105,7 +105,7 @@ bool GpgFrontend::GpgKeyImportExportor::ExportKeys( */ bool GpgFrontend::GpgKeyImportExportor::ExportSecretKey( const GpgKey& key, - BypeArrayPtr out_buffer) const { + ByteArrayPtr& out_buffer) const { DLOG(INFO) << "Export Secret Key" << key.id().c_str(); gpgme_key_t target_key[2] = {gpgme_key_t(key), nullptr}; diff --git a/src/gpg/function/GpgKeyImportExportor.h b/src/gpg/function/GpgKeyImportExportor.h index 2cdb4e80..d71daddb 100644 --- a/src/gpg/function/GpgKeyImportExportor.h +++ b/src/gpg/function/GpgKeyImportExportor.h @@ -97,11 +97,11 @@ class GpgKeyImportExportor public: GpgImportInformation ImportKey(StdBypeArrayPtr inBuffer); - bool ExportKeys(KeyIdArgsListPtr& uid_list, BypeArrayPtr& out_buffer) const; + bool ExportKeys(KeyIdArgsListPtr& uid_list, ByteArrayPtr& out_buffer) const; - bool ExportKeys(KeyArgsList& keys, BypeArrayPtr& outBuffer) const; + bool ExportKeys(const KeyArgsList& keys, ByteArrayPtr& outBuffer) const; - bool ExportSecretKey(const GpgKey& key, BypeArrayPtr outBuffer) const; + bool ExportSecretKey(const GpgKey& key, ByteArrayPtr& outBuffer) const; private: GpgContext& ctx = diff --git a/src/gpg/function/GpgKeyManager.cpp b/src/gpg/function/GpgKeyManager.cpp index a6697bc4..361c00bd 100644 --- a/src/gpg/function/GpgKeyManager.cpp +++ b/src/gpg/function/GpgKeyManager.cpp @@ -23,14 +23,16 @@ */ #include "gpg/function/GpgKeyManager.h" -#include "gpg/function/BasicOperator.h" -#include "gpg/function/GpgKeyGetter.h" #include <boost/date_time/posix_time/conversion.hpp> #include <string> +#include "gpg/function/BasicOperator.h" +#include "gpg/function/GpgKeyGetter.h" bool GpgFrontend::GpgKeyManager::signKey( - const GpgFrontend::GpgKey &target, GpgFrontend::KeyArgsList &keys, - const std::string &uid, std::unique_ptr<boost::gregorian::date> &expires) { + const GpgFrontend::GpgKey& target, + GpgFrontend::KeyArgsList& keys, + const std::string& uid, + const std::unique_ptr<boost::gregorian::date>& expires) { using namespace boost::posix_time; BasicOperator::GetInstance().SetSigners(keys); @@ -50,21 +52,26 @@ bool GpgFrontend::GpgKeyManager::signKey( } bool GpgFrontend::GpgKeyManager::revSign( - const GpgFrontend::GpgKey &key, - const GpgFrontend::GpgKeySignature &signature) { - - auto &key_getter = GpgKeyGetter::GetInstance(); - auto signing_key = key_getter.GetKey(signature.keyid()); - - auto err = check_gpg_error(gpgme_op_revsig(ctx, gpgme_key_t(key), - gpgme_key_t(signing_key), - signature.uid().data(), 0)); - return check_gpg_error_2_err_code(err) == GPG_ERR_NO_ERROR; + const GpgFrontend::GpgKey& key, + const GpgFrontend::SignIdArgsListPtr& signature_id) { + auto& key_getter = GpgKeyGetter::GetInstance(); + + for (const auto& sign_id : *signature_id) { + auto signing_key = key_getter.GetKey(sign_id.first); + assert(signing_key.good()); + auto err = check_gpg_error(gpgme_op_revsig(ctx, gpgme_key_t(key), + gpgme_key_t(signing_key), + sign_id.second.c_str(), 0)); + if (check_gpg_error_2_err_code(err) != GPG_ERR_NO_ERROR) + return false; + } + return true; } bool GpgFrontend::GpgKeyManager::setExpire( - const GpgFrontend::GpgKey &key, std::unique_ptr<GpgSubKey> &subkey, - std::unique_ptr<boost::gregorian::date> &expires) { + const GpgFrontend::GpgKey& key, + std::unique_ptr<GpgSubKey>& subkey, + std::unique_ptr<boost::gregorian::date>& expires) { using namespace boost::posix_time; unsigned long expires_time = 0; @@ -72,7 +79,7 @@ bool GpgFrontend::GpgKeyManager::setExpire( if (expires != nullptr) expires_time = to_time_t(ptime(*expires)); - const char *sub_fprs = nullptr; + const char* sub_fprs = nullptr; if (subkey != nullptr) sub_fprs = subkey->fpr().c_str(); diff --git a/src/gpg/function/GpgKeyManager.h b/src/gpg/function/GpgKeyManager.h index 6d57c7d7..f50c8dcc 100644 --- a/src/gpg/function/GpgKeyManager.h +++ b/src/gpg/function/GpgKeyManager.h @@ -32,7 +32,7 @@ namespace GpgFrontend { class GpgKeyManager : public SingletonFunctionObject<GpgKeyManager> { -public: + public: /** * Sign a key pair(actually a certain uid) * @param target target key pair @@ -40,18 +40,22 @@ public: * @param expires expire date and time of the signature * @return if successful */ - bool signKey(const GpgKey &target, KeyArgsList &keys, const std::string &uid, - std::unique_ptr<boost::gregorian::date> &expires); + bool signKey(const GpgKey& target, + KeyArgsList& keys, + const std::string& uid, + const std::unique_ptr<boost::gregorian::date>& expires); - bool revSign(const GpgKey &key, const GpgKeySignature &signature); + bool revSign(const GpgFrontend::GpgKey& key, + const GpgFrontend::SignIdArgsListPtr& signature_id); - bool setExpire(const GpgKey &key, std::unique_ptr<GpgSubKey> &subkey, - std::unique_ptr<boost::gregorian::date> &expires); + bool setExpire(const GpgKey& key, + std::unique_ptr<GpgSubKey>& subkey, + std::unique_ptr<boost::gregorian::date>& expires); -private: - GpgContext &ctx = GpgContext::GetInstance(); + private: + GpgContext& ctx = GpgContext::GetInstance(); }; -} // namespace GpgFrontend +} // namespace GpgFrontend -#endif // GPGFRONTEND_ZH_CN_TS_GPGKEYMANAGER_H +#endif // GPGFRONTEND_ZH_CN_TS_GPGKEYMANAGER_H diff --git a/src/gpg/function/GpgKeyOpera.cpp b/src/gpg/function/GpgKeyOpera.cpp index f79fb2c3..f61534c5 100644 --- a/src/gpg/function/GpgKeyOpera.cpp +++ b/src/gpg/function/GpgKeyOpera.cpp @@ -41,9 +41,9 @@ * @param uidList key ids */ void GpgFrontend::GpgKeyOpera::DeleteKeys( - GpgFrontend::KeyIdArgsListPtr uid_list) { + GpgFrontend::KeyIdArgsListPtr key_ids) { GpgError err; - for (const auto &tmp : *uid_list) { + for (const auto& tmp : *key_ids) { auto key = GpgKeyGetter::GetInstance().GetKey(tmp); if (key.good()) { LOG(INFO) << "GpgKeyOpera DeleteKeys Get Key Good"; @@ -62,21 +62,21 @@ void GpgFrontend::GpgKeyOpera::DeleteKeys( * @return if successful */ void GpgFrontend::GpgKeyOpera::SetExpire( - const GpgKey &key, std::unique_ptr<GpgSubKey> &subkey, - std::unique_ptr<boost::gregorian::date> &expires) { + const GpgKey& key, + const SubkeyId& subkey_id, + std::unique_ptr<boost::gregorian::date>& expires) { unsigned long expires_time = 0; if (expires != nullptr) { using namespace boost::posix_time; expires_time = to_time_t(ptime(*expires)); } - const char *sub_fprs = nullptr; - - if (subkey != nullptr) - sub_fprs = subkey->fpr().c_str(); - - auto err = - gpgme_op_setexpire(ctx, gpgme_key_t(key), expires_time, sub_fprs, 0); + GpgError err; + if (subkey_id.empty()) + err = gpgme_op_setexpire(ctx, gpgme_key_t(key), expires_time, nullptr, 0); + else + err = gpgme_op_setexpire(ctx, gpgme_key_t(key), expires_time, + subkey_id.c_str(), 0); assert(gpg_err_code(err) != GPG_ERR_NO_ERROR); } @@ -88,7 +88,8 @@ void GpgFrontend::GpgKeyOpera::SetExpire( * @return the process doing this job */ void GpgFrontend::GpgKeyOpera::GenerateRevokeCert( - const GpgKey &key, const std::string &output_file_name) { + const GpgKey& key, + const std::string& output_file_name) { auto args = std::vector<std::string>{"--command-fd", "0", "--status-fd", "1", "-o", output_file_name.c_str(), @@ -96,7 +97,7 @@ void GpgFrontend::GpgKeyOpera::GenerateRevokeCert( using boost::process::async_pipe; GpgCommandExecutor::GetInstance().Execute( - args, [](async_pipe &in, async_pipe &out) -> void { + args, [](async_pipe& in, async_pipe& out) -> void { boost::asio::streambuf buff; boost::asio::read_until(in, buff, '\n'); @@ -112,13 +113,12 @@ void GpgFrontend::GpgKeyOpera::GenerateRevokeCert( * @param params key generation args * @return error information */ -GpgFrontend::GpgError -GpgFrontend::GpgKeyOpera::GenerateKey(std::unique_ptr<GenKeyInfo> params) { - +GpgFrontend::GpgError GpgFrontend::GpgKeyOpera::GenerateKey( + const std::unique_ptr<GenKeyInfo>& params) { auto userid_utf8 = params->getUserid(); - const char *userid = userid_utf8.c_str(); + const char* userid = userid_utf8.c_str(); auto algo_utf8 = (params->getAlgo() + params->getKeySizeStr()); - const char *algo = algo_utf8.c_str(); + const char* algo = algo_utf8.c_str(); unsigned long expires = 0; { using namespace boost::posix_time; @@ -150,15 +150,14 @@ GpgFrontend::GpgKeyOpera::GenerateKey(std::unique_ptr<GenKeyInfo> params) { * @param params opera args * @return error info */ -GpgFrontend::GpgError -GpgFrontend::GpgKeyOpera::GenerateSubkey(const GpgKey &key, - std::unique_ptr<GenKeyInfo> params) { - +GpgFrontend::GpgError GpgFrontend::GpgKeyOpera::GenerateSubkey( + const GpgKey& key, + const std::unique_ptr<GenKeyInfo>& params) { if (!params->isSubKey()) return GPG_ERR_CANCELED; auto algo_utf8 = (params->getAlgo() + params->getKeySizeStr()); - const char *algo = algo_utf8.c_str(); + const char* algo = algo_utf8.c_str(); unsigned long expires = 0; { using namespace boost::posix_time; diff --git a/src/gpg/function/GpgKeyOpera.h b/src/gpg/function/GpgKeyOpera.h index a635084d..36864cc7 100644 --- a/src/gpg/function/GpgKeyOpera.h +++ b/src/gpg/function/GpgKeyOpera.h @@ -32,23 +32,25 @@ namespace GpgFrontend { class GenKeyInfo; class GpgKeyOpera : public SingletonFunctionObject<GpgKeyOpera> { -public: - void DeleteKeys(KeyIdArgsListPtr uid_list); + public: + void DeleteKeys(KeyIdArgsListPtr key_ids); - void SetExpire(const GpgKey &key, std::unique_ptr<GpgSubKey> &subkey, - std::unique_ptr<boost::gregorian::date> &expires); + void SetExpire(const GpgKey& key, + const SubkeyId& subkey_id, + std::unique_ptr<boost::gregorian::date>& expires); - void GenerateRevokeCert(const GpgKey &key, - const std::string &output_file_name); + void GenerateRevokeCert(const GpgKey& key, + const std::string& output_file_name); - GpgFrontend::GpgError GenerateKey(std::unique_ptr<GenKeyInfo> params); + GpgFrontend::GpgError GenerateKey(const std::unique_ptr<GenKeyInfo>& params); - GpgFrontend::GpgError GenerateSubkey(const GpgKey &key, - std::unique_ptr<GenKeyInfo> params); + GpgFrontend::GpgError GenerateSubkey( + const GpgKey& key, + const std::unique_ptr<GenKeyInfo>& params); -private: - GpgContext &ctx = GpgContext::GetInstance(); + private: + GpgContext& ctx = GpgContext::GetInstance(); }; -} // namespace GpgFrontend +} // namespace GpgFrontend -#endif // _GPGKEYOPERA_H
\ No newline at end of file +#endif // _GPGKEYOPERA_H
\ No newline at end of file diff --git a/src/gpg/function/UidOperator.cpp b/src/gpg/function/UidOperator.cpp index d0058540..5b02855b 100644 --- a/src/gpg/function/UidOperator.cpp +++ b/src/gpg/function/UidOperator.cpp @@ -26,34 +26,38 @@ #include "boost/format.hpp" -bool GpgFrontend::UidOperator::addUID(const GpgFrontend::GpgKey &key, - const GpgFrontend::GpgUID &uid) { - auto userid = (boost::format("%1% (%2%) <%3%>") % uid.name() % uid.comment() % - uid.email()) - .str(); - auto err = gpgme_op_adduid(ctx, gpgme_key_t(key), userid.c_str(), 0); +bool GpgFrontend::UidOperator::addUID(const GpgFrontend::GpgKey& key, + const std::string& uid) { + auto err = gpgme_op_adduid(ctx, gpgme_key_t(key), uid.c_str(), 0); if (check_gpg_error_2_err_code(err) == GPG_ERR_NO_ERROR) return true; else return false; } -bool GpgFrontend::UidOperator::revUID(const GpgFrontend::GpgKey &key, - const GpgFrontend::GpgUID &uid) { - auto err = check_gpg_error( - gpgme_op_revuid(ctx, gpgme_key_t(key), uid.uid().c_str(), 0)); +bool GpgFrontend::UidOperator::revUID(const GpgFrontend::GpgKey& key, + const std::string& uid) { + auto err = + check_gpg_error(gpgme_op_revuid(ctx, gpgme_key_t(key), uid.c_str(), 0)); if (check_gpg_error_2_err_code(err) == GPG_ERR_NO_ERROR) return true; else return false; } -bool GpgFrontend::UidOperator::setPrimaryUID(const GpgFrontend::GpgKey &key, - const GpgFrontend::GpgUID &uid) { +bool GpgFrontend::UidOperator::setPrimaryUID(const GpgFrontend::GpgKey& key, + const std::string& uid) { auto err = check_gpg_error(gpgme_op_set_uid_flag( - ctx, gpgme_key_t(key), uid.uid().c_str(), "primary", nullptr)); + ctx, gpgme_key_t(key), uid.c_str(), "primary", nullptr)); if (check_gpg_error_2_err_code(err) == GPG_ERR_NO_ERROR) return true; else return false; } +bool GpgFrontend::UidOperator::addUID(const GpgFrontend::GpgKey& key, + const std::string& name, + const std::string& comment, + const std::string& email) { + auto uid = boost::format("%1 (%2) <%3>") % name % comment % email; + return addUID(key, uid.str()); +} diff --git a/src/gpg/function/UidOperator.h b/src/gpg/function/UidOperator.h index d5bbcb3b..e3068b1f 100644 --- a/src/gpg/function/UidOperator.h +++ b/src/gpg/function/UidOperator.h @@ -30,15 +30,28 @@ namespace GpgFrontend { -class UidOperator { -public: +class UidOperator : public SingletonFunctionObject<UidOperator> { + public: /** * create a new uid in certain key pair * @param key target key pair - * @param uid uid args + * @param uid uid args(combine name&comment&email) * @return if successful */ - bool addUID(const GpgKey &key, const GpgUID &uid); + bool addUID(const GpgKey& key, const std::string& uid); + + /** + * create a new uid in certain key pair + * @param key target key pair + * @param name + * @param comment + * @param email + * @return + */ + bool addUID(const GpgKey& key, + const std::string& name, + const std::string& comment, + const std::string& email); /** * Revoke(Delete) UID from certain key pair @@ -46,7 +59,7 @@ public: * @param uid target uid * @return if successful */ - bool revUID(const GpgKey &key, const GpgUID &uid); + bool revUID(const GpgKey& key, const std::string& uid); /** * Set one of a uid of a key pair as primary @@ -54,12 +67,12 @@ public: * @param uid target uid * @return if successful */ - bool setPrimaryUID(const GpgKey &key, const GpgUID &uid); + bool setPrimaryUID(const GpgKey& key, const std::string& uid); -private: - GpgContext &ctx = GpgContext::GetInstance(); + private: + GpgContext& ctx = GpgContext::GetInstance(); }; -} // namespace GpgFrontend +} // namespace GpgFrontend -#endif // GPGFRONTEND_ZH_CN_TS_UIDOPERATOR_H +#endif // GPGFRONTEND_ZH_CN_TS_UIDOPERATOR_H |