Rust CI / cargo fmt (push) Successful in 3s
Rust CI / cargo clippy (push) Successful in 26s
Rust CI / test (1.87.0 / no backend / no frontend) (push) Successful in 1m23s
Rust CI / test (stable / no backend / no frontend) (push) Successful in 1m17s
Rust CI / test (1.87.0 / no backend / --features danger) (push) Successful in 1m25s
Rust CI / test (stable / no backend / --features danger) (push) Successful in 1m19s
Rust CI / test (1.87.0 / no backend / --features serde) (push) Successful in 1m30s
Rust CI / test (stable / no backend / --features serde) (push) Successful in 1m23s
Rust CI / test (1.87.0 / --features ristretto255-ciphersuite / no frontend) (push) Successful in 1m34s
Rust CI / test (stable / --features ristretto255-ciphersuite / no frontend) (push) Successful in 1m29s
Rust CI / test (1.87.0 / --features ristretto255-ciphersuite / --features danger) (push) Successful in 1m34s
Rust CI / test (stable / --features ristretto255-ciphersuite / --features danger) (push) Successful in 1m30s
Rust CI / test (1.87.0 / --features ristretto255-ciphersuite / --features serde) (push) Successful in 1m34s
Rust CI / test (stable / --features ristretto255-ciphersuite / --features serde) (push) Successful in 1m27s
Rust CI / cargo audit (push) Successful in 4s
Rust CI / no-std (thumbv6m-none-eabi / no backend) (push) Successful in 12s
Rust CI / no-std (wasm32-unknown-unknown / no backend) (push) Successful in 13s
Rust CI / no-std (thumbv6m-none-eabi / --features ristretto255-ciphersuite) (push) Successful in 11s
Rust CI / no-std (wasm32-unknown-unknown / --features ristretto255-ciphersuite) (push) Successful in 13s
Publish / publish (release) Successful in 17s
Reviewed-on: #9 Co-authored-by: UneBaguette <[email protected]> Co-committed-by: UneBaguette <[email protected]>
55 lines
1.5 KiB
Rust
55 lines
1.5 KiB
Rust
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
// Copyright (c) VexaHub and contributors.
|
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
|
|
//! Includes a series of tests for the group implementations
|
|
|
|
use crate::{Error, Group, Result};
|
|
|
|
// Test that the deserialization of a group element should throw an error if the
|
|
// identity element can be deserialized properly
|
|
|
|
#[test]
|
|
fn test_group_properties() -> Result<()> {
|
|
use p256::NistP256;
|
|
use p384::NistP384;
|
|
use p521::NistP521;
|
|
|
|
#[cfg(feature = "ristretto255")]
|
|
{
|
|
use crate::Ristretto255;
|
|
|
|
test_identity_element_error::<Ristretto255>()?;
|
|
test_zero_scalar_error::<Ristretto255>()?;
|
|
}
|
|
|
|
test_identity_element_error::<NistP256>()?;
|
|
test_zero_scalar_error::<NistP256>()?;
|
|
|
|
test_identity_element_error::<NistP384>()?;
|
|
test_zero_scalar_error::<NistP384>()?;
|
|
|
|
test_identity_element_error::<NistP521>()?;
|
|
test_zero_scalar_error::<NistP521>()?;
|
|
|
|
Ok(())
|
|
}
|
|
|
|
// Checks that the identity element cannot be deserialized
|
|
fn test_identity_element_error<G: Group>() -> Result<()> {
|
|
let identity = G::identity_elem();
|
|
let result = G::deserialize_elem(&G::serialize_elem(identity));
|
|
assert!(matches!(result, Err(Error::Deserialization)));
|
|
|
|
Ok(())
|
|
}
|
|
|
|
// Checks that the zero scalar cannot be deserialized
|
|
fn test_zero_scalar_error<G: Group>() -> Result<()> {
|
|
let zero_scalar = G::zero_scalar();
|
|
let result = G::deserialize_scalar(&G::serialize_scalar(zero_scalar));
|
|
assert!(matches!(result, Err(Error::Deserialization)));
|
|
|
|
Ok(())
|
|
}
|