Skip to content

Commit f6a1bac

Browse files
committed
Sort Group methods
1 parent c255d64 commit f6a1bac

File tree

3 files changed

+68
-68
lines changed

3 files changed

+68
-68
lines changed

src/group/mod.rs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -78,35 +78,35 @@ pub trait Group {
7878
where
7979
<D as Add<U1>>::Output: ArrayLength<u8>;
8080

81-
/// Return a scalar from its fixed-length bytes representation. If the
82-
/// scalar is zero or invalid, then return an error.
83-
fn deserialize_scalar(scalar_bits: &GenericArray<u8, Self::ScalarLen>) -> Result<Self::Scalar>;
84-
85-
/// picks a scalar at random
86-
fn random_scalar<R: RngCore + CryptoRng>(rng: &mut R) -> Self::Scalar;
81+
/// Get the base point for the group
82+
fn base_elem() -> Self::Elem;
8783

88-
/// Serializes a scalar to bytes
89-
fn serialize_scalar(scalar: Self::Scalar) -> GenericArray<u8, Self::ScalarLen>;
84+
/// Returns the identity group element
85+
fn identity_elem() -> Self::Elem;
9086

91-
/// The multiplicative inverse of this scalar
92-
fn invert_scalar(scalar: Self::Scalar) -> Self::Scalar;
87+
/// Serializes the `self` group element
88+
fn serialize_elem(elem: Self::Elem) -> GenericArray<u8, Self::ElemLen>;
9389

9490
/// Return an element from its fixed-length bytes representation. If the
9591
/// element is the identity element, return an error.
9692
fn deserialize_elem(element_bits: &GenericArray<u8, Self::ElemLen>) -> Result<Self::Elem>;
9793

98-
/// Serializes the `self` group element
99-
fn serialize_elem(elem: Self::Elem) -> GenericArray<u8, Self::ElemLen>;
100-
101-
/// Get the base point for the group
102-
fn base_elem() -> Self::Elem;
94+
/// picks a scalar at random
95+
fn random_scalar<R: RngCore + CryptoRng>(rng: &mut R) -> Self::Scalar;
10396

104-
/// Returns the identity group element
105-
fn identity_elem() -> Self::Elem;
97+
/// The multiplicative inverse of this scalar
98+
fn invert_scalar(scalar: Self::Scalar) -> Self::Scalar;
10699

107100
/// Returns the scalar representing zero
108101
#[cfg(test)]
109102
fn zero_scalar() -> Self::Scalar;
103+
104+
/// Serializes a scalar to bytes
105+
fn serialize_scalar(scalar: Self::Scalar) -> GenericArray<u8, Self::ScalarLen>;
106+
107+
/// Return a scalar from its fixed-length bytes representation. If the
108+
/// scalar is zero or invalid, then return an error.
109+
fn deserialize_scalar(scalar_bits: &GenericArray<u8, Self::ScalarLen>) -> Result<Self::Scalar>;
110110
}
111111

112112
#[cfg(test)]

src/group/p256.rs

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -144,28 +144,12 @@ impl Group for NistP256 {
144144
Ok(Scalar::from_be_bytes_reduced(result))
145145
}
146146

