mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-08-03 18:22:25 +02:00
Merge pull request #7649 from morehouse/fuzz_lnwire_signature
lnwire: signature parsing/conversion fuzz tests
This commit is contained in:
@@ -54,6 +54,11 @@ unlock or create.
|
|||||||
`github.com/golang/protobuf/jsonpb`
|
`github.com/golang/protobuf/jsonpb`
|
||||||
module](https://github.com/lightningnetwork/lnd/pull/7659).
|
module](https://github.com/lightningnetwork/lnd/pull/7659).
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
* [Added fuzz tests](https://github.com/lightningnetwork/lnd/pull/7649) for
|
||||||
|
signature parsing and conversion.
|
||||||
|
|
||||||
# Contributors (Alphabetical Order)
|
# Contributors (Alphabetical Order)
|
||||||
|
|
||||||
* Carla Kirk-Cohen
|
* Carla Kirk-Cohen
|
||||||
@@ -62,6 +67,7 @@ unlock or create.
|
|||||||
* Erik Arvstedt
|
* Erik Arvstedt
|
||||||
* hieblmi
|
* hieblmi
|
||||||
* Jordi Montes
|
* Jordi Montes
|
||||||
|
* Matt Morehouse
|
||||||
* Michael Street
|
* Michael Street
|
||||||
* Oliver Gugger
|
* Oliver Gugger
|
||||||
* ziggie1984
|
* ziggie1984
|
||||||
|
@@ -822,3 +822,60 @@ func FuzzCustomMessage(f *testing.F) {
|
|||||||
harness(t, data)
|
harness(t, data)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FuzzParseRawSignature tests that our DER-encoded signature parsing does not
|
||||||
|
// panic for arbitrary inputs and that serializing and reparsing the signatures
|
||||||
|
// does not mutate them.
|
||||||
|
func FuzzParseRawSignature(f *testing.F) {
|
||||||
|
f.Fuzz(func(t *testing.T, data []byte) {
|
||||||
|
sig, err := NewSigFromRawSignature(data)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
sig2, err := NewSigFromRawSignature(sig.ToSignatureBytes())
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to reparse signature: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if !reflect.DeepEqual(sig, sig2) {
|
||||||
|
t.Fatalf("signature mismatch: %v != %v", sig, sig2)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user