Project import generated by Copybara. GitOrigin-RevId: 638e64d988d739f6fdd113340d865c26088f936d Change-Id: Iad9ac5ae93b524d2de9ae7ab24f504f9bd913d85
diff --git a/nearby/Cargo.lock b/nearby/Cargo.lock index 637c67d..31aaf06 100644 --- a/nearby/Cargo.lock +++ b/nearby/Cargo.lock
@@ -16,9 +16,9 @@ [[package]] name = "aead" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c192eb8f11fc081b0fe4259ba5af04217d4e0faddd02417310a927911abd7c8" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" dependencies = [ "bytes", "crypto-common", @@ -53,9 +53,9 @@ [[package]] name = "aho-corasick" -version = "0.7.20" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04" dependencies = [ "memchr", ] @@ -73,6 +73,55 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] +name = "anstream" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6342bd4f5a1205d7f41e94a41a901f5647c938cdfa96036338e8533c9d6c2450" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is-terminal", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41ed9a86bf92ae6580e0a31281f65a1b1d867c0cc68d5346e2ae128dddfa6a7d" + +[[package]] +name = "anstyle-parse" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e765fd216e48e067936442276d1d57399e37bce53c264d6fefbe298080cb57ee" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] +name = "anstyle-wincon" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" +dependencies = [ + "anstyle", + "windows-sys 0.48.0", +] + +[[package]] name = "anyhow" version = "1.0.70" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -105,9 +154,9 @@ [[package]] name = "base16ct" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" [[package]] name = "base64" @@ -153,14 +202,18 @@ [[package]] name = "block-padding" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a90ec2df9600c28a01c56c4784c9207a96d2451833aeceb8cc97e4c9548bb78" +checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" dependencies = [ "generic-array", ] [[package]] +name = "bssl-crypto" +version = "0.1.0" + +[[package]] name = "bssl-sys" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -168,9 +221,9 @@ [[package]] name = "bumpalo" -version = "3.12.0" +version = "3.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" +checksum = "9b1ce199063694f33ffb7dd4e0ee620741495c32833cde5aa08f02a0bf96f0c8" [[package]] name = "byteorder" @@ -268,29 +321,38 @@ [[package]] name = "clap" -version = "4.1.13" +version = "4.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c911b090850d79fc64fe9ea01e28e465f65e821e08813ced95bced72f7a8a9b" +checksum = "956ac1f6381d8d82ab4684768f89c0ea3afe66925ceadb4eeb3fc452ffc55d62" dependencies = [ - "bitflags", + "clap_builder", "clap_derive", - "clap_lex 0.3.3", - "is-terminal", "once_cell", +] + +[[package]] +name = "clap_builder" +version = "4.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84080e799e54cff944f4b4a4b0e71630b0e0443b25b985175c7dddc1a859b749" +dependencies = [ + "anstream", + "anstyle", + "bitflags", + "clap_lex 0.4.1", "strsim", - "termcolor", ] [[package]] name = "clap_derive" -version = "4.1.12" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a932373bab67b984c790ddf2c9ca295d8e3af3b7ef92de5a5bacdccdee4b09b" +checksum = "3f9644cd56d6b87dbe899ef8b053e331c0637664e9e21a33dfcdc36093f5c5c4" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.10", + "syn 2.0.15", ] [[package]] @@ -304,12 +366,15 @@ [[package]] name = "clap_lex" -version = "0.3.3" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "033f6b7a4acb1f358c742aaca805c939ee73b4c6209ae4318ec7aca81c42e646" -dependencies = [ - "os_str_bytes", -] +checksum = "8a2dd5a6fe8c6e3502f568a6353e5273bbb15193ad9a89e457b9970798efbea1" + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" [[package]] name = "combine" @@ -329,9 +394,9 @@ [[package]] name = "cpufeatures" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280a9f2d8b3a38871a3c8a46fb80db65e5e5ed97da80c4d08bf27fb63e35e181" +checksum = "3e4c1eaa2012c47becbbad2ab175484c2a84d1185b566fb2cc5b8707343dfe58" dependencies = [ "libc", ] @@ -383,9 +448,9 @@ [[package]] name = "crossbeam-channel" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" dependencies = [ "cfg-if", "crossbeam-utils", @@ -426,9 +491,9 @@ [[package]] name = "crypto-bigint" -version = "0.4.9" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" +checksum = "7c2538c4e68e52548bacb3e83ac549f903d44f011ac9d5abb5e132e67d0808f7" dependencies = [ "generic-array", "rand_core 0.6.4", @@ -466,6 +531,26 @@ ] [[package]] +name = "crypto_provider_boringssl" +version = "0.1.0" +dependencies = [ + "bssl-crypto", + "crypto_provider", + "crypto_provider_stubs", +] + +[[package]] +name = "crypto_provider_default" +version = "0.1.0" +dependencies = [ + "cfg-if", + "crypto_provider", + "crypto_provider_boringssl", + "crypto_provider_openssl", + "crypto_provider_rustcrypto", +] + +[[package]] name = "crypto_provider_openssl" version = "0.1.0" dependencies = [ @@ -504,6 +589,13 @@ ] [[package]] +name = "crypto_provider_stubs" +version = "0.1.0" +dependencies = [ + "crypto_provider", +] + +[[package]] name = "ctr" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -529,18 +621,9 @@ [[package]] name = "der" -version = "0.6.1" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" -dependencies = [ - "const-oid", -] - -[[package]] -name = "der" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b10af9f9f9f2134a42d3f8aa74658660f2e0234b0eb81bd171df8aa32779ed" +checksum = "86b14af2045fa69ed2b7a48934bebb842d0f33e73e96e78766ecb14bb5347a11" dependencies = [ "const-oid", "zeroize", @@ -548,9 +631,9 @@ [[package]] name = "derive-getters" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c5905670fd9c320154f3a4a01c9e609733cd7b753f3c58777ab7d5ce26686b3" +checksum = "0122f262bf9c9a367829da84f808d9fb128c10ef283bbe7b0922a77cf07b2747" dependencies = [ "proc-macro2", "quote", @@ -606,13 +689,12 @@ [[package]] name = "elliptic-curve" -version = "0.12.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" +checksum = "75c71eaa367f2e5d556414a8eea812bc62985c879748d6403edabd9cb03f16e7" dependencies = [ "base16ct", "crypto-bigint", - "der 0.6.1", "digest", "ff", "generic-array", @@ -626,13 +708,13 @@ [[package]] name = "errno" -version = "0.2.8" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" dependencies = [ "errno-dragonfly", "libc", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -656,9 +738,9 @@ [[package]] name = "ff" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" dependencies = [ "rand_core 0.6.4", "subtle", @@ -697,9 +779,9 @@ [[package]] name = "futures" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "531ac96c6ff5fd7c62263c5e3c67a603af4fcaee2e1a0ae5565ba3a11e69e549" +checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" dependencies = [ "futures-channel", "futures-core", @@ -712,9 +794,9 @@ [[package]] name = "futures-channel" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" dependencies = [ "futures-core", "futures-sink", @@ -722,15 +804,15 @@ [[package]] name = "futures-core" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" [[package]] name = "futures-executor" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83" +checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" dependencies = [ "futures-core", "futures-task", @@ -739,32 +821,32 @@ [[package]] name = "futures-io" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89d422fa3cbe3b40dca574ab087abb5bc98258ea57eea3fd6f1fa7162c778b91" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" [[package]] name = "futures-macro" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.15", ] [[package]] name = "futures-sink" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec93083a4aecafb2a80a885c9de1f0ccae9dbd32c2bb54b0c3a65690e0b8d2f2" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" [[package]] name = "futures-task" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" [[package]] name = "futures-timer" @@ -774,9 +856,9 @@ [[package]] name = "futures-util" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" dependencies = [ "futures-channel", "futures-core", @@ -792,19 +874,20 @@ [[package]] name = "generic-array" -version = "0.14.6" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] name = "getrandom" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" dependencies = [ "cfg-if", "libc", @@ -813,9 +896,9 @@ [[package]] name = "group" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff", "rand_core 0.6.4", @@ -939,25 +1022,25 @@ [[package]] name = "io-lifetimes" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09270fd4fa1111bc614ed2246c7ef56239a3063d5be0d1ec3b589c505d400aeb" +checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" dependencies = [ "hermit-abi 0.3.1", "libc", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] name = "is-terminal" -version = "0.4.5" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8687c819457e979cc940d09cb16e42a1bf70aa6b60a549de6d3a62a0ee90c69e" +checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" dependencies = [ "hermit-abi 0.3.1", "io-lifetimes", "rustix", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] @@ -1023,9 +1106,10 @@ "anyhow", "base64 0.21.0", "blake2", - "clap 4.1.13", + "clap 4.2.4", "criterion", "crypto_provider", + "crypto_provider_default", "crypto_provider_rustcrypto", "ctr", "hdrhistogram", @@ -1050,6 +1134,7 @@ "base64 0.21.0", "criterion", "crypto_provider", + "crypto_provider_default", "crypto_provider_openssl", "crypto_provider_rustcrypto", "hex", @@ -1073,9 +1158,9 @@ [[package]] name = "libc" -version = "0.2.140" +version = "0.2.142" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" +checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317" [[package]] name = "libm" @@ -1085,9 +1170,9 @@ [[package]] name = "linux-raw-sys" -version = "0.1.4" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" +checksum = "36eb31c1778188ae1e64398743890d0877fef36d11521ac60406b42016e8c2cf" [[package]] name = "lock_api" @@ -1155,7 +1240,7 @@ "anyhow", "criterion", "crypto_provider", - "crypto_provider_rustcrypto", + "crypto_provider_default", "hex", "ldt", "rand", @@ -1225,9 +1310,9 @@ [[package]] name = "openssl" -version = "0.10.48" +version = "0.10.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "518915b97df115dd36109bfa429a48b8f737bd05508cf9588977b599648926d2" +checksum = "97ea2d98598bf9ada7ea6ee8a30fb74f9156b63bbe495d64ec2b87c269d2dda3" dependencies = [ "bitflags", "cfg-if", @@ -1240,22 +1325,21 @@ [[package]] name = "openssl-macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.15", ] [[package]] name = "openssl-sys" -version = "0.9.83" +version = "0.9.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "666416d899cf077260dac8698d60a60b435a46d57e82acb1be3d0dad87284e5b" +checksum = "992bac49bdbab4423199c654a5515bd2a6c6a23bf03f2dd3bdb7e5ae6259bc69" dependencies = [ - "autocfg", "bssl-sys", "cc", "libc", @@ -1294,9 +1378,9 @@ [[package]] name = "p256" -version = "0.12.0" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49c124b3cbce43bcbac68c58ec181d98ed6cc7e6d0aa7c3ba97b2563410b0e55" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" dependencies = [ "elliptic-curve", "primeorder", @@ -1330,7 +1414,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ - "der 0.7.3", + "der", "spki", ] @@ -1394,9 +1478,9 @@ [[package]] name = "primeorder" -version = "0.12.1" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b54f7131b3dba65a2f414cf5bd25b66d4682e4608610668eae785750ba4c5b2" +checksum = "cf8d3875361e28f7753baefef104386e7aa47642c93023356d97fdef4003bfb5" dependencies = [ "elliptic-curve", ] @@ -1427,9 +1511,9 @@ [[package]] name = "proc-macro2" -version = "1.0.54" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e472a104799c74b514a57226160104aa483546de37e839ec50e3c2e41dd87534" +checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" dependencies = [ "unicode-ident", ] @@ -1581,18 +1665,18 @@ [[package]] name = "redox_syscall" -version = "0.2.16" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" dependencies = [ "bitflags", ] [[package]] name = "regex" -version = "1.7.3" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d" +checksum = "af83e617f331cc6ae2da5443c602dfa5af81e517212d9d611a5b3ba1777b5370" dependencies = [ "aho-corasick", "memchr", @@ -1601,9 +1685,9 @@ [[package]] name = "regex-syntax" -version = "0.6.29" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" +checksum = "a5996294f19bd3aae0453a862ad728f60e6600695733dd5df01da90c54363a3c" [[package]] name = "rstest" @@ -1654,16 +1738,16 @@ [[package]] name = "rustix" -version = "0.36.11" +version = "0.37.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db4165c9963ab29e422d6c26fbc1d37f15bace6b2810221f9d925023480fcf0e" +checksum = "d9b864d3c18a5785a05953adeed93e2dca37ed30f18e69bba9f30079d51f363f" dependencies = [ "bitflags", "errno", "io-lifetimes", "libc", "linux-raw-sys", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] @@ -1689,12 +1773,12 @@ [[package]] name = "sec1" -version = "0.3.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" +checksum = "f0aec48e813d6b90b15f0b8948af3c63483992dee44c03e9930b3eebdabe046e" dependencies = [ "base16ct", - "der 0.6.1", + "der", "generic-array", "subtle", "zeroize", @@ -1708,29 +1792,29 @@ [[package]] name = "serde" -version = "1.0.158" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9" +checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.158" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad" +checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" dependencies = [ "proc-macro2", "quote", - "syn 2.0.10", + "syn 2.0.15", ] [[package]] name = "serde_json" -version = "1.0.95" +version = "1.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d721eca97ac802aa7777b701877c8004d950fc142651367300d21c1cc0194744" +checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" dependencies = [ "itoa", "ryu", @@ -1785,7 +1869,7 @@ checksum = "37a5be806ab6f127c3da44b7378837ebf01dadca8510a0e572460216b228bd0e" dependencies = [ "base64ct", - "der 0.7.3", + "der", ] [[package]] @@ -1813,9 +1897,9 @@ [[package]] name = "syn" -version = "2.0.10" +version = "2.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aad1363ed6d37b84299588d62d3a7d95b5a5c2d9aad5c85609fda12afaa1f40" +checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" dependencies = [ "proc-macro2", "quote", @@ -1824,24 +1908,15 @@ [[package]] name = "tempfile" -version = "3.4.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af18f7ae1acd354b992402e9ec5864359d693cd8a79dcbef59f76891701c1e95" +checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" dependencies = [ "cfg-if", "fastrand", "redox_syscall", "rustix", - "windows-sys 0.42.0", -] - -[[package]] -name = "termcolor" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" -dependencies = [ - "winapi-util", + "windows-sys 0.45.0", ] [[package]] @@ -1875,7 +1950,7 @@ dependencies = [ "proc-macro2", "quote", - "syn 2.0.10", + "syn 2.0.15", ] [[package]] @@ -1915,6 +1990,7 @@ version = "0.1.0" dependencies = [ "bytes", + "criterion", "crypto_provider", "crypto_provider_openssl", "crypto_provider_rustcrypto", @@ -1971,7 +2047,7 @@ name = "ukey2_shell" version = "0.1.0" dependencies = [ - "clap 4.1.13", + "clap 4.2.4", "crypto_provider_rustcrypto", "ukey2_connections", "ukey2_rs", @@ -1994,6 +2070,12 @@ ] [[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] name = "vcpkg" version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2129,26 +2211,20 @@ [[package]] name = "windows-sys" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows-sys" version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" dependencies = [ - "windows-targets", + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.0", ] [[package]] @@ -2157,13 +2233,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +dependencies = [ + "windows_aarch64_gnullvm 0.48.0", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm 0.48.0", + "windows_x86_64_msvc 0.48.0", ] [[package]] @@ -2173,42 +2264,84 @@ checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + +[[package]] name = "windows_aarch64_msvc" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + +[[package]] name = "windows_i686_gnu" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + +[[package]] name = "windows_i686_msvc" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + +[[package]] name = "windows_x86_64_gnu" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + +[[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + +[[package]] name = "windows_x86_64_msvc" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] name = "wycheproof" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2249,7 +2382,7 @@ "array_ref", "base64 0.21.0", "crypto_provider", - "crypto_provider_rustcrypto", + "crypto_provider_default", "hex", "ldt_tbc", "rand",
diff --git a/nearby/Cargo.toml b/nearby/Cargo.toml index a2b9f93..8ede0df 100644 --- a/nearby/Cargo.toml +++ b/nearby/Cargo.toml
@@ -6,9 +6,13 @@ "connections/ukey2/ukey2_jni", "connections/ukey2/ukey2_proto", "connections/ukey2/ukey2_shell", + # placeholder bssl-crypto crate + "crypto/bssl-crypto", "crypto/crypto_provider", "crypto/crypto_provider_openssl", "crypto/crypto_provider_rustcrypto", + "crypto/crypto_provider_stubs", + "crypto/crypto_provider_default", "crypto/rand_core_05_adapter", "presence/array_view", "presence/ldt", @@ -25,11 +29,13 @@ exclude = ["presence/ldt_np_adv_ffi", "crypto/crypto_provider_boringssl"] [workspace.dependencies] -array_ref = {path = "presence/array_ref"} -array_view = {path = "presence/array_view"} +array_ref = { path = "presence/array_ref" } +array_view = { path = "presence/array_view" } crypto_provider = { path = "crypto/crypto_provider" } crypto_provider_openssl = { path = "crypto/crypto_provider_openssl" } crypto_provider_rustcrypto = { path = "crypto/crypto_provider_rustcrypto" } +crypto_provider_stubs = { path = "crypto/crypto_provider_stubs" } +crypto_provider_default = {path = "crypto/crypto_provider_default" } rand_core_05_adapter = { path = "crypto/rand_core_05_adapter" } rand_ext = { path = "presence/rand_ext" } test_helper = { path = "presence/test_helper" } @@ -38,11 +44,11 @@ xts_aes = { path = "presence/xts_aes" } ldt = { path = "presence/ldt" } ldt_np_adv = { path = "presence/ldt_np_adv" } -ldt_tbc = {path = "presence/ldt_tbc"} +ldt_tbc = { path = "presence/ldt_tbc" } # RustCrypto crates rand = { version = "0.8.5", default-features = false } -rand_core = {version = "0.6.4"} +rand_core = "0.6.4" rand_pcg = "0.3.1" sha2 = { version = "0.10.2", default-features = false } aes = "0.8.2" @@ -51,7 +57,7 @@ hkdf = "0.12.3" hmac = "0.12.1" ed25519-dalek = { version = "2.0.0-rc.2", default-features = false } -ed25519 = "1.5.3" +ed25519 = "2.2.0" aes-gcm = "0.10.1" hex = "0.4.3" serde_json = { version = "1.0.91", features = ["alloc"], default-features = false } @@ -59,12 +65,10 @@ 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 } -sec1 = "0.3.0" -# AOSP's protobuf is only at 2.27.1 (http://cs/android-internal/external/rust/crates/protobuf/METADATA) +p256 = { version = "0.13.0", default-features = false } +sec1 = "0.7.1" protobuf = "3.2.0" protobuf-codegen = "3.2.0" -protoc-rust = "2.27.1" jni = "0.21.1" spin = "0.9.8" anyhow = "1.0.64" @@ -74,7 +78,7 @@ clap = { version = "4.0.25", features = ["derive"] } lazy_static = { version = "1.4.0", features = ["spin_no_std"] } hex-literal = "0.3.4" -openssl = "0.10.45" +openssl = "0.10.48" cfg-if = "1.0.0" blake2 = "0.10.4" hdrhistogram = "7.5.0"
diff --git a/nearby/connections/ukey2/ukey2_connections/Cargo.toml b/nearby/connections/ukey2/ukey2_connections/Cargo.toml index dff7f06..41fe10d 100644 --- a/nearby/connections/ukey2/ukey2_connections/Cargo.toml +++ b/nearby/connections/ukey2/ukey2_connections/Cargo.toml
@@ -11,10 +11,14 @@ rand = { workspace = true, features = ["std", "std_rng"] } ukey2_proto.workspace = true nom = { version = "7.1.1", features = ["alloc"] } - bytes = "1.2.1" +criterion = "0.4.0" [dev-dependencies] crypto_provider_openssl.workspace = true crypto_provider_rustcrypto = { workspace = true, features = ["alloc", "std"] } rstest = "0.16.0" + +[[bench]] +name = "ukey2_benches" +harness = false
diff --git a/nearby/connections/ukey2/ukey2_connections/benches/ukey2_benches.rs b/nearby/connections/ukey2/ukey2_connections/benches/ukey2_benches.rs new file mode 100644 index 0000000..63372ef --- /dev/null +++ b/nearby/connections/ukey2/ukey2_connections/benches/ukey2_benches.rs
@@ -0,0 +1,94 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use criterion::{black_box, criterion_group, criterion_main, Criterion, Throughput}; +use rand::{Rng, SeedableRng}; + +use crypto_provider::CryptoProvider; +use crypto_provider_rustcrypto::RustCrypto; +use ukey2_connections::{ + D2DConnectionContextV1, D2DHandshakeContext, InitiatorD2DHandshakeContext, + ServerD2DHandshakeContext, +}; +use ukey2_rs::HandshakeImplementation; + +fn run_handshake_with_rng<C, R>( + mut rng: R, +) -> (D2DConnectionContextV1<R>, D2DConnectionContextV1<R>) +where + C: CryptoProvider, + R: rand::RngCore + rand::CryptoRng + rand::SeedableRng + Send, +{ + let mut initiator_ctx = InitiatorD2DHandshakeContext::<C, R>::new_impl( + HandshakeImplementation::Spec, + R::from_rng(&mut rng).unwrap(), + ); + let mut server_ctx = ServerD2DHandshakeContext::<C, R>::new_impl( + HandshakeImplementation::Spec, + R::from_rng(&mut rng).unwrap(), + ); + server_ctx + .handle_handshake_message( + initiator_ctx + .get_next_handshake_message() + .expect("No message") + .as_slice(), + ) + .expect("Failed to handle message"); + initiator_ctx + .handle_handshake_message( + server_ctx + .get_next_handshake_message() + .expect("No message") + .as_slice(), + ) + .expect("Failed to handle message"); + server_ctx + .handle_handshake_message( + initiator_ctx + .get_next_handshake_message() + .expect("No message") + .as_slice(), + ) + .expect("Failed to handle message"); + assert!(initiator_ctx.is_handshake_complete()); + assert!(server_ctx.is_handshake_complete()); + ( + initiator_ctx.to_connection_context().unwrap(), + server_ctx.to_connection_context().unwrap(), + ) +} + +fn criterion_benchmark(c: &mut Criterion) { + let kib = 1024; + let mut group = c.benchmark_group("throughput"); + let mut plaintext = Vec::new(); + let (mut initiator_ctx, mut server_ctx) = + run_handshake_with_rng::<RustCrypto, _>(rand::rngs::StdRng::from_entropy()); + for len in [10 * kib, 1024 * kib] { + group.throughput(Throughput::Bytes(len as u64)); + plaintext.resize(len, 0); + rand::thread_rng().fill(&mut plaintext[..]); + group.bench_function(format!("UKEY2 encrypt/decrypt {}KiB", len / kib), |b| { + b.iter(|| { + let msg = + initiator_ctx.encode_message_to_peer::<RustCrypto, &[u8]>(&plaintext, None); + black_box(server_ctx.decode_message_from_peer::<RustCrypto, &[u8]>(&msg, None)) + }) + }); + } +} + +criterion_group!(benches, criterion_benchmark); +criterion_main!(benches);
diff --git a/nearby/connections/ukey2/ukey2_connections/fuzz/Cargo.lock b/nearby/connections/ukey2/ukey2_connections/fuzz/Cargo.lock index 8f42dbe..5c10cb6 100644 --- a/nearby/connections/ukey2/ukey2_connections/fuzz/Cargo.lock +++ b/nearby/connections/ukey2/ukey2_connections/fuzz/Cargo.lock
@@ -49,6 +49,12 @@ ] [[package]] +name = "anes" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" + +[[package]] name = "anyhow" version = "1.0.70" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -64,6 +70,17 @@ ] [[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + +[[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -100,12 +117,24 @@ ] [[package]] +name = "bumpalo" +version = "3.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b1ce199063694f33ffb7dd4e0ee620741495c32833cde5aa08f02a0bf96f0c8" + +[[package]] name = "bytes" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" [[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + +[[package]] name = "cbc" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -130,6 +159,33 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] +name = "ciborium" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369" + +[[package]] +name = "ciborium-ll" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b" +dependencies = [ + "ciborium-io", + "half", +] + +[[package]] name = "cipher" version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -140,6 +196,27 @@ ] [[package]] +name = "clap" +version = "3.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" +dependencies = [ + "bitflags", + "clap_lex", + "indexmap", + "textwrap", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + +[[package]] name = "const-oid" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -155,6 +232,85 @@ ] [[package]] +name = "criterion" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb" +dependencies = [ + "anes", + "atty", + "cast", + "ciborium", + "clap", + "criterion-plot", + "itertools", + "lazy_static", + "num-traits", + "oorandom", + "plotters", + "rayon", + "regex", + "serde", + "serde_derive", + "serde_json", + "tinytemplate", + "walkdir", +] + +[[package]] +name = "criterion-plot" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +dependencies = [ + "cast", + "itertools", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" +dependencies = [ + "autocfg", + "cfg-if", + "crossbeam-utils", + "memoffset", + "scopeguard", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +dependencies = [ + "cfg-if", +] + +[[package]] name = "crypto-bigint" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -180,9 +336,6 @@ [[package]] name = "crypto_provider" version = "0.1.0" -dependencies = [ - "bytes", -] [[package]] name = "crypto_provider_rustcrypto" @@ -233,9 +386,9 @@ [[package]] name = "der" -version = "0.7.1" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc906908ea6458456e5eaa160a9c08543ec3d1e6f71e2235cedd660cb65f9df0" +checksum = "86b14af2045fa69ed2b7a48934bebb842d0f33e73e96e78766ecb14bb5347a11" dependencies = [ "const-oid", "zeroize", @@ -303,9 +456,9 @@ [[package]] name = "elliptic-curve" -version = "0.13.2" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea5a92946e8614bb585254898bb7dd1ddad241ace60c52149e3765e34cc039d" +checksum = "75c71eaa367f2e5d556414a8eea812bc62985c879748d6403edabd9cb03f16e7" dependencies = [ "base16ct", "crypto-bigint", @@ -368,9 +521,9 @@ [[package]] name = "generic-array" -version = "0.14.6" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", @@ -400,6 +553,12 @@ ] [[package]] +name = "half" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" + +[[package]] name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -407,6 +566,24 @@ [[package]] name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" @@ -464,12 +641,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09270fd4fa1111bc614ed2246c7ef56239a3063d5be0d1ec3b589c505d400aeb" dependencies = [ - "hermit-abi", + "hermit-abi 0.3.1", "libc", "windows-sys 0.45.0", ] [[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" + +[[package]] name = "jobserver" version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -479,6 +671,21 @@ ] [[package]] +name = "js-sys" +version = "0.3.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] name = "libc" version = "0.2.140" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -523,6 +730,15 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] +name = "memoffset" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +dependencies = [ + "autocfg", +] + +[[package]] name = "minimal-lexical" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -569,22 +785,44 @@ ] [[package]] +name = "num_cpus" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +dependencies = [ + "hermit-abi 0.2.6", + "libc", +] + +[[package]] name = "once_cell" version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" [[package]] +name = "oorandom" +version = "11.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" + +[[package]] name = "opaque-debug" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] -name = "p256" -version = "0.13.0" +name = "os_str_bytes" +version = "6.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7270da3e5caa82afd3deb054cc237905853813aea3859544bc082c3fe55b8d47" +checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267" + +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" dependencies = [ "elliptic-curve", "primeorder", @@ -607,6 +845,34 @@ checksum = "e3d7ddaed09e0eb771a79ab0fd64609ba0afb0a8366421957936ad14cbd13630" [[package]] +name = "plotters" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142" + +[[package]] +name = "plotters-svg" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f" +dependencies = [ + "plotters-backend", +] + +[[package]] name = "polyval" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -626,9 +892,9 @@ [[package]] name = "primeorder" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7613fdcc0831c10060fa69833ea8fa2caa94b6456f51e25356a885b530a2e3d0" +checksum = "cf8d3875361e28f7753baefef104386e7aa47642c93023356d97fdef4003bfb5" dependencies = [ "elliptic-curve", ] @@ -733,6 +999,28 @@ ] [[package]] +name = "rayon" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "num_cpus", +] + +[[package]] name = "redox_syscall" version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -773,10 +1061,31 @@ ] [[package]] -name = "sec1" -version = "0.7.1" +name = "ryu" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48518a2b5775ba8ca5b46596aae011caa431e6ce7e4a67ead66d92f08884220e" +checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "sec1" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0aec48e813d6b90b15f0b8948af3c63483992dee44c03e9930b3eebdabe046e" dependencies = [ "base16ct", "der", @@ -786,6 +1095,37 @@ ] [[package]] +name = "serde" +version = "1.0.160" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.160" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.13", +] + +[[package]] +name = "serde_json" +version = "1.0.96" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] name = "sha2" version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -844,6 +1184,12 @@ ] [[package]] +name = "textwrap" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" + +[[package]] name = "thiserror" version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -864,6 +1210,16 @@ ] [[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] name = "typenum" version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -874,6 +1230,7 @@ version = "0.1.0" dependencies = [ "bytes", + "criterion", "crypto_provider", "nom", "rand", @@ -936,12 +1293,86 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] +name = "walkdir" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] +name = "wasm-bindgen" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" + +[[package]] +name = "web-sys" +version = "0.3.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] name = "which" version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -969,6 +1400,15 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/nearby/crypto/bssl-crypto/Cargo.toml b/nearby/crypto/bssl-crypto/Cargo.toml new file mode 100644 index 0000000..bfe3964 --- /dev/null +++ b/nearby/crypto/bssl-crypto/Cargo.toml
@@ -0,0 +1,9 @@ +[package] +name = "bssl-crypto" +version.workspace = true +edition.workspace = true +publish.workspace = true + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies]
diff --git a/nearby/crypto/bssl-crypto/src/lib.rs b/nearby/crypto/bssl-crypto/src/lib.rs new file mode 100644 index 0000000..d72e106 --- /dev/null +++ b/nearby/crypto/bssl-crypto/src/lib.rs
@@ -0,0 +1,16 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! Placeholder crate to satisfy cargo. If actually using boring ssl, please run `prepare_boringssl` +//! from scripts/build_script.sh
diff --git a/nearby/crypto/crypto_provider_boringssl/.cargo/config.toml b/nearby/crypto/crypto_provider_boringssl/.cargo/config.toml new file mode 100644 index 0000000..f5ab7fa --- /dev/null +++ b/nearby/crypto/crypto_provider_boringssl/.cargo/config.toml
@@ -0,0 +1,3 @@ +paths = [ + "../../../boringssl-build/boringssl/rust/bssl-crypto", +] \ No newline at end of file
diff --git a/nearby/crypto/crypto_provider_boringssl/Cargo.lock b/nearby/crypto/crypto_provider_boringssl/Cargo.lock index 4a8327d..b1c65bd 100644 --- a/nearby/crypto/crypto_provider_boringssl/Cargo.lock +++ b/nearby/crypto/crypto_provider_boringssl/Cargo.lock
@@ -17,13 +17,6 @@ [[package]] name = "bssl-crypto" version = "0.1.0" -dependencies = [ - "bssl-sys", -] - -[[package]] -name = "bssl-sys" -version = "0.1.0" [[package]] name = "cfg-if"
diff --git a/nearby/crypto/crypto_provider_boringssl/Cargo.toml b/nearby/crypto/crypto_provider_boringssl/Cargo.toml index 686d871..6a62172 100644 --- a/nearby/crypto/crypto_provider_boringssl/Cargo.toml +++ b/nearby/crypto/crypto_provider_boringssl/Cargo.toml
@@ -8,8 +8,8 @@ crypto_provider = { path = "../crypto_provider", features = ["alloc", "std"] } crypto_provider_stubs = { path = "../crypto_provider_stubs" } -# Note: before this crate will build you need to run `scripts/prepare-boringssl.sh` -bssl-crypto = {path = "../../../boringssl-build/boringssl/rust/bssl-crypto"} +# Note: before this crate will work you need to run `scripts/prepare-boringssl.sh` +bssl-crypto = {path = "../bssl-crypto"} [dev-dependencies] crypto_provider = {path = "../crypto_provider", features = ["std", "alloc", "testing"]}
diff --git a/nearby/crypto/crypto_provider_default/Cargo.toml b/nearby/crypto/crypto_provider_default/Cargo.toml new file mode 100644 index 0000000..9eff7ea --- /dev/null +++ b/nearby/crypto/crypto_provider_default/Cargo.toml
@@ -0,0 +1,18 @@ +[package] +name = "crypto_provider_default" +version.workspace = true +edition.workspace = true +publish.workspace = true + +[dependencies] +crypto_provider.workspace = true +crypto_provider_rustcrypto = {workspace = true, optional = true} +crypto_provider_boringssl = {path = "../crypto_provider_boringssl", optional = true} +crypto_provider_openssl = {workspace = true, optional = true} +cfg-if.workspace = true + +[features] +default = ["rustcrypto"] +rustcrypto = ["crypto_provider_rustcrypto"] +boringssl = ["crypto_provider_boringssl"] +opensslbssl = ["crypto_provider_openssl/boringssl"]
diff --git a/nearby/crypto/crypto_provider_default/src/lib.rs b/nearby/crypto/crypto_provider_default/src/lib.rs new file mode 100644 index 0000000..831698b --- /dev/null +++ b/nearby/crypto/crypto_provider_default/src/lib.rs
@@ -0,0 +1,28 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! Provides multiple implementations of CryptoProvider through the same struct, configurable by +//! feature flag. + +cfg_if::cfg_if! { + if #[cfg(feature = "rustcrypto")] { + pub use crypto_provider_rustcrypto::RustCrypto as CryptoProviderImpl; + } else if #[cfg(feature = "boringssl")] { + pub use crypto_provider_boringssl::Boringssl as CryptoProviderImpl; + } else if #[cfg(feature = "openssl")] { + pub use crypto_provider_openssl::Openssl as CryptoProviderImpl; + } else { + compile_error!("No crypto_provider feature enabled!"); + } +}
diff --git a/nearby/presence/ldt/Cargo.toml b/nearby/presence/ldt/Cargo.toml index 8f2461e..d98f223 100644 --- a/nearby/presence/ldt/Cargo.toml +++ b/nearby/presence/ldt/Cargo.toml
@@ -9,8 +9,7 @@ ldt_tbc.workspace = true [dev-dependencies] -crypto_provider.workspace = true -crypto_provider_rustcrypto.workspace = true +crypto_provider_default = {workspace = true} rand_ext.workspace = true test_helper.workspace = true xts_aes.workspace = true @@ -18,14 +17,17 @@ rand.workspace = true rand_pcg.workspace = true base64.workspace = true +serde_json = {workspace = true, features = ["std"]} +anyhow.workspace = true +hex.workspace = true + +# benchmark/example only deps +crypto_provider_rustcrypto.workspace = true clap.workspace = true criterion.workspace = true sha2.workspace = true ctr.workspace = true aes.workspace = true -serde_json.workspace = true -anyhow.workspace = true -hex.workspace = true subtle.workspace = true blake2.workspace = true hdrhistogram.workspace = true
diff --git a/nearby/presence/ldt/fuzz/Cargo.lock b/nearby/presence/ldt/fuzz/Cargo.lock index 2f38bca..e0b529d 100644 --- a/nearby/presence/ldt/fuzz/Cargo.lock +++ b/nearby/presence/ldt/fuzz/Cargo.lock
@@ -157,9 +157,6 @@ [[package]] name = "crypto_provider" version = "0.1.0" -dependencies = [ - "bytes", -] [[package]] name = "crypto_provider_rustcrypto" @@ -210,9 +207,9 @@ [[package]] name = "der" -version = "0.7.1" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc906908ea6458456e5eaa160a9c08543ec3d1e6f71e2235cedd660cb65f9df0" +checksum = "86b14af2045fa69ed2b7a48934bebb842d0f33e73e96e78766ecb14bb5347a11" dependencies = [ "const-oid", "zeroize", @@ -263,9 +260,9 @@ [[package]] name = "elliptic-curve" -version = "0.13.2" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea5a92946e8614bb585254898bb7dd1ddad241ace60c52149e3765e34cc039d" +checksum = "75c71eaa367f2e5d556414a8eea812bc62985c879748d6403edabd9cb03f16e7" dependencies = [ "base16ct", "crypto-bigint", @@ -298,9 +295,9 @@ [[package]] name = "generic-array" -version = "0.14.6" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", @@ -429,9 +426,9 @@ [[package]] name = "p256" -version = "0.13.0" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7270da3e5caa82afd3deb054cc237905853813aea3859544bc082c3fe55b8d47" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" dependencies = [ "elliptic-curve", "primeorder", @@ -473,9 +470,9 @@ [[package]] name = "primeorder" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7613fdcc0831c10060fa69833ea8fa2caa94b6456f51e25356a885b530a2e3d0" +checksum = "cf8d3875361e28f7753baefef104386e7aa47642c93023356d97fdef4003bfb5" dependencies = [ "elliptic-curve", ] @@ -528,9 +525,9 @@ [[package]] name = "sec1" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48518a2b5775ba8ca5b46596aae011caa431e6ce7e4a67ead66d92f08884220e" +checksum = "f0aec48e813d6b90b15f0b8948af3c63483992dee44c03e9930b3eebdabe046e" dependencies = [ "base16ct", "der",
diff --git a/nearby/presence/ldt/tests/ldt_roundtrip.rs b/nearby/presence/ldt/tests/ldt_roundtrip.rs index 6f5cada..33f3fe5 100644 --- a/nearby/presence/ldt/tests/ldt_roundtrip.rs +++ b/nearby/presence/ldt/tests/ldt_roundtrip.rs
@@ -14,7 +14,7 @@ use crypto_provider::aes::BLOCK_SIZE; use crypto_provider::{CryptoProvider, CryptoRng}; -use crypto_provider_rustcrypto::RustCrypto; +use crypto_provider_default::CryptoProviderImpl; use ldt::*; use ldt_tbc::TweakableBlockCipher; use rand::rngs::StdRng; @@ -24,25 +24,25 @@ #[test] fn roundtrip_normal_padder() { - let mut rng = <RustCrypto as CryptoProvider>::CryptoRng::new(); + let mut rng = <CryptoProviderImpl 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 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), + let ldt_key = LdtKey::from_random::<CryptoProviderImpl>(&mut rng); + do_roundtrip::<16, _, _, _, CryptoProviderImpl>( + LdtEncryptCipher::<16, XtsAes128<CryptoProviderImpl>, Swap>::new(&ldt_key), + LdtDecryptCipher::<16, XtsAes128<CryptoProviderImpl>, Swap>::new(&ldt_key), &DefaultPadder::default(), &mut rng, &plaintext_len_range, ) } else { - 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), + let ldt_key = LdtKey::from_random::<CryptoProviderImpl>(&mut rng); + do_roundtrip::<16, _, _, _, CryptoProviderImpl>( + LdtEncryptCipher::<16, XtsAes256<CryptoProviderImpl>, Swap>::new(&ldt_key), + LdtDecryptCipher::<16, XtsAes256<CryptoProviderImpl>, Swap>::new(&ldt_key), &DefaultPadder::default(), &mut rng, &plaintext_len_range, @@ -53,29 +53,30 @@ #[test] fn roundtrip_xor_padder() { - let mut rng = <RustCrypto as CryptoProvider>::CryptoRng::new(); + let mut rng = <CryptoProviderImpl 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::<BLOCK_SIZE, RustCrypto>(&mut rng).into(); + let padder: XorPadder<BLOCK_SIZE> = + random_bytes::<BLOCK_SIZE, CryptoProviderImpl>(&mut rng).into(); 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), + let ldt_key = LdtKey::from_random::<CryptoProviderImpl>(&mut rng); + do_roundtrip::<16, _, _, _, CryptoProviderImpl>( + LdtEncryptCipher::<16, XtsAes128<CryptoProviderImpl>, Swap>::new(&ldt_key), + LdtDecryptCipher::<16, XtsAes128<CryptoProviderImpl>, Swap>::new(&ldt_key), &padder, &mut rng, &plaintext_len_range, ) } else { - 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), + let ldt_key = LdtKey::from_random::<CryptoProviderImpl>(&mut rng); + do_roundtrip::<16, _, _, _, CryptoProviderImpl>( + LdtEncryptCipher::<16, XtsAes256<CryptoProviderImpl>, Swap>::new(&ldt_key), + LdtDecryptCipher::<16, XtsAes256<CryptoProviderImpl>, Swap>::new(&ldt_key), &padder, &mut rng, &plaintext_len_range,
diff --git a/nearby/presence/ldt/tests/ldt_test_vectors.rs b/nearby/presence/ldt/tests/ldt_test_vectors.rs index 691bd62..9d66926 100644 --- a/nearby/presence/ldt/tests/ldt_test_vectors.rs +++ b/nearby/presence/ldt/tests/ldt_test_vectors.rs
@@ -13,7 +13,7 @@ // limitations under the License. use anyhow::anyhow; -use crypto_provider_rustcrypto::RustCrypto; +use crypto_provider_default::CryptoProviderImpl; use ldt::{DefaultPadder, LdtDecryptCipher, LdtEncryptCipher, LdtKey, Swap, XorPadder}; use std::{fs, io::Read as _}; use test_helper::{extract_key_array, extract_key_vec}; @@ -46,10 +46,10 @@ assert!(len >= crypto_provider::aes::BLOCK_SIZE); assert!(len < crypto_provider::aes::BLOCK_SIZE * 2); - let ldt_enc = LdtEncryptCipher::<16, XtsAes128<RustCrypto>, Swap>::new( + let ldt_enc = LdtEncryptCipher::<16, XtsAes128<CryptoProviderImpl>, Swap>::new( &LdtKey::from_concatenated(&key), ); - let ldt_dec = LdtDecryptCipher::<16, XtsAes128<RustCrypto>, Swap>::new( + let ldt_dec = LdtDecryptCipher::<16, XtsAes128<CryptoProviderImpl>, Swap>::new( &LdtKey::from_concatenated(&key), ); @@ -99,10 +99,10 @@ assert!(len >= crypto_provider::aes::BLOCK_SIZE); assert!(len < crypto_provider::aes::BLOCK_SIZE * 2); - let ldt_enc = LdtEncryptCipher::<16, XtsAes128<RustCrypto>, Swap>::new( + let ldt_enc = LdtEncryptCipher::<16, XtsAes128<CryptoProviderImpl>, Swap>::new( &LdtKey::from_concatenated(&key), ); - let ldt_dec = LdtDecryptCipher::<16, XtsAes128<RustCrypto>, Swap>::new( + let ldt_dec = LdtDecryptCipher::<16, XtsAes128<CryptoProviderImpl>, Swap>::new( &LdtKey::from_concatenated(&key), );
diff --git a/nearby/presence/ldt/tests/tests.rs b/nearby/presence/ldt/tests/tests.rs index a50658d..56e5947 100644 --- a/nearby/presence/ldt/tests/tests.rs +++ b/nearby/presence/ldt/tests/tests.rs
@@ -16,7 +16,7 @@ use alloc::vec; use crypto_provider::aes::BLOCK_SIZE; -use crypto_provider_rustcrypto::RustCrypto; +use crypto_provider_default::CryptoProviderImpl; use ldt::{ DefaultPadder, LdtDecryptCipher, LdtEncryptCipher, LdtError, LdtKey, Padder, Swap, XorPadder, }; @@ -26,7 +26,7 @@ fn normal_pad_empty() { let padder = DefaultPadder::default(); let tweak: xts_aes::Tweak = - <DefaultPadder as Padder<16, XtsAes128<RustCrypto>>>::pad_tweak(&padder, &[]); + <DefaultPadder as Padder<16, XtsAes128<CryptoProviderImpl>>>::pad_tweak(&padder, &[]); let bytes = tweak.le_bytes(); // leading 1 bit @@ -39,7 +39,7 @@ fn normal_pad_one_byte() { let padder = DefaultPadder::default(); let tweak: xts_aes::Tweak = - <DefaultPadder as Padder<16, XtsAes128<RustCrypto>>>::pad_tweak(&padder, &[0x81]); + <DefaultPadder as Padder<16, XtsAes128<CryptoProviderImpl>>>::pad_tweak(&padder, &[0x81]); let bytes = tweak.le_bytes(); @@ -55,7 +55,7 @@ let padder = DefaultPadder::default(); let input = [0x99; 15]; let tweak: xts_aes::Tweak = - <DefaultPadder as Padder<16, XtsAes128<RustCrypto>>>::pad_tweak(&padder, &input); + <DefaultPadder as Padder<16, XtsAes128<CryptoProviderImpl>>>::pad_tweak(&padder, &input); let bytes = tweak.le_bytes(); @@ -70,7 +70,7 @@ fn normal_pad_too_big_panics() { let padder = DefaultPadder::default(); let input = [0x99; 16]; - <DefaultPadder as Padder<16, XtsAes128<RustCrypto>>>::pad_tweak(&padder, &input); + <DefaultPadder as Padder<16, XtsAes128<CryptoProviderImpl>>>::pad_tweak(&padder, &input); } #[test] @@ -78,7 +78,7 @@ let padder = [0x24; BLOCK_SIZE].into(); let tweak: xts_aes::Tweak = <XorPadder<BLOCK_SIZE> as Padder< BLOCK_SIZE, - XtsAes128<RustCrypto>, + XtsAes128<CryptoProviderImpl>, >>::pad_tweak(&padder, &[]); let bytes = tweak.le_bytes(); @@ -94,7 +94,7 @@ let padder = [0x24; BLOCK_SIZE].into(); let tweak: xts_aes::Tweak = <XorPadder<BLOCK_SIZE> as Padder< BLOCK_SIZE, - XtsAes128<RustCrypto>, + XtsAes128<CryptoProviderImpl>, >>::pad_tweak(&padder, &[0x81]); let bytes = tweak.le_bytes(); @@ -112,7 +112,7 @@ let input = [0x99; 15]; let tweak: xts_aes::Tweak = <XorPadder<BLOCK_SIZE> as Padder< BLOCK_SIZE, - XtsAes128<RustCrypto>, + XtsAes128<CryptoProviderImpl>, >>::pad_tweak(&padder, &input); let bytes = tweak.le_bytes(); @@ -129,7 +129,7 @@ let padder = [0x24; BLOCK_SIZE].into(); // need 1 byte for padding, and 2 more for salt let input = [0x99; 16]; - <XorPadder<BLOCK_SIZE> as Padder<BLOCK_SIZE, XtsAes128<RustCrypto>>>::pad_tweak( + <XorPadder<BLOCK_SIZE> as Padder<BLOCK_SIZE, XtsAes128<CryptoProviderImpl>>>::pad_tweak( &padder, &input, ); } @@ -153,7 +153,7 @@ } fn do_length_check_dec(len: usize) { - let ldt_dec = LdtDecryptCipher::<{ BLOCK_SIZE }, XtsAes128<RustCrypto>, Swap>::new( + let ldt_dec = LdtDecryptCipher::<{ BLOCK_SIZE }, XtsAes128<CryptoProviderImpl>, Swap>::new( &LdtKey::<XtsAes128Key>::from_concatenated(&[0u8; 64]), ); @@ -165,7 +165,7 @@ } fn do_length_check_enc(len: usize) { - let ldt_enc = LdtEncryptCipher::<{ BLOCK_SIZE }, XtsAes128<RustCrypto>, Swap>::new( + let ldt_enc = LdtEncryptCipher::<{ BLOCK_SIZE }, XtsAes128<CryptoProviderImpl>, Swap>::new( &LdtKey::<XtsAes128Key>::from_concatenated(&[0u8; 64]), );
diff --git a/nearby/presence/ldt_np_adv/Cargo.toml b/nearby/presence/ldt_np_adv/Cargo.toml index 707bb8d..d543032 100644 --- a/nearby/presence/ldt_np_adv/Cargo.toml +++ b/nearby/presence/ldt_np_adv/Cargo.toml
@@ -13,7 +13,7 @@ ldt_tbc.workspace = true [dev-dependencies] -crypto_provider_rustcrypto = {workspace = true, features=["std"]} +crypto_provider_default.workspace = true crypto_provider_openssl.workspace = true rand_ext.workspace = true test_helper.workspace = true @@ -26,6 +26,9 @@ criterion.workspace = true rand_pcg.workspace = true +# Benchmark only dependency +crypto_provider_rustcrypto.workspace = true + [[bench]] name = "ldt_adv_scan" harness = false
diff --git a/nearby/presence/ldt_np_adv/benches/ldt_adv_scan.rs b/nearby/presence/ldt_np_adv/benches/ldt_adv_scan.rs index c40530b..47544d8 100644 --- a/nearby/presence/ldt_np_adv/benches/ldt_adv_scan.rs +++ b/nearby/presence/ldt_np_adv/benches/ldt_adv_scan.rs
@@ -21,6 +21,7 @@ use crypto_provider::CryptoProvider; use crypto_provider_openssl::Openssl; use crypto_provider_rustcrypto::RustCrypto; + use np_hkdf::NpKeySeedHkdf; fn ldt_adv_scan<C: CryptoProvider>(c: &mut Criterion) {
diff --git a/nearby/presence/ldt_np_adv/fuzz/Cargo.lock b/nearby/presence/ldt_np_adv/fuzz/Cargo.lock index 4922fc2..31409c8 100644 --- a/nearby/presence/ldt_np_adv/fuzz/Cargo.lock +++ b/nearby/presence/ldt_np_adv/fuzz/Cargo.lock
@@ -161,9 +161,6 @@ [[package]] name = "crypto_provider" version = "0.1.0" -dependencies = [ - "bytes", -] [[package]] name = "crypto_provider_rustcrypto" @@ -214,9 +211,9 @@ [[package]] name = "der" -version = "0.7.1" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc906908ea6458456e5eaa160a9c08543ec3d1e6f71e2235cedd660cb65f9df0" +checksum = "86b14af2045fa69ed2b7a48934bebb842d0f33e73e96e78766ecb14bb5347a11" dependencies = [ "const-oid", "zeroize", @@ -267,9 +264,9 @@ [[package]] name = "elliptic-curve" -version = "0.13.2" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea5a92946e8614bb585254898bb7dd1ddad241ace60c52149e3765e34cc039d" +checksum = "75c71eaa367f2e5d556414a8eea812bc62985c879748d6403edabd9cb03f16e7" dependencies = [ "base16ct", "crypto-bigint", @@ -302,9 +299,9 @@ [[package]] name = "generic-array" -version = "0.14.6" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", @@ -456,9 +453,9 @@ [[package]] name = "p256" -version = "0.13.0" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7270da3e5caa82afd3deb054cc237905853813aea3859544bc082c3fe55b8d47" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" dependencies = [ "elliptic-curve", "primeorder", @@ -500,9 +497,9 @@ [[package]] name = "primeorder" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7613fdcc0831c10060fa69833ea8fa2caa94b6456f51e25356a885b530a2e3d0" +checksum = "cf8d3875361e28f7753baefef104386e7aa47642c93023356d97fdef4003bfb5" dependencies = [ "elliptic-curve", ] @@ -555,9 +552,9 @@ [[package]] name = "sec1" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48518a2b5775ba8ca5b46596aae011caa431e6ce7e4a67ead66d92f08884220e" +checksum = "f0aec48e813d6b90b15f0b8948af3c63483992dee44c03e9930b3eebdabe046e" 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 6460e34..9d283d1 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
@@ -24,7 +24,7 @@ NP_LEGACY_METADATA_KEY_LEN, }; use anyhow::anyhow; -use crypto_provider_rustcrypto::RustCrypto; +use crypto_provider_default::CryptoProviderImpl; use rand::Rng; use rand_ext::{random_vec_rc, seeded_rng}; use serde_json::json; @@ -49,7 +49,7 @@ for tc in test_cases { let key_seed = extract_key_array::<32>(&tc, "key_seed"); - let hkdf = np_hkdf::NpKeySeedHkdf::<RustCrypto>::new(&key_seed); + let hkdf = np_hkdf::NpKeySeedHkdf::<CryptoProviderImpl>::new(&key_seed); let ldt_key = hkdf.legacy_ldt_key(); let hmac_key = hkdf.legacy_metadata_key_hmac_key(); @@ -57,9 +57,9 @@ assert_eq!(&extract_key_vec(&tc, "hmac_key"), &hmac_key.as_bytes()); let salt = LegacySalt::from(extract_key_array(&tc, "adv_salt")); - let padder = salt_padder::<16, RustCrypto>(salt); + let padder = salt_padder::<16, CryptoProviderImpl>(salt); - let ldt_enc = LdtEncrypterXtsAes128::<RustCrypto>::new(&ldt_key); + let ldt_enc = LdtEncrypterXtsAes128::<CryptoProviderImpl>::new(&ldt_key); let decrypter = build_np_adv_decrypter_from_key_seed( &hkdf, @@ -96,13 +96,13 @@ let plaintext = random_vec_rc(&mut rng, len); let key_seed: [u8; 32] = rng.gen(); - let hkdf = np_hkdf::NpKeySeedHkdf::<RustCrypto>::new(&key_seed); + let hkdf = np_hkdf::NpKeySeedHkdf::<CryptoProviderImpl>::new(&key_seed); let ldt_key = hkdf.legacy_ldt_key(); let hmac_key = hkdf.legacy_metadata_key_hmac_key(); let hmac: [u8; 32] = hmac_key.calculate_hmac(&plaintext[..NP_LEGACY_METADATA_KEY_LEN]); - let ldt_enc = LdtEncrypterXtsAes128::<RustCrypto>::new(&ldt_key); + let ldt_enc = LdtEncrypterXtsAes128::<CryptoProviderImpl>::new(&ldt_key); - let padder = salt_padder::<16, RustCrypto>(LegacySalt::from(rng.gen::<[u8; 2]>())); + let padder = salt_padder::<16, CryptoProviderImpl>(LegacySalt::from(rng.gen::<[u8; 2]>())); let mut ciphertext = plaintext.clone(); ldt_enc.encrypt(&mut ciphertext[..], &padder).unwrap();
diff --git a/nearby/presence/ldt_np_adv/src/tests.rs b/nearby/presence/ldt_np_adv/src/tests.rs index 653e145..56e917d 100644 --- a/nearby/presence/ldt_np_adv/src/tests.rs +++ b/nearby/presence/ldt_np_adv/src/tests.rs
@@ -27,7 +27,7 @@ }; use alloc::vec::Vec; use crypto_provider::{CryptoProvider, CryptoRng}; -use crypto_provider_rustcrypto::RustCrypto; +use crypto_provider_default::CryptoProviderImpl; use ldt::{DefaultPadder, LdtError, LdtKey, XorPadder}; use np_hkdf::NpKeySeedHkdf; use rand::Rng; @@ -37,7 +37,7 @@ fn decrypt_matches_correct_ciphertext() { 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::<CryptoProviderImpl>(&mut rng); let cipher = build_np_adv_decrypter_from_key_seed(&test_state.hkdf, test_state.hmac); let decrypted = cipher @@ -52,7 +52,7 @@ fn decrypt_doesnt_match_when_ciphertext_mangled() { 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::<CryptoProviderImpl>(&mut rng); // mangle the ciphertext test_state.ciphertext[0] ^= 0xAA; @@ -69,7 +69,7 @@ fn decrypt_doesnt_match_when_plaintext_doesnt_match_mac() { 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::<CryptoProviderImpl>(&mut rng); // mangle the mac test_state.hmac[0] ^= 0xAA; @@ -87,7 +87,7 @@ fn encrypt_works() { 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::<CryptoProviderImpl>(&mut rng); let cipher = test_state.ldt_enc; @@ -103,7 +103,8 @@ #[test] #[allow(deprecated)] fn encrypt_too_short_err() { - let ldt_enc = LdtEncrypterXtsAes128::<RustCrypto>::new(&LdtKey::from_concatenated(&[0; 64])); + let ldt_enc = + LdtEncrypterXtsAes128::<CryptoProviderImpl>::new(&LdtKey::from_concatenated(&[0; 64])); let mut payload = [0; 7]; assert_eq!( @@ -115,7 +116,8 @@ #[test] #[allow(deprecated)] fn encrypt_too_long_err() { - let ldt_enc = LdtEncrypterXtsAes128::<RustCrypto>::new(&LdtKey::from_concatenated(&[0; 64])); + let ldt_enc = + LdtEncrypterXtsAes128::<CryptoProviderImpl>::new(&LdtKey::from_concatenated(&[0; 64])); let mut payload = [0; 40]; assert_eq!( @@ -127,11 +129,11 @@ #[test] fn decrypt_too_short_err() { let adv_cipher = LdtNpAdvDecrypterXtsAes128 { - ldt_decrypter: LdtXtsAes128Decrypter::<RustCrypto>::new(&LdtKey::from_concatenated( - &[0; 64], - )), + ldt_decrypter: LdtXtsAes128Decrypter::<CryptoProviderImpl>::new( + &LdtKey::from_concatenated(&[0; 64]), + ), metadata_key_tag: [0; 32], - metadata_key_hmac_key: np_hkdf::NpHmacSha256Key::<RustCrypto>::from([0; 32]), + metadata_key_hmac_key: np_hkdf::NpHmacSha256Key::<CryptoProviderImpl>::from([0; 32]), }; let payload = [0; 7]; @@ -144,11 +146,11 @@ #[test] fn decrypt_too_long_err() { let adv_cipher = LdtNpAdvDecrypterXtsAes128 { - ldt_decrypter: LdtXtsAes128Decrypter::<RustCrypto>::new(&LdtKey::from_concatenated( - &[0; 64], - )), + ldt_decrypter: LdtXtsAes128Decrypter::<CryptoProviderImpl>::new( + &LdtKey::from_concatenated(&[0; 64]), + ), metadata_key_tag: [0; 32], - metadata_key_hmac_key: np_hkdf::NpHmacSha256Key::<RustCrypto>::from([0; 32]), + metadata_key_hmac_key: np_hkdf::NpHmacSha256Key::<CryptoProviderImpl>::from([0; 32]), }; let payload = [0; 40];
diff --git a/nearby/presence/ldt_np_adv_ffi/.cargo/config-boringssl.toml b/nearby/presence/ldt_np_adv_ffi/.cargo/config-boringssl.toml new file mode 100644 index 0000000..f5ab7fa --- /dev/null +++ b/nearby/presence/ldt_np_adv_ffi/.cargo/config-boringssl.toml
@@ -0,0 +1,3 @@ +paths = [ + "../../../boringssl-build/boringssl/rust/bssl-crypto", +] \ No newline at end of file
diff --git a/nearby/presence/ldt_np_adv_ffi/Cargo.lock b/nearby/presence/ldt_np_adv_ffi/Cargo.lock index 075e658..12f0615 100644 --- a/nearby/presence/ldt_np_adv_ffi/Cargo.lock +++ b/nearby/presence/ldt_np_adv_ffi/Cargo.lock
@@ -104,13 +104,6 @@ [[package]] name = "bssl-crypto" version = "0.1.0" -dependencies = [ - "bssl-sys", -] - -[[package]] -name = "bssl-sys" -version = "0.1.0" [[package]] name = "bytes" @@ -312,9 +305,9 @@ [[package]] name = "elliptic-curve" -version = "0.13.2" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea5a92946e8614bb585254898bb7dd1ddad241ace60c52149e3765e34cc039d" +checksum = "75c71eaa367f2e5d556414a8eea812bc62985c879748d6403edabd9cb03f16e7" dependencies = [ "base16ct", "crypto-bigint", @@ -588,9 +581,9 @@ [[package]] name = "p256" -version = "0.13.0" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7270da3e5caa82afd3deb054cc237905853813aea3859544bc082c3fe55b8d47" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" dependencies = [ "elliptic-curve", "primeorder", @@ -654,9 +647,9 @@ [[package]] name = "primeorder" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7613fdcc0831c10060fa69833ea8fa2caa94b6456f51e25356a885b530a2e3d0" +checksum = "cf8d3875361e28f7753baefef104386e7aa47642c93023356d97fdef4003bfb5" dependencies = [ "elliptic-curve", ] @@ -741,9 +734,9 @@ [[package]] name = "sec1" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48518a2b5775ba8ca5b46596aae011caa431e6ce7e4a67ead66d92f08884220e" +checksum = "f0aec48e813d6b90b15f0b8948af3c63483992dee44c03e9930b3eebdabe046e" dependencies = [ "base16ct", "der",
diff --git a/nearby/presence/np_hkdf/Cargo.toml b/nearby/presence/np_hkdf/Cargo.toml index 686d0e5..3d1dd70 100644 --- a/nearby/presence/np_hkdf/Cargo.toml +++ b/nearby/presence/np_hkdf/Cargo.toml
@@ -10,7 +10,7 @@ xts_aes.workspace = true [dev-dependencies] -crypto_provider_rustcrypto.workspace = true +crypto_provider_default.workspace = true rand_ext.workspace = true test_helper.workspace = true
diff --git a/nearby/presence/np_hkdf/benches/np_hkdf.rs b/nearby/presence/np_hkdf/benches/np_hkdf.rs index 54e682d..da796c4 100644 --- a/nearby/presence/np_hkdf/benches/np_hkdf.rs +++ b/nearby/presence/np_hkdf/benches/np_hkdf.rs
@@ -14,27 +14,30 @@ use criterion::{black_box, criterion_group, criterion_main, Criterion}; use crypto_provider::{CryptoProvider, CryptoRng}; -use crypto_provider_rustcrypto::RustCrypto; +use crypto_provider_default::CryptoProviderImpl; use rand_ext::random_bytes; pub fn build_np_hkdf(c: &mut Criterion) { - let mut rng = <RustCrypto as CryptoProvider>::CryptoRng::new(); + let mut rng = <CryptoProviderImpl 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(|_| random_bytes::<32, RustCrypto>(&mut rng)) + .map(|_| random_bytes::<32, CryptoProviderImpl>(&mut rng)) .collect::<Vec<_>>(); b.iter(|| { for key_seed in keys.iter() { - black_box(np_hkdf::NpKeySeedHkdf::<RustCrypto>::new(key_seed)); + black_box(np_hkdf::NpKeySeedHkdf::<CryptoProviderImpl>::new(key_seed)); } }); }); c.bench_function(&format!("hkdf generate {num_keys} hmac keys"), |b| { let keys = (0..num_keys) .map(|_| { - np_hkdf::NpKeySeedHkdf::<RustCrypto>::new(&random_bytes::<32, RustCrypto>( - &mut rng, + np_hkdf::NpKeySeedHkdf::<CryptoProviderImpl>::new(&random_bytes::< + 32, + CryptoProviderImpl, + >( + &mut rng )) }) .collect::<Vec<_>>(); @@ -47,8 +50,11 @@ c.bench_function(&format!("hkdf generate {num_keys} AES keys"), |b| { let keys = (0..num_keys) .map(|_| { - np_hkdf::NpKeySeedHkdf::<RustCrypto>::new(&random_bytes::<32, RustCrypto>( - &mut rng, + np_hkdf::NpKeySeedHkdf::<CryptoProviderImpl>::new(&random_bytes::< + 32, + CryptoProviderImpl, + >( + &mut rng )) }) .collect::<Vec<_>>(); @@ -61,8 +67,11 @@ c.bench_function(&format!("hkdf generate {num_keys} LDT keys"), |b| { let keys = (0..num_keys) .map(|_| { - np_hkdf::NpKeySeedHkdf::<RustCrypto>::new(&random_bytes::<32, RustCrypto>( - &mut rng, + np_hkdf::NpKeySeedHkdf::<CryptoProviderImpl>::new(&random_bytes::< + 32, + CryptoProviderImpl, + >( + &mut rng )) }) .collect::<Vec<_>>();
diff --git a/nearby/presence/np_hkdf/tests/test_vectors.rs b/nearby/presence/np_hkdf/tests/test_vectors.rs index ce60337..dd9dca4 100644 --- a/nearby/presence/np_hkdf/tests/test_vectors.rs +++ b/nearby/presence/np_hkdf/tests/test_vectors.rs
@@ -14,7 +14,7 @@ use anyhow::anyhow; use crypto_provider::aes::AesKey; -use crypto_provider_rustcrypto::RustCrypto; +use crypto_provider_default::CryptoProviderImpl; use np_hkdf::{v1_salt::V1Salt, *}; use rand::Rng as _; use rand_ext::seeded_rng; @@ -38,7 +38,7 @@ { let group = &tc["key_seed_hkdf"]; let key_seed = extract_key_array::<32>(group, "key_seed"); - let hkdf = NpKeySeedHkdf::<RustCrypto>::new(&key_seed); + let hkdf = NpKeySeedHkdf::<CryptoProviderImpl>::new(&key_seed); assert_eq!( extract_key_array::<64>(group, "legacy_ldt_key"), hkdf.legacy_ldt_key().as_concatenated() @@ -82,7 +82,7 @@ let ikm = extract_key_array::<2>(group, "adv_salt"); assert_eq!( extract_key_array::<16>(group, "expanded_salt"), - legacy_ldt_expanded_salt::<16, RustCrypto>(&ikm) + legacy_ldt_expanded_salt::<16, CryptoProviderImpl>(&ikm) ) } @@ -91,14 +91,14 @@ let ikm = extract_key_array::<14>(group, "legacy_metadata_key"); assert_eq!( extract_key_array::<16>(group, "expanded_key"), - legacy_metadata_expanded_key::<RustCrypto>(&ikm) + legacy_metadata_expanded_key::<CryptoProviderImpl>(&ikm) ) } { let group = &tc["extended_section_salt_hkdf"]; let ikm = extract_key_array::<16>(group, "section_salt"); - let salt = V1Salt::<RustCrypto>::from(ikm); + let salt = V1Salt::<CryptoProviderImpl>::from(ikm); assert_eq!( extract_key_array::<16>(group, "derived_salt_first_section_no_de"), salt.derive(None).unwrap(), @@ -130,9 +130,9 @@ let legacy_adv_salt: [u8; 2] = rng.gen(); let legacy_metadata_key: [u8; 14] = rng.gen(); let adv_salt_bytes: [u8; 16] = rng.gen(); - let extended_adv_salt = V1Salt::<RustCrypto>::from(adv_salt_bytes); + let extended_adv_salt = V1Salt::<CryptoProviderImpl>::from(adv_salt_bytes); - let key_seed_hkdf = NpKeySeedHkdf::<RustCrypto>::new(&key_seed); + let key_seed_hkdf = NpKeySeedHkdf::<CryptoProviderImpl>::new(&key_seed); array .push(json!({ "key_seed_hkdf": { @@ -150,12 +150,12 @@ }, "legacy_adv_salt_hkdf": { "adv_salt": hex::encode_upper(legacy_adv_salt), - "expanded_salt": hex::encode_upper(legacy_ldt_expanded_salt::<16, RustCrypto>(&legacy_adv_salt)) + "expanded_salt": hex::encode_upper(legacy_ldt_expanded_salt::<16, CryptoProviderImpl>(&legacy_adv_salt)) }, "legacy_metadata_key_hkdf": { "legacy_metadata_key": hex::encode_upper(legacy_metadata_key), "expanded_key": - hex::encode_upper(legacy_metadata_expanded_key::<RustCrypto>(&legacy_metadata_key)) + hex::encode_upper(legacy_metadata_expanded_key::<CryptoProviderImpl>(&legacy_metadata_key)) }, "extended_section_salt_hkdf": { "section_salt": hex::encode_upper(adv_salt_bytes),
diff --git a/nearby/presence/xts_aes/Cargo.toml b/nearby/presence/xts_aes/Cargo.toml index 200fa91..72acf98 100644 --- a/nearby/presence/xts_aes/Cargo.toml +++ b/nearby/presence/xts_aes/Cargo.toml
@@ -10,15 +10,16 @@ ldt_tbc.workspace = true [dev-dependencies] -crypto_provider_rustcrypto.workspace = true +crypto_provider_default.workspace = true rand_ext.workspace = true test_helper.workspace = true -aes.workspace = true anyhow.workspace = true base64.workspace = true hex.workspace = true rand.workspace = true rand_pcg.workspace = true regex.workspace = true + +aes.workspace = true xts-mode.workspace = true \ No newline at end of file
diff --git a/nearby/presence/xts_aes/fuzz/Cargo.lock b/nearby/presence/xts_aes/fuzz/Cargo.lock index 2bdaef3..06b5f86 100644 --- a/nearby/presence/xts_aes/fuzz/Cargo.lock +++ b/nearby/presence/xts_aes/fuzz/Cargo.lock
@@ -207,9 +207,9 @@ [[package]] name = "der" -version = "0.7.1" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc906908ea6458456e5eaa160a9c08543ec3d1e6f71e2235cedd660cb65f9df0" +checksum = "86b14af2045fa69ed2b7a48934bebb842d0f33e73e96e78766ecb14bb5347a11" dependencies = [ "const-oid", "zeroize", @@ -260,9 +260,9 @@ [[package]] name = "elliptic-curve" -version = "0.13.2" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea5a92946e8614bb585254898bb7dd1ddad241ace60c52149e3765e34cc039d" +checksum = "75c71eaa367f2e5d556414a8eea812bc62985c879748d6403edabd9cb03f16e7" dependencies = [ "base16ct", "crypto-bigint", @@ -295,9 +295,9 @@ [[package]] name = "generic-array" -version = "0.14.6" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", @@ -407,9 +407,9 @@ [[package]] name = "p256" -version = "0.13.0" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7270da3e5caa82afd3deb054cc237905853813aea3859544bc082c3fe55b8d47" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" dependencies = [ "elliptic-curve", "primeorder", @@ -451,9 +451,9 @@ [[package]] name = "primeorder" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7613fdcc0831c10060fa69833ea8fa2caa94b6456f51e25356a885b530a2e3d0" +checksum = "cf8d3875361e28f7753baefef104386e7aa47642c93023356d97fdef4003bfb5" dependencies = [ "elliptic-curve", ] @@ -506,9 +506,9 @@ [[package]] name = "sec1" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48518a2b5775ba8ca5b46596aae011caa431e6ce7e4a67ead66d92f08884220e" +checksum = "f0aec48e813d6b90b15f0b8948af3c63483992dee44c03e9930b3eebdabe046e" dependencies = [ "base16ct", "der",
diff --git a/nearby/presence/xts_aes/tests/compare_with_xts_mode_test.rs b/nearby/presence/xts_aes/tests/compare_with_xts_mode_test.rs new file mode 100644 index 0000000..92c5f78 --- /dev/null +++ b/nearby/presence/xts_aes/tests/compare_with_xts_mode_test.rs
@@ -0,0 +1,112 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use aes::{cipher, cipher::KeyInit as _}; +use alloc::vec::Vec; +use crypto_provider::aes::*; +use crypto_provider::CryptoProvider; +use crypto_provider_default::CryptoProviderImpl; +use ldt_tbc::TweakableBlockCipherDecrypter; +use ldt_tbc::TweakableBlockCipherEncrypter; +use rand::{self, distributions, Rng as _}; +use rand_ext::seeded_rng; +use xts_aes::{Tweak, XtsAes128Key, XtsAes256Key, XtsDecrypter, XtsEncrypter, XtsKey}; +extern crate alloc; + +#[test] +fn identical_to_xtsmode_crate() { + // xts-mode crate exists, but is tied to RustCrypto, which we can't necessarily use with + // whatever C/assembly we need to use on embedded platforms. Thus, we have our own, but + // we can compare our impl's results with theirs. + + let mut rng = seeded_rng(); + + for _ in 0..100_000 { + if rng.gen() { + let mut key = [0; 32]; + rng.fill(&mut key); + let xts_enc = XtsEncrypter::<<CryptoProviderImpl as CryptoProvider>::Aes128, _>::new( + &XtsAes128Key::from(&key), + ); + let xts_dec = XtsDecrypter::<<CryptoProviderImpl as CryptoProvider>::Aes128, _>::new( + &XtsAes128Key::from(&key), + ); + + let primary_cipher = + aes::Aes128::new(cipher::generic_array::GenericArray::from_slice(&key[0..16])); + let tweak_cipher = + aes::Aes128::new(cipher::generic_array::GenericArray::from_slice(&key[16..])); + let other_xts = xts_mode::Xts128::new(primary_cipher, tweak_cipher); + + do_roundtrip(xts_enc, xts_dec, other_xts, &mut rng) + } else { + let mut key = [0; 64]; + rng.fill(&mut key); + let xts_enc = XtsEncrypter::<<CryptoProviderImpl as CryptoProvider>::Aes256, _>::new( + &XtsAes256Key::from(&key), + ); + let xts_dec = XtsDecrypter::<<CryptoProviderImpl as CryptoProvider>::Aes256, _>::new( + &XtsAes256Key::from(&key), + ); + + let primary_cipher = + aes::Aes256::new(cipher::generic_array::GenericArray::from_slice(&key[0..32])); + let tweak_cipher = + aes::Aes256::new(cipher::generic_array::GenericArray::from_slice(&key[32..])); + let other_xts = xts_mode::Xts128::new(primary_cipher, tweak_cipher); + + do_roundtrip(xts_enc, xts_dec, other_xts, &mut rng) + }; + } + + fn do_roundtrip< + A: Aes<Key = K::BlockCipherKey>, + K: XtsKey, + C: cipher::BlockEncrypt + cipher::BlockDecrypt + cipher::BlockCipher, + R: rand::Rng, + >( + xts_enc: XtsEncrypter<A, K>, + xts_dec: XtsDecrypter<A, K>, + other_xts: xts_mode::Xts128<C>, + rng: &mut R, + ) { + // 1-3 blocks + let plaintext_len_range = distributions::Uniform::new_inclusive(BLOCK_SIZE, BLOCK_SIZE * 4); + let mut plaintext = Vec::<u8>::new(); + plaintext.extend((0..rng.sample(plaintext_len_range)).map(|_| rng.gen::<u8>())); + + // encrypt with our impl + let mut ciphertext = plaintext.clone(); + let tweak: Tweak = rng.gen::<u128>().into(); + xts_enc + .encrypt_data_unit(tweak.clone(), &mut ciphertext) + .unwrap(); + + // encrypt with the other impl + let mut other_ciphertext = plaintext.clone(); + let tweak_bytes = tweak.le_bytes(); + other_xts.encrypt_sector(&mut other_ciphertext[..], tweak_bytes); + + assert_eq!(ciphertext, other_ciphertext); + + // decrypt ciphertext in place + xts_dec.decrypt_data_unit(tweak, &mut ciphertext).unwrap(); + assert_eq!(plaintext, ciphertext); + + // and with the other impl + other_xts.decrypt_sector(&mut other_ciphertext[..], tweak_bytes); + + assert_eq!(ciphertext, other_ciphertext); + } +}
diff --git a/nearby/presence/xts_aes/tests/xts_nist_test_vectors.rs b/nearby/presence/xts_aes/tests/xts_nist_test_vectors.rs index 05eca0d..94b2c34 100644 --- a/nearby/presence/xts_aes/tests/xts_nist_test_vectors.rs +++ b/nearby/presence/xts_aes/tests/xts_nist_test_vectors.rs
@@ -16,7 +16,7 @@ use anyhow::anyhow; use crypto_provider::CryptoProvider; -use crypto_provider_rustcrypto::RustCrypto; +use crypto_provider_default::CryptoProviderImpl; use ldt_tbc::TweakableBlockCipherDecrypter; use ldt_tbc::TweakableBlockCipherEncrypter; use ldt_tbc::TweakableBlockCipherKey; @@ -25,7 +25,7 @@ #[test] fn nist_test_vectors_data_unit_seq_128() -> Result<(), anyhow::Error> { - run_test_cases::<XtsAes128Key, <RustCrypto as CryptoProvider>::Aes128>( + run_test_cases::<XtsAes128Key, <CryptoProviderImpl as CryptoProvider>::Aes128>( "format tweak value input - data unit seq no/XTSGenAES128.rsp", // not 1000 because we skip test cases with data that isn't a multiple of 8 bits 800, @@ -34,7 +34,7 @@ #[test] fn nist_test_vectors_data_unit_seq_256() -> Result<(), anyhow::Error> { - run_test_cases::<XtsAes256Key, <RustCrypto as CryptoProvider>::Aes256>( + run_test_cases::<XtsAes256Key, <CryptoProviderImpl as CryptoProvider>::Aes256>( "format tweak value input - data unit seq no/XTSGenAES256.rsp", 600, ) @@ -42,7 +42,7 @@ #[test] fn nist_test_vectors_hex_tweak_128() -> Result<(), anyhow::Error> { - run_test_cases::<XtsAes128Key, <RustCrypto as CryptoProvider>::Aes128>( + run_test_cases::<XtsAes128Key, <CryptoProviderImpl as CryptoProvider>::Aes128>( "format tweak value input - 128 hex str/XTSGenAES128.rsp", 800, ) @@ -50,7 +50,7 @@ #[test] fn nist_test_vectors_hex_tweak_256() -> Result<(), anyhow::Error> { - run_test_cases::<XtsAes256Key, <RustCrypto as CryptoProvider>::Aes256>( + run_test_cases::<XtsAes256Key, <CryptoProviderImpl as CryptoProvider>::Aes256>( "format tweak value input - 128 hex str/XTSGenAES256.rsp", 600, )
diff --git a/nearby/presence/xts_aes/tests/xts_roundtrip_tests.rs b/nearby/presence/xts_aes/tests/xts_roundtrip_tests.rs index 042b62e..93f61a8 100644 --- a/nearby/presence/xts_aes/tests/xts_roundtrip_tests.rs +++ b/nearby/presence/xts_aes/tests/xts_roundtrip_tests.rs
@@ -12,10 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. -use aes::{cipher, cipher::KeyInit as _}; use alloc::vec::Vec; use crypto_provider::aes::*; -use crypto_provider_rustcrypto::aes::{Aes128, Aes256}; +use crypto_provider::CryptoProvider; +use crypto_provider_default::CryptoProviderImpl; use ldt_tbc::TweakableBlockCipherDecrypter; use ldt_tbc::TweakableBlockCipherEncrypter; use rand::{self, distributions, Rng as _}; @@ -31,16 +31,24 @@ let mut key = [0_u8; 32]; rng.fill(&mut key); do_roundtrip( - XtsEncrypter::<Aes128, _>::new(&XtsAes128Key::from(&key)), - XtsDecrypter::<Aes128, _>::new(&XtsAes128Key::from(&key)), + XtsEncrypter::<<CryptoProviderImpl as CryptoProvider>::Aes128, _>::new( + &XtsAes128Key::from(&key), + ), + XtsDecrypter::<<CryptoProviderImpl as CryptoProvider>::Aes128, _>::new( + &XtsAes128Key::from(&key), + ), &mut rng, ) } else { let mut key = [0_u8; 64]; rng.fill(&mut key); do_roundtrip( - XtsEncrypter::<Aes256, _>::new(&XtsAes256Key::from(&key)), - XtsDecrypter::<Aes256, _>::new(&XtsAes256Key::from(&key)), + XtsEncrypter::<<CryptoProviderImpl as CryptoProvider>::Aes256, _>::new( + &XtsAes256Key::from(&key), + ), + XtsDecrypter::<<CryptoProviderImpl as CryptoProvider>::Aes256, _>::new( + &XtsAes256Key::from(&key), + ), &mut rng, ) }; @@ -68,82 +76,3 @@ assert_eq!(plaintext, ciphertext); } } - -#[test] -fn identical_to_xtsmode_crate() { - // xts-mode crate exists, but is tied to RustCrypto, which we can't necessarily use with - // whatever C/assembly we need to use on embedded platforms. Thus, we have our own, but - // we can compare our impl's results with theirs. - - let mut rng = seeded_rng(); - - for _ in 0..100_000 { - if rng.gen() { - let mut key = [0; 32]; - rng.fill(&mut key); - let xts_enc = XtsEncrypter::<Aes128, _>::new(&XtsAes128Key::from(&key)); - let xts_dec = XtsDecrypter::<Aes128, _>::new(&XtsAes128Key::from(&key)); - - let primary_cipher = - aes::Aes128::new(cipher::generic_array::GenericArray::from_slice(&key[0..16])); - let tweak_cipher = - aes::Aes128::new(cipher::generic_array::GenericArray::from_slice(&key[16..])); - let other_xts = xts_mode::Xts128::new(primary_cipher, tweak_cipher); - - do_roundtrip(xts_enc, xts_dec, other_xts, &mut rng) - } else { - let mut key = [0; 64]; - rng.fill(&mut key); - let xts_enc = XtsEncrypter::<Aes256, _>::new(&XtsAes256Key::from(&key)); - let xts_dec = XtsDecrypter::<Aes256, _>::new(&XtsAes256Key::from(&key)); - - let primary_cipher = - aes::Aes256::new(cipher::generic_array::GenericArray::from_slice(&key[0..32])); - let tweak_cipher = - aes::Aes256::new(cipher::generic_array::GenericArray::from_slice(&key[32..])); - let other_xts = xts_mode::Xts128::new(primary_cipher, tweak_cipher); - - do_roundtrip(xts_enc, xts_dec, other_xts, &mut rng) - }; - } - - fn do_roundtrip< - A: Aes<Key = K::BlockCipherKey>, - K: XtsKey, - C: cipher::BlockEncrypt + cipher::BlockDecrypt + cipher::BlockCipher, - R: rand::Rng, - >( - xts_enc: XtsEncrypter<A, K>, - xts_dec: XtsDecrypter<A, K>, - other_xts: xts_mode::Xts128<C>, - rng: &mut R, - ) { - // 1-3 blocks - let plaintext_len_range = distributions::Uniform::new_inclusive(BLOCK_SIZE, BLOCK_SIZE * 4); - let mut plaintext = Vec::<u8>::new(); - plaintext.extend((0..rng.sample(plaintext_len_range)).map(|_| rng.gen::<u8>())); - - // encrypt with our impl - let mut ciphertext = plaintext.clone(); - let tweak: Tweak = rng.gen::<u128>().into(); - xts_enc - .encrypt_data_unit(tweak.clone(), &mut ciphertext) - .unwrap(); - - // encrypt with the other impl - let mut other_ciphertext = plaintext.clone(); - let tweak_bytes = tweak.le_bytes(); - other_xts.encrypt_sector(&mut other_ciphertext[..], tweak_bytes); - - assert_eq!(ciphertext, other_ciphertext); - - // decrypt ciphertext in place - xts_dec.decrypt_data_unit(tweak, &mut ciphertext).unwrap(); - assert_eq!(plaintext, ciphertext); - - // and with the other impl - other_xts.decrypt_sector(&mut other_ciphertext[..], tweak_bytes); - - assert_eq!(ciphertext, other_ciphertext); - } -}
diff --git a/nearby/scripts/build-script.sh b/nearby/scripts/build-script.sh index c117a5c..3643482 100755 --- a/nearby/scripts/build-script.sh +++ b/nearby/scripts/build-script.sh
@@ -128,12 +128,11 @@ # Turn off RustCrypto and use openssl cargo build --no-default-features --features=openssl # Turn off RustCrypto and use boringssl - cargo build --no-default-features --features=boringssl + cargo --config .cargo/config-boringssl.toml build --no-default-features --features=boringssl cargo doc --no-deps cargo clippy --release cargo clippy --features=std cargo clippy --no-default-features --features=openssl - cargo clippy --no-default-features --features=boringssl cargo clippy --no-default-features --features=std cargo deny check cd ../ @@ -155,7 +154,7 @@ # test with boringssl crypto feature flag echo "Testing boringssl" - (cd ../ldt_np_adv_ffi && cargo build --no-default-features --features boringssl --release) + (cd ../ldt_np_adv_ffi && cargo --config .cargo/config-boringssl.toml build --no-default-features --features boringssl --release) (cd ldt_np_c_sample/tests && make && ctest) # test with openssl feature flag @@ -181,7 +180,9 @@ if ! git -C boringssl pull origin master; then git clone https://boringssl.googlesource.com/boringssl fi - cd boringssl && mkdir -p build && cd build + # Snap to the AOSP commit of boringssl + boringssl_rev=$(curl https://android.googlesource.com/platform/external/boringssl/+/master/BORINGSSL_REVISION?format=text | base64 -d) + cd boringssl && git checkout $boringssl_rev && mkdir -p build && cd build 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`