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