[package]
name = "mbedtls"
version = "0.6.2"
authors = ["Jethro Beekman <jethro@fortanix.com>"]
build = "build.rs"
edition = "2018"
license = "Apache-2.0/GPL-2.0+"
description = """
Idiomatic Rust wrapper for MbedTLS, allowing you to use MbedTLS with only safe
code while being able to use such great Rust features like error handling and
closures.

Building on MbedTLS's focus on embedded use, this crate can be used in a no_std
environment."""
readme = "../README.md"
repository = "https://github.com/fortanix/rust-mbedtls"
documentation = "https://docs.rs/mbedtls/"
keywords = ["MbedTLS","mbed","TLS","SSL","cryptography"]

[dependencies]
bitflags = "1"
chrono = { version = "0.4", optional = true }
core_io = { version = "0.1", features = ["collections"], optional = true }
spin = { version = "0.4.0", default-features = false, optional = true }
serde = { version = "1.0.7", default-features = false }
serde_derive = "1.0.7"
byteorder = "1.0.0"
yasna = { version = "0.2", optional = true, features = ["num-bigint", "bit-vec"] }
num-bigint = { version = "0.2", optional = true }
bit-vec = { version = "0.5", optional = true }
block-modes = { version = "0.3", optional = true }
rc2 = { version = "0.3", optional = true }

[target.x86_64-fortanix-unknown-sgx.dependencies]
rs-libc = "0.1.0"

[dependencies.mbedtls-sys-auto]
version = "2.18.5"
default-features = false
features = ["custom_printf", "trusted_cert_callback"]
path = "../mbedtls-sys"

[dev-dependencies]
libc = "0.2.0"
rand = "0.4.0"
serde_cbor = "0.6"
hex = "0.3"
matches = "0.1.8"

[build-dependencies]
cc = "1.0"

[features]
# Features are documented in the README
default = ["std", "aesni", "time", "padlock", "legacy_protocols", "use_libc"]
std = ["mbedtls-sys-auto/std", "serde/std", "yasna"]
threading = []
pthread = ["threading","std","mbedtls-sys-auto/pthread"]
spin_threading = ["threading","spin","mbedtls-sys-auto/custom_threading"]
sgx = ["std", "rust_threading", "rdrand", "force_aesni_support"]
rust_threading = ["threading", "mbedtls-sys-auto/custom_threading", "std"]
force_aesni_support = ["mbedtls-sys-auto/custom_has_support","mbedtls-sys-auto/aes_alt","aesni"]
mpi_force_c_code = ["mbedtls-sys-auto/mpi_force_c_code"]
rdrand = []
use_libc = ["mbedtls-sys-auto/libc"]
custom_gmtime_r = ["mbedtls-sys-auto/custom_gmtime_r", "chrono"]
custom_time = ["mbedtls-sys-auto/custom_time", "chrono"]
aesni = ["mbedtls-sys-auto/aesni"]
zlib = ["mbedtls-sys-auto/zlib"]
time = ["mbedtls-sys-auto/time"]
padlock = ["mbedtls-sys-auto/padlock"]
legacy_protocols = ["mbedtls-sys-auto/legacy_protocols"]
dsa = ["std", "yasna", "num-bigint", "bit-vec"]
pkcs12 = ["std", "yasna"]
pkcs12_rc2 = ["pkcs12", "rc2", "block-modes"]

[[example]]
name = "client"
path = "examples/client.rs"
required-features = ["std"]

[[example]]
name = "server"
path = "examples/server.rs"
required-features = ["std"]

[[test]]
name = "client_server"
path = "tests/client_server.rs"
required-features = ["std"]

[[test]]
name = "ec"
path = "tests/ec.rs"

[[test]]
name = "pbkdf"
path = "tests/pbkdf.rs"

[[test]]
name = "mbedtls_self_tests"
path = "tests/mbedtls_self_tests.rs"

[[test]]
name = "bignum"
path = "tests/bignum.rs"

[[test]]
name = "rsa"
path = "tests/rsa.rs"

[[test]]
name = "save_restore"
path = "tests/save_restore.rs"

[[test]]
name = "ssl_conf_ca_cb"
path = "tests/ssl_conf_ca_cb.rs"
required-features = ["std"]

[[test]]
name = "ssl_conf_verify"
path = "tests/ssl_conf_verify.rs"
required-features = ["std"]
