From d5fb92cdaed21eea2f1a921e4f11df72635a8462 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 8 May 2014 14:03:14 +0200 Subject: Map public key algos returned by gpg to gpgme values. * src/conversion.c (_gpgme_map_pk_algo): New. * src/decrypt.c (parse_enc_to): Add arg PROTOCOL and map pubkey algo. (_gpgme_decrypt_status_handler): Map pubkey algo. * src/keylist.c (keylist_colon_handler): Map pubkey algo. * src/sign.c (parse_sig_created): Add arg PROTOCOL and map pubkey algo. * src/verify.c (parse_new_sig): Ditto. (parse_valid_sig): Ditto. * src/gpgme.h.in (GPGME_PK_ECC): New. (GPGME_MD_SHA224): New. * src/gpgme.c (gpgme_pubkey_algo_name): Add GPGME_PK_ECC case. (gpgme_hash_algo_name): Add GPGME_MD_SHA224. -- This affects only the not yet released ECC code of GnuPG 2.1. --- src/verify.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'src/verify.c') diff --git a/src/verify.c b/src/verify.c index c32241ae..37b2bd46 100644 --- a/src/verify.c +++ b/src/verify.c @@ -264,7 +264,8 @@ prepare_new_sig (op_data_t opd) } static gpgme_error_t -parse_new_sig (op_data_t opd, gpgme_status_code_t code, char *args) +parse_new_sig (op_data_t opd, gpgme_status_code_t code, char *args, + gpgme_protocol_t protocol) { gpgme_signature_t sig; char *end = strchr (args, ' '); @@ -318,7 +319,7 @@ parse_new_sig (op_data_t opd, gpgme_status_code_t code, char *args) if (!end) goto parse_err_sig_fail; gpg_err_set_errno (0); - sig->pubkey_algo = strtol (end, &tail, 0); + sig->pubkey_algo = _gpgme_map_pk_algo (strtol (end, &tail, 0), protocol); if (errno || end == tail || *tail != ' ') goto parse_err_sig_fail; end = tail; @@ -393,7 +394,7 @@ parse_new_sig (op_data_t opd, gpgme_status_code_t code, char *args) static gpgme_error_t -parse_valid_sig (gpgme_signature_t sig, char *args) +parse_valid_sig (gpgme_signature_t sig, char *args, gpgme_protocol_t protocol) { char *end = strchr (args, ' '); if (end) @@ -443,7 +444,8 @@ parse_valid_sig (gpgme_signature_t sig, char *args) { /* Parse the pubkey algo. */ gpg_err_set_errno (0); - sig->pubkey_algo = strtol (end, &tail, 0); + sig->pubkey_algo = _gpgme_map_pk_algo (strtol (end, &tail, 0), + protocol); if (errno || end == tail || *tail != ' ') return trace_gpg_error (GPG_ERR_INV_ENGINE); end = tail; @@ -703,11 +705,11 @@ _gpgme_verify_status_handler (void *priv, gpgme_status_code_t code, char *args) if (sig && !opd->did_prepare_new_sig) calc_sig_summary (sig); opd->only_newsig_seen = 0; - return parse_new_sig (opd, code, args); + return parse_new_sig (opd, code, args, ctx->protocol); case GPGME_STATUS_VALIDSIG: opd->only_newsig_seen = 0; - return sig ? parse_valid_sig (sig, args) + return sig ? parse_valid_sig (sig, args, ctx->protocol) : trace_gpg_error (GPG_ERR_INV_ENGINE); case GPGME_STATUS_NODATA: -- cgit v1.2.3