multi: refactor SignMessage to specify hashing
This commit is contained in:
8 files changed
+27
-17
No files matched your search
@@ -267,7 +267,7 @@ var _ input.Signer = (*BtcWallet)(nil)
|
||||
//
|
||||
// NOTE: This is a part of the MessageSigner interface.
|
||||
func (b *BtcWallet) SignMessage(keyLoc keychain.KeyLocator,
|
||||
msg []byte) (*btcec.Signature, error) {
|
||||
msg []byte, doubleHash bool) (*btcec.Signature, error) {
|
||||
|
||||
// First attempt to fetch the private key which corresponds to the
|
||||
// specified public key.
|
||||
@@ -279,7 +279,12 @@ func (b *BtcWallet) SignMessage(keyLoc keychain.KeyLocator,
|
||||
}
|
||||
|
||||
// Double hash and sign the data.
|
||||
msgDigest := chainhash.DoubleHashB(msg)
|
||||
var msgDigest []byte
|
||||
if doubleHash {
|
||||
msgDigest = chainhash.DoubleHashB(msg)
|
||||
} else {
|
||||
msgDigest = chainhash.HashB(msg)
|
||||
}
|
||||
sign, err := privKey.Sign(msgDigest)
|
||||
if err != nil {
|
||||
return nil, errors.Errorf("unable sign the message: %v", err)
|
||||
|
||||
@@ -442,9 +442,9 @@ type MessageSigner interface {
|
||||
// SignMessage attempts to sign a target message with the private key
|
||||
// described in the key locator. If the target private key is unable to
|
||||
// be found, then an error will be returned. The actual digest signed is
|
||||
// the double SHA-256 of the passed message.
|
||||
SignMessage(keyLoc keychain.KeyLocator, msg []byte) (*btcec.Signature,
|
||||
error)
|
||||
// the single or double SHA-256 of the passed message.
|
||||
SignMessage(keyLoc keychain.KeyLocator, msg []byte,
|
||||
doubleHash bool) (*btcec.Signature, error)
|
||||
}
|
||||
|
||||
// WalletDriver represents a "driver" for a particular concrete
|
||||
|
||||
Reference in new issue
Block a user