147-
fn deserialize_scalar(scalar_bits: &GenericArray<u8, Self::ScalarLen>) -> Result<Self::Scalar> {
148-
SecretKey::from_be_bytes(scalar_bits)
149-
.map(|secret_key| *secret_key.to_nonzero_scalar())
150-
.map_err(|_| Error::ScalarError)
151-
}
152-
153-
fn random_scalar<R: RngCore + CryptoRng>(rng: &mut R) -> Self::Scalar {
154-
*SecretKey::random(rng).to_nonzero_scalar()
155-
}
156-
157-
fn serialize_scalar(scalar: Self::Scalar) -> GenericArray<u8, Self::ScalarLen> {
158-
scalar.into()
159-
}
160-
161-
fn invert_scalar(scalar: Self::Scalar) -> Self::Scalar {
162-
Option::from(scalar.invert()).unwrap()
147+
fn base_elem() -> Self::Elem {
148+
ProjectivePoint::generator()
163149
}
164150

165-
fn deserialize_elem(element_bits: &GenericArray<u8, Self::ElemLen>) -> Result<Self::Elem> {
166-
PublicKey::from_sec1_bytes(element_bits)
167-
.map(|public_key| public_key.to_projective())
168-
.map_err(|_| Error::PointError)
151+
fn identity_elem() -> Self::Elem {
152+
ProjectivePoint::identity()
169153
}
170154

171155
fn serialize_elem(elem: Self::Elem) -> GenericArray<u8, Self::ElemLen> {
@@ -176,18 +160,34 @@ impl Group for NistP256 {
176160
result
177161
}
178162

179-
fn base_elem() -> Self::Elem {
180-
ProjectivePoint::generator()
163+
fn deserialize_elem(element_bits: &GenericArray<u8, Self::ElemLen>) -> Result<Self::Elem> {
164+
PublicKey::from_sec1_bytes(element_bits)
165+
.map(|public_key| public_key.to_projective())
166+
.map_err(|_| Error::PointError)
181167
}
182168

183-
fn identity_elem() -> Self::Elem {
184-
ProjectivePoint::identity()
169+
fn random_scalar<R: RngCore + CryptoRng>(rng: &mut R) -> Self::Scalar {
170+
*SecretKey::random(rng).to_nonzero_scalar()
171+
}
172+
173+
fn invert_scalar(scalar: Self::Scalar) -> Self::Scalar {
174+
Option::from(scalar.invert()).unwrap()
185175
}
186176

187177
#[cfg(test)]
188178
fn zero_scalar() -> Self::Scalar {
189179
Scalar::zero()
190180
}
181+
182+
fn serialize_scalar(scalar: Self::Scalar) -> GenericArray<u8, Self::ScalarLen> {
183+
scalar.into()
184+
}
185+
186+
fn deserialize_scalar(scalar_bits: &GenericArray<u8, Self::ScalarLen>) -> Result<Self::Scalar> {
187+
SecretKey::from_be_bytes(scalar_bits)
188+
.map(|secret_key| *secret_key.to_nonzero_scalar())
189+
.map_err(|_| Error::ScalarError)
190+
}
191191
}
192192

193193
/// Corresponds to the hash_to_curve_simple_swu() function defined in

src/group/ristretto.rs

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,24 @@ impl Group for Ristretto255 {
8080
))
8181
}
8282

83-
fn deserialize_scalar(scalar_bits: &GenericArray<u8, Self::ScalarLen>) -> Result<Self::Scalar> {
84-
Scalar::from_canonical_bytes((*scalar_bits).into())
85-
.filter(|scalar| scalar != &Scalar::zero())
86-
.ok_or(Error::ScalarError)
83+
fn base_elem() -> Self::Elem {
84+
RISTRETTO_BASEPOINT_POINT
85+
}
86+
87+
fn identity_elem() -> Self::Elem {
88+
RistrettoPoint::identity()
89+
}
90+
91+
// serialization of a group element
92+
fn serialize_elem(elem: Self::Elem) -> GenericArray<u8, Self::ElemLen> {
93+
elem.compress().to_bytes().into()
94+
}
95+
96+
fn deserialize_elem(element_bits: &GenericArray<u8, Self::ElemLen>) -> Result<Self::Elem> {
97+
CompressedRistretto::from_slice(element_bits)
98+
.decompress()
99+
.filter(|point| point != &RistrettoPoint::identity())
100+
.ok_or(Error::PointError)
87101
}
88102

89103
fn random_scalar<R: RngCore + CryptoRng>(rng: &mut R) -> Self::Scalar {
@@ -100,36 +114,22 @@ impl Group for Ristretto255 {
100114
}
101115
}
102116

103-
fn serialize_scalar(scalar: Self::Scalar) -> GenericArray<u8, Self::ScalarLen> {
104-
scalar.to_bytes().into()
105-
}
106-
107117
fn invert_scalar(scalar: Self::Scalar) -> Self::Scalar {
108118
scalar.invert()
109119
}
110120

111-
fn deserialize_elem(element_bits: &GenericArray<u8, Self::ElemLen>) -> Result<Self::Elem> {
112-
CompressedRistretto::from_slice(element_bits)
113-
.decompress()
114-
.filter(|point| point != &RistrettoPoint::identity())
115-
.ok_or(Error::PointError)
116-
}
117-
118-
// serialization of a group element
119-
fn serialize_elem(elem: Self::Elem) -> GenericArray<u8, Self::ElemLen> {
120-
elem.compress().to_bytes().into()
121-
}
122-
123-
fn base_elem() -> Self::Elem {
124-
RISTRETTO_BASEPOINT_POINT
121+
#[cfg(test)]
122+
fn zero_scalar() -> Self::Scalar {
123+
Scalar::zero()
125124
}
126125

127-
fn identity_elem() -> Self::Elem {
128-
RistrettoPoint::identity()
126+
fn serialize_scalar(scalar: Self::Scalar) -> GenericArray<u8, Self::ScalarLen> {
127+
scalar.to_bytes().into()
129128
}
130129

131-
#[cfg(test)]
132-
fn zero_scalar() -> Self::Scalar {
133-
Scalar::zero()
130+
fn deserialize_scalar(scalar_bits: &GenericArray<u8, Self::ScalarLen>) -> Result<Self::Scalar> {
131+
Scalar::from_canonical_bytes((*scalar_bits).into())
132+
.filter(|scalar| scalar != &Scalar::zero())
133+
.ok_or(Error::ScalarError)
134134
}
135135
}

0 commit comments

Comments
 (0)