diff options
| author | Werner Koch <[email protected]> | 2014-05-08 12:03:14 +0000 | 
|---|---|---|
| committer | Werner Koch <[email protected]> | 2014-05-08 12:11:58 +0000 | 
| commit | d5fb92cdaed21eea2f1a921e4f11df72635a8462 (patch) | |
| tree | 9c219a9cfa334c021853091a0717f8135733a06a /src/conversion.c | |
| parent | Add GPGME_ENCRYPT_NO_COMPRESS flag. (diff) | |
| download | gpgme-d5fb92cdaed21eea2f1a921e4f11df72635a8462.tar.gz gpgme-d5fb92cdaed21eea2f1a921e4f11df72635a8462.zip  | |
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.
Diffstat (limited to '')
| -rw-r--r-- | src/conversion.c | 21 | 
1 files changed, 21 insertions, 0 deletions
diff --git a/src/conversion.c b/src/conversion.c index b47d6deb..d04a6bef 100644 --- a/src/conversion.c +++ b/src/conversion.c @@ -412,3 +412,24 @@ _gpgme_parse_timestamp (const char *timestamp, char **endp)    else      return (time_t)strtoul (timestamp, endp, 10);  } + + +/* The GPG backend uses OpenPGP algorithm numbers which we need to map +   to our algorithm numbers.  This function MUST not change ERRNO. */ +int +_gpgme_map_pk_algo (int algo, gpgme_protocol_t protocol) +{ +  if (protocol == GPGME_PROTOCOL_OPENPGP) +    { +      switch (algo) +        { +        case 1: case 2: case 3: case 16: case 17: break; +        case 18: algo = GPGME_PK_ECDH; break; +        case 19: algo = GPGME_PK_ECDSA; break; +        case 20: break; +        default: algo = 0; break; /* Unknown.  */ +        } +    } + +  return algo; +}  | 
