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