Cpp: Add support for pubkey_algo_name
authorAndre Heinecke <aheinecke@intevation.de>
Tue, 12 Apr 2016 14:08:10 +0000 (16:08 +0200)
committerAndre Heinecke <aheinecke@intevation.de>
Tue, 12 Apr 2016 14:08:10 +0000 (16:08 +0200)
* lang/cpp/src/key.cpp (Subkey::algoName): New.
* lang/cpp/src/key.h: Declare.

lang/cpp/src/key.cpp
lang/cpp/src/key.h

index d8b3c29..55eb058 100644 (file)
@@ -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;
index 30badea..7322f65 100644 (file)
@@ -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;