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;