forked from cerc-io/plugeth
accounts/scwallet: fix public key confirmation regression
This commit is contained in:
parent
75a860880c
commit
7bc1cb3677
@ -982,12 +982,10 @@ func (s *Session) derive(path accounts.DerivationPath) (accounts.Account, error)
|
||||
copy(sig[32-len(rbytes):32], rbytes)
|
||||
copy(sig[64-len(sbytes):64], sbytes)
|
||||
|
||||
pubkey, err := determinePublicKey(sig, sigdata.PublicKey)
|
||||
if err != nil {
|
||||
if err := confirmPublicKey(sig, sigdata.PublicKey); err != nil {
|
||||
return accounts.Account{}, err
|
||||
}
|
||||
|
||||
pub, err := crypto.UnmarshalPubkey(pubkey)
|
||||
pub, err := crypto.UnmarshalPubkey(sigdata.PublicKey)
|
||||
if err != nil {
|
||||
return accounts.Account{}, err
|
||||
}
|
||||
@ -1057,10 +1055,10 @@ func (s *Session) sign(path accounts.DerivationPath, hash []byte) ([]byte, error
|
||||
return sig, nil
|
||||
}
|
||||
|
||||
// determinePublicKey uses a signature and the X component of a public key to
|
||||
// recover the entire public key.
|
||||
func determinePublicKey(sig, pubkeyX []byte) ([]byte, error) {
|
||||
return makeRecoverableSignature(DerivationSignatureHash[:], sig, pubkeyX)
|
||||
// confirmPublicKey confirms that the given signature belongs to the specified key.
|
||||
func confirmPublicKey(sig, pubkey []byte) error {
|
||||
_, err := makeRecoverableSignature(DerivationSignatureHash[:], sig, pubkey)
|
||||
return err
|
||||
}
|
||||
|
||||
// makeRecoverableSignature uses a signature and an expected public key to
|
||||
|
Loading…
Reference in New Issue
Block a user