Project import generated by Copybara. GitOrigin-RevId: 7f4c114221f28e2491e12aec25af85bc6317eb9c Change-Id: Ib4716744ede7689846ae6c92f5a291fbb6ba5e7e
diff --git a/nearby/Dockerfile b/nearby/Dockerfile index 331e8e6..7a32b21 100644 --- a/nearby/Dockerfile +++ b/nearby/Dockerfile
@@ -16,7 +16,7 @@ # install system deps RUN apt-get update && apt-get install -y build-essential cmake gcc wget vim \ -clang git checkinstall zlib1g-dev rapidjson-dev libbenchmark-dev curl \ +clang git checkinstall zlib1g-dev libjsoncpp-dev libbenchmark-dev curl \ protobuf-compiler pkg-config libdbus-1-dev libssl-dev ninja-build RUN apt upgrade -y
diff --git a/nearby/connections/ukey2/ukey2_connections/fuzz/Cargo.lock b/nearby/connections/ukey2/ukey2_connections/fuzz/Cargo.lock index 8320405..8f42dbe 100644 --- a/nearby/connections/ukey2/ukey2_connections/fuzz/Cargo.lock +++ b/nearby/connections/ukey2/ukey2_connections/fuzz/Cargo.lock
@@ -71,9 +71,9 @@ [[package]] name = "base16ct" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" [[package]] name = "bitflags" @@ -156,9 +156,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", @@ -180,6 +180,9 @@ [[package]] name = "crypto_provider" version = "0.1.0" +dependencies = [ + "bytes", +] [[package]] name = "crypto_provider_rustcrypto" @@ -230,11 +233,12 @@ [[package]] name = "der" -version = "0.6.1" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" +checksum = "bc906908ea6458456e5eaa160a9c08543ec3d1e6f71e2235cedd660cb65f9df0" dependencies = [ "const-oid", + "zeroize", ] [[package]] @@ -299,13 +303,12 @@ [[package]] name = "elliptic-curve" -version = "0.12.3" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" +checksum = "6ea5a92946e8614bb585254898bb7dd1ddad241ace60c52149e3765e34cc039d" dependencies = [ "base16ct", "crypto-bigint", - "der", "digest", "ff", "generic-array", @@ -349,9 +352,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", "subtle", @@ -371,6 +374,7 @@ dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] @@ -386,9 +390,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", @@ -578,9 +582,9 @@ [[package]] name = "p256" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49c124b3cbce43bcbac68c58ec181d98ed6cc7e6d0aa7c3ba97b2563410b0e55" +checksum = "7270da3e5caa82afd3deb054cc237905853813aea3859544bc082c3fe55b8d47" dependencies = [ "elliptic-curve", "primeorder", @@ -622,9 +626,9 @@ [[package]] name = "primeorder" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b54f7131b3dba65a2f414cf5bd25b66d4682e4608610668eae785750ba4c5b2" +checksum = "7613fdcc0831c10060fa69833ea8fa2caa94b6456f51e25356a885b530a2e3d0" dependencies = [ "elliptic-curve", ] @@ -770,9 +774,9 @@ [[package]] name = "sec1" -version = "0.3.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" +checksum = "48518a2b5775ba8ca5b46596aae011caa431e6ce7e4a67ead66d92f08884220e" dependencies = [ "base16ct", "der",
diff --git a/nearby/crypto/crypto_provider/src/lib.rs b/nearby/crypto/crypto_provider/src/lib.rs index bc6d4d2..4eb5563 100644 --- a/nearby/crypto/crypto_provider/src/lib.rs +++ b/nearby/crypto/crypto_provider/src/lib.rs
@@ -19,6 +19,11 @@ use core::fmt::Debug; +#[cfg(feature = "testing")] +pub use rstest_reuse; + +use crate::aes::{Aes128Key, Aes256Key}; + /// mod containing hmac trait pub mod hkdf; @@ -74,6 +79,12 @@ /// The trait defining ed25519, a Edwards-curve Digital Signature Algorithm signature scheme /// using SHA-512 (SHA-2) and Curve25519 type Ed25519: ed25519::Ed25519Provider; + /// The trait defining AES-128-GCM-SIV, a nonce-misuse resistant AEAD with a key size of 16 bytes. + #[cfg(feature = "gcm_siv")] + type Aes128GcmSiv: aes::gcm_siv::AesGcmSiv<Key = Aes128Key>; + /// The trait defining AES-256-GCM-SIV, a nonce-misuse resistant AEAD with a key size of 32 bytes. + #[cfg(feature = "gcm_siv")] + type Aes256GcmSiv: aes::gcm_siv::AesGcmSiv<Key = Aes256Key>; /// The cryptographically secure random number generator type CryptoRng: CryptoRng; @@ -114,27 +125,27 @@ } } -use crate::aes::{Aes128Key, Aes256Key}; -#[cfg(feature = "testing")] -pub use rstest_reuse; - /// Utilities for testing implementations of this crate. #[cfg(feature = "testing")] pub mod testing { extern crate alloc; - use crate::CryptoProvider; + use alloc::{format, string::String}; use core::marker::PhantomData; + use hex_literal::hex; use rand::{Rng, RngCore}; use rstest_reuse::template; + use crate::CryptoProvider; + /// Common items that needs to be imported to use these test cases pub mod prelude { - pub use super::CryptoProviderTestCase; pub use rstest::rstest; pub use rstest_reuse; pub use rstest_reuse::apply; + + pub use super::CryptoProviderTestCase; } /// A test case for Crypto Provider. A test case is a function that panics if the test fails.
diff --git a/nearby/crypto/crypto_provider_boringssl/src/lib.rs b/nearby/crypto/crypto_provider_boringssl/src/lib.rs index c8c466d..6618bab 100644 --- a/nearby/crypto/crypto_provider_boringssl/src/lib.rs +++ b/nearby/crypto/crypto_provider_boringssl/src/lib.rs
@@ -56,6 +56,8 @@ type AesCtr128 = Aes128Stubs; type AesCtr256 = Aes256Stubs; type Ed25519 = Ed25519Stubs; + type Aes128GcmSiv = Aes128Stubs; + type Aes256GcmSiv = Aes256Stubs; type CryptoRng = BoringSslRng; fn constant_time_eq(_a: &[u8], _b: &[u8]) -> bool {
diff --git a/nearby/crypto/crypto_provider_openssl/Cargo.toml b/nearby/crypto/crypto_provider_openssl/Cargo.toml index 92d66a7..78c6cf3 100644 --- a/nearby/crypto/crypto_provider_openssl/Cargo.toml +++ b/nearby/crypto/crypto_provider_openssl/Cargo.toml
@@ -5,7 +5,7 @@ publish.workspace = true [dependencies] -crypto_provider = { path = "../crypto_provider", features = ["alloc", "std"] } +crypto_provider = { path = "../crypto_provider", default-features = false, features = ["alloc", "std"] } openssl.workspace = true cfg-if.workspace = true @@ -13,9 +13,9 @@ [features] default = [] -boringssl = ["openssl/unstable_boringssl"] +boringssl = ["openssl/unstable_boringssl", "crypto_provider/gcm_siv"] [dev-dependencies] -crypto_provider = { path = "../crypto_provider", features = ["testing"] } +crypto_provider = { path = "../crypto_provider", default-features = false, features = ["testing"] } rstest = "0.16.0" hex-literal.workspace = true
diff --git a/nearby/crypto/crypto_provider_openssl/src/aes.rs b/nearby/crypto/crypto_provider_openssl/src/aes.rs index 742560a..ded187f 100644 --- a/nearby/crypto/crypto_provider_openssl/src/aes.rs +++ b/nearby/crypto/crypto_provider_openssl/src/aes.rs
@@ -24,14 +24,17 @@ //! Implementation of `crypto_provider::aes` types using openssl's `symm` module. +use openssl::symm::{Cipher, Crypter, Mode}; + use crypto_provider::aes::cbc::{AesCbcIv, DecryptionError}; +use crypto_provider::aes::gcm_siv::{AesGcmSiv, GcmSivError}; use crypto_provider::aes::{ Aes, Aes128Key, Aes256Key, AesBlock, AesCipher, AesDecryptCipher, AesEncryptCipher, AesKey, }; -use openssl::symm::{Cipher, Crypter, Mode}; /// Uber struct which contains impls for AES-128 fns pub struct Aes128; + impl Aes for Aes128 { type Key = Aes128Key; type EncryptCipher = Aes128Cipher; @@ -40,6 +43,7 @@ /// Uber struct which contains impls for AES-256 fns pub struct Aes256; + impl Aes for Aes256 { type Key = Aes256Key; type EncryptCipher = Aes256Cipher; @@ -245,14 +249,53 @@ } } +/// Unimplemented AES-GCM-SIV implementation. +pub struct OpenSslAesGcmSiv128; + +impl AesGcmSiv for OpenSslAesGcmSiv128 { + type Key = Aes128Key; + + fn new(_key: &Self::Key) -> Self { + todo!() + } + + fn encrypt(&self, _data: &mut Vec<u8>, _aad: &[u8], _nonce: &[u8]) -> Result<(), GcmSivError> { + todo!() + } + + fn decrypt(&self, _data: &mut Vec<u8>, _aad: &[u8], _nonce: &[u8]) -> Result<(), GcmSivError> { + todo!() + } +} + +pub struct OpenSslAesGcmSiv256; + +impl AesGcmSiv for OpenSslAesGcmSiv256 { + type Key = Aes256Key; + + fn new(_key: &Self::Key) -> Self { + todo!() + } + + fn encrypt(&self, _data: &mut Vec<u8>, _aad: &[u8], _nonce: &[u8]) -> Result<(), GcmSivError> { + todo!() + } + + fn decrypt(&self, _data: &mut Vec<u8>, _aad: &[u8], _nonce: &[u8]) -> Result<(), GcmSivError> { + todo!() + } +} + #[cfg(test)] mod tests { - use super::*; use core::marker::PhantomData; + use crypto_provider::aes::cbc::testing::*; use crypto_provider::aes::ctr::testing::*; use crypto_provider::aes::testing::*; + use super::*; + #[apply(aes_128_ctr_test_cases)] fn aes_128_ctr_test(testcase: CryptoProviderTestCase<OpenSslAesCtr128>) { testcase(PhantomData);
diff --git a/nearby/crypto/crypto_provider_openssl/src/lib.rs b/nearby/crypto/crypto_provider_openssl/src/lib.rs index 8930199..db926f0 100644 --- a/nearby/crypto/crypto_provider_openssl/src/lib.rs +++ b/nearby/crypto/crypto_provider_openssl/src/lib.rs
@@ -17,12 +17,13 @@ //! Crate which provides impls for CryptoProvider backed by openssl use cfg_if::cfg_if; -use crypto_provider::CryptoRng; pub use openssl; use openssl::hash::MessageDigest; use openssl::md::MdRef; use openssl::rand::rand_bytes; +use crypto_provider::CryptoRng; + /// Contains the openssl backed AES implementations for CryptoProvider mod aes; /// Contains the openssl backed ed25519 impl for key generation, verification, and signing @@ -79,6 +80,8 @@ type AesCtr128 = aes::OpenSslAesCtr128; type AesCtr256 = aes::OpenSslAesCtr256; type Ed25519 = ed25519::Ed25519; + type Aes128GcmSiv = aes::OpenSslAesGcmSiv128; + type Aes256GcmSiv = aes::OpenSslAesGcmSiv256; type CryptoRng = OpenSslRng; fn constant_time_eq(a: &[u8], b: &[u8]) -> bool { @@ -107,11 +110,13 @@ #[cfg(test)] mod tests { - use crate::Openssl; use core::marker::PhantomData; + use crypto_provider::sha2::testing::*; use crypto_provider::testing::*; + use crate::Openssl; + #[apply(sha2_test_cases)] fn sha2_tests(testcase: CryptoProviderTestCase<Openssl>) { testcase(PhantomData);
diff --git a/nearby/crypto/crypto_provider_rustcrypto/src/lib.rs b/nearby/crypto/crypto_provider_rustcrypto/src/lib.rs index 72ca033..e73ea11 100644 --- a/nearby/crypto/crypto_provider_rustcrypto/src/lib.rs +++ b/nearby/crypto/crypto_provider_rustcrypto/src/lib.rs
@@ -23,6 +23,15 @@ //! Crate which provides impls for CryptoProvider backed by RustCrypto crates +use core::{fmt::Debug, marker::PhantomData}; + +use cfg_if::cfg_if; +pub use hkdf; +pub use hmac; +use rand::{Rng, RngCore, SeedableRng}; +use rand_core::CryptoRng; +use subtle::ConstantTimeEq; + /// Contains the RustCrypto backed AES impl for CryptoProvider pub mod aes; /// Contains the RustCrypto backed impl for ed25519 key generation, signing, and verification @@ -38,15 +47,6 @@ /// Contains the RustCrypto backed X25519 impl for CryptoProvider mod x25519; -pub use hkdf; -pub use hmac; - -use cfg_if::cfg_if; -use core::{fmt::Debug, marker::PhantomData}; -use rand::{Rng, RngCore, SeedableRng}; -use rand_core::CryptoRng; -use subtle::ConstantTimeEq; - cfg_if! { if #[cfg(feature = "std")] { /// Providing a type alias for compatibility with existing usage of RustCrypto @@ -91,6 +91,10 @@ type AesCtr128 = aes::AesCtr128; type AesCtr256 = aes::AesCtr256; type Ed25519 = ed25519::Ed25519; + #[cfg(feature = "gcm_siv")] + type Aes128GcmSiv = aes::gcm_siv::AesGcmSiv128; + #[cfg(feature = "gcm_siv")] + type Aes256GcmSiv = aes::gcm_siv::AesGcmSiv256; type CryptoRng = RcRng<R>; fn constant_time_eq(a: &[u8], b: &[u8]) -> bool { @@ -120,10 +124,12 @@ #[cfg(test)] mod tests { - use crate::RustCrypto; use core::marker::PhantomData; + use crypto_provider::sha2::testing::*; + use crate::RustCrypto; + #[apply(sha2_test_cases)] fn sha2_tests(testcase: CryptoProviderTestCase<RustCrypto>) { testcase(PhantomData::<RustCrypto>);
diff --git a/nearby/crypto/crypto_provider_stubs/src/lib.rs b/nearby/crypto/crypto_provider_stubs/src/lib.rs index c7c4876..fcfec39 100644 --- a/nearby/crypto/crypto_provider_stubs/src/lib.rs +++ b/nearby/crypto/crypto_provider_stubs/src/lib.rs
@@ -17,8 +17,12 @@ //! Can be removed once no one else is depending on it. #![allow(unused_variables)] + +use std::fmt::Debug; + use crypto_provider::aes::cbc::{AesCbcIv, AesCbcPkcs7Padded, DecryptionError}; use crypto_provider::aes::ctr::AesCtr; +use crypto_provider::aes::gcm_siv::{AesGcmSiv, GcmSivError}; use crypto_provider::aes::{ Aes, Aes128Key, Aes256Key, AesBlock, AesCipher, AesDecryptCipher, AesEncryptCipher, }; @@ -31,9 +35,7 @@ use crypto_provider::hkdf::{Hkdf, InvalidLength}; use crypto_provider::hmac::{Hmac, MacError}; use crypto_provider::p256::{P256PublicKey, P256}; - use crypto_provider::x25519::X25519; -use std::fmt::Debug; #[derive(Default, Clone, Debug, PartialEq, Eq)] pub struct CryptoProviderStubs; @@ -53,6 +55,8 @@ type AesCtr128 = Aes128Stubs; type AesCtr256 = Aes256Stubs; type Ed25519 = Ed25519Stubs; + type Aes128GcmSiv = Aes128Stubs; + type Aes256GcmSiv = Aes256Stubs; type CryptoRng = (); fn constant_time_eq(_a: &[u8], _b: &[u8]) -> bool { @@ -61,6 +65,7 @@ } pub struct Aes128Impl; + impl Aes for Aes128Impl { type Key = Aes128Key; type EncryptCipher = Aes128Stubs; @@ -68,6 +73,7 @@ } pub struct Aes256Impl; + impl Aes for Aes256Impl { type Key = Aes256Key; type EncryptCipher = Aes256Stubs; @@ -76,6 +82,7 @@ #[derive(Clone)] pub struct HkdfStubs; + impl Hkdf for HkdfStubs { fn new(_salt: Option<&[u8]>, _ikm: &[u8]) -> Self { unimplemented!() @@ -95,6 +102,7 @@ } pub struct HmacStubs; + impl Hmac<32> for HmacStubs { fn new_from_key(_key: [u8; 32]) -> Self { unimplemented!() @@ -156,6 +164,7 @@ } pub struct AesCbcPkcs7PaddedStubs; + impl AesCbcPkcs7Padded for AesCbcPkcs7PaddedStubs { fn encrypt(_key: &Aes256Key, _iv: &AesCbcIv, _message: &[u8]) -> Vec<u8> { unimplemented!() @@ -171,6 +180,7 @@ } pub struct X25519Stubs; + impl EcdhProvider<X25519> for X25519Stubs { type PublicKey = EcdhPubKey; type EphemeralSecret = EphSecretStubs; @@ -178,6 +188,7 @@ } pub struct EphSecretStubs; + impl EphemeralSecret<X25519> for EphSecretStubs { type Impl = X25519Stubs; type Error = (); @@ -222,6 +233,7 @@ #[derive(Debug, PartialEq)] pub struct EcdhPubKey; + impl PublicKey<X25519> for EcdhPubKey { type Error = (); @@ -236,6 +248,7 @@ #[derive(Debug, PartialEq, Eq)] pub struct PublicKeyStubs; + impl P256PublicKey for PublicKeyStubs { type Error = (); @@ -257,6 +270,7 @@ } pub struct P256Stubs; + impl EcdhProvider<P256> for P256Stubs { type PublicKey = PublicKeyStubs; type EphemeralSecret = EphSecretStubs; @@ -264,6 +278,7 @@ } pub struct Sha2Stubs; + impl crypto_provider::sha2::Sha256 for Sha2Stubs { fn sha256(_input: &[u8]) -> [u8; 32] { unimplemented!() @@ -314,6 +329,22 @@ } } +impl AesGcmSiv for Aes128Stubs { + type Key = Aes128Key; + + fn new(key: &Self::Key) -> Self { + unimplemented!() + } + + fn encrypt(&self, data: &mut Vec<u8>, aad: &[u8], nonce: &[u8]) -> Result<(), GcmSivError> { + unimplemented!() + } + + fn decrypt(&self, data: &mut Vec<u8>, aad: &[u8], nonce: &[u8]) -> Result<(), GcmSivError> { + unimplemented!() + } +} + pub struct Aes256Stubs; impl AesCipher for Aes256Stubs { @@ -351,7 +382,25 @@ unimplemented!() } } + +impl AesGcmSiv for Aes256Stubs { + type Key = Aes256Key; + + fn new(key: &Self::Key) -> Self { + unimplemented!() + } + + fn encrypt(&self, data: &mut Vec<u8>, aad: &[u8], nonce: &[u8]) -> Result<(), GcmSivError> { + unimplemented!() + } + + fn decrypt(&self, data: &mut Vec<u8>, aad: &[u8], nonce: &[u8]) -> Result<(), GcmSivError> { + unimplemented!() + } +} + pub struct Ed25519Stubs; + impl Ed25519Provider for Ed25519Stubs { type KeyPair = KeyPairStubs; type PublicKey = PublicKeyStubs; @@ -382,6 +431,7 @@ } pub struct SignatureStubs; + impl Signature for SignatureStubs { fn from_bytes(_bytes: &[u8]) -> Result<Self, InvalidSignature> { unimplemented!() @@ -393,6 +443,7 @@ } pub struct KeyPairStubs; + impl KeyPair for KeyPairStubs { type PublicKey = PublicKeyStubs; type Signature = SignatureStubs;
diff --git a/nearby/presence/ldt/fuzz/Cargo.lock b/nearby/presence/ldt/fuzz/Cargo.lock index a007fe8..2f38bca 100644 --- a/nearby/presence/ldt/fuzz/Cargo.lock +++ b/nearby/presence/ldt/fuzz/Cargo.lock
@@ -54,9 +54,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 = "block-buffer" @@ -133,9 +133,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", @@ -157,6 +157,9 @@ [[package]] name = "crypto_provider" version = "0.1.0" +dependencies = [ + "bytes", +] [[package]] name = "crypto_provider_rustcrypto" @@ -207,11 +210,12 @@ [[package]] name = "der" -version = "0.6.1" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" +checksum = "bc906908ea6458456e5eaa160a9c08543ec3d1e6f71e2235cedd660cb65f9df0" dependencies = [ "const-oid", + "zeroize", ] [[package]] @@ -259,13 +263,12 @@ [[package]] name = "elliptic-curve" -version = "0.12.3" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" +checksum = "6ea5a92946e8614bb585254898bb7dd1ddad241ace60c52149e3765e34cc039d" dependencies = [ "base16ct", "crypto-bigint", - "der", "digest", "ff", "generic-array", @@ -279,9 +282,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", "subtle", @@ -301,6 +304,7 @@ dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] @@ -316,9 +320,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", @@ -425,9 +429,9 @@ [[package]] name = "p256" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49c124b3cbce43bcbac68c58ec181d98ed6cc7e6d0aa7c3ba97b2563410b0e55" +checksum = "7270da3e5caa82afd3deb054cc237905853813aea3859544bc082c3fe55b8d47" dependencies = [ "elliptic-curve", "primeorder", @@ -469,9 +473,9 @@ [[package]] name = "primeorder" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b54f7131b3dba65a2f414cf5bd25b66d4682e4608610668eae785750ba4c5b2" +checksum = "7613fdcc0831c10060fa69833ea8fa2caa94b6456f51e25356a885b530a2e3d0" dependencies = [ "elliptic-curve", ] @@ -524,9 +528,9 @@ [[package]] name = "sec1" -version = "0.3.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" +checksum = "48518a2b5775ba8ca5b46596aae011caa431e6ce7e4a67ead66d92f08884220e" dependencies = [ "base16ct", "der",
diff --git a/nearby/presence/ldt_np_adv/fuzz/Cargo.lock b/nearby/presence/ldt_np_adv/fuzz/Cargo.lock index 3bfc3fd..4922fc2 100644 --- a/nearby/presence/ldt_np_adv/fuzz/Cargo.lock +++ b/nearby/presence/ldt_np_adv/fuzz/Cargo.lock
@@ -58,9 +58,9 @@ [[package]] name = "base16ct" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" [[package]] name = "block-buffer" @@ -137,9 +137,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", @@ -161,6 +161,9 @@ [[package]] name = "crypto_provider" version = "0.1.0" +dependencies = [ + "bytes", +] [[package]] name = "crypto_provider_rustcrypto" @@ -211,11 +214,12 @@ [[package]] name = "der" -version = "0.6.1" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" +checksum = "bc906908ea6458456e5eaa160a9c08543ec3d1e6f71e2235cedd660cb65f9df0" dependencies = [ "const-oid", + "zeroize", ] [[package]] @@ -263,13 +267,12 @@ [[package]] name = "elliptic-curve" -version = "0.12.3" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" +checksum = "6ea5a92946e8614bb585254898bb7dd1ddad241ace60c52149e3765e34cc039d" dependencies = [ "base16ct", "crypto-bigint", - "der", "digest", "ff", "generic-array", @@ -283,9 +286,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", "subtle", @@ -305,6 +308,7 @@ dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] @@ -320,9 +324,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", @@ -452,9 +456,9 @@ [[package]] name = "p256" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49c124b3cbce43bcbac68c58ec181d98ed6cc7e6d0aa7c3ba97b2563410b0e55" +checksum = "7270da3e5caa82afd3deb054cc237905853813aea3859544bc082c3fe55b8d47" dependencies = [ "elliptic-curve", "primeorder", @@ -496,9 +500,9 @@ [[package]] name = "primeorder" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b54f7131b3dba65a2f414cf5bd25b66d4682e4608610668eae785750ba4c5b2" +checksum = "7613fdcc0831c10060fa69833ea8fa2caa94b6456f51e25356a885b530a2e3d0" dependencies = [ "elliptic-curve", ] @@ -551,9 +555,9 @@ [[package]] name = "sec1" -version = "0.3.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" +checksum = "48518a2b5775ba8ca5b46596aae011caa431e6ce7e4a67ead66d92f08884220e" dependencies = [ "base16ct", "der",
diff --git a/nearby/presence/ldt_np_adv_ffi/Cargo.lock b/nearby/presence/ldt_np_adv_ffi/Cargo.lock index 3a16c56..075e658 100644 --- a/nearby/presence/ldt_np_adv_ffi/Cargo.lock +++ b/nearby/presence/ldt_np_adv_ffi/Cargo.lock
@@ -67,9 +67,9 @@ [[package]] name = "base16ct" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" [[package]] name = "base64ct" @@ -166,9 +166,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", @@ -267,15 +267,6 @@ [[package]] name = "der" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" -dependencies = [ - "const-oid", -] - -[[package]] -name = "der" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc906908ea6458456e5eaa160a9c08543ec3d1e6f71e2235cedd660cb65f9df0" @@ -321,13 +312,12 @@ [[package]] name = "elliptic-curve" -version = "0.12.3" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" +checksum = "6ea5a92946e8614bb585254898bb7dd1ddad241ace60c52149e3765e34cc039d" dependencies = [ "base16ct", "crypto-bigint", - "der 0.6.1", "digest", "ff", "generic-array", @@ -341,9 +331,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", "subtle", @@ -378,6 +368,7 @@ dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] @@ -393,9 +384,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", @@ -597,9 +588,9 @@ [[package]] name = "p256" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49c124b3cbce43bcbac68c58ec181d98ed6cc7e6d0aa7c3ba97b2563410b0e55" +checksum = "7270da3e5caa82afd3deb054cc237905853813aea3859544bc082c3fe55b8d47" dependencies = [ "elliptic-curve", "primeorder", @@ -627,7 +618,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d2820d87d2b008616e5c27212dd9e0e694fb4c6b522de06094106813328cb49" dependencies = [ - "der 0.7.1", + "der", "spki", ] @@ -663,9 +654,9 @@ [[package]] name = "primeorder" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b54f7131b3dba65a2f414cf5bd25b66d4682e4608610668eae785750ba4c5b2" +checksum = "7613fdcc0831c10060fa69833ea8fa2caa94b6456f51e25356a885b530a2e3d0" dependencies = [ "elliptic-curve", ] @@ -750,12 +741,12 @@ [[package]] name = "sec1" -version = "0.3.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" +checksum = "48518a2b5775ba8ca5b46596aae011caa431e6ce7e4a67ead66d92f08884220e" dependencies = [ "base16ct", - "der 0.6.1", + "der", "generic-array", "subtle", "zeroize", @@ -806,7 +797,7 @@ checksum = "c0445c905640145c7ea8c1993555957f65e7c46d0535b91ba501bc9bfc85522f" dependencies = [ "base64ct", - "der 0.7.1", + "der", ] [[package]]
diff --git a/nearby/presence/ldt_np_c_sample/tests/CMakeLists.txt b/nearby/presence/ldt_np_c_sample/tests/CMakeLists.txt index a4c4b37..c7a39f4 100644 --- a/nearby/presence/ldt_np_c_sample/tests/CMakeLists.txt +++ b/nearby/presence/ldt_np_c_sample/tests/CMakeLists.txt
@@ -16,6 +16,13 @@ # GoogleTest requires at least C++14 set(CMAKE_CXX_STANDARD 14) +add_compile_options(-Wall -Werror -Wextra -Wimplicit-fallthrough -Wextra-semi + -Wunreachable-code-aggressive -Wthread-safety + -Wno-missing-field-initializers -Wno-unused-parameter -Wno-psabi + -Wloop-analysis -Wno-unneeded-internal-declaration + -Wenum-compare-conditional -Wno-ignored-pragma-optimize + -Wno-bitfield-constant-conversion -Wno-deprecated-this-capture -Wshadow + -Wsign-compare) include(FetchContent) FetchContent_Declare( @@ -26,13 +33,17 @@ FetchContent_MakeAvailable(googletest) enable_testing() -find_package(RapidJSON REQUIRED) -message(STATUS "RapidJson include directories: ${RAPIDJSON_INCLUDE_DIRS}${RapidJSON_INCLUDE_DIRS}") -include_directories("${RAPIDJSON_INCLUDE_DIRS}${RapidJSON_INCLUDE_DIRS}") find_package(benchmark REQUIRED) add_compile_options(-fsanitize=address) +find_package(PkgConfig REQUIRED) +pkg_check_modules(JSONCPP jsoncpp) +include_directories("${JSONCPP_INCLUDEDIR}") + +file(COPY ${CMAKE_SOURCE_DIR}/ldt_np_adv/resources/test/np_adv_test_vectors.json + DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) + add_executable( np_ffi_tests np_ffi_tests.cc @@ -54,6 +65,7 @@ target_link_libraries( np_ffi_tests "${CMAKE_SOURCE_DIR}/ldt_np_adv_ffi/target/release/libldt_np_adv_ffi.a" + ${pkgcfg_lib_JSONCPP_jsoncpp} GTest::gtest_main OpenSSL::SSL dl pthread -fsanitize=address
diff --git a/nearby/presence/ldt_np_c_sample/tests/benchmarks.cc b/nearby/presence/ldt_np_c_sample/tests/benchmarks.cc index fbd20a8..d0cfb67 100644 --- a/nearby/presence/ldt_np_c_sample/tests/benchmarks.cc +++ b/nearby/presence/ldt_np_c_sample/tests/benchmarks.cc
@@ -50,6 +50,7 @@ void TearDown(const ::benchmark::State& state) { + (void) state; free(salt); free(payload); freeCiphers(); @@ -127,7 +128,7 @@ NpLdtDecryptAndVerify(dec_handle, payload, payload_len, *salt); } } -}; +} BENCHMARK_REGISTER_F(NpLdtFfiBenchmark, DecryptExistingCiphers)->RangeMultiplier(10)->Range(1, 1000); @@ -141,7 +142,7 @@ NpLdtDecryptAndVerify(handle, payload, payload_len, *salt); } } -}; +} BENCHMARK_REGISTER_F(NpLdtFfiBenchmark, DecryptFreshCiphers)->RangeMultiplier(10)->Range(1, 1000);
diff --git a/nearby/presence/ldt_np_c_sample/tests/np_ffi_tests.cc b/nearby/presence/ldt_np_c_sample/tests/np_ffi_tests.cc index fbb0db4..1cc2ae2 100644 --- a/nearby/presence/ldt_np_c_sample/tests/np_ffi_tests.cc +++ b/nearby/presence/ldt_np_c_sample/tests/np_ffi_tests.cc
@@ -13,25 +13,27 @@ // limitations under the License. #include <gtest/gtest.h> +#include <json/json.h> +#include <fstream> extern "C" { #include "np_ldt.h" } #include <algorithm> -#include <rapidjson/document.h> -#include <rapidjson/filereadstream.h> // TODO: get multi threaded tests working on windows #ifndef _WIN32 #include <pthread.h> #endif -using namespace rapidjson; using namespace std; -static const char* PATH_TO_DATA_FILE = "../../../ldt_np_adv/resources/test/np_adv_test_vectors.json"; - +#ifdef LDT_TEST_VECTORS +static const char* PATH_TO_DATA_FILE = LDT_TEST_VECTORS; +#else +static const char* PATH_TO_DATA_FILE = "np_adv_test_vectors.json"; +#endif static const uint8_t KEY_SEED_BYTES[] = {204, 219, 36, 137, 233, 252, 172, 66, 179, 147, 72, 184, 148, 30, 209, 154, 29, 54, 14, 117, 224, 152, 200, 193, 94, 107, 28, 194, 182, 32, 205, 57}; static const uint8_t KNOWN_HMAC_BYTES[] = {223, 185, 10, 31, 155, 31, 226, 141, 24, 187, 204, 165, 34, 64, 181, 204, 44, 203, 95, 141, 82, 137, 163, 203, 100, 235, 53, 65, 202, 97, 75, 180}; static const uint8_t TEST_DATA_BYTES[] = {205, 104, 63, 225, 161, 209, 248, 70, 84, 61, 10, 19, 212, 174, 164, 0, 64, 200, 214, 123}; @@ -84,24 +86,24 @@ // to generate the ldt_key and hmac_key from a key_seed, this is an implementation // detail of the rust ldt library TEST(NpFfiTests, TestJsonData) { - FILE* fp = fopen(PATH_TO_DATA_FILE, "r"); - ASSERT_FALSE(fp == NULL); + Json::Value root; + Json::Reader reader; + std::ifstream test(PATH_TO_DATA_FILE); + bool parsingSuccessful = reader.parse( test, root, false ); + if ( !parsingSuccessful ) + { + std::cout << reader.getFormattedErrorMessages() + << "\n"; + } + ASSERT_TRUE(root.size() == 1000); - char readBuffer[65536]; - FileReadStream is(fp, readBuffer, sizeof(readBuffer)); - Document d; - d.ParseStream(is); - - ASSERT_TRUE(d.IsArray()); - ASSERT_EQ(d.Size(), 1000); - - for (SizeType i = 0; i < d.Size(); i++) { - const Value& v = d[i]; - const char * key_seed = v["key_seed"].GetString(); - const char * metadata_key_hmac = v["metadata_key_hmac"].GetString(); - const char * adv_salt = v["adv_salt"].GetString(); - const char * plaintext = v["plaintext"].GetString(); - const char * ciphertext = v["ciphertext"].GetString(); + for (Json::Value::ArrayIndex i = 0; i < root.size(); i++) { + const Json::Value& v = root[i]; + auto key_seed = v["key_seed"].asCString(); + auto metadata_key_hmac = v["metadata_key_hmac"].asCString(); + auto adv_salt = v["adv_salt"].asCString(); + auto plaintext = v["plaintext"].asCString(); + auto ciphertext = v["ciphertext"].asCString(); NpLdtKeySeed np_key_seed; int len = strlen(key_seed)/2; @@ -114,17 +116,17 @@ ASSERT_EQ(len, 32); NpLdtEncryptHandle enc_handle = NpLdtEncryptCreate(np_key_seed); - ASSERT_NE(enc_handle.handle, 0); + ASSERT_TRUE(enc_handle.handle != 0); - NpLdtSalt salt; + NpLdtSalt saltdata; len = strlen(adv_salt)/2; - hex_string_to_bytes(adv_salt, salt.bytes, len); + hex_string_to_bytes(adv_salt, saltdata.bytes, len); ASSERT_TRUE(len == 2); len = strlen(plaintext)/2; uint8_t* buffer = (uint8_t*)malloc(len); hex_string_to_bytes(plaintext, buffer, len); - NP_LDT_RESULT result = NpLdtEncrypt(enc_handle, buffer, len, salt); + NP_LDT_RESULT result = NpLdtEncrypt(enc_handle, buffer, len, saltdata); ASSERT_EQ(result, NP_LDT_SUCCESS); char output[strlen(plaintext) + 1]; @@ -132,17 +134,22 @@ ASSERT_EQ(strcmp(output, ciphertext), 0); NpLdtDecryptHandle dec_handle = NpLdtDecryptCreate(np_key_seed, known_hmac); - ASSERT_NE(dec_handle.handle, 0); + ASSERT_TRUE(dec_handle.handle != 0); - result = NpLdtDecryptAndVerify(dec_handle, buffer, len, salt); + result = NpLdtDecryptAndVerify(dec_handle, buffer, len, saltdata); + ASSERT_EQ(result, NP_LDT_SUCCESS); + + result = NpLdtEncryptClose(enc_handle); + ASSERT_EQ(result, NP_LDT_SUCCESS); + + result = NpLdtDecryptClose(dec_handle); ASSERT_EQ(result, NP_LDT_SUCCESS); bytes_to_hex_string(buffer, output, len); - printf("output: %s\n", output); ASSERT_EQ( strcmp(output, plaintext), 0); free(buffer); } - fclose(fp); + test.close(); } TEST(NpFfiTests, TestValidLength) @@ -151,7 +158,7 @@ memcpy(plaintext, TEST_DATA_BYTES, 20); NpLdtEncryptHandle enc_handle = create_enc_handle_from_test_key(); - ASSERT_NE(enc_handle.handle, 0); + ASSERT_TRUE(enc_handle.handle != 0); NP_LDT_RESULT result = NpLdtEncrypt(enc_handle, plaintext, 20, salt); ASSERT_EQ(result, NP_LDT_SUCCESS); @@ -169,7 +176,7 @@ memcpy(plaintext, TEST_DATA_BYTES, 20); NpLdtEncryptHandle enc_handle = create_enc_handle_from_test_key(); - ASSERT_NE(enc_handle.handle, 0); + ASSERT_TRUE(enc_handle.handle != 0); NP_LDT_RESULT result = NpLdtEncrypt(enc_handle, plaintext, 32, salt); ASSERT_EQ(result, NP_LDT_ERROR_INVALID_LENGTH); @@ -185,7 +192,7 @@ memcpy(plaintext, TEST_DATA_BYTES, 20); NpLdtDecryptHandle dec_handle = create_dec_handle_from_test_key(); - ASSERT_NE(dec_handle.handle, 0); + ASSERT_TRUE(dec_handle.handle != 0); NP_LDT_RESULT result = NpLdtDecryptAndVerify(dec_handle, plaintext, 32, salt); ASSERT_EQ(result, NP_LDT_ERROR_INVALID_LENGTH); @@ -203,7 +210,7 @@ memcpy(plaintext, test_text, 29); NpLdtDecryptHandle dec_handle = create_dec_handle_from_test_key(); - ASSERT_NE(dec_handle.handle, 0); + ASSERT_TRUE(dec_handle.handle != 0); NP_LDT_RESULT result = NpLdtDecryptAndVerify(dec_handle, plaintext, 24, salt); ASSERT_EQ(result, NP_LDT_ERROR_MAC_MISMATCH); @@ -237,14 +244,12 @@ void *worker_thread(void *arg) { - int *my_id = (int *)arg; + (void) arg; pthread_mutex_lock(&my_mutex); - printf("Thread %d: waiting for release\n", *my_id); pthread_cond_wait(&cond, &my_mutex); pthread_mutex_unlock(&my_mutex); - printf("Thread %d: doing ldt stuff!\n", *my_id); uint8_t* plaintext = (uint8_t*) malloc(20 * sizeof(uint8_t)); memcpy(plaintext, TEST_DATA_BYTES, 20); @@ -292,7 +297,6 @@ // give time for all threads to lock sleep(1); - printf("Main: Now releasing the condition\n"); // unleash the threads! pthread_cond_broadcast(&cond);
diff --git a/nearby/presence/xts_aes/fuzz/Cargo.lock b/nearby/presence/xts_aes/fuzz/Cargo.lock index 5408688..2bdaef3 100644 --- a/nearby/presence/xts_aes/fuzz/Cargo.lock +++ b/nearby/presence/xts_aes/fuzz/Cargo.lock
@@ -54,9 +54,9 @@ [[package]] name = "base16ct" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" [[package]] name = "block-buffer" @@ -133,9 +133,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", @@ -207,11 +207,12 @@ [[package]] name = "der" -version = "0.6.1" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" +checksum = "bc906908ea6458456e5eaa160a9c08543ec3d1e6f71e2235cedd660cb65f9df0" dependencies = [ "const-oid", + "zeroize", ] [[package]] @@ -259,13 +260,12 @@ [[package]] name = "elliptic-curve" -version = "0.12.3" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" +checksum = "6ea5a92946e8614bb585254898bb7dd1ddad241ace60c52149e3765e34cc039d" dependencies = [ "base16ct", "crypto-bigint", - "der", "digest", "ff", "generic-array", @@ -279,9 +279,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", "subtle", @@ -301,6 +301,7 @@ dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] @@ -316,9 +317,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", @@ -406,9 +407,9 @@ [[package]] name = "p256" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49c124b3cbce43bcbac68c58ec181d98ed6cc7e6d0aa7c3ba97b2563410b0e55" +checksum = "7270da3e5caa82afd3deb054cc237905853813aea3859544bc082c3fe55b8d47" dependencies = [ "elliptic-curve", "primeorder", @@ -450,9 +451,9 @@ [[package]] name = "primeorder" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b54f7131b3dba65a2f414cf5bd25b66d4682e4608610668eae785750ba4c5b2" +checksum = "7613fdcc0831c10060fa69833ea8fa2caa94b6456f51e25356a885b530a2e3d0" dependencies = [ "elliptic-curve", ] @@ -505,9 +506,9 @@ [[package]] name = "sec1" -version = "0.3.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" +checksum = "48518a2b5775ba8ca5b46596aae011caa431e6ce7e4a67ead66d92f08884220e" dependencies = [ "base16ct", "der",
diff --git a/nearby/scripts/build-script.sh b/nearby/scripts/build-script.sh index f559167..c117a5c 100755 --- a/nearby/scripts/build-script.sh +++ b/nearby/scripts/build-script.sh
@@ -236,9 +236,12 @@ go install github.com/google/addlicense@latest curl https://sh.rustup.rs -sSf | sh -s -- -y --no-modify-path --default-toolchain 1.68.0 cargo install --locked cargo-deny --color never 2>&1 + # Must use this version, as version >= 0.65.0 removes the option "--size_t-is-usize", an option + # used by boringssl when generating rust bindings + cargo install --version 0.64.0 bindgen-cli source "$HOME/.cargo/env" rustup install nightly - brew install rapidjson google-benchmark ninja bindgen + brew install google-benchmark ninja jsoncpp # Unfortunately CMake is not smart enough to find this on its own, even though # it is in fact there by default on the build machines