[package]
name = "libthreema"
version = "0.1.0"
description = "One library to bind them all"
authors = ["Threema GmbH"]
license = "AGPL-3.0-only"
readme = "../README.md"
edition = "2021"
repository = "<Insert URL when publishing>"
keywords = ["threema", "protocol", "messenger", "communication"]
categories = ["api-bindings", "cryptography"]

[lib]
name = "libthreema"
crate-type = ["lib", "cdylib"]

[lints]
workspace = true

[dependencies]
argon2 = { version = "0.5", default-features = false, features = ["alloc"] }
aead = { version = "0.5", default-features = false }
blake2 = { version = "0.10", default-features = false, features = [
    "std",
    # "zeroize",
] }
chacha20poly1305 = { version = "0.10", default-features = false, features = [
    "alloc",
] }
cipher = "0.4"
crypto_secretbox = { version = "0.1", default-features = false, features = [
    "alloc",
    "salsa20",
] }
data-encoding = "2.6"
libthreema-macros = { path = "../macros" }
once_cell = "1"
pbkdf2 = "0.12"
prost = "0.13"
rand = "0.8"
regex = "1"
salsa20 = { version = "0.10", default-features = false, features = [
    "std",
    "zeroize",
] }
sha2 = { version = "0.10", default-features = false, features = [
    "std",
    # "zeroize",
] }
thiserror = "1"
tracing = "0.1"
x25519-dalek = { version = "2", features = [
    "reusable_secrets",
    "static_secrets",
    "zeroize",
] }
zeroize = "1"
# Bindings
tracing-subscriber = { version = "0.3", optional = true }
# Bindings: UniFFI
uniffi = { version = "0.28", optional = true }
# Bindings: WASM
getrandom = { version = "0.2", features = ["js"], optional = true }
js-sys = { version = "0.3", optional = true }
serde = { version = "1", features = ["derive"], optional = true }
serde_bytes = { version = "0.11", optional = true }
strum = { version = "0.26", features = ["derive"] }
tsify = { version = "0.4.5", features = ["js"], optional = true }
wasm-bindgen = { version = "0.2", optional = true }
web-time = { version = "1", optional = true }

[dev-dependencies]
anyhow = "1"
tracing-subscriber = "0.3"

[build-dependencies]
prost-build = "0.13"
# Bindings: UniFFI
uniffi = { version = "0.28", features = ["build"], optional = true }

[features]
uniffi = ["dep:tracing-subscriber", "dep:uniffi"]
wasm = [
    "dep:getrandom",
    "dep:js-sys",
    "dep:serde",
    "dep:serde_bytes",
    "dep:tracing-subscriber",
    "dep:tsify",
    "dep:wasm-bindgen",
    "dep:web-time",
]
