From e198e6693fa281d448540f2ffabb09ef237f8499 Mon Sep 17 00:00:00 2001 From: Matt Morehouse Date: Fri, 28 Apr 2023 10:20:08 -0500 Subject: [PATCH] lnwire: add FuzzConvertFixedSignature test Test conversion of fixed 64-byte signatures to DER-encoded signatures. --- lnwire/fuzz_test.go | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/lnwire/fuzz_test.go b/lnwire/fuzz_test.go index b1392881e..53f152328 100644 --- a/lnwire/fuzz_test.go +++ b/lnwire/fuzz_test.go @@ -843,3 +843,39 @@ func FuzzParseRawSignature(f *testing.F) { } }) } + +// FuzzConvertFixedSignature tests that conversion of fixed 64-byte signatures +// to DER-encoded signatures does not panic and that parsing and reconverting +// the signatures does not mutate them. +func FuzzConvertFixedSignature(f *testing.F) { + f.Fuzz(func(t *testing.T, data []byte) { + var sig Sig + if len(data) > len(sig) { + return + } + copy(sig[:], data) + + derSig, err := sig.ToSignature() + if err != nil { + return + } + + sig2, err := NewSigFromSignature(derSig) + if err != nil { + t.Fatalf("failed to parse signature: %v", err) + } + + derSig2, err := sig2.ToSignature() + if err != nil { + t.Fatalf("failed to reconvert signature to DER: %v", + err) + } + + derBytes := derSig.Serialize() + derBytes2 := derSig2.Serialize() + if !bytes.Equal(derBytes, derBytes2) { + t.Fatalf("signature mismatch: %v != %v", derBytes, + derBytes2) + } + }) +}