From 54f94b14e2bb9b38ffd89f509406bfbd012da632 Mon Sep 17 00:00:00 2001 From: Andre Heinecke Date: Tue, 11 Oct 2016 14:13:15 +0200 Subject: [PATCH] cpp: Add API for gpgme_addrspec_from_uid * lang/cpp/src/key.cpp (UserID::addrSpecFromString): New static function to expose addrspec from uid. (UserID::addrSpec): New. Get addrSpec from Userid. * NEWS: Update accordingly. --- NEWS | 4 +++- lang/cpp/src/key.cpp | 16 ++++++++++++++++ lang/cpp/src/key.h | 15 +++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index dff8e47b..72f6f77d 100644 --- a/NEWS +++ b/NEWS @@ -13,7 +13,9 @@ Noteworthy changes in version 1.7.1 (unreleased) [C26/A15/R_] * cpp Interface changes relative to the 1.7.0 release: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Signature::key(bool, bool) NEW. + Signature::key(bool, bool) NEW. + UserID::addrSpecFromString(const char*) NEW. + UserID::addrSpec() NEW. Noteworthy changes in version 1.7.0 (2016-09-21) [C26/A15/R0] ------------------------------------------------ diff --git a/lang/cpp/src/key.cpp b/lang/cpp/src/key.cpp index 4531a2bf..947405fb 100644 --- a/lang/cpp/src/key.cpp +++ b/lang/cpp/src/key.cpp @@ -878,6 +878,22 @@ const char *UserID::Signature::policyURL() const return 0; } +std::string UserID::addrSpecFromString(const char *userid) +{ + if (!userid) { + return std::string(); + } + char *normalized = gpgme_addrspec_from_uid (userid); + std::string ret(normalized); + gpgme_free(normalized); + return ret; +} + +std::string UserID::addrSpec() const +{ + return addrSpecFromString(email()); +} + std::ostream &operator<<(std::ostream &os, const UserID &uid) { os << "GpgME::UserID("; diff --git a/lang/cpp/src/key.h b/lang/cpp/src/key.h index f193093c..3f596a82 100644 --- a/lang/cpp/src/key.h +++ b/lang/cpp/src/key.h @@ -320,6 +320,21 @@ public: * @returns The TOFU stats or a null TofuInfo. */ GpgME::TofuInfo tofuInfo() const; + + /*! Wrapper around gpgme_addrspec_from_uid. + * + * The input string should match the format of + * a user id string. + * + * @returns a normalized mail address if found + * or an empty string. */ + static std::string addrSpecFromString(const char *uid); + + /*! Wrapper around gpgme_addrspec_from_uid. + * + * @returns a normalized mail address for this userid + * or an empty string. */ + std::string addrSpec() const; private: shared_gpgme_key_t key; gpgme_user_id_t uid;