1
1
//! Traits for handling hash to curve.
2
2
3
3
use super :: { ExpandMsg , MapToCurve , hash_to_field} ;
4
+ use digest:: consts:: { U1 , U2 } ;
4
5
use elliptic_curve:: array:: typenum:: Unsigned ;
5
6
use elliptic_curve:: { ProjectivePoint , Result } ;
6
7
@@ -36,8 +37,7 @@ pub trait GroupDigest: MapToCurve {
36
37
where
37
38
X : ExpandMsg < Self :: K > ,
38
39
{
39
- let mut u = [ Self :: FieldElement :: default ( ) , Self :: FieldElement :: default ( ) ] ;
40
- hash_to_field :: < X , _ , _ > ( msg, dst, & mut u) ?;
40
+ let u = hash_to_field :: < X , _ , Self :: FieldElement , U2 > ( msg, dst) ?;
41
41
let q0 = Self :: map_to_curve ( u[ 0 ] ) ;
42
42
let q1 = Self :: map_to_curve ( u[ 1 ] ) ;
43
43
Ok ( Self :: add_and_map_to_subgroup ( q0, q1) )
@@ -67,8 +67,7 @@ pub trait GroupDigest: MapToCurve {
67
67
where
68
68
X : ExpandMsg < Self :: K > ,
69
69
{
70
- let mut u = [ Self :: FieldElement :: default ( ) ] ;
71
- hash_to_field :: < X , _ , _ > ( msg, dst, & mut u) ?;
70
+ let u = hash_to_field :: < X , _ , Self :: FieldElement , U1 > ( msg, dst) ?;
72
71
let q0 = Self :: map_to_curve ( u[ 0 ] ) ;
73
72
Ok ( Self :: map_to_subgroup ( q0) )
74
73
}
@@ -91,8 +90,7 @@ pub trait GroupDigest: MapToCurve {
91
90
where
92
91
X : ExpandMsg < Self :: K > ,
93
92
{
94
- let mut u = [ Self :: Scalar :: default ( ) ] ;
95
- hash_to_field :: < X , _ , _ > ( msg, dst, & mut u) ?;
93
+ let u = hash_to_field :: < X , _ , Self :: Scalar , U1 > ( msg, dst) ?;
96
94
Ok ( u[ 0 ] )
97
95
}
98
96
}
0 commit comments