[workspace]
members = ["core", "derive"]
[workspace.package]
authors = ["The Trussed developers", "Nicolas Stalder <n@stalder.io>", "Nitrokey GmbH"]
edition = "2021"
homepage = "https://trussed.dev"
license = "Apache-2.0 OR MIT"
repository = "https://github.com/trussed-dev/trussed"
[workspace.dependencies]
heapless-bytes = "0.5"
littlefs2-core = { version = "0.1", features = ["serde"] }
postcard = "0.7.0"
rand_core = "0.6"
serde = { version = "1.0", default-features = false, features = ["derive"] }
[package]
name = "trussed"
version = "0.2.0"
description = "Modern Cryptographic Firmware"
readme = "README.md"
authors.workspace = true
edition.workspace = true
homepage.workspace = true
license.workspace = true
repository.workspace = true
[dependencies]
trussed-core = "0.2.2"
bitflags = { version = "2.1" }
generic-array = { version = "0.14.4", optional = true }
hex-literal = { version = "0.4.1", optional = true }
postcard.workspace = true
rand_core.workspace = true
serde.workspace = true
zeroize = { version = "1.2", default-features = false, features = ["zeroize_derive"] }
rand_chacha = { version = "0.3.1", default-features = false }
aead = { version = "0.5", default-features = false, optional = true }
aes = { version = "0.8", default-features = false, optional = true }
aes-gcm = { version = "0.10", default-features = false, features = ["aes"], optional = true }
cbc = { version = "0.1.2", optional = true }
cipher = { version = "0.4", optional = true }
blake2 = { version = "0.10", default-features = false, optional = true }
chacha20poly1305 = { version = "0.10", default-features = false, features = ["reduced-round"], optional = true }
des = { version = "0.8", optional = true }
hmac = { version = "0.12", optional = true }
sha-1 = { version = "0.10", default-features = false, optional = true }
sha2 = { version = "0.10", default-features = false, optional = true }
cbor-smol = { version = "0.5", features = ["heapless-bytes-v0-5"], optional = true }
cosey = { version = "0.4", optional = true }
delog = "0.1.0"
flexiber = { version = "0.2.0", features = ["derive", "heapless"], optional = true }
heapless-bytes = { workspace = true, features = ["heapless-0.9"] }
interchange = "0.3.0"
littlefs2 = "0.8"
littlefs2-core = { workspace = true, features = ["heapless-bytes05"] }
p256-cortex-m4 = { version = "0.1.0-alpha.6", features = ["prehash", "sec1-signatures"], optional = true }
salty = { version = "0.3", optional = true }
p384 = { version = "0.13.0", optional = true, default-features = false, features = ["sha384", "ecdh", "ecdsa"] }
p521 = { version = "0.13.3", optional = true, default-features = false, features = ["sha512", "ecdh", "ecdsa"] }
ecdsa = { version = "0.16.9", optional = true, default-features = false }
[dev-dependencies]
chacha20 = { version = "0.9", default-features = false }
serial_test = { version = "2" }
entropy = "0.4.0"
generic-array = "0.14.4"
hex-literal = "0.4.1"
once_cell = "1.13.0"
serde_test = "1"
sha2 = { version = "0.10", default-features = false }
trussed-derive = { path = "derive" }
littlefs2 = "0.8"
[features]
default = ["all-clients", "default-mechanisms"]
serde-extensions = ["trussed-core/serde-extensions"]
std = []
verbose-tests = ["littlefs2/ll-assertions"]
verbose-lfs = ["littlefs2/ll-assertions", "littlefs2/ll-trace"]
virt = ["std", "littlefs2/alloc", "dep:generic-array"]
log-all = []
log-none = []
log-trace = []
log-debug = []
log-info = []
log-warn = []
log-error = []
default-mechanisms = [
"aes256-cbc",
"chacha8-poly1305",
"ed255",
"x255",
"hmac-sha1",
"hmac-sha256",
"p256",
"sha256",
"shared-secret",
"tdes",
"totp",
"trng",
]
aes256-cbc = ["trussed-core/aes256-cbc", "dep:aes", "dep:cbc"]
aes256-gcm = ["trussed-core/aes256-gcm", "dep:aead", "dep:aes-gcm", "dep:cipher"]
chacha8-poly1305 = ["trussed-core/chacha8-poly1305", "dep:aead", "dep:chacha20poly1305", "dep:cipher"]
ed255 = ["trussed-core/ed255", "dep:cbor-smol", "dep:cosey", "dep:salty"]
x255 = ["trussed-core/x255", "dep:salty"]
hmac-blake2s = ["trussed-core/hmac-blake2s", "dep:blake2", "dep:hmac"]
hmac-sha1 = ["trussed-core/hmac-sha1", "dep:hmac", "dep:sha-1"]
hmac-sha256 = ["trussed-core/hmac-sha256", "dep:hmac", "dep:sha2"]
hmac-sha512 = ["trussed-core/hmac-sha512", "dep:hmac", "dep:sha2"]
p256 = ["trussed-core/p256", "dep:cbor-smol", "dep:cosey", "dep:p256-cortex-m4"]
p384 = ["trussed-core/p384", "dep:p384"]
p521 = ["trussed-core/p521", "dep:p521", "dep:ecdsa"]
sha256 = ["trussed-core/sha256", "dep:sha2"]
shared-secret = ["trussed-core/shared-secret"]
tdes = ["trussed-core/tdes", "dep:des", "dep:generic-array"]
totp = ["trussed-core/totp", "dep:hmac", "dep:sha-1"]
trng = ["trussed-core/trng", "dep:sha-1"]
all-clients = [
"attestation-client",
"certificate-client",
"crypto-client",
"counter-client",
"filesystem-client",
"management-client",
"ui-client",
]
attestation-client = ["crypto-client", "ed255", "p256", "trussed-core/attestation-client", "dep:flexiber", "dep:hex-literal"]
certificate-client = ["trussed-core/certificate-client"]
crypto-client = ["trussed-core/crypto-client"]
counter-client = ["trussed-core/counter-client"]
filesystem-client = ["trussed-core/filesystem-client"]
management-client = ["trussed-core/management-client"]
ui-client = ["trussed-core/ui-client"]
test-attestation-cert-ids = []
test-increased-interchange-size = []
[[test]]
name = "aead"
required-features = ["crypto-client", "virt"]
[[test]]
name = "aes256cbc"
required-features = ["crypto-client", "default-mechanisms", "virt"]
[[test]]
name = "backends"
required-features = ["filesystem-client", "virt"]
[[test]]
name = "certificate"
required-features = ["certificate-client", "virt"]
[[test]]
name = "counter"
required-features = ["counter-client", "virt"]
[[test]]
name = "filesystem"
required-features = ["crypto-client", "default-mechanisms", "filesystem-client", "virt"]
[[test]]
name = "key_confusion"
required-features = ["crypto-client", "default-mechanisms", "hmac-blake2s", "hmac-sha512", "virt"]
[[test]]
name = "p256"
required-features = ["crypto-client", "default-mechanisms", "virt"]
[[test]]
name = "serde_extensions"
required-features = ["serde-extensions", "virt"]
[[test]]
name = "tdes"
required-features = ["crypto-client", "tdes", "virt"]
[[test]]
name = "virt"
required-features = ["filesystem-client", "management-client", "virt"]
[[test]]
name = "x255"
required-features = ["crypto-client", "default-mechanisms", "virt"]
[package.metadata.docs.rs]
all-features = true
[patch.crates-io]
trussed-core.path = "core"