]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-dcrypt: Use hex encoded public key ID in callback
authorAki Tuomi <aki.tuomi@dovecot.fi>
Mon, 13 Jun 2016 09:49:19 +0000 (12:49 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 14 Jun 2016 09:31:51 +0000 (12:31 +0300)
src/lib-dcrypt/istream-decrypt.c
src/lib-dcrypt/istream-decrypt.h

index 77c68c33819e3fad2cd6df7c1e2bbce51bb52ea0..87b954dd70d51d87cf94b22c61d22ab00e25eabc 100644 (file)
@@ -120,8 +120,7 @@ ssize_t i_stream_decrypt_read_header_v1(struct decrypt_istream *stream,
        if (stream->priv_key == NULL) {
                /* see if we can get one */
                if (stream->key_callback != NULL) {
-                       unsigned char *key_id = t_malloc(digest_len);
-                       memcpy(key_id, digest_pos, digest_len);
+                       const char *key_id = binary_to_hex(digest_pos, digest_len);
                        int ret = stream->key_callback(key_id, &(stream->priv_key), &error, stream->key_context);
                        if (ret < 0) {
                                io_stream_set_error(&stream->istream.iostream, "Private key not available: %s", error);
@@ -297,9 +296,9 @@ ssize_t i_stream_decrypt_key(struct decrypt_istream *stream, const char *malg, u
                ktype = *data++;
 
                if (stream->key_callback != NULL) {
-                       memcpy(dgst, data, sizeof(dgst));
+                       const char *hexdgst = binary_to_hex(data, sizeof(dgst)); /* digest length */
                        /* hope you going to give us right key.. */
-                       int ret = stream->key_callback(dgst, &(stream->priv_key), &error, stream->key_context);
+                       int ret = stream->key_callback(hexdgst, &(stream->priv_key), &error, stream->key_context);
                        if (ret < 0) {
                                io_stream_set_error(&stream->istream.iostream, "Private key not available: %s", error);
                                return -1;
index 713afbbcd4272c537cb8f59e71f621baa75be645..0c59bc8ee8208489dcd1e75d86c0d906e0b9fbd0 100644 (file)
@@ -7,7 +7,7 @@ struct dcrypt_context_symmetric;
 /* Look for a private key for a specified public key digest and set it to
    priv_key_r. Returns 1 if ok, 0 if key doesn't exist, -1 on internal error. */
 typedef int
-i_stream_decrypt_get_key_callback_t(const unsigned char *pubkey_digest,
+i_stream_decrypt_get_key_callback_t(const char *pubkey_digest,
                                    struct dcrypt_private_key **priv_key_r,
                                    const char **error_r, void *context);