1[workspace]
2members = [
3    "connections/ukey2/ukey2",
4    "connections/ukey2/ukey2_connections",
5    "connections/ukey2/ukey2_connections/fuzz",
6    "connections/ukey2/ukey2_c_ffi",
7    "connections/ukey2/ukey2_jni",
8    "connections/ukey2/ukey2_proto",
9    "connections/ukey2/ukey2_shell",
10    "crypto/crypto_provider",
11    "crypto/crypto_provider_rustcrypto",
12    "crypto/crypto_provider_stubs",
13    "crypto/crypto_provider_test",
14    "crypto/crypto_provider_test/fuzz",
15    "crypto/crypto_provider_default",
16    "presence/array_view",
17    "presence/ldt",
18    "presence/ldt/fuzz",
19    "presence/ldt_np_adv",
20    "presence/ldt_np_adv/fuzz",
21    "presence/ldt_np_adv_ffi",
22    "presence/ldt_np_jni",
23    "presence/ldt_tbc",
24    "presence/np_adv",
25    "presence/np_adv_dynamic",
26    "presence/np_c_ffi",
27    "presence/np_ed25519",
28    "presence/np_ffi_core",
29    "presence/np_hkdf",
30    "presence/np_java_ffi",
31    "presence/rand_ext",
32    "presence/sink",
33    "presence/test_helper",
34    "presence/test_vector_hkdf",
35    "presence/xts_aes",
36    "presence/xts_aes/fuzz",
37]
38
39# TODO: remove boringssl once we figure out a better plan for integrating the build system
40exclude = [
41    "crypto/crypto_provider_boringssl",
42]
43
44[workspace.lints.rust]
45missing_docs = "deny"
46trivial_casts = "deny"
47trivial_numeric_casts = "deny"
48unsafe_code = "deny"
49unsafe_op_in_unsafe_fn = "deny"
50unused_extern_crates = "deny"
51unused_import_braces = "deny"
52unused_results = "deny"
53
54[workspace.lints.clippy]
55expect_used = "deny"
56indexing_slicing = "deny"
57panic = "deny"
58unwrap_used = "deny"
59
60[workspace.dependencies]
61# local crates
62array_ref = { path = "presence/array_ref" }
63array_view = { path = "presence/array_view" }
64crypto_provider = { path = "crypto/crypto_provider", default-features = false }
65crypto_provider_default = { path = "crypto/crypto_provider_default", default-features = false }
66crypto_provider_boringssl = { path = "crypto/crypto_provider_boringssl" }
67crypto_provider_rustcrypto = { path = "crypto/crypto_provider_rustcrypto" }
68crypto_provider_stubs = { path = "crypto/crypto_provider_stubs" }
69crypto_provider_test = { path = "crypto/crypto_provider_test" }
70rand_ext = { path = "presence/rand_ext" }
71test_helper = { path = "presence/test_helper" }
72ukey2_connections = { path = "connections/ukey2/ukey2_connections" }
73ukey2_rs = { path = "connections/ukey2/ukey2" }
74ukey2_proto = { path = "connections/ukey2/ukey2_proto" }
75np_hkdf = { path = "presence/np_hkdf" }
76xts_aes = { path = "presence/xts_aes" }
77ldt = { path = "presence/ldt" }
78ldt_np_adv = { path = "presence/ldt_np_adv" }
79ldt_tbc = { path = "presence/ldt_tbc" }
80np_adv = { path = "presence/np_adv" }
81np_adv_dynamic = { path = "presence/np_adv_dynamic" }
82np_ed25519 = { path = "presence/np_ed25519" }
83np_ffi_core = { path = "presence/np_ffi_core", default-features=false }
84np_java_ffi = { path = "presence/np_java_ffi" }
85sink = { path = "presence/sink" }
86test_vector_hkdf = { path = "presence/test_vector_hkdf" }
87
88# from utils workspace
89derive_fuzztest = { path = "../common/derive_fuzztest" }
90derive_fuzztest_macro = { path = "../common/derive_fuzztest_macro" }
91handle_map = { path = "../common/handle_map" }
92lock_adapter = { path = "../common/lock_adapter" }
93pourover = { path = "../common/pourover" }
94pourover_macro = { path = "../common/pourover_macro" }
95
96# from crates.io
97rand = { version = "0.8.5", default-features = false }
98rand_core = { version = "0.6.4", features = ["getrandom"] }
99rand_pcg = "0.3.1"
100sha2 = { version = "0.10.8", default-features = false }
101aes = "0.8.3"
102arbitrary = "1.3.2"
103cbc = { version = "0.1.2", features = ["block-padding"] }
104ctr = "0.9.2"
105hkdf = "0.12.3"
106hmac = "0.12.1"
107nom = { version = "7.1.3", default-features = false }
108ed25519-dalek = { version = "2.1.0", default-features = false }
109ed25519 = "2.2.3"
110aes-gcm = "0.10.3"
111hex = "0.4.3"
112serde = { version = "1.0.193" }
113serde_json = { version = "1.0.108", features = [
114    "alloc",
115], default-features = false }
116base64 = "0.21.5"
117x25519-dalek = { version = "2.0.0", default-features = false }
118subtle = { version = "2.5.0", default-features = false }
119rand_chacha = { version = "0.3.1", default-features = false }
120p256 = { version = "0.13.2", default-features = false }
121sec1 = "0.7.3"
122protobuf = "=3.2.0"
123protobuf-codegen = "=3.2.0"
124reqwest = { version = "0.11.22", default-features = false, features = ["blocking", "rustls-tls"] }
125jni = "0.21.1"
126lock_api = "0.4.11"
127spin = { version = "0.9.8", features = ["once", "lock_api", "rwlock"] }
128anyhow = "1.0.75"
129log = "0.4.20"
130env_logger = "0.10.1"
131criterion = { version = "0.5.1", features = ["html_reports"] }
132clap = { version = "4.4.11", features = ["derive"] }
133lazy_static = { version = "1.4.0", features = ["spin_no_std"] }
134hex-literal = "0.4.1"
135cfg-if = "1.0.0"
136blake2 = "0.10.6"
137hdrhistogram = "7.5.4"
138regex = "1.10.2"
139tokio = { version = "1.35.0", features = ["full"] }
140xts-mode = "0.5.1"
141rstest = { version = "0.18.2", default-features = false }
142rstest_reuse = "0.6.0"
143wycheproof = "0.5.1"
144chrono = { version = "0.4.31", default-features = false, features = ["clock"] }
145tempfile = "3.8.1"
146thiserror = "1.0.51"
147tinyvec = { version = "1.6.0", features = ["rustc_1_55"] }
148mlua = "0.9.2"
149strum = { version = "0.25.0", default-features = false }
150strum_macros = { version = "0.25.3", default-features = false }
151owo-colors = "3.5.0"
152rhai = { version = "1.16.3", features = ["sync"] }
153cbindgen = "0.26.0"
154syn = { version = "2.0", features = ["full"] }
155proc-macro2 = "1.0"
156quote = "1.0"
157itertools = "0.12.1"
158quickcheck = "1.0.3"
159proptest = "1.4.0"
160proptest-arbitrary-interop = { git = "https://github.com/brson/proptest-arbitrary-interop.git", branch = "incorrect-format" }
161libfuzzer-sys = "0.4.7"
162
163[workspace.package]
164version = "0.1.0"
165edition = "2021"
166publish = false
167
168[profile.test]
169# speed up test execution
170opt-level = 3
171
172[profile.bench]
173# Since xts, ldt, etc are in separate crates, use LTO to allow cross-crate inlining.
174# fat vs thin: thin compiles a lot faster, and doesn't seem any slower.
175lto = "thin"
176
177# build profile optimized for size
178[profile.release-min-size]
179inherits = "release"
180panic = "abort"
181codegen-units = 1
182lto = true
183# z optimizes for size
184opt-level = "z"
185strip = true
186
187[package]
188name = "build-scripts"
189version.workspace = true
190edition.workspace = true
191publish.workspace = true
192rust-version = "1.71.0"
193
194[dependencies]
195clap.workspace = true
196cmd_runner = { path = "../common/cmd_runner" }
197anyhow.workspace = true
198shell-escape = "0.1.5"
199owo-colors.workspace = true
200semver = "1.0.17"
201walkdir = "2.3.3"
202globset = "0.4.10"
203glob = "0.3.1"
204crossbeam = "0.8.2"
205chrono.workspace = true
206thiserror.workspace = true
207log.workspace = true
208env_logger.workspace = true
209file-header = "0.1.2"
210serde_json = { workspace = true, features = ["std"] }
211regex = "1.10.2"
212xshell = "0.2.6"
213
214[dev-dependencies]
215tempfile.workspace = true
216