identity.go raw

   1  package main
   2  
   3  import (
   4  	"common/crypto/secp256k1"
   5  	"common/helpers"
   6  	"common/jsbridge/registry"
   7  	"common/nostr"
   8  )
   9  
  10  // Identity domain — key management and signing.
  11  
  12  var (
  13  	seckey   [32]byte
  14  	hasKey   bool
  15  	myPubkey string
  16  )
  17  
  18  func identitySetKey(hexKey string) {
  19  	seckey = hexTo32(hexKey)
  20  	hasKey = true
  21  	pk, ok := secp256k1.PubKeyFromSecKey(seckey)
  22  	if ok {
  23  		myPubkey = helpers.HexEncode(pk[:])
  24  	}
  25  	// Sync to registry for extension modules.
  26  	registry.SetSeckey(hexKey)
  27  	registry.SetPubkey(myPubkey)
  28  	registry.SetHasKey(true)
  29  }
  30  
  31  func identitySetPubkey(hex string) {
  32  	myPubkey = hex
  33  	registry.SetPubkey(hex)
  34  }
  35  
  36  func identityClearKey() {
  37  	seckey = [32]byte{}
  38  	hasKey = false
  39  	myPubkey = ""
  40  	registry.SetSeckey("")
  41  	registry.SetPubkey("")
  42  	registry.SetHasKey(false)
  43  }
  44  
  45  func identitySignEvent(ev *nostr.Event) bool {
  46  	if !hasKey {
  47  		return false
  48  	}
  49  	aux := random32()
  50  	return ev.Sign(seckey, aux)
  51  }
  52