From a5f67b451ef81684ebc322989920b24f50333475 Mon Sep 17 00:00:00 2001 From: Olaoluwa Osuntokun Date: Thu, 10 Aug 2023 18:15:52 -0700 Subject: [PATCH] input: add new ParseSignature helper func --- input/script_utils.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/input/script_utils.go b/input/script_utils.go index dddcec2a1..5054c57fe 100644 --- a/input/script_utils.go +++ b/input/script_utils.go @@ -7,6 +7,7 @@ import ( "fmt" "github.com/btcsuite/btcd/btcec/v2" + "github.com/btcsuite/btcd/btcec/v2/ecdsa" "github.com/btcsuite/btcd/btcec/v2/schnorr" "github.com/btcsuite/btcd/btcec/v2/schnorr/musig2" "github.com/btcsuite/btcd/btcutil" @@ -64,6 +65,17 @@ type Signature interface { Verify([]byte, *btcec.PublicKey) bool } +// ParseSignature parses a raw signature into an input.Signature instance. This +// routine supports parsing normal ECDSA DER encoded signatures, as well as +// schnorr signatures. +func ParseSignature(rawSig []byte) (Signature, error) { + if len(rawSig) == schnorr.SignatureSize { + return schnorr.ParseSignature(rawSig) + } + + return ecdsa.ParseDERSignature(rawSig) +} + // WitnessScriptHash generates a pay-to-witness-script-hash public key script // paying to a version 0 witness program paying to the passed redeem script. func WitnessScriptHash(witnessScript []byte) ([]byte, error) {