diff options
author | Marcus Brinkmann <[email protected]> | 2009-11-10 09:07:19 +0000 |
---|---|---|
committer | Marcus Brinkmann <[email protected]> | 2009-11-10 09:07:19 +0000 |
commit | 96cf17b15995c9b925f80a64dbd42c1305ca9895 (patch) | |
tree | 364f15711af329ff9b3b207245516e1320fb3ba0 /src/key.c | |
parent | Fix last change. (diff) | |
download | gpgme-96cf17b15995c9b925f80a64dbd42c1305ca9895.tar.gz gpgme-96cf17b15995c9b925f80a64dbd42c1305ca9895.zip |
2009-11-10 Marcus Brinkmann <[email protected]>
* configure.ac: Activate UIServer if FD passing is enabled and
Assuan is available.
m4/
2009-11-10 Marcus Brinkmann <[email protected]>
* libassuan.m4: Fix LIBASSUAN_VERSION.
src/
2009-11-10 Marcus Brinkmann <[email protected]>
* Makefile.am (uiserver_components): New variable.
(main_sources): Add it.
* ops.h, key.c (_gpgme_key_append_name): Take CONVERT argument,
implement it. Adjust callers.
(gpgme_key_from_uid): New function.
* gpgme.h.in (gpgme_protocol_t): Add GPGME_PROTOCOL_DEFAULT.
(gpgme_encrypt_flags_t): Add GPGME_ENCRYPT_PREPARE,
GPGME_ENCRYPT_EXPECT_SIGN.
(gpgme_set_sub_protocol, gpgme_key_from_uid): New functions.
* libgpgme.vers, gpgme.def: Add new functions.
* gpgme.c (gpgme_set_protocol): Add UIServer protocol.
(gpgme_set_sub_protocol): New function.
(gpgme_get_protocol_name): Add UIServer and default protocol.
* assuan-support.c: Return correct error values, implement
socketpair for POSIX.
* priv-io.h, posix-io.c, w32-io.c, w32-glib-io.c,
w32-qt-io.cpp (_gpgme_io_spawn): Add ATFORK and ATFORKVALUE
arguments. Implement it for POSIX. Adjust all callers.
* engine.h, engine-backend.h (_gpgme_engine_set_protocol)
(_gpgme_engine_op_decrypt_verify): New prototypes. Adjust all
users.
* engine.c (engine_ops, gpgme_get_engine_info): Add UIServer
engine.
(_gpgme_engine_set_protocol, _gpgme_engine_op_decrypt_verify): New
function.
* decrypt-verify.c (decrypt_verify_start): Call
_gpgme_engine_op_decrypt_verify.
* util.h, posix-util.c,
w32-util.c (_gpgme_get_uiserver_socket_path): New function.
* engine-gpgsm.c (gpgsm_set_fd): Fix _gpgme_io_pipe invocation.
* gpgme-tool.c: Some support for UIServer protocol.
* engine-uiserver.c: New file.
Diffstat (limited to 'src/key.c')
-rw-r--r-- | src/key.c | 33 |
1 files changed, 31 insertions, 2 deletions
@@ -202,7 +202,7 @@ parse_x509_user_id (char *src, char **name, char **email, /* Take a name from the --with-colon listing, remove certain escape sequences sequences and put it into the list of UIDs. */ gpgme_error_t -_gpgme_key_append_name (gpgme_key_t key, char *src) +_gpgme_key_append_name (gpgme_key_t key, char *src, int convert) { gpgme_user_id_t uid; char *dst; @@ -219,7 +219,10 @@ _gpgme_key_append_name (gpgme_key_t key, char *src) uid->uid = ((char *) uid) + sizeof (*uid); dst = uid->uid; - _gpgme_decode_c_string (src, &dst, src_len + 1); + if (convert) + _gpgme_decode_c_string (src, &dst, src_len + 1); + else + memcpy (dst, src, src_len + 1); dst += strlen (dst) + 1; if (key->protocol == GPGME_PROTOCOL_CMS) @@ -371,6 +374,32 @@ gpgme_key_unref (gpgme_key_t key) } +/* Support functions. */ + +/* Create a dummy key to specify an email address. */ +gpgme_error_t +gpgme_key_from_uid (gpgme_key_t *r_key, const char *name) +{ + gpgme_error_t err; + gpgme_key_t key; + + *r_key = NULL; + err = _gpgme_key_new (&key); + if (err) + return err; + + /* Note: protocol doesn't matter if only email is provided. */ + err = _gpgme_key_append_name (key, name, 0); + if (err) + gpgme_key_unref (key); + else + *r_key = key; + + return err; +} + + + /* Compatibility interfaces. */ void |