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.
This commit is contained in:
Andre Heinecke 2016-10-11 14:13:15 +02:00
parent e7ceb83a59
commit 54f94b14e2
3 changed files with 34 additions and 1 deletions

4
NEWS
View File

@ -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: * 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] Noteworthy changes in version 1.7.0 (2016-09-21) [C26/A15/R0]
------------------------------------------------ ------------------------------------------------

View File

@ -878,6 +878,22 @@ const char *UserID::Signature::policyURL() const
return 0; 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) std::ostream &operator<<(std::ostream &os, const UserID &uid)
{ {
os << "GpgME::UserID("; os << "GpgME::UserID(";

View File

@ -320,6 +320,21 @@ public:
* @returns The TOFU stats or a null TofuInfo. * @returns The TOFU stats or a null TofuInfo.
*/ */
GpgME::TofuInfo tofuInfo() const; 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: private:
shared_gpgme_key_t key; shared_gpgme_key_t key;
gpgme_user_id_t uid; gpgme_user_id_t uid;