From dd2f76498a94f3ef736a2c5a96974c0f1cbca63c Mon Sep 17 00:00:00 2001 From: Fake Date: Wed, 31 Mar 2021 13:14:00 +0800 Subject: ssl: Support password protected keys --- librabbitmq/amqp_openssl.c | 9 +++++++++ librabbitmq/amqp_ssl_socket.h | 12 ++++++++++++ 2 files changed, 21 insertions(+) diff --git a/librabbitmq/amqp_openssl.c b/librabbitmq/amqp_openssl.c index 3cebd58..1aa5f1e 100644 --- a/librabbitmq/amqp_openssl.c +++ b/librabbitmq/amqp_openssl.c @@ -498,6 +498,15 @@ int amqp_ssl_socket_set_cert(amqp_socket_t *base, const char *cert) { return AMQP_STATUS_OK; } +void amqp_ssl_socket_set_key_passwd(amqp_socket_t *base, const char *passwd) { + struct amqp_ssl_socket_t *self; + if (base->klass != &amqp_ssl_socket_class) { + amqp_abort("<%p> is not of type amqp_ssl_socket_t", base); + } + self = (struct amqp_ssl_socket_t *)base; + SSL_CTX_set_default_passwd_cb_userdata(self->ctx, (void *)passwd); +} + void amqp_ssl_socket_set_verify(amqp_socket_t *base, amqp_boolean_t verify) { amqp_ssl_socket_set_verify_peer(base, verify); amqp_ssl_socket_set_verify_hostname(base, verify); diff --git a/librabbitmq/amqp_ssl_socket.h b/librabbitmq/amqp_ssl_socket.h index 5aab8bf..0a6d58f 100644 --- a/librabbitmq/amqp_ssl_socket.h +++ b/librabbitmq/amqp_ssl_socket.h @@ -85,6 +85,18 @@ AMQP_PUBLIC_FUNCTION int AMQP_CALL amqp_ssl_socket_set_cacert(amqp_socket_t *self, const char *cacert); +/** + * Set the password of key in PEM format. + * + * \param [in,out] self An SSL/TLS socket object. + * \param [in] passwd The password of key in PEM format. + * + * \since v0.11.0 + */ +AMQP_PUBLIC_FUNCTION +void AMQP_CALL amqp_ssl_socket_set_key_passwd(amqp_socket_t *self, + const char *passwd); + /** * Set the client key. * -- cgit v1.2.1