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 } ;
5
4
use elliptic_curve:: array:: typenum:: Unsigned ;
6
5
use elliptic_curve:: { ProjectivePoint , Result } ;
7
6
@@ -37,9 +36,9 @@ pub trait GroupDigest: MapToCurve {
37
36
where
38
37
X : ExpandMsg < Self :: K > ,
39
38
{
40
- let u = hash_to_field :: < X , _ , Self :: FieldElement , U2 > ( msg, dst) ?;
41
- let q0 = Self :: map_to_curve ( u [ 0 ] ) ;
42
- let q1 = Self :: map_to_curve ( u [ 1 ] ) ;
39
+ let [ u0 , u1 ] = hash_to_field :: < 2 , X , _ , Self :: FieldElement > ( msg, dst) ?;
40
+ let q0 = Self :: map_to_curve ( u0 ) ;
41
+ let q1 = Self :: map_to_curve ( u1 ) ;
43
42
Ok ( Self :: add_and_map_to_subgroup ( q0, q1) )
44
43
}
45
44
@@ -67,8 +66,8 @@ pub trait GroupDigest: MapToCurve {
67
66
where
68
67
X : ExpandMsg < Self :: K > ,
69
68
{
70
- let u = hash_to_field :: < X , _ , Self :: FieldElement , U1 > ( msg, dst) ?;
71
- let q0 = Self :: map_to_curve ( u[ 0 ] ) ;
69
+ let [ u ] = hash_to_field :: < 1 , X , _ , Self :: FieldElement > ( msg, dst) ?;
70
+ let q0 = Self :: map_to_curve ( u) ;
72
71
Ok ( Self :: map_to_subgroup ( q0) )
73
72
}
74
73
@@ -90,7 +89,7 @@ pub trait GroupDigest: MapToCurve {
90
89
where
91
90
X : ExpandMsg < Self :: K > ,
92
91
{
93
- let u = hash_to_field :: < X , _ , Self :: Scalar , U1 > ( msg, dst) ?;
94
- Ok ( u[ 0 ] )
92
+ let [ u ] = hash_to_field :: < 1 , X , _ , Self :: Scalar > ( msg, dst) ?;
93
+ Ok ( u)
95
94
}
96
95
}
0 commit comments