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