Project import generated by Copybara.
GitOrigin-RevId: 0c53f1d725822b1f8949cc807bc623fb08f95067
Change-Id: I2dbf880260b27600821ec6ddc69106a7bb11e7e3
diff --git a/nearby/Cargo.lock b/nearby/Cargo.lock
index 4730df4..637c67d 100644
--- a/nearby/Cargo.lock
+++ b/nearby/Cargo.lock
@@ -122,6 +122,12 @@
checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a"
[[package]]
+name = "base64ct"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
+
+[[package]]
name = "bitflags"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -133,16 +139,7 @@
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe"
dependencies = [
- "digest 0.10.6",
-]
-
-[[package]]
-name = "block-buffer"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
-dependencies = [
- "generic-array",
+ "digest",
]
[[package]]
@@ -454,17 +451,16 @@
name = "crypto_provider"
version = "0.1.0"
dependencies = [
- "bytes",
"criterion",
"crypto_provider_openssl",
"crypto_provider_rustcrypto",
"hex",
"hex-literal",
- "rand 0.8.5",
+ "rand",
"rand_ext",
"rstest",
"rstest_reuse",
- "sha2 0.10.6",
+ "sha2",
"test_helper",
"wycheproof",
]
@@ -498,11 +494,11 @@
"hkdf",
"hmac",
"p256",
- "rand 0.8.5",
- "rand_chacha 0.3.1",
+ "rand",
+ "rand_chacha",
"rand_core 0.6.4",
"sec1",
- "sha2 0.10.6",
+ "sha2",
"subtle",
"x25519-dalek",
]
@@ -518,13 +514,15 @@
[[package]]
name = "curve25519-dalek"
-version = "3.2.0"
+version = "4.0.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61"
+checksum = "03d928d978dbec61a1167414f5ec534f24bea0d7a0d24dd9b6233d3d8223e585"
dependencies = [
- "byteorder",
- "digest 0.9.0",
- "rand_core 0.5.1",
+ "cfg-if",
+ "digest",
+ "fiat-crypto",
+ "packed_simd_2",
+ "platforms",
"subtle",
"zeroize",
]
@@ -539,6 +537,16 @@
]
[[package]]
+name = "der"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82b10af9f9f9f2134a42d3f8aa74658660f2e0234b0eb81bd171df8aa32779ed"
+dependencies = [
+ "const-oid",
+ "zeroize",
+]
+
+[[package]]
name = "derive-getters"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -557,45 +565,36 @@
[[package]]
name = "digest"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
-dependencies = [
- "generic-array",
-]
-
-[[package]]
-name = "digest"
version = "0.10.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f"
dependencies = [
- "block-buffer 0.10.4",
+ "block-buffer",
"crypto-common",
"subtle",
]
[[package]]
name = "ed25519"
-version = "1.5.3"
+version = "2.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7"
+checksum = "5fb04eee5d9d907f29e80ee6b0e78f7e2c82342c63e3580d8c4f69d9d5aad963"
dependencies = [
+ "pkcs8",
"signature",
]
[[package]]
name = "ed25519-dalek"
-version = "1.0.1"
+version = "2.0.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d"
+checksum = "798f704d128510932661a3489b08e3f4c934a01d61c5def59ae7b8e48f19665a"
dependencies = [
"curve25519-dalek",
"ed25519",
- "rand 0.7.3",
- "rand_core 0.5.1",
+ "rand_core 0.6.4",
"serde",
- "sha2 0.9.9",
+ "sha2",
"zeroize",
]
@@ -613,8 +612,8 @@
dependencies = [
"base16ct",
"crypto-bigint",
- "der",
- "digest 0.10.6",
+ "der 0.6.1",
+ "digest",
"ff",
"generic-array",
"group",
@@ -666,6 +665,12 @@
]
[[package]]
+name = "fiat-crypto"
+version = "0.1.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e825f6987101665dea6ec934c09ec6d721de7bc1bf92248e1d5810c8cd636b77"
+
+[[package]]
name = "flate2"
version = "1.0.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -797,24 +802,13 @@
[[package]]
name = "getrandom"
-version = "0.1.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
-dependencies = [
- "cfg-if",
- "libc",
- "wasi 0.9.0+wasi-snapshot-preview1",
-]
-
-[[package]]
-name = "getrandom"
version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
dependencies = [
"cfg-if",
"libc",
- "wasi 0.11.0+wasi-snapshot-preview1",
+ "wasi",
]
[[package]]
@@ -911,7 +905,7 @@
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
dependencies = [
- "digest 0.10.6",
+ "digest",
]
[[package]]
@@ -1037,11 +1031,11 @@
"hdrhistogram",
"hex",
"ldt_tbc",
- "rand 0.8.5",
+ "rand",
"rand_ext",
"rand_pcg",
"serde_json",
- "sha2 0.10.6",
+ "sha2",
"subtle",
"test_helper",
"xts_aes",
@@ -1062,7 +1056,7 @@
"ldt",
"ldt_tbc",
"np_hkdf",
- "rand 0.8.5",
+ "rand",
"rand_ext",
"rand_pcg",
"serde_json",
@@ -1074,7 +1068,7 @@
name = "ldt_tbc"
version = "0.1.0"
dependencies = [
- "rand 0.8.5",
+ "crypto_provider",
]
[[package]]
@@ -1084,6 +1078,12 @@
checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
[[package]]
+name = "libm"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a"
+
+[[package]]
name = "linux-raw-sys"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1158,7 +1158,7 @@
"crypto_provider_rustcrypto",
"hex",
"ldt",
- "rand 0.8.5",
+ "rand",
"rand_ext",
"serde_json",
"test_helper",
@@ -1303,6 +1303,16 @@
]
[[package]]
+name = "packed_simd_2"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1914cd452d8fccd6f9db48147b29fd4ae05bea9dc5d9ad578509f72415de282"
+dependencies = [
+ "cfg-if",
+ "libm",
+]
+
+[[package]]
name = "pin-project-lite"
version = "0.2.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1315,12 +1325,28 @@
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
[[package]]
+name = "pkcs8"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
+dependencies = [
+ "der 0.7.3",
+ "spki",
+]
+
+[[package]]
name = "pkg-config"
version = "0.3.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
[[package]]
+name = "platforms"
+version = "3.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3d7ddaed09e0eb771a79ab0fd64609ba0afb0a8366421957936ad14cbd13630"
+
+[[package]]
name = "plotters"
version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1470,40 +1496,17 @@
[[package]]
name = "rand"
-version = "0.7.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
-dependencies = [
- "getrandom 0.1.16",
- "libc",
- "rand_chacha 0.2.2",
- "rand_core 0.5.1",
- "rand_hc",
-]
-
-[[package]]
-name = "rand"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
dependencies = [
"libc",
- "rand_chacha 0.3.1",
+ "rand_chacha",
"rand_core 0.6.4",
]
[[package]]
name = "rand_chacha"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
-dependencies = [
- "ppv-lite86",
- "rand_core 0.5.1",
-]
-
-[[package]]
-name = "rand_chacha"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
@@ -1517,9 +1520,6 @@
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
-dependencies = [
- "getrandom 0.1.16",
-]
[[package]]
name = "rand_core"
@@ -1527,14 +1527,14 @@
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
dependencies = [
- "getrandom 0.2.8",
+ "getrandom",
]
[[package]]
name = "rand_core_05_adapter"
version = "0.1.0"
dependencies = [
- "rand 0.8.5",
+ "rand",
"rand_core 0.5.1",
]
@@ -1542,21 +1542,13 @@
name = "rand_ext"
version = "0.1.0"
dependencies = [
+ "crypto_provider",
"log",
- "rand 0.8.5",
+ "rand",
"rand_pcg",
]
[[package]]
-name = "rand_hc"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
-dependencies = [
- "rand_core 0.5.1",
-]
-
-[[package]]
name = "rand_pcg"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1646,7 +1638,7 @@
checksum = "45f80dcc84beab3a327bbe161f77db25f336a1452428176787c8c79ac79d7073"
dependencies = [
"quote",
- "rand 0.8.5",
+ "rand",
"rustc_version",
"syn 1.0.109",
]
@@ -1702,7 +1694,7 @@
checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928"
dependencies = [
"base16ct",
- "der",
+ "der 0.6.1",
"generic-array",
"subtle",
"zeroize",
@@ -1747,33 +1739,20 @@
[[package]]
name = "sha2"
-version = "0.9.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800"
-dependencies = [
- "block-buffer 0.9.0",
- "cfg-if",
- "cpufeatures",
- "digest 0.9.0",
- "opaque-debug",
-]
-
-[[package]]
-name = "sha2"
version = "0.10.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0"
dependencies = [
"cfg-if",
"cpufeatures",
- "digest 0.10.6",
+ "digest",
]
[[package]]
name = "signature"
-version = "1.6.4"
+version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c"
+checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500"
[[package]]
name = "slab"
@@ -1800,6 +1779,16 @@
]
[[package]]
+name = "spki"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37a5be806ab6f127c3da44b7378837ebf01dadca8510a0e572460216b228bd0e"
+dependencies = [
+ "base64ct",
+ "der 0.7.3",
+]
+
+[[package]]
name = "strsim"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1914,8 +1903,8 @@
"crypto_provider_rustcrypto",
"lazy_static",
"log",
- "rand 0.8.5",
- "rand_chacha 0.3.1",
+ "rand",
+ "rand_chacha",
"spin 0.9.8",
"ukey2_connections",
"ukey2_rs",
@@ -1930,7 +1919,7 @@
"crypto_provider_openssl",
"crypto_provider_rustcrypto",
"nom",
- "rand 0.8.5",
+ "rand",
"rstest",
"ukey2_proto",
"ukey2_rs",
@@ -1946,8 +1935,8 @@
"jni",
"lazy_static",
"log",
- "rand 0.8.5",
- "rand_chacha 0.3.1",
+ "rand",
+ "rand_chacha",
"spin 0.9.8",
"ukey2_connections",
"ukey2_rs",
@@ -1972,9 +1961,9 @@
"derive-getters",
"log",
"num-bigint",
- "rand 0.8.5",
+ "rand",
"rstest",
- "sha2 0.10.6",
+ "sha2",
"ukey2_proto",
]
@@ -2028,12 +2017,6 @@
[[package]]
name = "wasi"
-version = "0.9.0+wasi-snapshot-preview1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
-
-[[package]]
-name = "wasi"
version = "0.11.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
@@ -2239,13 +2222,12 @@
[[package]]
name = "x25519-dalek"
-version = "2.0.0-pre.1"
+version = "2.0.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5da623d8af10a62342bcbbb230e33e58a63255a58012f8653c578e54bab48df"
+checksum = "fabd6e16dd08033932fc3265ad4510cc2eab24656058a6dcb107ffe274abcc95"
dependencies = [
"curve25519-dalek",
"rand_core 0.6.4",
- "zeroize",
]
[[package]]
@@ -2270,7 +2252,7 @@
"crypto_provider_rustcrypto",
"hex",
"ldt_tbc",
- "rand 0.8.5",
+ "rand",
"rand_ext",
"rand_pcg",
"regex",
@@ -2283,17 +2265,3 @@
version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9"
-dependencies = [
- "zeroize_derive",
-]
-
-[[package]]
-name = "zeroize_derive"
-version = "1.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25588073e5216b50bca71d61cb8595cdb9745e87032a58c199730def2862c934"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.10",
-]
diff --git a/nearby/Cargo.toml b/nearby/Cargo.toml
index a5570a8..a2b9f93 100644
--- a/nearby/Cargo.toml
+++ b/nearby/Cargo.toml
@@ -50,13 +50,13 @@
ctr = "0.9.1"
hkdf = "0.12.3"
hmac = "0.12.1"
-ed25519-dalek = { version = "1.0.1", default-features = false }
+ed25519-dalek = { version = "2.0.0-rc.2", default-features = false }
ed25519 = "1.5.3"
aes-gcm = "0.10.1"
hex = "0.4.3"
serde_json = { version = "1.0.91", features = ["alloc"], default-features = false }
base64 = "0.21.0"
-x25519-dalek = { version = "2.0.0-pre.1", features = ["u64_backend"], default-features = false }
+x25519-dalek = { version = "2.0.0-rc.2", default-features = false }
subtle = { version = "2.4.1", default-features = false }
rand_chacha = { version = "0.3.1", default-features = false }
p256 = { version = "0.12.0", default-features = false }
diff --git a/nearby/connections/ukey2/ukey2_connections/fuzz/Cargo.lock b/nearby/connections/ukey2/ukey2_connections/fuzz/Cargo.lock
index 8f42dbe..8320405 100644
--- a/nearby/connections/ukey2/ukey2_connections/fuzz/Cargo.lock
+++ b/nearby/connections/ukey2/ukey2_connections/fuzz/Cargo.lock
@@ -71,9 +71,9 @@
[[package]]
name = "base16ct"
-version = "0.2.0"
+version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
+checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce"
[[package]]
name = "bitflags"
@@ -156,9 +156,9 @@
[[package]]
name = "crypto-bigint"
-version = "0.5.1"
+version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c2538c4e68e52548bacb3e83ac549f903d44f011ac9d5abb5e132e67d0808f7"
+checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef"
dependencies = [
"generic-array",
"rand_core",
@@ -180,9 +180,6 @@
[[package]]
name = "crypto_provider"
version = "0.1.0"
-dependencies = [
- "bytes",
-]
[[package]]
name = "crypto_provider_rustcrypto"
@@ -233,12 +230,11 @@
[[package]]
name = "der"
-version = "0.7.1"
+version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc906908ea6458456e5eaa160a9c08543ec3d1e6f71e2235cedd660cb65f9df0"
+checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de"
dependencies = [
"const-oid",
- "zeroize",
]
[[package]]
@@ -303,12 +299,13 @@
[[package]]
name = "elliptic-curve"
-version = "0.13.2"
+version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ea5a92946e8614bb585254898bb7dd1ddad241ace60c52149e3765e34cc039d"
+checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3"
dependencies = [
"base16ct",
"crypto-bigint",
+ "der",
"digest",
"ff",
"generic-array",
@@ -352,9 +349,9 @@
[[package]]
name = "ff"
-version = "0.13.0"
+version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
+checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160"
dependencies = [
"rand_core",
"subtle",
@@ -374,7 +371,6 @@
dependencies = [
"typenum",
"version_check",
- "zeroize",
]
[[package]]
@@ -390,9 +386,9 @@
[[package]]
name = "group"
-version = "0.13.0"
+version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
+checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7"
dependencies = [
"ff",
"rand_core",
@@ -582,9 +578,9 @@
[[package]]
name = "p256"
-version = "0.13.0"
+version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7270da3e5caa82afd3deb054cc237905853813aea3859544bc082c3fe55b8d47"
+checksum = "49c124b3cbce43bcbac68c58ec181d98ed6cc7e6d0aa7c3ba97b2563410b0e55"
dependencies = [
"elliptic-curve",
"primeorder",
@@ -626,9 +622,9 @@
[[package]]
name = "primeorder"
-version = "0.13.0"
+version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7613fdcc0831c10060fa69833ea8fa2caa94b6456f51e25356a885b530a2e3d0"
+checksum = "0b54f7131b3dba65a2f414cf5bd25b66d4682e4608610668eae785750ba4c5b2"
dependencies = [
"elliptic-curve",
]
@@ -774,9 +770,9 @@
[[package]]
name = "sec1"
-version = "0.7.1"
+version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48518a2b5775ba8ca5b46596aae011caa431e6ce7e4a67ead66d92f08884220e"
+checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928"
dependencies = [
"base16ct",
"der",
diff --git a/nearby/crypto/crypto_provider/Cargo.toml b/nearby/crypto/crypto_provider/Cargo.toml
index 9923bfc..69f7572 100644
--- a/nearby/crypto/crypto_provider/Cargo.toml
+++ b/nearby/crypto/crypto_provider/Cargo.toml
@@ -12,7 +12,6 @@
wycheproof = { version = "0.4.0", optional = true }
hex = { workspace = true, optional = true }
test_helper = { workspace = true, optional = true }
-bytes = { version = "1.4.0", default-features = false }
[dev-dependencies]
crypto_provider_openssl.workspace = true
diff --git a/nearby/crypto/crypto_provider/benches/hmac_bench.rs b/nearby/crypto/crypto_provider/benches/hmac_bench.rs
index 63b09e6..c7ccf1a 100644
--- a/nearby/crypto/crypto_provider/benches/hmac_bench.rs
+++ b/nearby/crypto/crypto_provider/benches/hmac_bench.rs
@@ -15,17 +15,16 @@
use criterion::{criterion_group, criterion_main, Criterion};
use crypto_provider::hmac::Hmac;
-use crypto_provider::CryptoProvider;
+use crypto_provider::{CryptoProvider, CryptoRng};
use crypto_provider_openssl::Openssl;
use crypto_provider_rustcrypto::RustCrypto;
-
-use rand::{Rng, SeedableRng};
+use rand_ext::random_bytes;
// simple benchmark, which creates a new hmac, updates once, then finalizes
fn hmac_sha256_operations<C: CryptoProvider>(c: &mut Criterion) {
- let mut rng = rand::rngs::StdRng::from_entropy();
- let key: [u8; 32] = rand_ext::random_bytes(&mut rng);
- let update_data: [u8; 16] = rand_ext::random_bytes(&mut rng);
+ let mut rng = C::CryptoRng::new();
+ let key: [u8; 32] = rand_ext::random_bytes::<32, C>(&mut rng);
+ let update_data: [u8; 16] = rand_ext::random_bytes::<16, C>(&mut rng);
c.bench_function("bench for hmac sha256 single update", |b| {
b.iter(|| {
@@ -37,9 +36,9 @@
}
fn hmac_sha512_operations<C: CryptoProvider>(c: &mut Criterion) {
- let mut rng = rand::rngs::StdRng::from_entropy();
- let key: [u8; 64] = rand_ext::random_bytes(&mut rng);
- let update_data: [u8; 16] = rng.gen();
+ let mut rng = C::CryptoRng::new();
+ let key: [u8; 64] = rand_ext::random_bytes::<64, C>(&mut rng);
+ let update_data: [u8; 16] = random_bytes::<16, C>(&mut rng);
c.bench_function("bench for hmac sha512 single update", |b| {
b.iter(|| {
diff --git a/nearby/crypto/crypto_provider/src/aes/gcm_siv.rs b/nearby/crypto/crypto_provider/src/aes/gcm_siv.rs
index 4352ee8..2d683b2 100644
--- a/nearby/crypto/crypto_provider/src/aes/gcm_siv.rs
+++ b/nearby/crypto/crypto_provider/src/aes/gcm_siv.rs
@@ -13,10 +13,10 @@
// limitations under the License.
//! Traits for AES-GCM-SIV.
-pub use bytes;
-use bytes::BytesMut;
use super::AesKey;
+extern crate alloc;
+use alloc::vec::Vec;
/// An enum for indicating issues with the GCM-SIV encryption/decryption operations.
pub enum GcmSivError {
@@ -40,11 +40,11 @@
/// Encrypt the data in place with a nonce to make sure each ciphertext is unique.
/// This will need 16 bytes reserved in the data array for the tag.
/// Optionally, additional associated data can be passed in for computation of the cryptographic tag.
- fn encrypt(&self, data: &mut BytesMut, aad: &[u8], nonce: &[u8]) -> Result<(), GcmSivError>;
+ fn encrypt(&self, data: &mut Vec<u8>, aad: &[u8], nonce: &[u8]) -> Result<(), GcmSivError>;
/// Decrypt the ciphertext concatenated with its tag in place with the nonce used for encryption.
/// If associated data was passed in when creating the ciphertext, it should be passed in here as well
/// in order to properly decrypt the message.
- fn decrypt(&self, data: &mut BytesMut, aad: &[u8], nonce: &[u8]) -> Result<(), GcmSivError>;
+ fn decrypt(&self, data: &mut Vec<u8>, aad: &[u8], nonce: &[u8]) -> Result<(), GcmSivError>;
}
/// Module for testing implementations of this crate.
@@ -52,9 +52,9 @@
pub mod testing {
extern crate alloc;
+ use alloc::vec::Vec;
use core::marker;
- use bytes::BytesMut;
use hex_literal::hex;
use rstest_reuse::template;
@@ -71,7 +71,7 @@
let nonce = hex!("030000000000000000000000");
let aes = A::new(&test_key.into());
let msg = hex!("");
- let mut buf = BytesMut::from(msg.as_slice());
+ let mut buf = Vec::from(msg.as_slice());
let tag = hex!("dc20e2d83f25705bb49e439eca56de25");
assert!(aes.encrypt(&mut buf, b"", &nonce).is_ok());
assert_eq!(&buf[..], &tag);
@@ -79,7 +79,7 @@
let msg = hex!("0100000000000000");
let ct = hex!("b5d839330ac7b786");
let tag = hex!("578782fff6013b815b287c22493a364c");
- let mut buf = BytesMut::from(msg.as_slice());
+ let mut buf = Vec::from(msg.as_slice());
assert!(aes.encrypt(&mut buf, b"", &nonce).is_ok());
assert_eq!(&buf[..8], &ct);
assert_eq!(&buf[8..], &tag);
@@ -95,7 +95,7 @@
let nonce = hex!("030000000000000000000000");
let aes = A::new(&test_key.into());
let msg = hex!("0100000000000000");
- let mut buf = BytesMut::new();
+ let mut buf = Vec::new();
buf.extend_from_slice(&msg);
let ct = hex!("c2ef328e5c71c83b");
let tag = hex!("843122130f7364b761e0b97427e3df28");
@@ -108,7 +108,7 @@
let msg = hex!("010000000000000000000000");
let ct = hex!("9aab2aeb3faa0a34aea8e2b1");
let tag = hex!("8ca50da9ae6559e48fd10f6e5c9ca17e");
- let mut buf = BytesMut::from(msg.as_slice());
+ let mut buf = Vec::from(msg.as_slice());
assert!(aes.encrypt(&mut buf, b"", &nonce).is_ok());
assert_eq!(&buf[..12], &ct);
assert_eq!(&buf[12..], &tag);
diff --git a/nearby/crypto/crypto_provider/src/lib.rs b/nearby/crypto/crypto_provider/src/lib.rs
index a61370c..bc6d4d2 100644
--- a/nearby/crypto/crypto_provider/src/lib.rs
+++ b/nearby/crypto/crypto_provider/src/lib.rs
@@ -87,8 +87,18 @@
/// Returns an instance of the rng
fn new() -> Self;
- ///Return the next random u64
+ /// Return the next random u64
fn next_u64(&mut self) -> u64;
+
+ /// Fill dest with random data
+ fn fill(&mut self, dest: &mut [u8]);
+
+ /// Generate a random byte
+ fn gen<U8>(&mut self) -> u8 {
+ let mut arr = [0u8; 1];
+ self.fill(&mut arr);
+ arr[0]
+ }
}
/// If impls want to opt out of passing a Rng they can simply use `()` for the Rng associated type
@@ -98,6 +108,10 @@
fn next_u64(&mut self) -> u64 {
unimplemented!()
}
+
+ fn fill(&mut self, _dest: &mut [u8]) {
+ unimplemented!()
+ }
}
use crate::aes::{Aes128Key, Aes256Key};
diff --git a/nearby/crypto/crypto_provider_boringssl/Cargo.lock b/nearby/crypto/crypto_provider_boringssl/Cargo.lock
index c668bbf..4a8327d 100644
--- a/nearby/crypto/crypto_provider_boringssl/Cargo.lock
+++ b/nearby/crypto/crypto_provider_boringssl/Cargo.lock
@@ -26,12 +26,6 @@
version = "0.1.0"
[[package]]
-name = "bytes"
-version = "1.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
-
-[[package]]
name = "cfg-if"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -41,7 +35,6 @@
name = "crypto_provider"
version = "0.1.0"
dependencies = [
- "bytes",
"hex",
"hex-literal",
"rand",
diff --git a/nearby/crypto/crypto_provider_boringssl/src/lib.rs b/nearby/crypto/crypto_provider_boringssl/src/lib.rs
index a7e78d0..c8c466d 100644
--- a/nearby/crypto/crypto_provider_boringssl/src/lib.rs
+++ b/nearby/crypto/crypto_provider_boringssl/src/lib.rs
@@ -24,6 +24,7 @@
//! Crate which provides impls for CryptoProvider backed by BoringSSL.
use bssl_crypto::digest::{Sha256, Sha512};
+use bssl_crypto::rand::rand_bytes;
use crypto_provider::{CryptoProvider, CryptoRng};
use crypto_provider_stubs::*;
@@ -72,7 +73,11 @@
fn next_u64(&mut self) -> u64 {
let mut buf = [0; 8];
- bssl_crypto::rand::rand_bytes(&mut buf);
+ rand_bytes(&mut buf);
u64::from_be_bytes(buf)
}
+
+ fn fill(&mut self, dest: &mut [u8]) {
+ rand_bytes(dest)
+ }
}
diff --git a/nearby/crypto/crypto_provider_openssl/src/lib.rs b/nearby/crypto/crypto_provider_openssl/src/lib.rs
index 8da3cb6..8930199 100644
--- a/nearby/crypto/crypto_provider_openssl/src/lib.rs
+++ b/nearby/crypto/crypto_provider_openssl/src/lib.rs
@@ -99,6 +99,10 @@
rand_bytes(&mut buf).unwrap();
u64::from_be_bytes(buf)
}
+
+ fn fill(&mut self, dest: &mut [u8]) {
+ rand_bytes(dest).expect("Error in generating random bytes")
+ }
}
#[cfg(test)]
diff --git a/nearby/crypto/crypto_provider_rustcrypto/src/aes/gcm_siv.rs b/nearby/crypto/crypto_provider_rustcrypto/src/aes/gcm_siv.rs
index d5c655b..98eca08 100644
--- a/nearby/crypto/crypto_provider_rustcrypto/src/aes/gcm_siv.rs
+++ b/nearby/crypto/crypto_provider_rustcrypto/src/aes/gcm_siv.rs
@@ -13,8 +13,10 @@
// limitations under the License.
use aes_gcm_siv::{AeadInPlace, Aes128GcmSiv, Aes256GcmSiv, KeyInit, Nonce};
+extern crate alloc;
+use alloc::vec::Vec;
-use crypto_provider::aes::gcm_siv::{bytes, GcmSivError};
+use crypto_provider::aes::gcm_siv::GcmSivError;
use crypto_provider::aes::{Aes128Key, Aes256Key, AesKey};
pub struct AesGcmSiv128(Aes128GcmSiv);
@@ -26,23 +28,13 @@
Self(Aes128GcmSiv::new(key.as_slice().into()))
}
- fn encrypt(
- &self,
- data: &mut bytes::BytesMut,
- aad: &[u8],
- nonce: &[u8],
- ) -> Result<(), GcmSivError> {
+ fn encrypt(&self, data: &mut Vec<u8>, aad: &[u8], nonce: &[u8]) -> Result<(), GcmSivError> {
self.0
.encrypt_in_place(Nonce::from_slice(nonce), aad, data)
.map_err(|_| GcmSivError::EncryptOutBufferTooSmall)
}
- fn decrypt(
- &self,
- data: &mut bytes::BytesMut,
- aad: &[u8],
- nonce: &[u8],
- ) -> Result<(), GcmSivError> {
+ fn decrypt(&self, data: &mut Vec<u8>, aad: &[u8], nonce: &[u8]) -> Result<(), GcmSivError> {
self.0
.decrypt_in_place(Nonce::from_slice(nonce), aad, data)
.map_err(|_| GcmSivError::DecryptTagDoesNotMatch)
@@ -58,23 +50,13 @@
Self(Aes256GcmSiv::new(key.as_slice().into()))
}
- fn encrypt(
- &self,
- data: &mut bytes::BytesMut,
- aad: &[u8],
- nonce: &[u8],
- ) -> Result<(), GcmSivError> {
+ fn encrypt(&self, data: &mut Vec<u8>, aad: &[u8], nonce: &[u8]) -> Result<(), GcmSivError> {
self.0
.encrypt_in_place(Nonce::from_slice(nonce), aad, data)
.map_err(|_| GcmSivError::EncryptOutBufferTooSmall)
}
- fn decrypt(
- &self,
- data: &mut bytes::BytesMut,
- aad: &[u8],
- nonce: &[u8],
- ) -> Result<(), GcmSivError> {
+ fn decrypt(&self, data: &mut Vec<u8>, aad: &[u8], nonce: &[u8]) -> Result<(), GcmSivError> {
self.0
.decrypt_in_place(Nonce::from_slice(nonce), aad, data)
.map_err(|_| GcmSivError::DecryptTagDoesNotMatch)
diff --git a/nearby/crypto/crypto_provider_rustcrypto/src/lib.rs b/nearby/crypto/crypto_provider_rustcrypto/src/lib.rs
index 9145233..72ca033 100644
--- a/nearby/crypto/crypto_provider_rustcrypto/src/lib.rs
+++ b/nearby/crypto/crypto_provider_rustcrypto/src/lib.rs
@@ -43,7 +43,7 @@
use cfg_if::cfg_if;
use core::{fmt::Debug, marker::PhantomData};
-use rand::{RngCore, SeedableRng};
+use rand::{Rng, RngCore, SeedableRng};
use rand_core::CryptoRng;
use subtle::ConstantTimeEq;
@@ -109,6 +109,10 @@
fn next_u64(&mut self) -> u64 {
self.0.next_u64()
}
+
+ fn fill(&mut self, dest: &mut [u8]) {
+ self.0.fill(dest)
+ }
}
#[cfg(test)]
diff --git a/nearby/presence/ldt/Cargo.toml b/nearby/presence/ldt/Cargo.toml
index 56a6dac..8f2461e 100644
--- a/nearby/presence/ldt/Cargo.toml
+++ b/nearby/presence/ldt/Cargo.toml
@@ -5,7 +5,7 @@
publish.workspace = true
[dependencies]
-rand.workspace = true
+crypto_provider.workspace = true
ldt_tbc.workspace = true
[dev-dependencies]
@@ -15,6 +15,7 @@
test_helper.workspace = true
xts_aes.workspace = true
+rand.workspace = true
rand_pcg.workspace = true
base64.workspace = true
clap.workspace = true
diff --git a/nearby/presence/ldt/benches/ldt_scan.rs b/nearby/presence/ldt/benches/ldt_scan.rs
index 31f669f..f6c5a50 100644
--- a/nearby/presence/ldt/benches/ldt_scan.rs
+++ b/nearby/presence/ldt/benches/ldt_scan.rs
@@ -13,13 +13,13 @@
// limitations under the License.
use criterion::{black_box, criterion_group, criterion_main, Criterion};
+use crypto_provider::{CryptoProvider, CryptoRng};
use crypto_provider_rustcrypto::RustCrypto;
use ctr::cipher::{KeyIvInit as _, StreamCipher as _, StreamCipherSeek as _};
use ldt::{
DefaultPadder, LdtDecryptCipher, LdtEncryptCipher, LdtKey, Mix, Padder, Swap, XorPadder,
};
use ldt_tbc::TweakableBlockCipher;
-use rand::SeedableRng as _;
use sha2::Digest as _;
use std::marker;
use subtle::ConstantTimeEq as _;
@@ -126,15 +126,15 @@
keys: usize,
plaintext_len: usize,
) -> LdtBenchState<F::Cipher, D> {
- let mut rng = rand::rngs::StdRng::from_entropy();
+ let mut rng = <RustCrypto as CryptoProvider>::CryptoRng::new();
let scenarios = (0..keys)
- .map(|_| random_ldt_scenario::<_, _, D>(&factory, &mut rng, plaintext_len))
+ .map(|_| random_ldt_scenario::<RustCrypto, _, D>(&factory, &mut rng, plaintext_len))
.collect::<Vec<_>>();
LdtBenchState {
scenarios,
- unfindable_ciphertext: random_vec(&mut rng, plaintext_len),
+ unfindable_ciphertext: random_vec::<RustCrypto>(&mut rng, plaintext_len),
decrypt_buf: Vec::with_capacity(plaintext_len),
}
}
@@ -144,13 +144,13 @@
plaintext_prefix_hash: D::Output,
}
-fn random_ldt_scenario<R: rand::Rng + rand::CryptoRng, F: ScanCipherFactory, D: ScanDigest>(
+fn random_ldt_scenario<C: CryptoProvider, F: ScanCipherFactory, D: ScanDigest>(
factory: &F,
- rng: &mut R,
+ rng: &mut C::CryptoRng,
plaintext_len: usize,
) -> ScanScenario<F::Cipher, D> {
- let cipher = factory.build_cipher(rng);
- let plaintext = random_vec(rng, plaintext_len);
+ let cipher = factory.build_cipher::<C>(rng);
+ let plaintext = random_vec::<C>(rng, plaintext_len);
let mut hasher = D::new();
let mut plaintext_prefix_hash = D::new_output();
hasher.update(&plaintext[..MATCH_LEN]);
@@ -162,7 +162,7 @@
}
}
-fn random_vec<R: rand::Rng>(rng: &mut R, len: usize) -> Vec<u8> {
+fn random_vec<C: CryptoProvider>(rng: &mut C::CryptoRng, len: usize) -> Vec<u8> {
let mut bytes = Vec::<u8>::new();
bytes.extend((0..len).map(|_| rng.gen::<u8>()));
bytes
@@ -176,7 +176,7 @@
trait ScanCipherFactory {
type Cipher: ScanCipher;
- fn build_cipher<R: rand::Rng + rand::CryptoRng>(&self, key_rng: &mut R) -> Self::Cipher;
+ fn build_cipher<C: CryptoProvider>(&self, key_rng: &mut C::CryptoRng) -> Self::Cipher;
}
/// A wrapper that lets us avoid percolating the need to specify a bogus and type-confused padder
@@ -231,29 +231,29 @@
{
type Cipher = LdtScanCipher<B, T, M, P>;
- fn build_cipher<R: rand::Rng + rand::CryptoRng>(&self, key_rng: &mut R) -> Self::Cipher {
- let key: LdtKey<T::Key> = LdtKey::from_random(key_rng);
+ fn build_cipher<C: CryptoProvider>(&self, key_rng: &mut C::CryptoRng) -> Self::Cipher {
+ let key: LdtKey<T::Key> = LdtKey::from_random::<C>(key_rng);
LdtScanCipher {
ldt_enc: LdtEncryptCipher::new(&key),
ldt_dec: LdtDecryptCipher::new(&key),
- padder: P::generate(key_rng),
+ padder: P::generate::<C>(key_rng),
}
}
}
/// A helper trait for making padders from an RNG
trait RandomPadder {
- fn generate<R: rand::Rng>(rng: &mut R) -> Self;
+ fn generate<C: CryptoProvider>(rng: &mut C::CryptoRng) -> Self;
}
impl RandomPadder for DefaultPadder {
- fn generate<R: rand::Rng>(_rng: &mut R) -> Self {
+ fn generate<C: CryptoProvider>(_rng: &mut C::CryptoRng) -> Self {
Self::default()
}
}
impl<const T: usize> RandomPadder for XorPadder<T> {
- fn generate<R: rand::Rng>(rng: &mut R) -> Self {
+ fn generate<C: CryptoProvider>(rng: &mut C::CryptoRng) -> Self {
let mut salt = [0_u8; T];
rng.fill(&mut salt[..]);
salt.into()
@@ -279,7 +279,7 @@
impl ScanCipherFactory for AesCtrFactory {
type Cipher = Aes128Ctr64LE;
- fn build_cipher<R: rand::Rng>(&self, key_rng: &mut R) -> Self::Cipher {
+ fn build_cipher<C: CryptoProvider>(&self, key_rng: &mut C::CryptoRng) -> Self::Cipher {
let mut key = [0_u8; 16];
key_rng.fill(&mut key);
diff --git a/nearby/presence/ldt/examples/gen_ldt_xor_pad_test_vectors.rs b/nearby/presence/ldt/examples/gen_ldt_xor_pad_test_vectors.rs
index 1b6af2d..a36d8d8 100644
--- a/nearby/presence/ldt/examples/gen_ldt_xor_pad_test_vectors.rs
+++ b/nearby/presence/ldt/examples/gen_ldt_xor_pad_test_vectors.rs
@@ -12,8 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-use crypto_provider::aes;
use crypto_provider::aes::BLOCK_SIZE;
+use crypto_provider::{aes, CryptoProvider, CryptoRng};
use crypto_provider_rustcrypto::RustCrypto;
use ldt::{LdtEncryptCipher, LdtKey, Swap, XorPadder};
use rand::{Rng as _, SeedableRng as _};
@@ -23,13 +23,14 @@
fn main() {
let mut rng = rand::rngs::StdRng::from_entropy();
+ let mut cp_rng = <RustCrypto as CryptoProvider>::CryptoRng::new();
let mut array = Vec::<serde_json::Value>::new();
for _ in 0..1_000 {
let len = rng.gen_range(BLOCK_SIZE..BLOCK_SIZE * 2);
- let plaintext = random_vec(&mut rng, len);
- let key = LdtKey::from_random(&mut rng);
- let pad_xor: [u8; aes::BLOCK_SIZE] = random_bytes(&mut rng);
+ let plaintext = random_vec_rc(&mut rng, len);
+ let key = LdtKey::from_random::<RustCrypto>(&mut cp_rng);
+ let pad_xor: [u8; aes::BLOCK_SIZE] = random_bytes_rc(&mut rng);
let ldt_enc = LdtEncryptCipher::<BLOCK_SIZE, XtsAes128<RustCrypto>, Swap>::new(&key);
diff --git a/nearby/presence/ldt/examples/ldt_benchmark.rs b/nearby/presence/ldt/examples/ldt_benchmark.rs
index f6793e1..ba04ed7 100644
--- a/nearby/presence/ldt/examples/ldt_benchmark.rs
+++ b/nearby/presence/ldt/examples/ldt_benchmark.rs
@@ -18,6 +18,7 @@
use crypto_provider_rustcrypto::RustCrypto;
use ldt::{LdtDecryptCipher, LdtEncryptCipher, LdtKey, Mix, Swap, XorPadder};
+use crypto_provider::{CryptoProvider, CryptoRng};
use ldt_tbc::TweakableBlockCipher;
use rand::{distributions, seq::SliceRandom, Rng as _, SeedableRng as _};
use sha2::digest::{generic_array, Digest as _};
@@ -29,11 +30,13 @@
fn main() {
let args = Args::parse();
- let mut rng = rand::rngs::StdRng::from_entropy();
+ let mut rng = <RustCrypto as CryptoProvider>::CryptoRng::new();
// generate a suitable number of random keys
let scenarios = (0..args.keys)
- .map(|_| random_ldt_scenario::<16, XtsAes128<RustCrypto>, Swap, _>(&mut rng, args.len))
+ .map(|_| {
+ random_ldt_scenario::<16, XtsAes128<RustCrypto>, Swap, RustCrypto>(&mut rng, args.len)
+ })
.collect::<Vec<_>>();
let padder = XorPadder::from([0x42; crypto_provider::aes::BLOCK_SIZE]);
@@ -48,7 +51,7 @@
.collect::<Vec<_>>();
let not_found_distrib = distributions::Uniform::from(0_f64..=100_f64);
- let unfindable_ciphertext = random_vec(&mut rng, args.len);
+ let unfindable_ciphertext = random_vec::<RustCrypto>(&mut rng, args.len);
let mut histogram = hdrhistogram::Histogram::<u64>::new(3).unwrap();
let mut buf = Vec::new();
@@ -56,12 +59,13 @@
let mut hasher = sha2::Sha256::new();
let mut hash_output = generic_array::GenericArray::default();
+ let mut rc_rng = rand::rngs::StdRng::from_entropy();
let found = (0..args.trials)
.map(|_| {
- let ciphertext = if rng.sample(not_found_distrib) <= args.not_found_pct as f64 {
+ let ciphertext = if rc_rng.sample(not_found_distrib) <= args.not_found_pct as f64 {
&unfindable_ciphertext
} else {
- ciphertexts.choose(&mut rng).unwrap()
+ ciphertexts.choose(&mut rc_rng).unwrap()
};
let start = time::Instant::now();
@@ -133,19 +137,14 @@
plaintext_prefix_hash: [u8; 32],
}
-fn random_ldt_scenario<
- const B: usize,
- T: TweakableBlockCipher<B>,
- M: Mix,
- R: rand::Rng + rand::CryptoRng,
->(
- rng: &mut R,
+fn random_ldt_scenario<const B: usize, T: TweakableBlockCipher<B>, M: Mix, C: CryptoProvider>(
+ rng: &mut C::CryptoRng,
plaintext_len: usize,
) -> LdtScenario<B, T, M> {
- let ldt_key: LdtKey<T::Key> = LdtKey::from_random(rng);
+ let ldt_key: LdtKey<T::Key> = LdtKey::from_random::<C>(rng);
let ldt_enc = LdtEncryptCipher::new(&ldt_key);
let ldt_dec = LdtDecryptCipher::new(&ldt_key);
- let plaintext = random_vec(rng, plaintext_len);
+ let plaintext = random_vec::<C>(rng, plaintext_len);
let mut hasher = sha2::Sha256::new();
let mut plaintext_prefix_hash = generic_array::GenericArray::default();
diff --git a/nearby/presence/ldt/examples/ldt_prp.rs b/nearby/presence/ldt/examples/ldt_prp.rs
index 0e7bcf6..31276b7 100644
--- a/nearby/presence/ldt/examples/ldt_prp.rs
+++ b/nearby/presence/ldt/examples/ldt_prp.rs
@@ -22,10 +22,11 @@
//! histogram of how many bits were flipped in the entire plaintext.
use clap::{self, Parser as _};
use crypto_provider::aes::BLOCK_SIZE;
+use crypto_provider::{CryptoProvider, CryptoRng};
use crypto_provider_rustcrypto::RustCrypto;
use ldt::*;
use ldt_tbc::TweakableBlockCipher;
-use rand::{distributions, Rng as _, SeedableRng as _};
+use rand::{distributions, Rng as _};
use rand_ext::*;
use xts_aes::{XtsAes128, XtsAes256};
@@ -37,35 +38,37 @@
}
fn run_trials(args: Args) {
- let mut rng = rand::rngs::StdRng::from_entropy();
+ let mut rng = seeded_rng();
let mut histo = (0..=100).map(|_| 0_u64).collect::<Vec<_>>();
let mut undetected_changes = 0_u64;
+ let mut cp_rng = <RustCrypto as CryptoProvider>::CryptoRng::new();
for _ in 0..args.trials {
- let (percent, ok) = if rng.gen() {
- do_trial(
- LdtEncryptCipher::<16, XtsAes128<RustCrypto>, Swap>::new(&LdtKey::from_random(
+ let (percent, ok) =
+ if rng.gen() {
+ do_trial(
+ LdtEncryptCipher::<16, XtsAes128<RustCrypto>, Swap>::new(
+ &LdtKey::from_random::<RustCrypto>(&mut cp_rng),
+ ),
+ LdtDecryptCipher::<16, XtsAes128<RustCrypto>, Swap>::new(
+ &LdtKey::from_random::<RustCrypto>(&mut cp_rng),
+ ),
&mut rng,
- )),
- LdtDecryptCipher::<16, XtsAes128<RustCrypto>, Swap>::new(&LdtKey::from_random(
+ DefaultPadder::default(),
+ &args,
+ )
+ } else {
+ do_trial(
+ LdtEncryptCipher::<16, XtsAes256<RustCrypto>, Swap>::new(
+ &LdtKey::from_random::<RustCrypto>(&mut cp_rng),
+ ),
+ LdtDecryptCipher::<16, XtsAes256<RustCrypto>, Swap>::new(
+ &LdtKey::from_random::<RustCrypto>(&mut cp_rng),
+ ),
&mut rng,
- )),
- &mut rng,
- DefaultPadder::default(),
- &args,
- )
- } else {
- do_trial(
- LdtEncryptCipher::<16, XtsAes256<RustCrypto>, Swap>::new(&LdtKey::from_random(
- &mut rng,
- )),
- LdtDecryptCipher::<16, XtsAes256<RustCrypto>, Swap>::new(&LdtKey::from_random(
- &mut rng,
- )),
- &mut rng,
- DefaultPadder::default(),
- &args,
- )
- };
+ DefaultPadder::default(),
+ &args,
+ )
+ };
histo[percent] += 1;
if !ok {
@@ -105,7 +108,7 @@
) -> (usize, bool) {
let plaintext_len_range = distributions::Uniform::new_inclusive(BLOCK_SIZE, BLOCK_SIZE * 2 - 1);
let len = rng.sample(plaintext_len_range);
- let plaintext = random_vec(rng, len);
+ let plaintext = random_vec_rc(rng, len);
let mut ciphertext = plaintext.clone();
ldt_enc.encrypt(&mut ciphertext, &padder).unwrap();
diff --git a/nearby/presence/ldt/fuzz/Cargo.lock b/nearby/presence/ldt/fuzz/Cargo.lock
index d0a7fc3..a007fe8 100644
--- a/nearby/presence/ldt/fuzz/Cargo.lock
+++ b/nearby/presence/ldt/fuzz/Cargo.lock
@@ -54,9 +54,9 @@
[[package]]
name = "base16ct"
-version = "0.2.0"
+version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
+checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce"
[[package]]
name = "block-buffer"
@@ -133,9 +133,9 @@
[[package]]
name = "crypto-bigint"
-version = "0.5.1"
+version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c2538c4e68e52548bacb3e83ac549f903d44f011ac9d5abb5e132e67d0808f7"
+checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef"
dependencies = [
"generic-array",
"rand_core",
@@ -157,9 +157,6 @@
[[package]]
name = "crypto_provider"
version = "0.1.0"
-dependencies = [
- "bytes",
-]
[[package]]
name = "crypto_provider_rustcrypto"
@@ -210,12 +207,11 @@
[[package]]
name = "der"
-version = "0.7.1"
+version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc906908ea6458456e5eaa160a9c08543ec3d1e6f71e2235cedd660cb65f9df0"
+checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de"
dependencies = [
"const-oid",
- "zeroize",
]
[[package]]
@@ -263,12 +259,13 @@
[[package]]
name = "elliptic-curve"
-version = "0.13.2"
+version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ea5a92946e8614bb585254898bb7dd1ddad241ace60c52149e3765e34cc039d"
+checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3"
dependencies = [
"base16ct",
"crypto-bigint",
+ "der",
"digest",
"ff",
"generic-array",
@@ -282,9 +279,9 @@
[[package]]
name = "ff"
-version = "0.13.0"
+version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
+checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160"
dependencies = [
"rand_core",
"subtle",
@@ -304,7 +301,6 @@
dependencies = [
"typenum",
"version_check",
- "zeroize",
]
[[package]]
@@ -320,9 +316,9 @@
[[package]]
name = "group"
-version = "0.13.0"
+version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
+checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7"
dependencies = [
"ff",
"rand_core",
@@ -370,8 +366,8 @@
name = "ldt"
version = "0.1.0"
dependencies = [
+ "crypto_provider",
"ldt_tbc",
- "rand",
]
[[package]]
@@ -389,7 +385,7 @@
name = "ldt_tbc"
version = "0.1.0"
dependencies = [
- "rand",
+ "crypto_provider",
]
[[package]]
@@ -429,9 +425,9 @@
[[package]]
name = "p256"
-version = "0.13.0"
+version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7270da3e5caa82afd3deb054cc237905853813aea3859544bc082c3fe55b8d47"
+checksum = "49c124b3cbce43bcbac68c58ec181d98ed6cc7e6d0aa7c3ba97b2563410b0e55"
dependencies = [
"elliptic-curve",
"primeorder",
@@ -473,9 +469,9 @@
[[package]]
name = "primeorder"
-version = "0.13.0"
+version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7613fdcc0831c10060fa69833ea8fa2caa94b6456f51e25356a885b530a2e3d0"
+checksum = "0b54f7131b3dba65a2f414cf5bd25b66d4682e4608610668eae785750ba4c5b2"
dependencies = [
"elliptic-curve",
]
@@ -528,9 +524,9 @@
[[package]]
name = "sec1"
-version = "0.7.1"
+version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48518a2b5775ba8ca5b46596aae011caa431e6ce7e4a67ead66d92f08884220e"
+checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928"
dependencies = [
"base16ct",
"der",
diff --git a/nearby/presence/ldt/src/lib.rs b/nearby/presence/ldt/src/lib.rs
index 8dc4068..d888164 100644
--- a/nearby/presence/ldt/src/lib.rs
+++ b/nearby/presence/ldt/src/lib.rs
@@ -24,6 +24,7 @@
)]
use core::{fmt, marker::PhantomData};
+use crypto_provider::CryptoProvider;
use ldt_tbc::{ConcatenatedKeyArray, TweakableBlockCipher, TweakableBlockCipherKey};
use ldt_tbc::{TweakableBlockCipherDecrypter, TweakableBlockCipherEncrypter};
@@ -210,8 +211,8 @@
}
/// Build a random key from a secure RNG.
- pub fn from_random<R: rand::Rng + rand::CryptoRng>(rng: &mut R) -> Self {
- Self::from_concatenated(&ConcatenatedKeyArray::from_random(rng))
+ pub fn from_random<C: CryptoProvider>(rng: &mut C::CryptoRng) -> Self {
+ Self::from_concatenated(&ConcatenatedKeyArray::from_random::<C>(rng))
}
/// Returns the key material as a concatenated array with the contents of the two tweakable
diff --git a/nearby/presence/ldt/tests/ldt_roundtrip.rs b/nearby/presence/ldt/tests/ldt_roundtrip.rs
index b225399..6f5cada 100644
--- a/nearby/presence/ldt/tests/ldt_roundtrip.rs
+++ b/nearby/presence/ldt/tests/ldt_roundtrip.rs
@@ -13,22 +13,25 @@
// limitations under the License.
use crypto_provider::aes::BLOCK_SIZE;
+use crypto_provider::{CryptoProvider, CryptoRng};
use crypto_provider_rustcrypto::RustCrypto;
use ldt::*;
use ldt_tbc::TweakableBlockCipher;
+use rand::rngs::StdRng;
use rand::{self, distributions, Rng as _, SeedableRng as _};
use rand_ext::{random_bytes, random_vec};
use xts_aes::{XtsAes128, XtsAes256};
#[test]
fn roundtrip_normal_padder() {
- let mut rng = rand::rngs::StdRng::from_entropy();
+ let mut rng = <RustCrypto as CryptoProvider>::CryptoRng::new();
+ let mut rc_rng = rand::rngs::StdRng::from_entropy();
let plaintext_len_range = distributions::Uniform::new_inclusive(BLOCK_SIZE, BLOCK_SIZE * 2 - 1);
for _ in 0..100_000 {
- if rng.gen() {
- let ldt_key = LdtKey::from_random(&mut rng);
- do_roundtrip(
+ if rc_rng.gen() {
+ let ldt_key = LdtKey::from_random::<RustCrypto>(&mut rng);
+ do_roundtrip::<16, _, _, _, RustCrypto>(
LdtEncryptCipher::<16, XtsAes128<RustCrypto>, Swap>::new(&ldt_key),
LdtDecryptCipher::<16, XtsAes128<RustCrypto>, Swap>::new(&ldt_key),
&DefaultPadder::default(),
@@ -36,8 +39,8 @@
&plaintext_len_range,
)
} else {
- let ldt_key = LdtKey::from_random(&mut rng);
- do_roundtrip(
+ let ldt_key = LdtKey::from_random::<RustCrypto>(&mut rng);
+ do_roundtrip::<16, _, _, _, RustCrypto>(
LdtEncryptCipher::<16, XtsAes256<RustCrypto>, Swap>::new(&ldt_key),
LdtDecryptCipher::<16, XtsAes256<RustCrypto>, Swap>::new(&ldt_key),
&DefaultPadder::default(),
@@ -50,17 +53,18 @@
#[test]
fn roundtrip_xor_padder() {
- let mut rng = rand::rngs::StdRng::from_entropy();
+ let mut rng = <RustCrypto as CryptoProvider>::CryptoRng::new();
+ let mut rc_rng = rand::rngs::StdRng::from_entropy();
// 2 bytes smaller because we're using a 2 byte salt
let plaintext_len_range =
distributions::Uniform::new_inclusive(BLOCK_SIZE, BLOCK_SIZE * 2 - 1 - 2);
for _ in 0..100_000 {
- let padder: XorPadder<BLOCK_SIZE> = random_bytes(&mut rng).into();
+ let padder: XorPadder<BLOCK_SIZE> = random_bytes::<BLOCK_SIZE, RustCrypto>(&mut rng).into();
- if rng.gen() {
- let ldt_key = LdtKey::from_random(&mut rng);
- do_roundtrip(
+ if rc_rng.gen() {
+ let ldt_key = LdtKey::from_random::<RustCrypto>(&mut rng);
+ do_roundtrip::<16, _, _, _, RustCrypto>(
LdtEncryptCipher::<16, XtsAes128<RustCrypto>, Swap>::new(&ldt_key),
LdtDecryptCipher::<16, XtsAes128<RustCrypto>, Swap>::new(&ldt_key),
&padder,
@@ -68,8 +72,8 @@
&plaintext_len_range,
)
} else {
- let ldt_key = LdtKey::from_random(&mut rng);
- do_roundtrip(
+ let ldt_key = LdtKey::from_random::<RustCrypto>(&mut rng);
+ do_roundtrip::<16, _, _, _, RustCrypto>(
LdtEncryptCipher::<16, XtsAes256<RustCrypto>, Swap>::new(&ldt_key),
LdtDecryptCipher::<16, XtsAes256<RustCrypto>, Swap>::new(&ldt_key),
&padder,
@@ -85,16 +89,17 @@
T: TweakableBlockCipher<B>,
P: Padder<B, T>,
M: Mix,
- R: rand::Rng,
+ C: CryptoProvider,
>(
ldt_enc: LdtEncryptCipher<B, T, M>,
ldt_dec: LdtDecryptCipher<B, T, M>,
padder: &P,
- rng: &mut R,
+ rng: &mut C::CryptoRng,
plaintext_len_range: &distributions::Uniform<usize>,
) {
- let len = rng.sample(plaintext_len_range);
- let plaintext = random_vec(rng, len);
+ let mut rng_rc = StdRng::from_entropy();
+ let len = rng_rc.sample(plaintext_len_range);
+ let plaintext = random_vec::<C>(rng, len);
let mut ciphertext = plaintext.clone();
ldt_enc.encrypt(&mut ciphertext, padder).unwrap();
diff --git a/nearby/presence/ldt_np_adv/fuzz/Cargo.lock b/nearby/presence/ldt_np_adv/fuzz/Cargo.lock
index e02e7cc..3bfc3fd 100644
--- a/nearby/presence/ldt_np_adv/fuzz/Cargo.lock
+++ b/nearby/presence/ldt_np_adv/fuzz/Cargo.lock
@@ -58,9 +58,9 @@
[[package]]
name = "base16ct"
-version = "0.2.0"
+version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
+checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce"
[[package]]
name = "block-buffer"
@@ -137,9 +137,9 @@
[[package]]
name = "crypto-bigint"
-version = "0.5.1"
+version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c2538c4e68e52548bacb3e83ac549f903d44f011ac9d5abb5e132e67d0808f7"
+checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef"
dependencies = [
"generic-array",
"rand_core",
@@ -161,9 +161,6 @@
[[package]]
name = "crypto_provider"
version = "0.1.0"
-dependencies = [
- "bytes",
-]
[[package]]
name = "crypto_provider_rustcrypto"
@@ -214,12 +211,11 @@
[[package]]
name = "der"
-version = "0.7.1"
+version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc906908ea6458456e5eaa160a9c08543ec3d1e6f71e2235cedd660cb65f9df0"
+checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de"
dependencies = [
"const-oid",
- "zeroize",
]
[[package]]
@@ -267,12 +263,13 @@
[[package]]
name = "elliptic-curve"
-version = "0.13.2"
+version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ea5a92946e8614bb585254898bb7dd1ddad241ace60c52149e3765e34cc039d"
+checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3"
dependencies = [
"base16ct",
"crypto-bigint",
+ "der",
"digest",
"ff",
"generic-array",
@@ -286,9 +283,9 @@
[[package]]
name = "ff"
-version = "0.13.0"
+version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
+checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160"
dependencies = [
"rand_core",
"subtle",
@@ -308,7 +305,6 @@
dependencies = [
"typenum",
"version_check",
- "zeroize",
]
[[package]]
@@ -324,9 +320,9 @@
[[package]]
name = "group"
-version = "0.13.0"
+version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
+checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7"
dependencies = [
"ff",
"rand_core",
@@ -374,8 +370,8 @@
name = "ldt"
version = "0.1.0"
dependencies = [
+ "crypto_provider",
"ldt_tbc",
- "rand",
]
[[package]]
@@ -407,7 +403,7 @@
name = "ldt_tbc"
version = "0.1.0"
dependencies = [
- "rand",
+ "crypto_provider",
]
[[package]]
@@ -456,9 +452,9 @@
[[package]]
name = "p256"
-version = "0.13.0"
+version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7270da3e5caa82afd3deb054cc237905853813aea3859544bc082c3fe55b8d47"
+checksum = "49c124b3cbce43bcbac68c58ec181d98ed6cc7e6d0aa7c3ba97b2563410b0e55"
dependencies = [
"elliptic-curve",
"primeorder",
@@ -500,9 +496,9 @@
[[package]]
name = "primeorder"
-version = "0.13.0"
+version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7613fdcc0831c10060fa69833ea8fa2caa94b6456f51e25356a885b530a2e3d0"
+checksum = "0b54f7131b3dba65a2f414cf5bd25b66d4682e4608610668eae785750ba4c5b2"
dependencies = [
"elliptic-curve",
]
@@ -555,9 +551,9 @@
[[package]]
name = "sec1"
-version = "0.7.1"
+version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48518a2b5775ba8ca5b46596aae011caa431e6ce7e4a67ead66d92f08884220e"
+checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928"
dependencies = [
"base16ct",
"der",
diff --git a/nearby/presence/ldt_np_adv/src/np_adv_test_vectors.rs b/nearby/presence/ldt_np_adv/src/np_adv_test_vectors.rs
index 46c9968..6460e34 100644
--- a/nearby/presence/ldt_np_adv/src/np_adv_test_vectors.rs
+++ b/nearby/presence/ldt_np_adv/src/np_adv_test_vectors.rs
@@ -19,15 +19,14 @@
)]
extern crate std;
-
use crate::{
build_np_adv_decrypter_from_key_seed, salt_padder, LdtEncrypterXtsAes128, LegacySalt,
NP_LEGACY_METADATA_KEY_LEN,
};
use anyhow::anyhow;
use crypto_provider_rustcrypto::RustCrypto;
-use rand::Rng as _;
-use rand_ext::{random_vec, seeded_rng};
+use rand::Rng;
+use rand_ext::{random_vec_rc, seeded_rng};
use serde_json::json;
use std::vec::Vec;
use std::{fs, io::Read as _, println, string::String};
@@ -94,7 +93,7 @@
for _ in 0..1_000 {
let len =
rng.gen_range(crypto_provider::aes::BLOCK_SIZE..crypto_provider::aes::BLOCK_SIZE * 2);
- let plaintext = random_vec(&mut rng, len);
+ let plaintext = random_vec_rc(&mut rng, len);
let key_seed: [u8; 32] = rng.gen();
let hkdf = np_hkdf::NpKeySeedHkdf::<RustCrypto>::new(&key_seed);
diff --git a/nearby/presence/ldt_np_adv/src/tests.rs b/nearby/presence/ldt_np_adv/src/tests.rs
index 5f09e33..653e145 100644
--- a/nearby/presence/ldt_np_adv/src/tests.rs
+++ b/nearby/presence/ldt_np_adv/src/tests.rs
@@ -26,17 +26,18 @@
NP_LEGACY_METADATA_KEY_LEN,
};
use alloc::vec::Vec;
-use crypto_provider::CryptoProvider;
+use crypto_provider::{CryptoProvider, CryptoRng};
use crypto_provider_rustcrypto::RustCrypto;
use ldt::{DefaultPadder, LdtError, LdtKey, XorPadder};
use np_hkdf::NpKeySeedHkdf;
-use rand_ext::{random_vec, seeded_rng};
+use rand::Rng;
+use rand_ext::{random_bytes, random_vec, seeded_rng};
#[test]
fn decrypt_matches_correct_ciphertext() {
- let mut rng = seeded_rng();
+ let mut rng = CryptoRng::new();
for _ in 0..1_000 {
- let test_state = make_test_components::<_, RustCrypto>(&mut rng);
+ let test_state = make_test_components::<RustCrypto>(&mut rng);
let cipher = build_np_adv_decrypter_from_key_seed(&test_state.hkdf, test_state.hmac);
let decrypted = cipher
@@ -49,9 +50,9 @@
#[test]
fn decrypt_doesnt_match_when_ciphertext_mangled() {
- let mut rng = seeded_rng();
+ let mut rng = CryptoRng::new();
for _ in 0..1_000 {
- let mut test_state = make_test_components::<_, RustCrypto>(&mut rng);
+ let mut test_state = make_test_components::<RustCrypto>(&mut rng);
// mangle the ciphertext
test_state.ciphertext[0] ^= 0xAA;
@@ -66,9 +67,9 @@
#[test]
fn decrypt_doesnt_match_when_plaintext_doesnt_match_mac() {
- let mut rng = seeded_rng();
+ let mut rng = CryptoRng::new();
for _ in 0..1_000 {
- let mut test_state = make_test_components::<_, RustCrypto>(&mut rng);
+ let mut test_state = make_test_components::<RustCrypto>(&mut rng);
// mangle the mac
test_state.hmac[0] ^= 0xAA;
@@ -84,9 +85,9 @@
#[test]
#[allow(deprecated)]
fn encrypt_works() {
- let mut rng = seeded_rng();
+ let mut rng = CryptoRng::new();
for _ in 0..1_000 {
- let test_state = make_test_components::<_, RustCrypto>(&mut rng);
+ let test_state = make_test_components::<RustCrypto>(&mut rng);
let cipher = test_state.ldt_enc;
@@ -158,18 +159,21 @@
}
/// Returns (plaintext, ciphertext, padder, hmac key, MAC, ldt)
-fn make_test_components<R: rand::Rng, C: crypto_provider::CryptoProvider>(
- rng: &mut R,
+fn make_test_components<C: crypto_provider::CryptoProvider>(
+ rng: &mut C::CryptoRng,
) -> LdtAdvTestComponents<C> {
// [1, 2) blocks of XTS-AES
- let payload_len = rng
+ let mut rc_rng = seeded_rng();
+ let payload_len = rc_rng
.gen_range(crypto_provider::aes::BLOCK_SIZE..=(crypto_provider::aes::BLOCK_SIZE * 2 - 1));
- let plaintext = random_vec(rng, payload_len);
+ let plaintext = random_vec::<C>(rng, payload_len);
- let salt = LegacySalt { bytes: rng.gen() };
+ let salt = LegacySalt {
+ bytes: random_bytes::<2, C>(rng),
+ };
let padder = salt_padder::<16, C>(salt);
- let key_seed: [u8; 32] = rng.gen();
+ let key_seed: [u8; 32] = random_bytes::<32, C>(rng);
let hkdf = np_hkdf::NpKeySeedHkdf::new(&key_seed);
let ldt_key = hkdf.legacy_ldt_key();
let hmac_key = hkdf.legacy_metadata_key_hmac_key();
diff --git a/nearby/presence/ldt_np_adv_ffi/Cargo.lock b/nearby/presence/ldt_np_adv_ffi/Cargo.lock
index 5deadcc..3a16c56 100644
--- a/nearby/presence/ldt_np_adv_ffi/Cargo.lock
+++ b/nearby/presence/ldt_np_adv_ffi/Cargo.lock
@@ -67,9 +67,9 @@
[[package]]
name = "base16ct"
-version = "0.2.0"
+version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
+checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce"
[[package]]
name = "base64ct"
@@ -166,9 +166,9 @@
[[package]]
name = "crypto-bigint"
-version = "0.5.1"
+version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c2538c4e68e52548bacb3e83ac549f903d44f011ac9d5abb5e132e67d0808f7"
+checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef"
dependencies = [
"generic-array",
"rand_core",
@@ -190,9 +190,6 @@
[[package]]
name = "crypto_provider"
version = "0.1.0"
-dependencies = [
- "bytes",
-]
[[package]]
name = "crypto_provider_boringssl"
@@ -270,6 +267,15 @@
[[package]]
name = "der"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de"
+dependencies = [
+ "const-oid",
+]
+
+[[package]]
+name = "der"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bc906908ea6458456e5eaa160a9c08543ec3d1e6f71e2235cedd660cb65f9df0"
@@ -315,12 +321,13 @@
[[package]]
name = "elliptic-curve"
-version = "0.13.2"
+version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ea5a92946e8614bb585254898bb7dd1ddad241ace60c52149e3765e34cc039d"
+checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3"
dependencies = [
"base16ct",
"crypto-bigint",
+ "der 0.6.1",
"digest",
"ff",
"generic-array",
@@ -334,9 +341,9 @@
[[package]]
name = "ff"
-version = "0.13.0"
+version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
+checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160"
dependencies = [
"rand_core",
"subtle",
@@ -371,7 +378,6 @@
dependencies = [
"typenum",
"version_check",
- "zeroize",
]
[[package]]
@@ -387,9 +393,9 @@
[[package]]
name = "group"
-version = "0.13.0"
+version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
+checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7"
dependencies = [
"ff",
"rand_core",
@@ -437,8 +443,8 @@
name = "ldt"
version = "0.1.0"
dependencies = [
+ "crypto_provider",
"ldt_tbc",
- "rand",
]
[[package]]
@@ -476,7 +482,7 @@
name = "ldt_tbc"
version = "0.1.0"
dependencies = [
- "rand",
+ "crypto_provider",
]
[[package]]
@@ -591,9 +597,9 @@
[[package]]
name = "p256"
-version = "0.13.0"
+version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7270da3e5caa82afd3deb054cc237905853813aea3859544bc082c3fe55b8d47"
+checksum = "49c124b3cbce43bcbac68c58ec181d98ed6cc7e6d0aa7c3ba97b2563410b0e55"
dependencies = [
"elliptic-curve",
"primeorder",
@@ -621,7 +627,7 @@
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d2820d87d2b008616e5c27212dd9e0e694fb4c6b522de06094106813328cb49"
dependencies = [
- "der",
+ "der 0.7.1",
"spki",
]
@@ -657,9 +663,9 @@
[[package]]
name = "primeorder"
-version = "0.13.0"
+version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7613fdcc0831c10060fa69833ea8fa2caa94b6456f51e25356a885b530a2e3d0"
+checksum = "0b54f7131b3dba65a2f414cf5bd25b66d4682e4608610668eae785750ba4c5b2"
dependencies = [
"elliptic-curve",
]
@@ -744,12 +750,12 @@
[[package]]
name = "sec1"
-version = "0.7.1"
+version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48518a2b5775ba8ca5b46596aae011caa431e6ce7e4a67ead66d92f08884220e"
+checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928"
dependencies = [
"base16ct",
- "der",
+ "der 0.6.1",
"generic-array",
"subtle",
"zeroize",
@@ -800,7 +806,7 @@
checksum = "c0445c905640145c7ea8c1993555957f65e7c46d0535b91ba501bc9bfc85522f"
dependencies = [
"base64ct",
- "der",
+ "der 0.7.1",
]
[[package]]
diff --git a/nearby/presence/ldt_tbc/Cargo.toml b/nearby/presence/ldt_tbc/Cargo.toml
index 0120c60..3c80114 100644
--- a/nearby/presence/ldt_tbc/Cargo.toml
+++ b/nearby/presence/ldt_tbc/Cargo.toml
@@ -5,4 +5,4 @@
publish.workspace = true
[dependencies]
-rand.workspace = true
\ No newline at end of file
+crypto_provider.workspace = true
\ No newline at end of file
diff --git a/nearby/presence/ldt_tbc/src/lib.rs b/nearby/presence/ldt_tbc/src/lib.rs
index 97dc5a5..e9ef476 100644
--- a/nearby/presence/ldt_tbc/src/lib.rs
+++ b/nearby/presence/ldt_tbc/src/lib.rs
@@ -23,6 +23,8 @@
//! Defining traits for an LDT specific Tweakable Block Cipher
+use crypto_provider::{CryptoProvider, CryptoRng};
+
/// The higher level trait defining the single block at a time Tweakable Block Cipher types.
/// Holds associates types for both the [TweakableBlockCipherEncrypter] and corresponding
/// [TweakableBlockCipherDecrypter]
@@ -81,11 +83,11 @@
/// The array form of two concatenated tweakable block cipher keys.
pub trait ConcatenatedKeyArray: Sized {
/// Build a concatenated key from a secure RNG.
- fn from_random<R: rand::Rng + rand::CryptoRng>(rng: &mut R) -> Self;
+ fn from_random<C: CryptoProvider>(rng: &mut C::CryptoRng) -> Self;
}
impl ConcatenatedKeyArray for [u8; 64] {
- fn from_random<R: rand::Rng + rand::CryptoRng>(rng: &mut R) -> Self {
+ fn from_random<C: CryptoProvider>(rng: &mut C::CryptoRng) -> Self {
let mut arr = [0; 64];
rng.fill(&mut arr);
arr
@@ -93,7 +95,7 @@
}
impl ConcatenatedKeyArray for [u8; 128] {
- fn from_random<R: rand::Rng + rand::CryptoRng>(rng: &mut R) -> Self {
+ fn from_random<C: CryptoProvider>(rng: &mut C::CryptoRng) -> Self {
let mut arr = [0; 128];
rng.fill(&mut arr);
arr
diff --git a/nearby/presence/np_hkdf/benches/np_hkdf.rs b/nearby/presence/np_hkdf/benches/np_hkdf.rs
index 8e5cae9..54e682d 100644
--- a/nearby/presence/np_hkdf/benches/np_hkdf.rs
+++ b/nearby/presence/np_hkdf/benches/np_hkdf.rs
@@ -13,15 +13,16 @@
// limitations under the License.
use criterion::{black_box, criterion_group, criterion_main, Criterion};
+use crypto_provider::{CryptoProvider, CryptoRng};
use crypto_provider_rustcrypto::RustCrypto;
-use rand::Rng as _;
+use rand_ext::random_bytes;
pub fn build_np_hkdf(c: &mut Criterion) {
- let mut rng = rand_ext::seeded_rng();
+ let mut rng = <RustCrypto as CryptoProvider>::CryptoRng::new();
for &num_keys in &[1_usize, 10, 100] {
c.bench_function(&format!("build {num_keys} np_hkdf from key_seed"), |b| {
let keys = (0..num_keys)
- .map(|_| rng.gen::<[u8; 32]>())
+ .map(|_| random_bytes::<32, RustCrypto>(&mut rng))
.collect::<Vec<_>>();
b.iter(|| {
for key_seed in keys.iter() {
@@ -31,7 +32,11 @@
});
c.bench_function(&format!("hkdf generate {num_keys} hmac keys"), |b| {
let keys = (0..num_keys)
- .map(|_| np_hkdf::NpKeySeedHkdf::<RustCrypto>::new(&rng.gen::<[u8; 32]>()))
+ .map(|_| {
+ np_hkdf::NpKeySeedHkdf::<RustCrypto>::new(&random_bytes::<32, RustCrypto>(
+ &mut rng,
+ ))
+ })
.collect::<Vec<_>>();
b.iter(|| {
for hkdf in keys.iter() {
@@ -41,7 +46,11 @@
});
c.bench_function(&format!("hkdf generate {num_keys} AES keys"), |b| {
let keys = (0..num_keys)
- .map(|_| np_hkdf::NpKeySeedHkdf::<RustCrypto>::new(&rng.gen::<[u8; 32]>()))
+ .map(|_| {
+ np_hkdf::NpKeySeedHkdf::<RustCrypto>::new(&random_bytes::<32, RustCrypto>(
+ &mut rng,
+ ))
+ })
.collect::<Vec<_>>();
b.iter(|| {
for hkdf in keys.iter() {
@@ -51,7 +60,11 @@
});
c.bench_function(&format!("hkdf generate {num_keys} LDT keys"), |b| {
let keys = (0..num_keys)
- .map(|_| np_hkdf::NpKeySeedHkdf::<RustCrypto>::new(&rng.gen::<[u8; 32]>()))
+ .map(|_| {
+ np_hkdf::NpKeySeedHkdf::<RustCrypto>::new(&random_bytes::<32, RustCrypto>(
+ &mut rng,
+ ))
+ })
.collect::<Vec<_>>();
b.iter(|| {
for hkdf in keys.iter() {
diff --git a/nearby/presence/rand_ext/Cargo.toml b/nearby/presence/rand_ext/Cargo.toml
index b1414ae..bbdb5af 100644
--- a/nearby/presence/rand_ext/Cargo.toml
+++ b/nearby/presence/rand_ext/Cargo.toml
@@ -5,6 +5,7 @@
publish.workspace = true
[dependencies]
+crypto_provider.workspace = true
log.workspace = true
rand = { workspace = true, features = ["std", "std_rng"] }
rand_pcg.workspace = true
diff --git a/nearby/presence/rand_ext/src/lib.rs b/nearby/presence/rand_ext/src/lib.rs
index 56aa197..9819c6b 100644
--- a/nearby/presence/rand_ext/src/lib.rs
+++ b/nearby/presence/rand_ext/src/lib.rs
@@ -20,19 +20,34 @@
extern crate alloc;
use alloc::vec::Vec;
+use crypto_provider::{CryptoProvider, CryptoRng};
use log::info;
pub use rand;
-use rand::{Rng as _, SeedableRng as _};
+use rand::{Rng as _, SeedableRng};
-/// Returns a random vec with the provided length.
-pub fn random_vec<R: rand::Rng>(rng: &mut R, len: usize) -> Vec<u8> {
+/// Returns a random Vec with the provided length.
+pub fn random_vec<C: CryptoProvider>(rng: &mut C::CryptoRng, len: usize) -> Vec<u8> {
let mut bytes = Vec::<u8>::new();
bytes.extend((0..len).map(|_| rng.gen::<u8>()));
bytes
}
/// Returns a random array with the provided length.
-pub fn random_bytes<const B: usize, R: rand::Rng>(rng: &mut R) -> [u8; B] {
+pub fn random_bytes<const B: usize, C: CryptoProvider>(rng: &mut C::CryptoRng) -> [u8; B] {
+ let mut bytes = [0; B];
+ rng.fill(bytes.as_mut_slice());
+ bytes
+}
+
+/// Uses a RustCrypto Rng to return a random Vec with the provided length
+pub fn random_vec_rc<R: rand::Rng>(rng: &mut R, len: usize) -> Vec<u8> {
+ let mut bytes = Vec::<u8>::new();
+ bytes.extend((0..len).map(|_| rng.gen::<u8>()));
+ bytes
+}
+
+/// Uses a RustCrypto Rng to return random bytes with the provided length
+pub fn random_bytes_rc<const B: usize, R: rand::Rng>(rng: &mut R) -> [u8; B] {
let mut bytes = [0; B];
rng.fill(bytes.as_mut_slice());
bytes
diff --git a/nearby/presence/xts_aes/fuzz/Cargo.lock b/nearby/presence/xts_aes/fuzz/Cargo.lock
index a03bfe0..5408688 100644
--- a/nearby/presence/xts_aes/fuzz/Cargo.lock
+++ b/nearby/presence/xts_aes/fuzz/Cargo.lock
@@ -54,9 +54,9 @@
[[package]]
name = "base16ct"
-version = "0.2.0"
+version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
+checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce"
[[package]]
name = "block-buffer"
@@ -133,9 +133,9 @@
[[package]]
name = "crypto-bigint"
-version = "0.5.1"
+version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c2538c4e68e52548bacb3e83ac549f903d44f011ac9d5abb5e132e67d0808f7"
+checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef"
dependencies = [
"generic-array",
"rand_core",
@@ -157,9 +157,6 @@
[[package]]
name = "crypto_provider"
version = "0.1.0"
-dependencies = [
- "bytes",
-]
[[package]]
name = "crypto_provider_rustcrypto"
@@ -210,12 +207,11 @@
[[package]]
name = "der"
-version = "0.7.1"
+version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc906908ea6458456e5eaa160a9c08543ec3d1e6f71e2235cedd660cb65f9df0"
+checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de"
dependencies = [
"const-oid",
- "zeroize",
]
[[package]]
@@ -263,12 +259,13 @@
[[package]]
name = "elliptic-curve"
-version = "0.13.2"
+version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ea5a92946e8614bb585254898bb7dd1ddad241ace60c52149e3765e34cc039d"
+checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3"
dependencies = [
"base16ct",
"crypto-bigint",
+ "der",
"digest",
"ff",
"generic-array",
@@ -282,9 +279,9 @@
[[package]]
name = "ff"
-version = "0.13.0"
+version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
+checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160"
dependencies = [
"rand_core",
"subtle",
@@ -304,7 +301,6 @@
dependencies = [
"typenum",
"version_check",
- "zeroize",
]
[[package]]
@@ -320,9 +316,9 @@
[[package]]
name = "group"
-version = "0.13.0"
+version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
+checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7"
dependencies = [
"ff",
"rand_core",
@@ -370,7 +366,7 @@
name = "ldt_tbc"
version = "0.1.0"
dependencies = [
- "rand",
+ "crypto_provider",
]
[[package]]
@@ -410,9 +406,9 @@
[[package]]
name = "p256"
-version = "0.13.0"
+version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7270da3e5caa82afd3deb054cc237905853813aea3859544bc082c3fe55b8d47"
+checksum = "49c124b3cbce43bcbac68c58ec181d98ed6cc7e6d0aa7c3ba97b2563410b0e55"
dependencies = [
"elliptic-curve",
"primeorder",
@@ -454,9 +450,9 @@
[[package]]
name = "primeorder"
-version = "0.13.0"
+version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7613fdcc0831c10060fa69833ea8fa2caa94b6456f51e25356a885b530a2e3d0"
+checksum = "0b54f7131b3dba65a2f414cf5bd25b66d4682e4608610668eae785750ba4c5b2"
dependencies = [
"elliptic-curve",
]
@@ -509,9 +505,9 @@
[[package]]
name = "sec1"
-version = "0.7.1"
+version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48518a2b5775ba8ca5b46596aae011caa431e6ce7e4a67ead66d92f08884220e"
+checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928"
dependencies = [
"base16ct",
"der",
diff --git a/nearby/scripts/build-script.sh b/nearby/scripts/build-script.sh
index 7311df2..f559167 100755
--- a/nearby/scripts/build-script.sh
+++ b/nearby/scripts/build-script.sh
@@ -182,7 +182,8 @@
git clone https://boringssl.googlesource.com/boringssl
fi
cd boringssl && mkdir -p build && cd build
- cmake -G Ninja .. -DRUST_BINDINGS="$(gcc -dumpmachine)" && ninja
+ target=$(rustc -vV | awk '/host/ { print $2 }')
+ cmake -G Ninja .. -DRUST_BINDINGS="$target" && ninja
# A valid Rust crate is built under `boringssl-build/boringssl/build/rust/bssl-sys`
cd $projectroot/boringssl-build