From: Aki Tuomi Date: Mon, 13 Jun 2016 09:49:19 +0000 (+0300) Subject: lib-dcrypt: Use hex encoded public key ID in callback X-Git-Tag: 2.3.0.rc1~3505 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=269a38b5e60ad8698d6ea56e4a500be2f2486795;p=thirdparty%2Fdovecot%2Fcore.git lib-dcrypt: Use hex encoded public key ID in callback --- diff --git a/src/lib-dcrypt/istream-decrypt.c b/src/lib-dcrypt/istream-decrypt.c index 86ea24d654..87b954dd70 100644 --- a/src/lib-dcrypt/istream-decrypt.c +++ b/src/lib-dcrypt/istream-decrypt.c @@ -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_no0(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; diff --git a/src/lib-dcrypt/istream-decrypt.h b/src/lib-dcrypt/istream-decrypt.h index 713afbbcd4..0c59bc8ee8 100644 --- a/src/lib-dcrypt/istream-decrypt.h +++ b/src/lib-dcrypt/istream-decrypt.h @@ -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);