testudo/src/scalar/mod.rs
src/scalar/mod.rsRaw
1mod ristretto255;
2
3pub type Scalar = ristretto255::Scalar;
4pub type ScalarBytes = curve25519_dalek::scalar::Scalar;
5
6pub trait ScalarFromPrimitives {
7 fn to_scalar(self) -> Scalar;
8}
9
10impl ScalarFromPrimitives for usize {
11 #[inline]
12 fn to_scalar(self) -> Scalar {
13 (0..self).map(|_i| Scalar::one()).sum()
14 }
15}
16
17impl ScalarFromPrimitives for bool {
18 #[inline]
19 fn to_scalar(self) -> Scalar {
20 if self {
21 Scalar::one()
22 } else {
23 Scalar::zero()
24 }
25 }
26}
27
28pub trait ScalarBytesFromScalar {
29 fn decompress_scalar(s: &Scalar) -> ScalarBytes;
30 fn decompress_vec(v: &Vec<Scalar>) -> Vec<ScalarBytes>;
31 fn decompress_seq(s: &[Scalar]) -> Vec<ScalarBytes>;
32}
33
34impl ScalarBytesFromScalar for Scalar {
35 fn decompress_scalar(s: &Scalar) -> ScalarBytes {
36 ScalarBytes::from_bytes_mod_order(s.to_bytes())
37 }
38
39 fn decompress_vec(v: &Vec<Scalar>) -> Vec<ScalarBytes> {
40 (0..v.len())
41 .map(|i| Scalar::decompress_scalar(&v[i]))
42 .collect::<Vec<ScalarBytes>>()
43 }
44
45 fn decompress_seq(s: &[Scalar]) -> Vec<ScalarBytes> {
46 (0..s.len())
47 .map(|i| Scalar::decompress_scalar(&s[i]))
48 .collect::<Vec<ScalarBytes>>()
49 }
50}