22
33use super :: { EnrKey , EnrPublicKey , SigningError } ;
44use crate :: Key ;
5- use k256_crate:: {
6- ecdsa:: signature:: { DigestVerifier , RandomizedDigestSigner , Signature } ,
7- elliptic_curve:: weierstrass:: public_key:: FromPublicKey ,
8- } ;
5+ use ecdsa:: elliptic_curve:: sec1:: { FromEncodedPoint , ToEncodedPoint } ;
6+ use k256_crate:: ecdsa:: signature:: { DigestVerifier , RandomizedDigestSigner , Signature } ;
97use rand:: rngs:: OsRng ;
108use rlp:: DecoderError ;
119use sha3:: { Digest , Keccak256 } ;
12- use std:: {
13- collections:: BTreeMap ,
14- convert:: { TryFrom , TryInto } ,
15- } ;
10+ use std:: { collections:: BTreeMap , convert:: TryFrom } ;
1611
1712/// The ENR key that stores the public key in the ENR record.
1813pub const ENR_KEY : & str = "secp256k1" ;
1914
20- type Signer = ecdsa:: Signer < k256_crate:: Secp256k1 > ;
21- type Verifier = ecdsa:: Verifier < k256_crate:: Secp256k1 > ;
15+ type Signer = ecdsa:: SigningKey < k256_crate:: Secp256k1 > ;
16+ type Verifier = ecdsa:: VerifyKey < k256_crate:: Secp256k1 > ;
2217
2318impl EnrKey for k256_crate:: SecretKey {
24- type PublicKey = k256_crate:: PublicKey ;
19+ type PublicKey = k256_crate:: EncodedPoint ;
2520
2621 fn sign_v4 ( & self , msg : & [ u8 ] ) -> Result < Vec < u8 > , SigningError > {
2722 // take a keccak256 hash then sign.
2823 let digest = Keccak256 :: new ( ) . chain ( msg) ;
29- let signature: k256_crate:: ecdsa:: Signature = Signer :: new ( self )
24+ let signature: k256_crate:: ecdsa:: Signature = Signer :: new ( self . to_bytes ( ) . as_slice ( ) )
3025 . map_err ( |_| SigningError :: new ( "failed to create signer" ) ) ?
3126 . sign_digest_with_rng ( & mut OsRng , digest) ;
3227
3328 Ok ( signature. as_bytes ( ) . to_vec ( ) )
3429 }
3530
3631 fn public ( & self ) -> Self :: PublicKey {
37- self . try_into ( ) . unwrap ( )
32+ k256_crate :: EncodedPoint :: from_secret_key ( self , false )
3833 }
3934
4035 fn enr_to_public ( content : & BTreeMap < Key , Vec < u8 > > ) -> Result < Self :: PublicKey , DecoderError > {
@@ -43,16 +38,16 @@ impl EnrKey for k256_crate::SecretKey {
4338 . ok_or_else ( || DecoderError :: Custom ( "Unknown signature" ) ) ?;
4439
4540 // should be encoded in compressed form, i.e 33 byte raw secp256k1 public key
46- Ok ( k256_crate:: PublicKey :: from_bytes ( pubkey_bytes)
47- . ok_or_else ( | | DecoderError :: Custom ( "Invalid Secp256k1 Signature" ) ) ?)
41+ Ok ( k256_crate:: EncodedPoint :: from_bytes ( pubkey_bytes)
42+ . map_err ( |_ | DecoderError :: Custom ( "Invalid Secp256k1 Signature" ) ) ?)
4843 }
4944}
5045
51- impl EnrPublicKey for k256_crate:: PublicKey {
46+ impl EnrPublicKey for k256_crate:: EncodedPoint {
5247 fn verify_v4 ( & self , msg : & [ u8 ] , sig : & [ u8 ] ) -> bool {
5348 let digest = Keccak256 :: new ( ) . chain ( msg) ;
5449 if let Ok ( sig) = k256_crate:: ecdsa:: Signature :: try_from ( sig) {
55- if let Ok ( verifier) = Verifier :: new ( self ) {
50+ if let Ok ( verifier) = Verifier :: new ( self . as_bytes ( ) ) {
5651 if verifier. verify_digest ( digest, & sig) . is_ok ( ) {
5752 return true ;
5853 }
@@ -63,15 +58,13 @@ impl EnrPublicKey for k256_crate::PublicKey {
6358
6459 fn encode ( & self ) -> Vec < u8 > {
6560 // serialize in compressed form: 33 bytes
66- let mut s = * self ;
67- s. compress ( ) ;
68- s. as_bytes ( ) . to_vec ( )
61+ self . compress ( ) . as_bytes ( ) . to_vec ( )
6962 }
7063
7164 fn encode_uncompressed ( & self ) -> Vec < u8 > {
72- k256_crate:: AffinePoint :: from_public_key ( self )
65+ k256_crate:: AffinePoint :: from_encoded_point ( self )
7366 . unwrap ( )
74- . to_pubkey ( false )
67+ . to_encoded_point ( false )
7568 . as_bytes ( ) [ 1 ..]
7669 . to_vec ( )
7770 }
0 commit comments