diff options
author | Werner Koch <[email protected]> | 2019-04-02 16:49:51 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2019-08-21 08:23:05 +0000 |
commit | 0353cb0a5edeef07330da1688b7801c073959185 (patch) | |
tree | 8a09d2895e3dc5da2c7106c8651ed017fdedac80 | |
parent | gpg: New option --use-only-openpgp-card (diff) | |
download | gnupg-0353cb0a5edeef07330da1688b7801c073959185.tar.gz gnupg-0353cb0a5edeef07330da1688b7801c073959185.zip |
common: Extend function pubkey_algo_string.
* common/sexputil.c (pubkey_algo_string): Add arg R_ALGOID.
* sm/certreqgen-ui.c (gpgsm_gencertreq_tty): Adjust.
Signed-off-by: Werner Koch <[email protected]>
(cherry picked from commit f952226043824cbbeb8517126b5266926121c4e8)
Removed the changes in gpg-card which is not part of 2.2
Signed-off-by: Werner Koch <[email protected]>
-rw-r--r-- | common/sexputil.c | 9 | ||||
-rw-r--r-- | common/util.h | 2 | ||||
-rw-r--r-- | sm/certreqgen-ui.c | 2 |
3 files changed, 9 insertions, 4 deletions
diff --git a/common/sexputil.c b/common/sexputil.c index 5e51f68f2..e8c8a348e 100644 --- a/common/sexputil.c +++ b/common/sexputil.c @@ -581,9 +581,9 @@ get_pk_algo_from_canon_sexp (const unsigned char *keydata, size_t keydatalen) /* Given the public key S_PKEY, return a new buffer with a descriptive * string for its algorithm. This function may return NULL on memory - * error. */ + * error. If R_ALGOID is not NULL the gcrypt algo id is stored there. */ char * -pubkey_algo_string (gcry_sexp_t s_pkey) +pubkey_algo_string (gcry_sexp_t s_pkey, enum gcry_pk_algos *r_algoid) { const char *prefix; gcry_sexp_t l1; @@ -591,6 +591,9 @@ pubkey_algo_string (gcry_sexp_t s_pkey) int algo; char *result; + if (r_algoid) + *r_algoid = 0; + l1 = gcry_sexp_find_token (s_pkey, "public-key", 0); if (!l1) return xtrystrdup ("E_no_key"); @@ -632,6 +635,8 @@ pubkey_algo_string (gcry_sexp_t s_pkey) else result = xtryasprintf ("X_algo_%d", algo); + if (r_algoid) + *r_algoid = algo; xfree (algoname); return result; } diff --git a/common/util.h b/common/util.h index 27f565bab..24722227a 100644 --- a/common/util.h +++ b/common/util.h @@ -199,7 +199,7 @@ gpg_error_t get_rsa_pk_from_canon_sexp (const unsigned char *keydata, int get_pk_algo_from_key (gcry_sexp_t key); int get_pk_algo_from_canon_sexp (const unsigned char *keydata, size_t keydatalen); -char *pubkey_algo_string (gcry_sexp_t s_pkey); +char *pubkey_algo_string (gcry_sexp_t s_pkey, enum gcry_pk_algos *r_algoid); /*-- convert.c --*/ int hex2bin (const char *string, void *buffer, size_t length); diff --git a/sm/certreqgen-ui.c b/sm/certreqgen-ui.c index bbc74a566..11cf9b469 100644 --- a/sm/certreqgen-ui.c +++ b/sm/certreqgen-ui.c @@ -257,7 +257,7 @@ gpgsm_gencertreq_tty (ctrl_t ctrl, estream_t output_stream) if (!gpgsm_agent_readkey (ctrl, 1, keyref, &pkey)) { if (!gcry_sexp_new (&s_pkey, pkey, 0, 0)) - algostr = pubkey_algo_string (s_pkey); + algostr = pubkey_algo_string (s_pkey, NULL); gcry_sexp_release (s_pkey); } xfree (pkey); |