Enhance WebSocket connection management and signer implementation
Some checks failed
Go / build (push) Has been cancelled
Go / release (push) Has been cancelled

- Added a pong handler to extend the read deadline upon receiving PONG messages in WebSocket connections, improving connection stability.
- Updated the signer implementation to serialize the x-only public key to 32 bytes, ensuring compatibility with the internal format.
- Refactored tests to utilize MustNew() for signer initialization, enhancing error handling during key generation.
- Bumped version to v0.25.1 to reflect these updates.
This commit is contained in:
2025-11-05 06:19:28 +00:00
parent 4944bfad91
commit 1d12099f1c
5 changed files with 30 additions and 15 deletions

View File

@@ -52,15 +52,18 @@ func (s *Signer) Generate() (err error) {
return
}
// Extract x-only public key
// Extract x-only public key (internal 64-byte format)
var xonly secp.XOnlyPublicKey
var parity int32
if xonly, parity, err = s.ctx.KeypairXOnlyPub(s.keypair); err != nil {
return
}
_ = parity
// XOnlyPublicKey is [64]byte, but we only need the first 32 bytes (the x coordinate)
s.pubKey = xonly[:32]
// Serialize the x-only public key to 32 bytes
if s.pubKey, err = s.ctx.SerializeXOnlyPublicKey(xonly[:]); err != nil {
return
}
return
}
@@ -79,15 +82,18 @@ func (s *Signer) InitSec(sec []byte) (err error) {
return
}
// Extract x-only public key
// Extract x-only public key (internal 64-byte format)
var xonly secp.XOnlyPublicKey
var parity int32
if xonly, parity, err = s.ctx.KeypairXOnlyPub(s.keypair); err != nil {
return
}
_ = parity
// XOnlyPublicKey is [64]byte, but we only need the first 32 bytes (the x coordinate)
s.pubKey = xonly[:32]
// Serialize the x-only public key to 32 bytes
if s.pubKey, err = s.ctx.SerializeXOnlyPublicKey(xonly[:]); err != nil {
return
}
return
}

View File

@@ -9,11 +9,11 @@ import (
"time"
"lol.mleku.dev/chk"
"next.orly.dev/pkg/interfaces/signer/p8k"
"next.orly.dev/pkg/encoders/event"
"next.orly.dev/pkg/encoders/hex"
"next.orly.dev/pkg/encoders/kind"
"next.orly.dev/pkg/encoders/tag"
"next.orly.dev/pkg/interfaces/signer/p8k"
)
// TestPolicyIntegration runs the relay with policy enabled and tests event filtering
@@ -23,13 +23,13 @@ func TestPolicyIntegration(t *testing.T) {
}
// Generate test keys
allowedSigner := p8k.New()
allowedSigner := p8k.MustNew()
if err := allowedSigner.Generate(); chk.E(err) {
t.Fatalf("Failed to generate allowed signer: %v", err)
}
allowedPubkeyHex := hex.Enc(allowedSigner.Pub())
unauthorizedSigner := p8k.New()
unauthorizedSigner := p8k.MustNew()
if err := unauthorizedSigner.Generate(); chk.E(err) {
t.Fatalf("Failed to generate unauthorized signer: %v", err)
}
@@ -367,13 +367,13 @@ func TestPolicyWithRelay(t *testing.T) {
}
// Generate keys
allowedSigner := p8k.New()
allowedSigner := p8k.MustNew()
if err := allowedSigner.Generate(); chk.E(err) {
t.Fatalf("Failed to generate allowed signer: %v", err)
}
allowedPubkeyHex := hex.Enc(allowedSigner.Pub())
unauthorizedSigner := p8k.New()
unauthorizedSigner := p8k.MustNew()
if err := unauthorizedSigner.Generate(); chk.E(err) {
t.Fatalf("Failed to generate unauthorized signer: %v", err)
}
@@ -513,4 +513,3 @@ func TestPolicyWithRelay(t *testing.T) {
})
}
}

View File

@@ -23,7 +23,7 @@ func int64Ptr(i int64) *int64 {
// Helper function to generate a keypair for testing
func generateTestKeypair(t *testing.T) (signer *p8k.Signer, pubkey []byte) {
signer = p8k.New()
signer = p8k.MustNew()
if err := signer.Generate(); chk.E(err) {
t.Fatalf("Failed to generate test keypair: %v", err)
}
@@ -33,7 +33,7 @@ func generateTestKeypair(t *testing.T) (signer *p8k.Signer, pubkey []byte) {
// Helper function to generate a keypair for benchmarks
func generateTestKeypairB(b *testing.B) (signer *p8k.Signer, pubkey []byte) {
signer = p8k.New()
signer = p8k.MustNew()
if err := signer.Generate(); chk.E(err) {
b.Fatalf("Failed to generate test keypair: %v", err)
}

View File

@@ -1 +1 @@
v0.25.0
v0.25.1