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