14
14
// You should have received a copy of the GNU General Public License
15
15
// along with the Aleo SDK library. If not, see <https://www.gnu.org/licenses/>.
16
16
17
- use crate :: { Field , types:: native:: {
18
- Poseidon2Native , FieldNative ,
19
- } , Scalar } ;
17
+ use crate :: {
18
+ Field ,
19
+ Group ,
20
+ Scalar ,
21
+ types:: native:: { FieldNative , Poseidon2Native } ,
22
+ } ;
20
23
use snarkvm_console:: algorithms:: { Hash , HashToGroup , HashToScalar } ;
21
24
22
25
use js_sys:: Array ;
23
- use wasm_bindgen:: convert:: TryFromJsValue ;
24
- use wasm_bindgen:: prelude:: * ;
26
+ use wasm_bindgen:: { convert:: TryFromJsValue , prelude:: * } ;
25
27
26
28
#[ wasm_bindgen]
27
29
pub struct Poseidon2 ( Poseidon2Native ) ;
@@ -36,48 +38,42 @@ impl Poseidon2 {
36
38
/// Hash an array of fields.
37
39
pub fn hash ( & self , input : Array ) -> Result < Field , String > {
38
40
// Convert an array of booleans to a vector of booleans, failing if any values aren't booleans.
39
- let input = input. to_vec ( )
41
+ let input = input
42
+ . to_vec ( )
40
43
. into_iter ( )
41
- . map ( |x| Field :: try_from_js_value ( x)
42
- . map ( |x| * x)
43
- . map_err ( |_| "Input must be an array of fields" . to_string ( ) )
44
- )
44
+ . map ( |x| {
45
+ Field :: try_from_js_value ( x) . map ( |x| * x) . map_err ( |_| "Input must be an array of fields" . to_string ( ) )
46
+ } )
45
47
. collect :: < Result < Vec < FieldNative > , String > > ( ) ?;
46
48
47
- self . 0 . hash ( & input)
48
- . map ( |field| Field :: from ( field) )
49
- . map_err ( |e| e. to_string ( ) )
49
+ self . 0 . hash ( & input) . map ( |field| Field :: from ( field) ) . map_err ( |e| e. to_string ( ) )
50
50
}
51
51
52
52
/// Hash to a scalar.
53
53
pub fn hash_to_scalar ( & self , input : Array ) -> Result < Scalar , String > {
54
54
// Convert an array of booleans to a vector of booleans, failing if any values aren't booleans.
55
- let input = input. to_vec ( )
55
+ let input = input
56
+ . to_vec ( )
56
57
. into_iter ( )
57
- . map ( |x| Field :: try_from_js_value ( x)
58
- . map ( |x| * x)
59
- . map_err ( |_| "Input must be an array of fields" . to_string ( ) )
60
- )
58
+ . map ( |x| {
59
+ Field :: try_from_js_value ( x) . map ( |x| * x) . map_err ( |_| "Input must be an array of fields" . to_string ( ) )
60
+ } )
61
61
. collect :: < Result < Vec < FieldNative > , String > > ( ) ?;
62
62
63
- self . 0 . hash_to_scalar ( & input)
64
- . map ( |scalar| Scalar :: from ( scalar) )
65
- . map_err ( |e| e. to_string ( ) )
63
+ self . 0 . hash_to_scalar ( & input) . map ( |scalar| Scalar :: from ( scalar) ) . map_err ( |e| e. to_string ( ) )
66
64
}
67
65
68
66
/// Hash to group.
69
- pub fn hash_to_group ( & self , input : Array ) -> Result < Field , String > {
67
+ pub fn hash_to_group ( & self , input : Array ) -> Result < Group , String > {
70
68
// Convert an array of booleans to a vector of booleans, failing if any values aren't booleans.
71
- let input = input. to_vec ( )
69
+ let input = input
70
+ . to_vec ( )
72
71
. into_iter ( )
73
- . map ( |x| Field :: try_from_js_value ( x)
74
- . map ( |x| * x)
75
- . map_err ( |_| "Input must be an array of fields" . to_string ( ) )
76
- )
72
+ . map ( |x| {
73
+ Field :: try_from_js_value ( x) . map ( |x| * x) . map_err ( |_| "Input must be an array of fields" . to_string ( ) )
74
+ } )
77
75
. collect :: < Result < Vec < FieldNative > , String > > ( ) ?;
78
76
79
- self . 0 . hash_to_group ( & input)
80
- . map ( |field| Field :: from ( field) )
81
- . map_err ( |e| e. to_string ( ) )
77
+ self . 0 . hash_to_group ( & input) . map ( |group| Group :: from ( group) ) . map_err ( |e| e. to_string ( ) )
82
78
}
83
- }
79
+ }
0 commit comments