p8k.go raw

   1  // Package p8k provides a signer.I implementation using the pure Go
   2  // p256k1.mleku.dev library with BMI2-accelerated assembly on AMD64.
   3  package p8k
   4  
   5  import (
   6  	"next.orly.dev/pkg/nostr/interfaces/signer"
   7  	p256k1signer "next.orly.dev/pkg/p256k1/signer"
   8  )
   9  
  10  // Signer implements the signer.I interface using p256k1.mleku.dev
  11  type Signer struct {
  12  	*p256k1signer.P256K1Signer
  13  }
  14  
  15  // Ensure Signer implements signer.I
  16  var _ signer.I = (*Signer)(nil)
  17  
  18  // New creates a new P8K signer using p256k1.mleku.dev
  19  func New() (s *Signer, err error) {
  20  	return &Signer{
  21  		P256K1Signer: p256k1signer.NewP256K1Signer(),
  22  	}, nil
  23  }
  24  
  25  // MustNew creates a new P8K signer and panics on error
  26  func MustNew() *Signer {
  27  	s, err := New()
  28  	if err != nil {
  29  		panic(err)
  30  	}
  31  	return s
  32  }
  33  
  34  // GetModuleStatus returns information about which modules are available
  35  func (s *Signer) GetModuleStatus() map[string]bool {
  36  	return map[string]bool{
  37  		"implementation": true, // Using p256k1.mleku.dev
  38  		"schnorr":        true,
  39  		"ecdh":           true,
  40  		"recovery":       true,
  41  	}
  42  }
  43