extern crate libc;
#[link(name="tls")]
#[link(name="crypto")]
#[link(name="ssl")]
extern "C" {
pub fn tls_init() -> libc::c_int;
}
#[link(name="tls")]
extern "C" {
pub fn tls_error(ctx: *mut tls) -> *const libc::c_char;
}
#[link(name="tls")]
extern "C" {
pub fn tls_config_new() -> *mut tls_config;
}
#[link(name="tls")]
extern "C" {
pub fn tls_config_free(config: *mut tls_config);
}
#[link(name="tls")]
extern "C" {
pub fn tls_config_set_ca_file(config: *mut tls_config, ca_file: *const libc::c_char) -> libc::c_int;
}
#[link(name="tls")]
extern "C" {
pub fn tls_config_set_ca_path(config: *mut tls_config, ca_path: *const libc::c_char) -> libc::c_int;
}
#[link(name="tls")]
extern "C" {
pub fn tls_config_set_cert_file(config: *mut tls_config, cert_file: *const libc::c_char) -> libc::c_int;
}
#[link(name="tls")]
extern "C" {
pub fn tls_config_set_cert_mem(config: *mut tls_config, cert: *const libc::c_int, len: libc::c_int) -> libc::c_int;
}
#[link(name="tls")]
extern "C" {
pub fn tls_config_set_ciphers(config: *mut tls_config, ciphers: *const libc::c_char) -> libc::c_int;
}
#[link(name="tls")]
extern "C" {
pub fn tls_config_set_ecdhcurve(config: *mut tls_config, name: *const libc::c_char) -> libc::c_int;
}
#[link(name="tls")]
extern "C" {
pub fn tls_config_set_key_file(config: *mut tls_config, key_file: *const libc::c_char) -> libc::c_int;
}
#[link(name="tls")]
extern "C" {
pub fn tls_config_set_key_mem(config: *mut tls_config, key: *const libc::c_int, len: libc::c_int) -> libc::c_int;
}
#[link(name="tls")]
extern "C" {
pub fn tls_config_set_protocols(config: *mut tls_config, protocols: libc::c_int);
}
#[link(name="tls")]
extern "C" {
pub fn tls_config_set_verify_depth(config: *mut tls_config, verify_depth: libc::c_int);
}
#[link(name="tls")]
extern "C" {
pub fn tls_config_clear_keys(config: *mut tls_config);
}
#[link(name="tls")]
extern "C" {
pub fn tls_config_insecure_noverifyhost(config: *mut tls_config);
}
#[link(name="tls")]
extern "C" {
pub fn tls_config_insecure_noverifycert(config: *mut tls_config);
}
#[link(name="tls")]
extern "C" {
pub fn tls_config_verify(config: *mut tls_config);
}
#[link(name="tls")]
extern "C" {
pub fn tls_client() -> *mut tls;
}
#[link(name="tls")]
extern "C" {
pub fn tls_server() -> *mut tls;
}
#[link(name="tls")]
extern "C" {
pub fn tls_configure(ctx: *mut tls, config: *mut tls_config) -> libc::c_int;
}
#[link(name="tls")]
extern "C" {
pub fn tls_reset(ctx: *mut tls);
}
#[link(name="tls")]
extern "C" {
pub fn tls_free(ctx: *mut tls);
}
#[link(name="tls")]
extern "C" {
pub fn tls_accept_socket(ctx: *mut tls, cctx: *mut *mut tls, socket: libc::c_int) -> libc::c_int;
}
#[link(name="tls")]
extern "C" {
pub fn tls_connect(ctx: *mut tls, host: *const libc::c_char, port: *const libc::c_char) -> libc::c_int;
}
#[link(name="tls")]
extern "C" {
pub fn tls_connect_fds(ctx: *mut tls, fd_read: libc::c_int, fd_write: libc::c_int, hostname: *const libc::c_char) -> libc::c_int;
}
#[link(name="tls")]
extern "C" {
pub fn tls_connect_socket(ctx: *mut tls, s: libc::c_int, hostname: *const libc::c_char) -> libc::c_int;
}
#[link(name="tls")]
extern "C" {
pub fn tls_read(ctx: *mut tls, buf: *mut libc::c_void, buflen: libc::c_int, outlen: *mut libc::size_t) -> libc::c_int;
}
#[link(name="tls")]
extern "C" {
pub fn tls_write(ctx: *mut tls, buf: *const libc::c_void, buflen: libc::c_int, outlen: *mut libc::size_t) -> libc::c_int;
}
#[link(name="tls")]
extern "C" {
pub fn tls_close(ctx: *mut tls) -> libc::c_int;
}
#[repr(C)]
pub struct tls;
#[repr(C)]
pub struct tls_config;
pub const TLS_API: i32 = 20141031;
pub const TLS_READ_AGAIN: i32 = -2;
pub const TLS_WRITE_AGAIN: i32 = -3;