signer

package
v0.2.13 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 23, 2025 License: Unlicense Imports: 0 Imported by: 0

Documentation

Overview

Package signer defines server for management of signatures, used to abstract the signature algorithm from the usage.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Gen

type Gen interface {
	// Generate gathers entropy and derives pubkey bytes for matching, this returns the 33 byte
	// compressed form for checking the oddness of the Y coordinate.
	Generate() (pubBytes []byte, err error)
	// Negate flips the public key Y coordinate between odd and even.
	Negate()
	// KeyPairBytes returns the raw bytes of the secret and public key, this returns the 32 byte
	// X-only pubkey.
	KeyPairBytes() (secBytes, cmprPubBytes []byte)
}

Gen is an interface for nostr BIP-340 key generation.

type I

type I interface {
	// Generate creates a fresh new key pair from system entropy, and ensures it is even (so
	// ECDH works).
	Generate() (err error)
	// InitSec initialises the secret (signing) key from the raw bytes, and also
	// derives the public key because it can.
	InitSec(sec []byte) (err error)
	// InitPub initializes the public (verification) key from raw bytes, this is
	// expected to be an x-only 32 byte pubkey.
	InitPub(pub []byte) (err error)
	// Sec returns the secret key bytes.
	Sec() []byte
	// Pub returns the public key bytes (x-only schnorr pubkey).
	Pub() []byte
	// Sign creates a signature using the stored secret key.
	Sign(msg []byte) (sig []byte, err error)
	// Verify checks a message hash and signature match the stored public key.
	Verify(msg, sig []byte) (valid bool, err error)
	// Zero wipes the secret key to prevent memory leaks.
	Zero()
	// ECDH returns a shared secret derived using Elliptic Curve Diffie-Hellman on
	// the I secret and provided pubkey.
	ECDH(pub []byte) (secret []byte, err error)
}

I is an interface for a key pair for signing, created to abstract between a CGO fast BIP-340 signature library and the slower btcec library.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL