xous-core/services/pddb/Cargo.toml

156 lines
5.3 KiB
TOML

[package]
name = "pddb"
version = "0.1.0"
authors = ["bunnie <bunnie@kosagi.com>"]
edition = "2018"
description = "Plausibly Deniable Database"
# Dependency versions enforced by Cargo.lock.
[dependencies]
bitflags = { version = "1" }
xous = "0.9.66"
xous-ipc = "0.10.6"
log-server = { package = "xous-api-log", version = "0.1.65" }
ticktimer-server = { package = "xous-api-ticktimer", version = "0.9.65" }
xous-names = { package = "xous-api-names", version = "0.9.67" }
susres = { package = "xous-api-susres", version = "0.9.65", optional = true }
log = "0.4.14"
num-derive = { version = "0.4.2", default-features = false }
num-traits = { version = "0.2.14", default-features = false }
rkyv = { version = "0.8.8", default-features = false, features = [
"std",
"alloc",
] }
trng = { path = "../trng", optional = true }
spinor = { path = "../spinor", optional = true }
aes = { path = "../aes" }
root-keys = { path = "../root-keys", optional = true }
keystore-api = { path = "../../libs/keystore-api" }
cipher = "0.4.2"
bitfield = "0.13.2"
aes-gcm-siv = { version = "0.11.1", default-features = false, features = [
"alloc",
"aes",
] }
# aes-gcm-siv = {git="https://github.com/RustCrypto/AEADs.git", branch="master"}
llio = { path = "../llio", optional = true }
precursor-hal = { path = "../../libs/precursor-hal", optional = true }
subtle = { version = "2.4.1", default-features = false }
tts-frontend = { path = "../tts", optional = true }
rand_core = "0.6.4"
# passwords
sha2 = { version = "0.10.8" }
digest = "0.10.7"
hkdf = "0.12.4"
zeroize = { version = "1.7.0", features = ["zeroize_derive"] }
zeroize_derive = "1.4.2"
# bcrypt
blowfish = { version = "0.9.1", features = ["bcrypt"] }
# UX (for password entry and notifications)
gam = { path = "../gam", optional = true }
ux-api = { path = "../../libs/ux-api" }
locales = { path = "../../locales" }
modals = { path = "../modals", optional = true }
utralib = { version = "0.1.25", optional = true, default-features = false }
# performance profiling
perflib = { path = "../../libs/perflib", optional = true }
# Gen-2 dependencies
keystore = { path = "../keystore", optional = true } # contains all key handlers
xous-swapper = { path = "../xous-swapper", optional = true } # contains spinor
cram-hal-service = { path = "../cram-hal-service", optional = true }
cramium-emu = { path = "../cramium-emu", optional = true, default-features = false }
cramium-hal = { path = "../../libs/cramium-hal", optional = true }
[target.'cfg(any(windows,unix))'.dependencies]
rand = "0.8.5"
rand_chacha = "0.3.1"
hex = { version = "0.4.3", default-features = false, features = [
"alloc",
], optional = true }
[features]
gen1 = [
"susres",
"trng",
"spinor",
"root-keys",
"keystore-api/gen1",
"llio",
"tts-frontend",
"gam",
"modals",
"precursor-hal",
]
gen2 = ["keystore", "keystore-api/gen2"]
# gen 1 targets
precursor = ["utralib/precursor", "sha2/precursor", "gen1"]
hosted = ["utralib/hosted", "sha2/hosted", "gen1"]
renode = ["utralib/renode", "sha2/renode", "gen1"]
# gen 2 targets
board-baosec = [
"gen2",
"xous-swapper/board-baosec",
"cram-hal-service/board-baosec",
"cramium-hal/board-baosec",
"modals/board-baosec",
"keystore/board-baosec",
] # USB form factor token
hosted-baosec = [
"gen2",
"cramium-emu",
"modals/hosted-baosec",
"cramium-hal/hosted-baosec",
] # emulated hardware on x86 platform
board-baosor = [
"gen2",
"xous-swapper/board-baosor",
"cram-hal-service/board-baosor",
"cramium-hal/board-baosor",
"keystore/board-baosor",
] # Precursor form factor
# board-dabao is not a valid target as it lacks external SPI flash
doc-deps = ["precursor-hal"]
# when selected, physical disk addresses are set to 64 bits, otherwise, they are 32 bits.
# 32 bit addressing is recommended for Precursor, as its disk is only 128MiB and it has limited RAM for bookkeeping.
u64_pa = []
# selecting mbbb employs a "make before break" update on the page table. This minimizes risk of corruption of
# the page table when being updated in the case of a power loss, in exchange for more than doubling the time it
# takes to update the page table.
mbbb = []
# selecting deterministic makes the allocation and page replacement algorithms deterministic. normally we don't want
# this but it's helpful for debugging.
deterministic = []
# this flag adds CI tests to the build
ci = []
# hosted mode manual tests
pddbtest = []
# turns on automatic basis tracking. must also be used in conjunction with pddbtest
autobasis = []
# this feature is for text-to-speech support
tts = []
# support migration type 1, from version 00.00.01.01 -> 00.00.02.01, incurs a 42kiB penalty in binary size
migration1 = []
# hazardous debug flag decorates any debug paths that might accidentally leak key material
hazardous-debug = []
test-rekey = []
# hardware tests
hwtest = []
# routines to help with performance profiling of the PDDB in hosted mode
pddb-flamegraph = ["hex"]
perfcounter = ["perflib"]
# introduce a slight delay after UX boxes swap, in case of race conditions. Shouldn't be necessary anymore, but kept around in case there's a new edge case we missed.
ux-swap-delay = []
# make the PDDB very small (4MiB). Note that booting a device with an incompatible `smalldb` setting will break the PDDB image. Use with caution.
smalldb = []
default = ["mbbb"]