* if a request has no session cookie, a new user, session and wallet is created and session cookie is set * if a request has a session cookie and session exists in db, we will fetch user and wallet from db * this means that we have a user and wallet during each render without any login required
29 lines
718 B
Go
29 lines
718 B
Go
package nostr
|
|
|
|
import (
|
|
"github.com/decred/dcrd/dcrec/secp256k1"
|
|
)
|
|
|
|
// nostr uses schnorr signatures over secp256k1 as defined by BIP-340
|
|
// https://github.com/nostr-protocol/nips/blob/master/01.md
|
|
// https://bips.xyz/340
|
|
type PrivateKey = *secp256k1.PrivateKey
|
|
type PublicKey = *secp256k1.PublicKey
|
|
|
|
func GeneratePrivateKey() (*secp256k1.PrivateKey, error) {
|
|
return secp256k1.GeneratePrivateKey()
|
|
}
|
|
|
|
func GetPublicKey(sk *secp256k1.PrivateKey) *secp256k1.PublicKey {
|
|
pk := (secp256k1.PublicKey)(sk.PublicKey)
|
|
return &pk
|
|
}
|
|
|
|
func GenerateKeyPair() (*secp256k1.PrivateKey, *secp256k1.PublicKey, error) {
|
|
sk, err := GeneratePrivateKey()
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
return sk, GetPublicKey(sk), nil
|
|
}
|