mirror of
https://github.com/lightninglabs/loop.git
synced 2026-08-13 12:33:03 +02:00
Loop-in and loop-out responses carry compressed server public keys that are copied into fixed-size fields and later used for HTLC construction. Validate the length and parse each compressed key before storing it, and validate the MuSig2 loop-in receiver internal key as well. This turns short or unparsable server keys into explicit errors instead of silently zero-padding short responses or accepting an invalid internal key. Update root test mocks to return size-correct MuSig2 signing data under the stricter checks.
28 lines
801 B
Go
28 lines
801 B
Go
package loop
|
|
|
|
import (
|
|
"testing"
|
|
|
|
looptest "github.com/lightninglabs/loop/test"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
// TestParseServerPubKey ensures that parseServerPubKey accepts a valid
|
|
// compressed public key and rejects keys with an invalid length or contents.
|
|
func TestParseServerPubKey(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
_, pubKey := looptest.CreateKey(1)
|
|
pubKeyBytes := pubKey.SerializeCompressed()
|
|
|
|
parsedKey, err := parseServerPubKey("test key", pubKeyBytes)
|
|
require.NoError(t, err)
|
|
require.Equal(t, pubKeyBytes, parsedKey[:])
|
|
|
|
_, err = parseServerPubKey("test key", pubKeyBytes[:32])
|
|
require.ErrorContains(t, err, "invalid test key length")
|
|
|
|
invalidKey := make([]byte, 33)
|
|
_, err = parseServerPubKey("test key", invalidKey)
|
|
require.ErrorContains(t, err, "invalid test key")
|
|
}
|