aboutsummaryrefslogtreecommitdiffstats
path: root/src/conversion.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2014-05-08 12:03:14 +0000
committerWerner Koch <[email protected]>2014-05-08 12:11:58 +0000
commitd5fb92cdaed21eea2f1a921e4f11df72635a8462 (patch)
tree9c219a9cfa334c021853091a0717f8135733a06a /src/conversion.c
parentAdd GPGME_ENCRYPT_NO_COMPRESS flag. (diff)
downloadgpgme-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 'src/conversion.c')
-rw-r--r--src/conversion.c21
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;
+}