From 7835ea1c906450c524b8575a668860ee9e0b2d85 Mon Sep 17 00:00:00 2001 From: Geoffroy Couprie Date: Wed, 25 Nov 2015 08:10:36 +0100 Subject: Make shims for SSL_CTX_ctrl and SSL_CTX_callback_ctrl macro wrappers --- openssl-sys-extras/src/lib.rs | 6 +++++- openssl-sys-extras/src/openssl_shim.c | 8 ++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) (limited to 'openssl-sys-extras/src') diff --git a/openssl-sys-extras/src/lib.rs b/openssl-sys-extras/src/lib.rs index a768f436..f17c7fd5 100644 --- a/openssl-sys-extras/src/lib.rs +++ b/openssl-sys-extras/src/lib.rs @@ -4,7 +4,7 @@ extern crate openssl_sys; extern crate libc; -use libc::{c_int, c_uint, c_long, c_char}; +use libc::{c_int, c_uint, c_long, c_char, c_void}; use openssl_sys::{HMAC_CTX, EVP_MD, ENGINE, SSL_CTX, BIO, X509, stack_st_X509_EXTENSION, SSL, DH}; macro_rules! import_options { @@ -65,4 +65,8 @@ extern { pub fn SSL_CTX_set_tmp_dh(s: *mut SSL, dh: *const DH) -> c_long; #[link_name = "X509_get_extensions_shim"] pub fn X509_get_extensions(x: *mut X509) -> *mut stack_st_X509_EXTENSION; + #[link_name = "SSL_CTX_set_tlsext_servername_callback_shim"] + pub fn SSL_CTX_set_tlsext_servername_callback(ssl: *mut SSL_CTX, callback: Option); + #[link_name = "SSL_CTX_set_tlsext_servername_arg_shim"] + pub fn SSL_CTX_set_tlsext_servername_arg(ssl: *mut SSL_CTX, arg: *const c_void); } diff --git a/openssl-sys-extras/src/openssl_shim.c b/openssl-sys-extras/src/openssl_shim.c index 84adb47b..302e539a 100644 --- a/openssl-sys-extras/src/openssl_shim.c +++ b/openssl-sys-extras/src/openssl_shim.c @@ -115,6 +115,14 @@ long SSL_CTX_set_tmp_dh_shim(SSL_CTX *ctx, DH *dh) { return SSL_CTX_set_tmp_dh(ctx, dh); } +long SSL_CTX_set_tlsext_servername_callback_shim(SSL_CTX *ctx, int (*callback)(SSL_CTX *, int *, void*)) { + return SSL_CTX_set_tlsext_servername_callback(ctx, callback); +} + +long SSL_CTX_set_tlsext_servername_arg_shim(SSL_CTX *ctx, void* arg) { + return SSL_CTX_set_tlsext_servername_arg(ctx, arg); +} + #if OPENSSL_VERSION_NUMBER >= 0x10002000L int SSL_CTX_set_ecdh_auto_shim(SSL_CTX *ctx, int onoff) { return SSL_CTX_set_ecdh_auto(ctx, onoff); -- cgit v1.2.3 From 6850c810d32a11330c9b1dd4889b447fa8434c36 Mon Sep 17 00:00:00 2001 From: Geoffroy Couprie Date: Thu, 3 Dec 2015 12:26:55 +0100 Subject: Increment SSL_CTX's reference count in Ssl::get_ssl_context() Without this, whenever the returned SslContext is released, the refcount of the underlying SSL_CTX will decrease and it will be freed too soon --- openssl-sys-extras/src/lib.rs | 2 ++ openssl-sys-extras/src/openssl_shim.c | 5 +++++ 2 files changed, 7 insertions(+) (limited to 'openssl-sys-extras/src') diff --git a/openssl-sys-extras/src/lib.rs b/openssl-sys-extras/src/lib.rs index f17c7fd5..69a1fee9 100644 --- a/openssl-sys-extras/src/lib.rs +++ b/openssl-sys-extras/src/lib.rs @@ -69,4 +69,6 @@ extern { pub fn SSL_CTX_set_tlsext_servername_callback(ssl: *mut SSL_CTX, callback: Option); #[link_name = "SSL_CTX_set_tlsext_servername_arg_shim"] pub fn SSL_CTX_set_tlsext_servername_arg(ssl: *mut SSL_CTX, arg: *const c_void); + #[link_name = "SSL_CTX_increment_refcount_shim"] + pub fn SSL_CTX_increment_refcount(ssl: *mut SSL_CTX) -> c_long; } diff --git a/openssl-sys-extras/src/openssl_shim.c b/openssl-sys-extras/src/openssl_shim.c index 302e539a..51630daf 100644 --- a/openssl-sys-extras/src/openssl_shim.c +++ b/openssl-sys-extras/src/openssl_shim.c @@ -123,6 +123,11 @@ long SSL_CTX_set_tlsext_servername_arg_shim(SSL_CTX *ctx, void* arg) { return SSL_CTX_set_tlsext_servername_arg(ctx, arg); } +long SSL_CTX_increment_refcount_shim(SSL_CTX *ctx) { + int i = CRYPTO_add(&ctx->references,1,CRYPTO_LOCK_SSL_CTX); + return i; +} + #if OPENSSL_VERSION_NUMBER >= 0x10002000L int SSL_CTX_set_ecdh_auto_shim(SSL_CTX *ctx, int onoff) { return SSL_CTX_set_ecdh_auto(ctx, onoff); -- cgit v1.2.3 From 4d883d488eed9431ebd8ec4e2b5a45d9cbf2e0d8 Mon Sep 17 00:00:00 2001 From: Steven Fackler Date: Tue, 8 Dec 2015 21:57:04 -0800 Subject: Custom BIO infrastructure --- openssl-sys-extras/src/lib.rs | 6 ++++++ openssl-sys-extras/src/openssl_shim.c | 12 ++++++++++++ 2 files changed, 18 insertions(+) (limited to 'openssl-sys-extras/src') diff --git a/openssl-sys-extras/src/lib.rs b/openssl-sys-extras/src/lib.rs index a768f436..dfeb06e5 100644 --- a/openssl-sys-extras/src/lib.rs +++ b/openssl-sys-extras/src/lib.rs @@ -49,6 +49,12 @@ extern { pub fn BIO_set_nbio(b: *mut BIO, enabled: c_long) -> c_long; #[link_name = "BIO_set_mem_eof_return_shim"] pub fn BIO_set_mem_eof_return(b: *mut BIO, v: c_int); + #[link_name = "BIO_clear_retry_flags_shim"] + pub fn BIO_clear_retry_flags(b: *mut BIO); + #[link_name = "BIO_set_retry_read_shim"] + pub fn BIO_set_retry_read(b: *mut BIO); + #[link_name = "BIO_set_retry_write_shim"] + pub fn BIO_set_retry_write(b: *mut BIO); pub fn SSL_CTX_set_options_shim(ctx: *mut SSL_CTX, options: c_long) -> c_long; pub fn SSL_CTX_get_options_shim(ctx: *mut SSL_CTX) -> c_long; pub fn SSL_CTX_clear_options_shim(ctx: *mut SSL_CTX, options: c_long) -> c_long; diff --git a/openssl-sys-extras/src/openssl_shim.c b/openssl-sys-extras/src/openssl_shim.c index 84adb47b..95847ac1 100644 --- a/openssl-sys-extras/src/openssl_shim.c +++ b/openssl-sys-extras/src/openssl_shim.c @@ -91,6 +91,18 @@ void BIO_set_mem_eof_return_shim(BIO *b, int v) { BIO_set_mem_eof_return(b, v); } +void BIO_clear_retry_flags_shim(BIO *b) { + BIO_clear_retry_flags(b); +} + +void BIO_set_retry_read_shim(BIO *b) { + BIO_set_retry_read(b); +} + +void BIO_set_retry_write_shim(BIO *b) { + BIO_set_retry_write(b); +} + long SSL_CTX_set_options_shim(SSL_CTX *ctx, long options) { return SSL_CTX_set_options(ctx, options); } -- cgit v1.2.3 From 8f56897043f8138980ce3376765b769c764d8701 Mon Sep 17 00:00:00 2001 From: Steven Fackler Date: Wed, 9 Dec 2015 22:02:02 -0800 Subject: Implement read and write --- openssl-sys-extras/src/lib.rs | 2 ++ openssl-sys-extras/src/openssl_shim.c | 4 ++++ 2 files changed, 6 insertions(+) (limited to 'openssl-sys-extras/src') diff --git a/openssl-sys-extras/src/lib.rs b/openssl-sys-extras/src/lib.rs index dfeb06e5..3c114726 100644 --- a/openssl-sys-extras/src/lib.rs +++ b/openssl-sys-extras/src/lib.rs @@ -55,6 +55,8 @@ extern { pub fn BIO_set_retry_read(b: *mut BIO); #[link_name = "BIO_set_retry_write_shim"] pub fn BIO_set_retry_write(b: *mut BIO); + #[link_name = "BIO_flush"] + pub fn BIO_flush(b: *mut BIO) -> c_long; pub fn SSL_CTX_set_options_shim(ctx: *mut SSL_CTX, options: c_long) -> c_long; pub fn SSL_CTX_get_options_shim(ctx: *mut SSL_CTX) -> c_long; pub fn SSL_CTX_clear_options_shim(ctx: *mut SSL_CTX, options: c_long) -> c_long; diff --git a/openssl-sys-extras/src/openssl_shim.c b/openssl-sys-extras/src/openssl_shim.c index 95847ac1..cc42fbf4 100644 --- a/openssl-sys-extras/src/openssl_shim.c +++ b/openssl-sys-extras/src/openssl_shim.c @@ -103,6 +103,10 @@ void BIO_set_retry_write_shim(BIO *b) { BIO_set_retry_write(b); } +long BIO_flush_shim(BIO *b) { + return BIO_flush(b); +} + long SSL_CTX_set_options_shim(SSL_CTX *ctx, long options) { return SSL_CTX_set_options(ctx, options); } -- cgit v1.2.3 From 6d559bf1dad5611f15165645aaad3c465cf6e0fe Mon Sep 17 00:00:00 2001 From: Steven Fackler Date: Tue, 15 Dec 2015 19:39:24 -0800 Subject: Cleanup SNI stuff --- openssl-sys-extras/src/lib.rs | 2 -- openssl-sys-extras/src/openssl_shim.c | 5 ----- 2 files changed, 7 deletions(-) (limited to 'openssl-sys-extras/src') diff --git a/openssl-sys-extras/src/lib.rs b/openssl-sys-extras/src/lib.rs index f8751d18..08d9e3d2 100644 --- a/openssl-sys-extras/src/lib.rs +++ b/openssl-sys-extras/src/lib.rs @@ -77,6 +77,4 @@ extern { pub fn SSL_CTX_set_tlsext_servername_callback(ssl: *mut SSL_CTX, callback: Option); #[link_name = "SSL_CTX_set_tlsext_servername_arg_shim"] pub fn SSL_CTX_set_tlsext_servername_arg(ssl: *mut SSL_CTX, arg: *const c_void); - #[link_name = "SSL_CTX_increment_refcount_shim"] - pub fn SSL_CTX_increment_refcount(ssl: *mut SSL_CTX) -> c_long; } diff --git a/openssl-sys-extras/src/openssl_shim.c b/openssl-sys-extras/src/openssl_shim.c index 3acd3d50..c3deeebc 100644 --- a/openssl-sys-extras/src/openssl_shim.c +++ b/openssl-sys-extras/src/openssl_shim.c @@ -139,11 +139,6 @@ long SSL_CTX_set_tlsext_servername_arg_shim(SSL_CTX *ctx, void* arg) { return SSL_CTX_set_tlsext_servername_arg(ctx, arg); } -long SSL_CTX_increment_refcount_shim(SSL_CTX *ctx) { - int i = CRYPTO_add(&ctx->references,1,CRYPTO_LOCK_SSL_CTX); - return i; -} - #if OPENSSL_VERSION_NUMBER >= 0x10002000L int SSL_CTX_set_ecdh_auto_shim(SSL_CTX *ctx, int onoff) { return SSL_CTX_set_ecdh_auto(ctx, onoff); -- cgit v1.2.3 From 13f7cfd9d8d822286cc09495a2eb0f817cf6afa4 Mon Sep 17 00:00:00 2001 From: Steven Fackler Date: Tue, 15 Dec 2015 19:41:57 -0800 Subject: Release v0.7.2 --- openssl-sys-extras/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'openssl-sys-extras/src') diff --git a/openssl-sys-extras/src/lib.rs b/openssl-sys-extras/src/lib.rs index 08d9e3d2..85bb4392 100644 --- a/openssl-sys-extras/src/lib.rs +++ b/openssl-sys-extras/src/lib.rs @@ -1,5 +1,5 @@ #![allow(non_upper_case_globals, non_snake_case)] -#![doc(html_root_url="https://sfackler.github.io/rust-openssl/doc/v0.7.0")] +#![doc(html_root_url="https://sfackler.github.io/rust-openssl/doc/v0.7.2")] extern crate openssl_sys; extern crate libc; -- cgit v1.2.3