[package]
edition = "2024"
name = "wasefire-board-api"
version = "0.10.0"
authors = ["Julien Cretin <cretin@google.com>"]
build = false
include = [
"/LICENSE",
"/src/",
]
publish = true
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Wasefire board API"
readme = false
keywords = [
"embedded",
"framework",
"no-std",
]
categories = [
"embedded",
"no-std",
]
license = "Apache-2.0"
repository = "https://github.com/google/wasefire"
[package.metadata.docs.rs]
features = [
"full-api",
"std",
]
[features]
api-button = []
api-clock = []
api-crypto-aes128-ccm = ["internal-api-crypto-aead"]
api-crypto-aes256-cbc = ["internal-api-crypto-cbc"]
api-crypto-aes256-gcm = ["internal-api-crypto-aead"]
api-crypto-ed25519 = ["internal-api-crypto"]
api-crypto-hmac-sha256 = ["internal-api-crypto-hmac"]
api-crypto-hmac-sha384 = ["internal-api-crypto-hmac"]
api-crypto-p256 = ["internal-api-crypto-ecc"]
api-crypto-p256-ecdh = ["internal-api-crypto-ecdh"]
api-crypto-p256-ecdsa = ["internal-api-crypto-ecdsa"]
api-crypto-p384 = ["internal-api-crypto-ecc"]
api-crypto-p384-ecdh = ["internal-api-crypto-ecdh"]
api-crypto-p384-ecdsa = ["internal-api-crypto-ecdsa"]
api-crypto-sha256 = ["internal-api-crypto-hash"]
api-crypto-sha384 = ["internal-api-crypto-hash"]
api-fingerprint-matcher = ["internal-api-fingerprint"]
api-fingerprint-sensor = ["internal-api-fingerprint"]
api-gpio = ["bytemuck/derive"]
api-led = []
api-rng = []
api-storage = ["dep:wasefire-store"]
api-timer = []
api-uart = []
api-usb-ctap = [
"dep:usbd-hid",
"internal-api-usb",
]
api-usb-serial = [
"dep:usbd-serial",
"internal-api-usb",
]
api-vendor = []
defmt = [
"dep:defmt",
"usbd-hid?/defmt",
"wasefire-error/defmt",
"wasefire-logger/defmt",
]
full-api = [
"api-button",
"api-clock",
"api-crypto-aes128-ccm",
"api-crypto-aes256-cbc",
"api-crypto-aes256-gcm",
"api-crypto-ed25519",
"api-crypto-hmac-sha256",
"api-crypto-hmac-sha384",
"api-crypto-p256",
"api-crypto-p256-ecdh",
"api-crypto-p256-ecdsa",
"api-crypto-p384",
"api-crypto-p384-ecdh",
"api-crypto-p384-ecdsa",
"api-crypto-sha256",
"api-crypto-sha384",
"api-fingerprint-matcher",
"api-fingerprint-sensor",
"api-gpio",
"api-led",
"api-rng",
"api-storage",
"api-timer",
"api-uart",
"api-usb-ctap",
"api-usb-serial",
"api-vendor",
]
internal-api-crypto = []
internal-api-crypto-aead = [
"dep:crypto-common",
"dep:typenum",
"internal-api-crypto",
]
internal-api-crypto-cbc = [
"dep:crypto-common",
"dep:typenum",
"internal-api-crypto",
]
internal-api-crypto-ecc = [
"dep:crypto-common",
"dep:typenum",
"internal-api-crypto",
]
internal-api-crypto-ecdh = ["internal-api-crypto"]
internal-api-crypto-ecdsa = ["internal-api-crypto"]
internal-api-crypto-hash = [
"dep:crypto-common",
"dep:digest",
"dep:typenum",
"internal-api-crypto",
"internal-with-error",
]
internal-api-crypto-hmac = [
"dep:crypto-common",
"dep:digest",
"dep:typenum",
"digest?/mac",
"internal-api-crypto",
"internal-with-error",
]
internal-api-fingerprint = []
internal-api-usb = []
internal-crypto-rng = [
"api-rng",
"dep:signature",
"internal-with-error",
"signature?/rand_core",
]
internal-software-crypto = [
"software-crypto-aes128-ccm",
"software-crypto-aes256-cbc",
"software-crypto-aes256-gcm",
"software-crypto-ed25519",
"software-crypto-hmac-sha256",
"software-crypto-hmac-sha384",
"software-crypto-p256",
"software-crypto-p256-ecdh",
"software-crypto-p256-ecdsa",
"software-crypto-p384",
"software-crypto-p384-ecdh",
"software-crypto-p384-ecdsa",
"software-crypto-sha256",
"software-crypto-sha384",
]
internal-software-crypto-aead = ["dep:aead"]
internal-software-crypto-cbc = ["dep:cbc"]
internal-software-crypto-ecc = [
"dep:ecdsa",
"dep:elliptic-curve",
"dep:signature",
"ecdsa?/signing",
"ecdsa?/verifying",
]
internal-software-crypto-ecdh = [
"dep:elliptic-curve",
"elliptic-curve?/sec1",
"internal-crypto-rng",
]
internal-software-crypto-ecdsa = [
"dep:crypto-common",
"dep:ecdsa",
"dep:elliptic-curve",
"dep:signature",
"ecdsa?/signing",
"ecdsa?/verifying",
"internal-crypto-rng",
]
internal-software-crypto-hmac = ["dep:hmac"]
internal-test-software-crypto = []
internal-with-error = []
log = ["wasefire-logger/log"]
software-crypto-aes128-ccm = [
"api-crypto-aes128-ccm",
"dep:aes",
"dep:ccm",
"internal-software-crypto-aead",
]
software-crypto-aes256-cbc = [
"api-crypto-aes256-cbc",
"dep:aes",
"internal-software-crypto-cbc",
]
software-crypto-aes256-gcm = [
"aes-gcm?/aes",
"api-crypto-aes256-gcm",
"dep:aes-gcm",
"internal-software-crypto-aead",
]
software-crypto-ed25519 = [
"api-crypto-ed25519",
"dep:ed25519-dalek",
"dep:zeroize",
"ed25519-dalek?/rand_core",
"internal-crypto-rng",
]
software-crypto-hmac-sha256 = [
"api-crypto-hmac-sha256",
"api-crypto-sha256",
"internal-software-crypto-hmac",
]
software-crypto-hmac-sha384 = [
"api-crypto-hmac-sha384",
"api-crypto-sha384",
"internal-software-crypto-hmac",
]
software-crypto-p256 = [
"api-crypto-p256",
"api-crypto-sha256",
"dep:p256",
"internal-software-crypto-ecc",
"p256?/ecdsa",
]
software-crypto-p256-ecdh = [
"api-crypto-p256-ecdh",
"dep:p256",
"internal-software-crypto-ecdh",
"p256?/arithmetic",
]
software-crypto-p256-ecdsa = [
"api-crypto-p256-ecdsa",
"api-crypto-sha256",
"dep:p256",
"internal-software-crypto-ecdsa",
"p256?/ecdsa",
]
software-crypto-p384 = [
"api-crypto-p384",
"api-crypto-sha384",
"dep:p384",
"internal-software-crypto-ecc",
"p384?/ecdsa",
]
software-crypto-p384-ecdh = [
"api-crypto-p384-ecdh",
"dep:p384",
"internal-software-crypto-ecdh",
"p384?/arithmetic",
]
software-crypto-p384-ecdsa = [
"api-crypto-p384-ecdsa",
"api-crypto-sha384",
"dep:p384",
"internal-software-crypto-ecdsa",
"p384?/ecdsa",
]
software-crypto-sha256 = [
"api-crypto-sha256",
"dep:sha2",
]
software-crypto-sha384 = [
"api-crypto-sha384",
"dep:sha2",
]
std = ["wasefire-store?/std"]
[lib]
name = "wasefire_board_api"
path = "src/lib.rs"
[dependencies.aead]
version = "0.5.2"
optional = true
default-features = false
[dependencies.aes]
version = "0.8.4"
optional = true
default-features = false
[dependencies.aes-gcm]
version = "0.10.3"
optional = true
default-features = false
[dependencies.bytemuck]
version = "1.25.0"
default-features = false
[dependencies.cbc]
version = "0.1.2"
optional = true
default-features = false
[dependencies.ccm]
version = "0.5.0"
optional = true
default-features = false
[dependencies.crypto-common]
version = "0.1.7"
optional = true
default-features = false
[dependencies.data-encoding]
version = "2.10.0"
features = ["alloc"]
default-features = false
[dependencies.defmt]
version = "1.0.1"
optional = true
default-features = false
[dependencies.derive-where]
version = "1.6.0"
features = ["nightly"]
default-features = false
[dependencies.digest]
version = "0.10.7"
optional = true
default-features = false
[dependencies.ecdsa]
version = "0.16.9"
optional = true
default-features = false
[dependencies.ed25519-dalek]
version = "2.2.0"
optional = true
default-features = false
[dependencies.elliptic-curve]
version = "0.13.8"
optional = true
default-features = false
[dependencies.hmac]
version = "0.12.1"
optional = true
default-features = false
[dependencies.p256]
version = "0.13.2"
optional = true
default-features = false
[dependencies.p384]
version = "0.13.1"
optional = true
default-features = false
[dependencies.sha2]
version = "0.10.9"
optional = true
default-features = false
[dependencies.signature]
version = "2.2.0"
optional = true
default-features = false
[dependencies.typenum]
version = "1.19.0"
optional = true
default-features = false
[dependencies.usb-device]
version = "0.3.2"
default-features = false
[dependencies.usbd-hid]
version = "0.9.0"
optional = true
default-features = false
[dependencies.usbd-serial]
version = "0.2.2"
optional = true
default-features = false
[dependencies.wasefire-common]
version = "0.1.1"
[dependencies.wasefire-error]
version = "0.1.4"
[dependencies.wasefire-logger]
version = "0.2.1"
[dependencies.wasefire-protocol]
version = "0.4.0"
[dependencies.wasefire-store]
version = "0.3.2"
optional = true
[dependencies.wasefire-sync]
version = "0.1.3"
[dependencies.zeroize]
version = "1.8.2"
optional = true
default-features = false
[lints.clippy]
mod-module-files = "warn"
uninlined_format_args = "allow"
unit-arg = "allow"
[lints.rust]
missing-docs = "warn"
unreachable-pub = "warn"
unused-crate-dependencies = "warn"