blob: 2b1bab12533715b8259975ba84be681d19b88699 [file] [log] [blame]
[workspace]
members = [
"build_scripts",
"connections/ukey2/ukey2",
"connections/ukey2/ukey2_connections",
"connections/ukey2/ukey2_connections/fuzz",
"connections/ukey2/ukey2_c_ffi",
"connections/ukey2/ukey2_jni",
"connections/ukey2/ukey2_proto",
"connections/ukey2/ukey2_shell",
"crypto/crypto_provider",
"crypto/crypto_provider_rustcrypto",
"crypto/crypto_provider_stubs",
"crypto/crypto_provider_test",
"crypto/crypto_provider_test/fuzz",
"crypto/crypto_provider_default",
"presence/array_view",
"presence/ldt",
"presence/ldt/fuzz",
"presence/ldt_np_adv",
"presence/ldt_np_adv/fuzz",
"presence/ldt_np_adv_ffi",
"presence/ldt_np_jni",
"presence/ldt_tbc",
"presence/np_adv",
"presence/np_adv/fuzz",
"presence/np_adv_dynamic",
"presence/np_c_ffi",
"presence/np_ffi_core",
"presence/np_ffi_core/fuzz",
"presence/np_hkdf",
"presence/np_java_ffi",
"presence/rand_ext",
"presence/sink",
"presence/test_helper",
"presence/test_vector_hkdf",
"presence/xts_aes",
"presence/xts_aes/fuzz",
]
default-members = ["build_scripts"]
# TODO: remove boringssl once we figure out a better plan for integrating the build system
exclude = ["crypto/crypto_provider_boringssl"]
resolver = "2"
[workspace.lints.rust]
missing_docs = "deny"
trivial_casts = "deny"
trivial_numeric_casts = "deny"
unsafe_code = "deny"
unsafe_op_in_unsafe_fn = "deny"
unused_extern_crates = "deny"
unused_import_braces = "deny"
unused_results = "deny"
unexpected_cfgs = { level = "warn", check-cfg = [
'cfg(fuzzing)',
'cfg(rust_analyzer)',
'cfg(blaze)',
] }
[workspace.lints.clippy]
expect_used = "deny"
indexing_slicing = "deny"
panic = "deny"
unwrap_used = "deny"
[workspace.dependencies]
# local crates
array_ref = { path = "presence/array_ref" }
array_view = { path = "presence/array_view" }
ble = { path = "medium/ble" }
common = { path = "common" }
credential_proto = { path = "identity/credential_proto" }
identity_common = { path = "identity/common" }
identity_manager = { path = "identity/identity_manager" }
identity_provider = { path = "identity/identity_provider" }
keystore = { path = "identity/keystore" }
crypto_provider = { path = "crypto/crypto_provider", default-features = false }
crypto_provider_default = { path = "crypto/crypto_provider_default", default-features = false }
crypto_provider_boringssl = { path = "crypto/crypto_provider_boringssl" }
crypto_provider_rustcrypto = { path = "crypto/crypto_provider_rustcrypto" }
crypto_provider_stubs = { path = "crypto/crypto_provider_stubs" }
crypto_provider_test = { path = "crypto/crypto_provider_test" }
device_info = { path = "device_info" }
nc = { path = "connections/nc" }
rand_ext = { path = "presence/rand_ext" }
test_helper = { path = "presence/test_helper" }
ukey2_connections = { path = "connections/ukey2/ukey2_connections" }
ukey2_rs = { path = "connections/ukey2/ukey2" }
ukey2_proto = { path = "connections/ukey2/ukey2_proto" }
np_hkdf = { path = "presence/np_hkdf" }
xts_aes = { path = "presence/xts_aes" }
ldt = { path = "presence/ldt" }
ldt_np_adv = { path = "presence/ldt_np_adv" }
ldt_tbc = { path = "presence/ldt_tbc" }
np_adv = { path = "presence/np_adv" }
np_adv_dynamic = { path = "presence/np_adv_dynamic" }
np_ffi_core = { path = "presence/np_ffi_core", default-features = false }
np_ffi_core_fuzz = { path = "presence/np_ffi_core/fuzz" }
np_java_ffi = { path = "presence/np_java_ffi" }
sink = { path = "presence/sink" }
test_vector_hkdf = { path = "presence/test_vector_hkdf" }
# from utils workspace
handle_map = { path = "../common/handle_map" }
lock_adapter = { path = "../common/lock_adapter" }
pourover = { path = "../common/pourover" }
pourover_macro = { path = "../common/pourover_macro" }
storage = { path = "../common/storage", default-features = false }
#phenotype flags
flagging = { path = "../common/flagging" }
ph_flag_source = { path = "../common/1p_internal/ph_flag_source", default-features = false }
ph_client = { path = "../common/1p_internal/ph_client" }
# from crates.io
rand = { version = "0.8.5", default-features = false }
rand_core = { version = "0.6.4", features = ["getrandom"] }
rand_pcg = "0.3.1"
sha2 = { version = "0.10.8", default-features = false }
aes = "0.8.3"
arbitrary = { version = "1.3.2", features = ["derive"] }
cbc = { version = "0.1.2", features = ["block-padding"] }
ctr = "0.9.2"
hkdf = "0.12.3"
hmac = "0.12.1"
nom = { version = "7.1.3", default-features = false }
ed25519-dalek = { version = "2.1.0", default-features = false }
ed25519 = "2.2.3"
aes-gcm = "0.10.3"
hex = "0.4.3"
serde = { version = "1.0.193" }
serde_json = { version = "1.0.108", features = [
"alloc",
], default-features = false }
base64 = "0.22.1"
x25519-dalek = { version = "2.0.0", default-features = false }
subtle = { version = "2.5.0", default-features = false }
rand_chacha = { version = "0.3.1", default-features = false }
p256 = { version = "0.13.2", default-features = false }
sec1 = "0.7.3"
protobuf = "=3.7.2"
protobuf-codegen = "=3.7.2"
reqwest = { version = "0.11.22", default-features = false, features = [
"blocking",
"rustls-tls",
] }
jni = "0.21.1"
lock_api = "0.4.11"
spin = { version = "0.9.8", features = ["once", "lock_api", "rwlock"] }
anyhow = "1.0.75"
log = "0.4.20"
env_logger = "0.11.7"
oslog = "0.2.0"
criterion = { version = "0.5.1", features = ["html_reports"] }
clap = { version = "4.5.13", features = ["derive"] }
lazy_static = { version = "1.4.0", features = ["spin_no_std"] }
hex-literal = "0.4.1"
cfg-if = "1.0.0"
blake2 = "0.10.6"
hashbrown = "0.15"
hdrhistogram = "7.5.4"
regex = "1.10.2"
tokio = { version = "1.35.0", features = [
"macros",
"rt",
"sync",
"test-util",
"time",
] }
tokio-stream = { version = "0.1.17" }
xts-mode = "0.5.1"
rstest = { version = "0.18.2", default-features = false }
rstest_reuse = "0.6.0"
wycheproof = "0.5.1"
chrono = { version = "0.4.31", default-features = false, features = ["clock"] }
tempfile = "3.8.1"
thiserror = { version = "2.0.4", default-features = false }
tinyvec = { version = "1.6.0", features = ["rustc_1_55"] }
mlua = "0.9.2"
strum = { version = "0.27.1", default-features = false }
strum_macros = { version = "0.27.1", default-features = false }
owo-colors = "3.5.0"
rhai = { version = "1.20.0", features = ["sync"] }
cbindgen = "0.27.0"
syn = { version = "2.0", features = ["full"] }
proc-macro2 = "1.0"
quote = "1.0"
byteorder = "1.5.0"
itertools = { version = "0.13.0", default-features = false }
quickcheck = "1.0.3"
proptest = "1.4.0"
proptest-arbitrary-interop = { git = "https://github.com/brson/proptest-arbitrary-interop.git", branch = "incorrect-format" }
libfuzzer-sys = "0.4.7"
derive_fuzztest = "0.1.4"
derive_fuzztest_macro = "0.1.4"
async-trait = "0.1.83"
directories = "5.0.1"
uuid = { version = "1.11.0", features = ["v4"] }
mockall = "0.13.1"
uniffi = "0.29.3"
async-stream = "0.3.6"
prost = "0.14.1"
ascii85 = "0.2.1"
futures = "0.3.31"
windows = { version = "0.61.1", features = [
"Devices_Bluetooth",
"Devices_Bluetooth_Advertisement",
"Devices_Radios",
"Foundation",
"Foundation_Collections",
"Storage_Streams",
"Win32_UI_WindowsAndMessaging",
"Win32_Graphics_Gdi",
"Win32_Foundation",
"Win32_System_LibraryLoader",
"Win32_System_RemoteDesktop",
] }
windows-core = "0.61.0"
dispatch2 = { version = "0.3.0" }
objc2 = { version = "0.6.1" }
objc2-foundation = { version = "0.3.1", features = [
"NSArray",
"NSData",
"NSDictionary",
"NSEnumerator",
"NSError",
"NSObject",
"NSString",
"NSUUID",
"NSValue",
] }
objc2-core-bluetooth = { version = "0.3.1" }
[workspace.package]
version = "0.1.0"
edition = "2021"
publish = false
license = "Apache-2.0"
[profile.test]
# speed up test execution
opt-level = 3
[profile.bench]
# Since xts, ldt, etc are in separate crates, use LTO to allow cross-crate inlining.
# fat vs thin: thin compiles a lot faster, and doesn't seem any slower.
lto = "thin"
# build profile optimized for size
[profile.release-min-size]
inherits = "release"
panic = "abort"
codegen-units = 1
lto = true
# z optimizes for size
opt-level = "z"
strip = true