Skip to content

Commit c255d64

Browse files
committed
Rename and remove Group methods
`to_arr` -> `serialize_elem` `base_point` -> `base_elem` `is_identity` -> removed `identity` -> `identity_elem` `zero_scalar` -> hidden behind `cfg(test)`
1 parent 95810fb commit c255d64

File tree

7 files changed

+44
-45
lines changed

7 files changed

+44
-45
lines changed

src/group/mod.rs

+5-9
Original file line numberDiff line numberDiff line change
@@ -96,21 +96,17 @@ pub trait Group {
9696
fn deserialize_elem(element_bits: &GenericArray<u8, Self::ElemLen>) -> Result<Self::Elem>;
9797

9898
/// Serializes the `self` group element
99-
fn to_arr(elem: Self::Elem) -> GenericArray<u8, Self::ElemLen>;
99+
fn serialize_elem(elem: Self::Elem) -> GenericArray<u8, Self::ElemLen>;
100100

101101
/// Get the base point for the group
102-
fn base_point() -> Self::Elem;
103-
104-
/// Returns if the group element is equal to the identity (1)
105-
fn is_identity(elem: Self::Elem) -> bool {
106-
elem.ct_eq(&Self::identity()).into()
107-
}
102+
fn base_elem() -> Self::Elem;
108103

109104
/// Returns the identity group element
110-
fn identity() -> Self::Elem;
105+
fn identity_elem() -> Self::Elem;
111106

112107
/// Returns the scalar representing zero
113-
fn scalar_zero() -> Self::Scalar;
108+
#[cfg(test)]
109+
fn zero_scalar() -> Self::Scalar;
114110
}
115111

116112
#[cfg(test)]

src/group/p256.rs

+6-4
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ use once_cell::unsync::Lazy;
2727
use p256_::elliptic_curve::group::prime::PrimeCurveAffine;
2828
use p256_::elliptic_curve::ops::Reduce;
2929
use p256_::elliptic_curve::sec1::{FromEncodedPoint, ToEncodedPoint};
30+
#[cfg(test)]
3031
use p256_::elliptic_curve::Field;
3132
use p256_::{AffinePoint, EncodedPoint, NistP256, ProjectivePoint, PublicKey, Scalar, SecretKey};
3233
use rand_core::{CryptoRng, RngCore};
@@ -167,23 +168,24 @@ impl Group for NistP256 {
167168
.map_err(|_| Error::PointError)
168169
}
169170

