cpp: Add API for gpgme_addrspec_from_uid
authorAndre Heinecke <aheinecke@intevation.de>
Tue, 11 Oct 2016 12:13:15 +0000 (14:13 +0200)
committerAndre Heinecke <aheinecke@intevation.de>
Tue, 11 Oct 2016 12:13:15 +0000 (14:13 +0200)
* 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
lang/cpp/src/key.cpp
lang/cpp/src/key.h

diff --git a/NEWS b/NEWS
index dff8e47..72f6f77 100644 (file)
--- 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]
 ------------------------------------------------
index 4531a2b..947405f 100644 (file)
@@ -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(";
index f193093..3f596a8 100644 (file)
@@ -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;