Refactor signer implementation to use p8k package
- Replaced all instances of p256k1signer with the new p8k.Signer across various modules, including event creation, policy handling, and database interactions. - Updated related test cases and benchmarks to ensure compatibility with the new signer interface. - Bumped version to v0.25.0 to reflect these significant changes and improvements in cryptographic operations.
This commit is contained in:
@@ -5,12 +5,12 @@ import (
|
||||
|
||||
"lol.mleku.dev/chk"
|
||||
"lol.mleku.dev/log"
|
||||
p256k1signer "p256k1.mleku.dev/signer"
|
||||
"next.orly.dev/pkg/interfaces/signer/p8k"
|
||||
)
|
||||
|
||||
func TestCreateUnsigned(t *testing.T) {
|
||||
var err error
|
||||
signer := p256k1signer.NewP256K1Signer()
|
||||
signer := p8k.MustNew()
|
||||
if err = signer.Generate(); chk.E(err) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
@@ -7,14 +7,14 @@ import (
|
||||
|
||||
"lol.mleku.dev/chk"
|
||||
"next.orly.dev/pkg/crypto/ec/secp256k1"
|
||||
p256k1signer "p256k1.mleku.dev/signer"
|
||||
"next.orly.dev/pkg/encoders/bech32encoding"
|
||||
"next.orly.dev/pkg/interfaces/signer/p8k"
|
||||
"next.orly.dev/pkg/protocol/directory"
|
||||
)
|
||||
|
||||
// Helper to create a test keypair using p256k1signer.P256K1Signer
|
||||
func createTestKeypair(t *testing.T) (*p256k1signer.P256K1Signer, []byte) {
|
||||
signer := p256k1signer.NewP256K1Signer()
|
||||
// Helper to create a test keypair using p8k.Signer
|
||||
func createTestKeypair(t *testing.T) (*p8k.Signer, []byte) {
|
||||
signer := p8k.MustNew()
|
||||
if err := signer.Generate(); chk.E(err) {
|
||||
t.Fatalf("failed to generate keypair: %v", err)
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import (
|
||||
"lol.mleku.dev/errorf"
|
||||
"next.orly.dev/pkg/crypto/ec/schnorr"
|
||||
"next.orly.dev/pkg/crypto/ec/secp256k1"
|
||||
"next.orly.dev/pkg/interfaces/signer/p8k"
|
||||
"next.orly.dev/pkg/encoders/bech32encoding"
|
||||
"next.orly.dev/pkg/encoders/event"
|
||||
)
|
||||
@@ -30,10 +31,21 @@ func NewIdentityTagBuilder(identityPrivkey []byte) (builder *IdentityTagBuilder,
|
||||
return nil, errorf.E("identity private key must be 32 bytes")
|
||||
}
|
||||
|
||||
// Derive public key from secret key
|
||||
identitySecKey := secp256k1.SecKeyFromBytes(identityPrivkey)
|
||||
identityPubkey := identitySecKey.PubKey()
|
||||
identityPubkeyBytes := schnorr.SerializePubKey(identityPubkey)
|
||||
// Derive public key from secret key using p8k signer
|
||||
var signer *p8k.Signer
|
||||
if signer, err = p8k.New(); chk.E(err) {
|
||||
return nil, errorf.E("failed to create signer: %w", err)
|
||||
}
|
||||
if err = signer.InitSec(identityPrivkey); chk.E(err) {
|
||||
return nil, errorf.E("failed to initialize signer: %w", err)
|
||||
}
|
||||
identityPubkeyBytes := signer.Pub()
|
||||
|
||||
// Parse public key for npub encoding
|
||||
var identityPubkey *secp256k1.PublicKey
|
||||
if identityPubkey, err = schnorr.ParsePubKey(identityPubkeyBytes); chk.E(err) {
|
||||
return nil, errorf.E("failed to parse public key: %w", err)
|
||||
}
|
||||
|
||||
// Encode as npub
|
||||
var npubIdentity []byte
|
||||
@@ -65,14 +77,19 @@ func (builder *IdentityTagBuilder) CreateIdentityTag(delegatePubkey []byte) (ide
|
||||
identityPubkeyHex := hex.EncodeToString(builder.identityPubkey)
|
||||
message := nonceHex + delegatePubkeyHex + identityPubkeyHex
|
||||
|
||||
// Hash and sign
|
||||
// Hash and sign using p8k signer
|
||||
hash := sha256.Sum256([]byte(message))
|
||||
identitySecKey := secp256k1.SecKeyFromBytes(builder.identityPrivkey)
|
||||
var sig *schnorr.Signature
|
||||
if sig, err = schnorr.Sign(identitySecKey, hash[:]); chk.E(err) {
|
||||
var signer *p8k.Signer
|
||||
if signer, err = p8k.New(); chk.E(err) {
|
||||
return nil, errorf.E("failed to create signer: %w", err)
|
||||
}
|
||||
if err = signer.InitSec(builder.identityPrivkey); chk.E(err) {
|
||||
return nil, errorf.E("failed to initialize signer: %w", err)
|
||||
}
|
||||
var signature []byte
|
||||
if signature, err = signer.Sign(hash[:]); chk.E(err) {
|
||||
return nil, errorf.E("failed to sign identity tag: %w", err)
|
||||
}
|
||||
signature := sig.Serialize()
|
||||
|
||||
identityTag = &IdentityTag{
|
||||
NPubIdentity: builder.npubIdentity,
|
||||
|
||||
@@ -6,10 +6,10 @@ import (
|
||||
"time"
|
||||
|
||||
"next.orly.dev/pkg/crypto/encryption"
|
||||
p256k1signer "p256k1.mleku.dev/signer"
|
||||
"next.orly.dev/pkg/encoders/event"
|
||||
"next.orly.dev/pkg/encoders/hex"
|
||||
"next.orly.dev/pkg/encoders/tag"
|
||||
"next.orly.dev/pkg/interfaces/signer/p8k"
|
||||
"next.orly.dev/pkg/protocol/nwc"
|
||||
"next.orly.dev/pkg/utils"
|
||||
)
|
||||
@@ -101,7 +101,7 @@ func TestNWCEventCreation(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
clientKey := p256k1signer.NewP256K1Signer()
|
||||
clientKey := p8k.MustNew()
|
||||
if err := clientKey.InitSec(secretBytes); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ import (
|
||||
|
||||
"lol.mleku.dev/chk"
|
||||
"next.orly.dev/pkg/crypto/encryption"
|
||||
p256k1signer "p256k1.mleku.dev/signer"
|
||||
"next.orly.dev/pkg/interfaces/signer/p8k"
|
||||
"next.orly.dev/pkg/encoders/event"
|
||||
"next.orly.dev/pkg/encoders/filter"
|
||||
"next.orly.dev/pkg/encoders/hex"
|
||||
@@ -40,7 +40,10 @@ func NewMockWalletService(
|
||||
relay string, initialBalance int64,
|
||||
) (service *MockWalletService, err error) {
|
||||
// Generate wallet keypair
|
||||
walletKey := p256k1signer.NewP256K1Signer()
|
||||
var walletKey *p8k.Signer
|
||||
if walletKey, err = p8k.New(); chk.E(err) {
|
||||
return
|
||||
}
|
||||
if err = walletKey.Generate(); chk.E(err) {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import (
|
||||
|
||||
"lol.mleku.dev/chk"
|
||||
"next.orly.dev/pkg/crypto/encryption"
|
||||
p256k1signer "p256k1.mleku.dev/signer"
|
||||
"next.orly.dev/pkg/interfaces/signer/p8k"
|
||||
"next.orly.dev/pkg/encoders/hex"
|
||||
"next.orly.dev/pkg/interfaces/signer"
|
||||
)
|
||||
@@ -67,7 +67,10 @@ func ParseConnectionURI(nwcUri string) (parts *ConnectionParams, err error) {
|
||||
err = errors.New("invalid secret")
|
||||
return
|
||||
}
|
||||
clientKey := p256k1signer.NewP256K1Signer()
|
||||
var clientKey *p8k.Signer
|
||||
if clientKey, err = p8k.New(); chk.E(err) {
|
||||
return
|
||||
}
|
||||
if err = clientKey.InitSec(secretBytes); chk.E(err) {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -16,12 +16,12 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
"golang.org/x/net/websocket"
|
||||
"lol.mleku.dev/chk"
|
||||
p256k1signer "p256k1.mleku.dev/signer"
|
||||
"next.orly.dev/pkg/encoders/event"
|
||||
"next.orly.dev/pkg/encoders/filter"
|
||||
"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"
|
||||
"next.orly.dev/pkg/utils"
|
||||
"next.orly.dev/pkg/utils/normalize"
|
||||
)
|
||||
@@ -36,7 +36,7 @@ func TestPublish(t *testing.T) {
|
||||
Tags: tag.NewS(tag.NewFromAny("foo", "bar")),
|
||||
Pubkey: pub,
|
||||
}
|
||||
sign := p256k1signer.NewP256K1Signer()
|
||||
sign := p8k.MustNew()
|
||||
var err error
|
||||
if err = sign.InitSec(priv); chk.E(err) {
|
||||
}
|
||||
@@ -208,7 +208,7 @@ var anyOriginHandshake = func(conf *websocket.Config, r *http.Request) error {
|
||||
|
||||
func makeKeyPair(t *testing.T) (sec, pub []byte) {
|
||||
t.Helper()
|
||||
sign := p256k1signer.NewP256K1Signer()
|
||||
sign := p8k.MustNew()
|
||||
var err error
|
||||
if err = sign.Generate(); chk.E(err) {
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user