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
|
||
|
}
|