Add SslContext::add_extra_chain_cert()
This commit is contained in:
parent
632d8398cf
commit
b6c5c113f5
|
|
@ -132,6 +132,8 @@ pub const SSL_CTRL_OPTIONS: c_int = 32;
|
||||||
pub const SSL_CTRL_CLEAR_OPTIONS: c_int = 77;
|
pub const SSL_CTRL_CLEAR_OPTIONS: c_int = 77;
|
||||||
|
|
||||||
pub const SSL_CTRL_SET_TLSEXT_HOSTNAME: c_int = 55;
|
pub const SSL_CTRL_SET_TLSEXT_HOSTNAME: c_int = 55;
|
||||||
|
pub const SSL_CTRL_EXTRA_CHAIN_CERT: c_int = 14;
|
||||||
|
|
||||||
pub const SSL_ERROR_NONE: c_int = 0;
|
pub const SSL_ERROR_NONE: c_int = 0;
|
||||||
pub const SSL_ERROR_SSL: c_int = 1;
|
pub const SSL_ERROR_SSL: c_int = 1;
|
||||||
pub const SSL_ERROR_SYSCALL: c_int = 5;
|
pub const SSL_ERROR_SYSCALL: c_int = 5;
|
||||||
|
|
@ -276,6 +278,11 @@ pub unsafe fn SSL_CTX_clear_options(ssl: *mut SSL_CTX, op: c_long) -> c_long {
|
||||||
SSL_CTX_ctrl(ssl, SSL_CTRL_CLEAR_OPTIONS, (op), ptr::null_mut())
|
SSL_CTX_ctrl(ssl, SSL_CTRL_CLEAR_OPTIONS, (op), ptr::null_mut())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub unsafe fn SSL_CTX_add_extra_chain_cert(ssl: *mut SSL_CTX, cert: *mut X509) -> c_long {
|
||||||
|
SSL_CTX_ctrl(ssl, SSL_CTRL_EXTRA_CHAIN_CERT, 0, cert)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// True functions
|
// True functions
|
||||||
extern "C" {
|
extern "C" {
|
||||||
pub fn ASN1_INTEGER_set(dest: *mut ASN1_INTEGER, value: c_long) -> c_int;
|
pub fn ASN1_INTEGER_set(dest: *mut ASN1_INTEGER, value: c_long) -> c_int;
|
||||||
|
|
@ -513,7 +520,8 @@ extern "C" {
|
||||||
pub fn SSL_CTX_get_ex_data(ctx: *mut SSL_CTX, idx: c_int) -> *mut c_void;
|
pub fn SSL_CTX_get_ex_data(ctx: *mut SSL_CTX, idx: c_int) -> *mut c_void;
|
||||||
|
|
||||||
pub fn SSL_CTX_use_certificate_file(ctx: *mut SSL_CTX, cert_file: *const c_char, file_type: c_int) -> c_int;
|
pub fn SSL_CTX_use_certificate_file(ctx: *mut SSL_CTX, cert_file: *const c_char, file_type: c_int) -> c_int;
|
||||||
pub fn SSL_CTX_use_certificate(ctx: *mut SSL_CTX, cert_file: *mut X509) -> c_int;
|
pub fn SSL_CTX_use_certificate(ctx: *mut SSL_CTX, cert: *mut X509) -> c_int;
|
||||||
|
|
||||||
pub fn SSL_CTX_use_PrivateKey_file(ctx: *mut SSL_CTX, key_file: *const c_char, file_type: c_int) -> c_int;
|
pub fn SSL_CTX_use_PrivateKey_file(ctx: *mut SSL_CTX, key_file: *const c_char, file_type: c_int) -> c_int;
|
||||||
pub fn SSL_CTX_use_PrivateKey(ctx: *mut SSL_CTX, key: *mut EVP_PKEY) -> c_int;
|
pub fn SSL_CTX_use_PrivateKey(ctx: *mut SSL_CTX, key: *mut EVP_PKEY) -> c_int;
|
||||||
pub fn SSL_CTX_check_private_key(ctx: *mut SSL_CTX) -> c_int;
|
pub fn SSL_CTX_check_private_key(ctx: *mut SSL_CTX) -> c_int;
|
||||||
|
|
|
||||||
|
|
@ -352,7 +352,6 @@ impl Drop for PKey {
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use std::io;
|
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use crypto::hash::Type::{MD5, SHA1};
|
use crypto::hash::Type::{MD5, SHA1};
|
||||||
|
|
|
||||||
|
|
@ -409,6 +409,15 @@ impl SslContext {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Adds a certificate to the certificate chain presented together with the
|
||||||
|
/// certificate specified using set_certificate()
|
||||||
|
pub fn add_extra_chain_cert(&mut self, cert: &X509) -> Option<SslError> {
|
||||||
|
wrap_ssl_result(
|
||||||
|
unsafe {
|
||||||
|
ffi::SSL_CTX_add_extra_chain_cert(*self.ctx, cert.get_handle()) as c_int
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
/// Specifies the file that contains private key
|
/// Specifies the file that contains private key
|
||||||
pub fn set_private_key_file(&mut self, file: &Path,
|
pub fn set_private_key_file(&mut self, file: &Path,
|
||||||
file_type: X509FileType) -> Option<SslError> {
|
file_type: X509FileType) -> Option<SslError> {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue