Browse Source

Refactor `Signer` to use `secp256k1` directly and enhance ACL reconfiguration for admin-triggered events

main
mleku 4 months ago
parent
commit
3d3a0fa520
No known key found for this signature in database
  1. 16
      app/handle-event.go
  2. 12
      pkg/crypto/p256k/btcec/btcec.go

16
app/handle-event.go

@ -122,9 +122,19 @@ func (l *Listener) HandleEvent(msg []byte) (err error) { @@ -122,9 +122,19 @@ func (l *Listener) HandleEvent(msg []byte) (err error) {
if _, _, err = l.SaveEvent(l.Ctx, env.E); chk.E(err) {
return
}
// if a follow list was saved, reconfigure ACLs now that it is persisted
if env.E.Kind == kind.FollowList.K {
if err = acl.Registry.Configure(); chk.E(err) {
var isNewFromAdmin bool
for _, admin := range l.Admins {
if utils.FastEqual(admin, env.E.Pubkey) {
isNewFromAdmin = true
break
}
}
if isNewFromAdmin {
// if a follow list was saved, reconfigure ACLs now that it is persisted
if env.E.Kind == kind.FollowList.K ||
env.E.Kind == kind.RelayListMetadata.K {
if err = acl.Registry.Configure(); chk.E(err) {
}
}
}
l.publishers.Deliver(env.E)

12
pkg/crypto/p256k/btcec/btcec.go

@ -15,7 +15,7 @@ import ( @@ -15,7 +15,7 @@ import (
type Signer struct {
SecretKey *secp256k1.SecretKey
PublicKey *secp256k1.PublicKey
BTCECSec *ec.SecretKey
BTCECSec *secp256k1.SecretKey
pkb, skb []byte
}
@ -23,11 +23,11 @@ var _ signer.I = &Signer{} @@ -23,11 +23,11 @@ var _ signer.I = &Signer{}
// Generate creates a new Signer.
func (s *Signer) Generate() (err error) {
if s.SecretKey, err = ec.NewSecretKey(); chk.E(err) {
if s.SecretKey, err = secp256k1.GenerateSecretKey(); chk.E(err) {
return
}
s.skb = s.SecretKey.Serialize()
s.BTCECSec, _ = ec.PrivKeyFromBytes(s.skb)
s.BTCECSec = secp256k1.PrivKeyFromBytes(s.skb)
s.PublicKey = s.SecretKey.PubKey()
s.pkb = schnorr.SerializePubKey(s.PublicKey)
return
@ -43,7 +43,7 @@ func (s *Signer) InitSec(sec []byte) (err error) { @@ -43,7 +43,7 @@ func (s *Signer) InitSec(sec []byte) (err error) {
s.SecretKey = secp256k1.SecKeyFromBytes(sec)
s.PublicKey = s.SecretKey.PubKey()
s.pkb = schnorr.SerializePubKey(s.PublicKey)
s.BTCECSec, _ = ec.PrivKeyFromBytes(s.skb)
s.BTCECSec = secp256k1.PrivKeyFromBytes(s.skb)
return
}
@ -142,7 +142,7 @@ func (s *Signer) ECDH(pubkeyBytes []byte) (secret []byte, err error) { @@ -142,7 +142,7 @@ func (s *Signer) ECDH(pubkeyBytes []byte) (secret []byte, err error) {
); chk.E(err) {
return
}
secret = ec.GenerateSharedSecret(s.BTCECSec, pub)
secret = secp256k1.GenerateSharedSecret(s.BTCECSec, pub)
return
}
@ -154,7 +154,7 @@ type Keygen struct { @@ -154,7 +154,7 @@ type Keygen struct {
// Generate a new key pair. If the result is suitable, the embedded Signer can have its contents
// extracted.
func (k *Keygen) Generate() (pubBytes []byte, err error) {
if k.Signer.SecretKey, err = ec.NewSecretKey(); chk.E(err) {
if k.Signer.SecretKey, err = secp256k1.GenerateSecretKey(); chk.E(err) {
return
}
k.Signer.PublicKey = k.SecretKey.PubKey()

Loading…
Cancel
Save