170-
fn to_arr(elem: Self::Elem) -> GenericArray<u8, Self::ElemLen> {
171+
fn serialize_elem(elem: Self::Elem) -> GenericArray<u8, Self::ElemLen> {
171172
let bytes = elem.to_affine().to_encoded_point(true);
172173
let bytes = bytes.as_bytes();
173174
let mut result = GenericArray::default();
174175
result[..bytes.len()].copy_from_slice(bytes);
175176
result
176177
}
177178

178-
fn base_point() -> Self::Elem {
179+
fn base_elem() -> Self::Elem {
179180
ProjectivePoint::generator()
180181
}
181182

182-
fn identity() -> Self::Elem {
183+
fn identity_elem() -> Self::Elem {
183184
ProjectivePoint::identity()
184185
}
185186

186-
fn scalar_zero() -> Self::Scalar {
187+
#[cfg(test)]
188+
fn zero_scalar() -> Self::Scalar {
187189
Scalar::zero()
188190
}
189191
}

src/group/ristretto.rs

+5-4
Original file line numberDiff line numberDiff line change
@@ -116,19 +116,20 @@ impl Group for Ristretto255 {
116116
}
117117

118118
// serialization of a group element
119-
fn to_arr(elem: Self::Elem) -> GenericArray<u8, Self::ElemLen> {
119+
fn serialize_elem(elem: Self::Elem) -> GenericArray<u8, Self::ElemLen> {
120120
elem.compress().to_bytes().into()
121121
}
122122

123-
fn base_point() -> Self::Elem {
123+
fn base_elem() -> Self::Elem {
124124
RISTRETTO_BASEPOINT_POINT
125125
}
126126

127-
fn identity() -> Self::Elem {
127+
fn identity_elem() -> Self::Elem {
128128
RistrettoPoint::identity()
129129
}
130130

131-
fn scalar_zero() -> Self::Scalar {
131+
#[cfg(test)]
132+
fn zero_scalar() -> Self::Scalar {
132133
Scalar::zero()
133134
}
134135
}

src/group/tests.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,16 @@ fn test_group_properties() -> Result<()> {
3535

3636
// Checks that the identity element cannot be deserialized
3737
fn test_identity_element_error<G: Group>() -> Result<()> {
38-
let identity = G::identity();
39-
let result = G::deserialize_elem(&G::to_arr(identity));
38+
let identity = G::identity_elem();
39+
let result = G::deserialize_elem(&G::serialize_elem(identity));
4040
assert!(matches!(result, Err(Error::PointError)));
4141

4242
Ok(())
4343
}
4444

4545
// Checks that the zero scalar cannot be deserialized
4646
fn test_zero_scalar_error<G: Group>() -> Result<()> {
47-
let zero_scalar = G::scalar_zero();
47+
let zero_scalar = G::zero_scalar();
4848
let result = G::deserialize_scalar(&G::serialize_scalar(zero_scalar));
4949
assert!(matches!(result, Err(Error::ScalarError)));
5050

src/serialization.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ impl<G: Group, H: BlockSizeUser + Digest + FixedOutputReset> VerifiableClient<G,
5353
G::ScalarLen: Add<G::ElemLen>,
5454
Sum<G::ScalarLen, G::ElemLen>: ArrayLength<u8>,
5555
{
56-
G::serialize_scalar(self.blind).concat(G::to_arr(self.blinded_element))
56+
G::serialize_scalar(self.blind).concat(G::serialize_elem(self.blinded_element))
5757
}
5858

5959
/// Deserialization from bytes
@@ -97,7 +97,7 @@ impl<G: Group, H: BlockSizeUser + Digest + FixedOutputReset> VerifiableServer<G,
9797
G::ScalarLen: Add<G::ElemLen>,
9898
Sum<G::ScalarLen, G::ElemLen>: ArrayLength<u8>,
9999
{
100-
G::serialize_scalar(self.sk).concat(G::to_arr(self.pk))
100+
G::serialize_scalar(self.sk).concat(G::serialize_elem(self.pk))
101101
}
102102

103103
/// Deserialization from bytes
@@ -143,7 +143,7 @@ impl<G: Group, H: BlockSizeUser + Digest + FixedOutputReset> Proof<G, H> {
143143
impl<G: Group, H: BlockSizeUser + Digest + FixedOutputReset> BlindedElement<G, H> {
144144
/// Serialization into bytes
145145
pub fn serialize(&self) -> GenericArray<u8, G::ElemLen> {
146-
G::to_arr(self.value)
146+
G::serialize_elem(self.value)
147147
}
148148

149149
/// Deserialization from bytes
@@ -162,7 +162,7 @@ impl<G: Group, H: BlockSizeUser + Digest + FixedOutputReset> BlindedElement<G, H
162162
impl<G: Group, H: BlockSizeUser + Digest + FixedOutputReset> EvaluationElement<G, H> {
163163
/// Serialization into bytes
164164
pub fn serialize(&self) -> GenericArray<u8, G::ElemLen> {
165-
G::to_arr(self.value)
165+
G::serialize_elem(self.value)
166166
}
167167

168168
/// Deserialization from bytes

src/tests/voprf_test_vectors.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ fn test_verifiable_seed_to_key<G: Group, H: BlockSizeUser + Digest + FixedOutput
171171
);
172172
assert_eq!(
173173
&parameters.pksm,
174-
G::to_arr(server.get_public_key()).as_slice()
174+
G::serialize_elem(server.get_public_key()).as_slice()
175175
);
176176
}
177177
Ok(())

src/voprf.rs

+20-20
Original file line numberDiff line numberDiff line change
@@ -481,7 +481,7 @@ impl<G: Group, H: BlockSizeUser + Digest + FixedOutputReset> VerifiableServer<G,
481481
/// bytes to represent the server's private key
482482
pub fn new_with_key(key: &[u8]) -> Result<Self> {
483483
let sk = G::deserialize_scalar(key.into())?;
484-
let pk = G::base_point() * &sk;
484+
let pk = G::base_elem() * &sk;
485485
Ok(Self {
486486
sk,
487487
pk,
@@ -497,7 +497,7 @@ impl<G: Group, H: BlockSizeUser + Digest + FixedOutputReset> VerifiableServer<G,
497497
let dst = GenericArray::from(STR_HASH_TO_SCALAR)
498498
.concat(get_context_string::<G>(Mode::Verifiable));
499499
let sk = G::hash_to_scalar::<H, _, _>(Some(seed), dst)?;
500-
let pk = G::base_point() * &sk;
500+
let pk = G::base_elem() * &sk;
501501
Ok(Self {
502502
sk,
503503
pk,
@@ -632,7 +632,7 @@ impl<G: Group, H: BlockSizeUser + Digest + FixedOutputReset> VerifiableServer<G,
632632
&'b IE: IntoIterator<Item = &'b PreparedEvaluationElement<G, H>>,
633633
<&'b IE as IntoIterator>::IntoIter: ExactSizeIterator,
634634
{
635-
let g = G::base_point();
635+
let g = G::base_elem();
636636
let u = g * t;
637637

638638
let proof = generate_proof(
@@ -901,7 +901,7 @@ where
901901
GenericArray::from(STR_HASH_TO_SCALAR).concat(get_context_string::<G>(Mode::Verifiable));
902902
let m = G::hash_to_scalar::<H, _, _>(context, dst)?;
903903

904-
let g = G::base_point();
904+
let g = G::base_elem();
905905
let t = g * &m;
906906
let u = t + &pk;
907907

@@ -945,11 +945,11 @@ fn generate_proof<
945945
GenericArray::from(STR_CHALLENGE).concat(get_context_string::<G>(Mode::Verifiable));
946946
chain!(
947947
h2_input,
948-
Serialize::<U2, _>::from_owned(G::to_arr(b))?,
949-
Serialize::<U2, _>::from_owned(G::to_arr(m))?,
950-
Serialize::<U2, _>::from_owned(G::to_arr(z))?,
951-
Serialize::<U2, _>::from_owned(G::to_arr(t2))?,
952-
Serialize::<U2, _>::from_owned(G::to_arr(t3))?,
948+
Serialize::<U2, _>::from_owned(G::serialize_elem(b))?,
949+
Serialize::<U2, _>::from_owned(G::serialize_elem(m))?,
950+
Serialize::<U2, _>::from_owned(G::serialize_elem(z))?,
951+
Serialize::<U2, _>::from_owned(G::serialize_elem(t2))?,
952+
Serialize::<U2, _>::from_owned(G::serialize_elem(t3))?,
953953
Serialize::<U2, _>::from_owned(challenge_dst)?,
954954
);
955955

@@ -982,11 +982,11 @@ fn verify_proof<G: Group, H: BlockSizeUser + Digest + FixedOutputReset>(
982982
GenericArray::from(STR_CHALLENGE).concat(get_context_string::<G>(Mode::Verifiable));
983983
chain!(
984984
h2_input,
985-
Serialize::<U2, _>::from_owned(G::to_arr(b))?,
986-
Serialize::<U2, _>::from_owned(G::to_arr(m))?,
987-
Serialize::<U2, _>::from_owned(G::to_arr(z))?,
988-
Serialize::<U2, _>::from_owned(G::to_arr(t2))?,
989-
Serialize::<U2, _>::from_owned(G::to_arr(t3))?,
985+
Serialize::<U2, _>::from_owned(G::serialize_elem(b))?,
986+
Serialize::<U2, _>::from_owned(G::serialize_elem(m))?,
987+
Serialize::<U2, _>::from_owned(G::serialize_elem(z))?,
988+
Serialize::<U2, _>::from_owned(G::serialize_elem(t2))?,
989+
Serialize::<U2, _>::from_owned(G::serialize_elem(t3))?,
990990
Serialize::<U2, _>::from_owned(challenge_dst)?,
991991
);
992992

@@ -1027,7 +1027,7 @@ fn finalize_after_unblind<
10271027
hash_input,
10281028
Serialize::<U2>::from(input.as_ref())?,
10291029
Serialize::<U2>::from(info)?,
1030-
Serialize::<U2, _>::from_owned(G::to_arr(unblinded_element))?,
1030+
Serialize::<U2, _>::from_owned(G::serialize_elem(unblinded_element))?,
10311031
Serialize::<U2, _>::from_owned(finalize_dst)?,
10321032
);
10331033

@@ -1053,22 +1053,22 @@ fn compute_composites<G: Group, H: BlockSizeUser + Digest + FixedOutputReset>(
10531053

10541054
chain!(
10551055
h1_input,
1056-
Serialize::<U2, _>::from_owned(G::to_arr(b))?,
1056+
Serialize::<U2, _>::from_owned(G::serialize_elem(b))?,
10571057
Serialize::<U2, _>::from_owned(seed_dst)?,
10581058
);
10591059
let seed = h1_input
10601060
.fold(H::new(), |h, bytes| h.chain_update(bytes))
10611061
.finalize();
10621062

1063-
let mut m = G::identity();
1064-
let mut z = G::identity();
1063+
let mut m = G::identity_elem();
1064+
let mut z = G::identity_elem();
10651065

10661066
for (i, (c, d)) in c_slice.zip(d_slice).enumerate() {
10671067
chain!(h2_input,
10681068
Serialize::<U2, _>::from_owned(seed.clone())?,
10691069
i2osp::<U2>(i)? => |x| Some(x.as_slice()),
1070-
Serialize::<U2, _>::from_owned(G::to_arr(c.value))?,
1071-
Serialize::<U2, _>::from_owned(G::to_arr(d.value))?,
1070+
Serialize::<U2, _>::from_owned(G::serialize_elem(c.value))?,
1071+
Serialize::<U2, _>::from_owned(G::serialize_elem(d.value))?,
10721072
Serialize::<U2, _>::from_owned(composite_dst)?,
10731073
);
10741074
let dst = GenericArray::from(STR_HASH_TO_SCALAR)

0 commit comments

Comments
 (0)