1+ #![ cfg_attr( not( feature = "std" ) , no_std) ]
12#![ allow( non_snake_case) ]
23#![ deny( missing_docs) ]
34#![ cfg_attr( docsrs, feature( doc_auto_cfg) ) ]
78
89extern crate alloc;
910
10- use alloc:: borrow:: Cow ;
11- use alloc:: borrow:: ToOwned ;
12- use alloc:: collections:: BTreeMap ;
13- use alloc:: vec:: Vec ;
11+ use alloc:: vec;
12+ use alloc:: { borrow:: Cow , collections:: BTreeMap , vec:: Vec } ;
1413
1514use frost_rerandomized:: RandomizedCiphersuite ;
1615use k256:: elliptic_curve:: ops:: Reduce ;
@@ -168,9 +167,9 @@ fn hash_to_array(inputs: &[&[u8]]) -> [u8; 32] {
168167 output
169168}
170169
171- fn hash_to_scalar ( domain : & [ u8 ] , msg : & [ u8 ] ) -> Scalar {
170+ fn hash_to_scalar ( domain : & [ & [ u8 ] ] , msg : & [ u8 ] ) -> Scalar {
172171 let mut u = [ Secp256K1ScalarField :: zero ( ) ] ;
173- hash_to_field :: < ExpandMsgXmd < Sha256 > , Scalar > ( & [ msg] , & [ domain] , & mut u)
172+ hash_to_field :: < ExpandMsgXmd < Sha256 > , Scalar > ( & [ msg] , domain, & mut u)
174173 . expect ( "should never return error according to error cases described in ExpandMsgXmd" ) ;
175174 u[ 0 ]
176175}
@@ -248,7 +247,7 @@ impl Ciphersuite for Secp256K1Sha256TR {
248247 ///
249248 /// [spec]: https://www.ietf.org/archive/id/draft-irtf-cfrg-frost-14.html#section-6.5-2.2.2.1
250249 fn H1 ( m : & [ u8 ] ) -> <<Self :: Group as Group >:: Field as Field >:: Scalar {
251- hash_to_scalar ( ( CONTEXT_STRING . to_owned ( ) + "rho" ) . as_bytes ( ) , m)
250+ hash_to_scalar ( & [ CONTEXT_STRING . as_bytes ( ) , b "rho"] , m)
252251 }
253252
254253 /// H2 for FROST(secp256k1, SHA-256)
@@ -264,7 +263,7 @@ impl Ciphersuite for Secp256K1Sha256TR {
264263 ///
265264 /// [spec]: https://www.ietf.org/archive/id/draft-irtf-cfrg-frost-14.html#section-6.5-2.2.2.3
266265 fn H3 ( m : & [ u8 ] ) -> <<Self :: Group as Group >:: Field as Field >:: Scalar {
267- hash_to_scalar ( ( CONTEXT_STRING . to_owned ( ) + "nonce" ) . as_bytes ( ) , m)
266+ hash_to_scalar ( & [ CONTEXT_STRING . as_bytes ( ) , b "nonce"] , m)
268267 }
269268
270269 /// H4 for FROST(secp256k1, SHA-256)
@@ -283,18 +282,12 @@ impl Ciphersuite for Secp256K1Sha256TR {
283282
284283 /// HDKG for FROST(secp256k1, SHA-256)
285284 fn HDKG ( m : & [ u8 ] ) -> Option < <<Self :: Group as Group >:: Field as Field >:: Scalar > {
286- Some ( hash_to_scalar (
287- ( CONTEXT_STRING . to_owned ( ) + "dkg" ) . as_bytes ( ) ,
288- m,
289- ) )
285+ Some ( hash_to_scalar ( & [ CONTEXT_STRING . as_bytes ( ) , b"dkg" ] , m) )
290286 }
291287
292288 /// HID for FROST(secp256k1, SHA-256)
293289 fn HID ( m : & [ u8 ] ) -> Option < <<Self :: Group as Group >:: Field as Field >:: Scalar > {
294- Some ( hash_to_scalar (
295- ( CONTEXT_STRING . to_owned ( ) + "id" ) . as_bytes ( ) ,
296- m,
297- ) )
290+ Some ( hash_to_scalar ( & [ CONTEXT_STRING . as_bytes ( ) , b"id" ] , m) )
298291 }
299292
300293 // Sign, negating the key if required by BIP-340.
@@ -499,7 +492,7 @@ impl Ciphersuite for Secp256K1Sha256TR {
499492impl RandomizedCiphersuite for Secp256K1Sha256TR {
500493 fn hash_randomizer ( m : & [ u8 ] ) -> Option < <<Self :: Group as Group >:: Field as Field >:: Scalar > {
501494 Some ( hash_to_scalar (
502- ( CONTEXT_STRING . to_owned ( ) + "randomizer" ) . as_bytes ( ) ,
495+ & [ CONTEXT_STRING . as_bytes ( ) , b "randomizer"] ,
503496 m,
504497 ) )
505498 }
@@ -513,7 +506,6 @@ pub type Identifier = frost::Identifier<S>;
513506/// FROST(secp256k1, SHA-256) keys, key generation, key shares.
514507pub mod keys {
515508 use super :: * ;
516- use std:: collections:: BTreeMap ;
517509
518510 /// The identifier list to use when generating key shares.
519511 pub type IdentifierList < ' a > = frost:: keys:: IdentifierList < ' a , S > ;
0 commit comments