[package]
name = "ockam"
version = "0.121.0"
authors = ["Ockam Developers"]
categories = [
  "cryptography",
  "asynchronous",
  "authentication",
  "network-programming",
  "embedded",
]
edition = "2021"
exclude = ["tests/**"]
homepage = "https://github.com/build-trust/ockam"
keywords = [
  "ockam",
  "crypto",
  "cryptography",
  "network-programming",
  "encryption",
]
license = "Apache-2.0"
publish = true
readme = "README.md"
repository = "https://github.com/build-trust/ockam/tree/develop/implementations/rust/ockam/ockam"
rust-version = "1.56.0"
description = "End-to-end encryption and mutual authentication for distributed applications."

[package.metadata.docs.rs]
all-features = false
rustdoc-args = ["--cfg", "docsrs"]

[features]
default = ["std", "ockam_transport_tcp", "storage"]
software_vault = ["ockam_identity/software_vault"]
storage = ["ockam_identity/storage"]
OCKAM_XX_25519_AES256_GCM_SHA256 = ["ockam_identity/OCKAM_XX_25519_AES256_GCM_SHA256"]
OCKAM_XX_25519_AES128_GCM_SHA256 = ["ockam_identity/OCKAM_XX_25519_AES128_GCM_SHA256"]
OCKAM_XX_25519_ChaChaPolyBLAKE2s = ["ockam_identity/OCKAM_XX_25519_ChaChaPolyBLAKE2s"]

# Feature (enabled by default): "std" enables functionality expected to
# be available on a standard platform.
std = [
  "alloc",
  "ockam_core/std",
  "ockam_node/std",
  "ockam_macros/std",
  "ockam_vault/std",
  "ockam_identity/std",
  "ockam_abac/std",
  "rand/default",
  "serde/std",
]

# Feature: "no_std" enables functionality required for platforms
# without the standard library, requires nightly.
no_std = [
  "ockam_core/no_std",
  "ockam_node/no_std",
  "ockam_macros/no_std",
  "ockam_vault/no_std",
  "ockam_identity/no_std",
  "ockam_abac/no_std",
]

# Feature: "alloc" enables support for heap allocation (implied by `feature = "std"`)
alloc = [
  "ockam_core/alloc",
  "ockam_node/alloc",
  "ockam_vault/alloc",
  "ockam_identity/alloc",
  "serde/alloc",
]

# Feature: "debugger" enables functionality to trace addresses and
# message flows within Ockam apps.
debugger = ["ockam_node/debugger", "ockam_core/debugger"]

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

[dependencies]
arrayref = "0.3"
dyn-clone = "1.0"
hex = { version = "0.4", default-features = false }
minicbor = { version = "0.21.1", features = ["alloc", "derive"] }
ockam_abac = { path = "../ockam_abac", version = "^0.54.0", default_features = false, optional = true }
ockam_core = { path = "../ockam_core", version = "^0.106.0", default-features = false }
ockam_identity = { path = "../ockam_identity", version = "^0.108.0", default_features = false }
ockam_macros = { path = "../ockam_macros", version = "^0.34.0", default_features = false }
ockam_node = { path = "../ockam_node", version = "^0.113.0", default-features = false }
ockam_transport_tcp = { path = "../ockam_transport_tcp", version = "^0.111.0", optional = true }
ockam_vault = { path = "../ockam_vault", version = "^0.106.0", default_features = false, optional = true }
rand = { version = "0.8", default-features = false }
serde = { version = "1.0", default-features = false, features = ["derive"] }
sha2 = { version = "0.10", default-features = false }
tracing = { version = "0.1", default-features = false }

[dev-dependencies]
ockam_vault = { path = "../ockam_vault", version = "^0.106.0" }
rand_xorshift = "0.3"
serde_json = "1.0"
trybuild = { version = "1.0", features = ["diff"] }
