aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lang/cpp/src/key.cpp11
-rw-r--r--lang/cpp/src/key.h19
2 files changed, 30 insertions, 0 deletions
diff --git a/lang/cpp/src/key.cpp b/lang/cpp/src/key.cpp
index d8b3c29d..55eb0585 100644
--- a/lang/cpp/src/key.cpp
+++ b/lang/cpp/src/key.cpp
@@ -383,6 +383,17 @@ const char *Subkey::publicKeyAlgorithmAsString() const
return gpgme_pubkey_algo_name(subkey ? subkey->pubkey_algo : (gpgme_pubkey_algo_t)0);
}
+std::string Subkey::algoName() const
+{
+ char *gpgmeStr;
+ if (subkey && (gpgmeStr = gpgme_pubkey_algo_string(subkey))) {
+ std::string ret = std::string(gpgmeStr);
+ gpgme_free(gpgmeStr);
+ return ret;
+ }
+ return std::string();
+}
+
bool Subkey::canEncrypt() const
{
return subkey && subkey->can_encrypt;
diff --git a/lang/cpp/src/key.h b/lang/cpp/src/key.h
index 30badeaa..7322f650 100644
--- a/lang/cpp/src/key.h
+++ b/lang/cpp/src/key.h
@@ -206,8 +206,27 @@ public:
bool isSecret() const;
unsigned int publicKeyAlgorithm() const;
+
+ /**
+ @brief Get the public key algorithm name.
+
+ This only works for the pre 2.1 algorithms for ECC NULL is returned.
+
+ @returns a statically allocated string with the name of the public
+ key algorithm, or NULL if that name is not known.
+ */
const char *publicKeyAlgorithmAsString() const;
+ /**
+ @brief Get the key algo string like GnuPG 2.1 prints it.
+
+ This returns combinations of size and algorithm. Like
+ bp512 or rsa2048
+
+ @returns the key algorithm as string. Empty string on error.
+ */
+ std::string algoName() const;
+
unsigned int length() const;
const char *cardSerialNumber() const;