bls

package
v1.0.3 Latest Latest
Warning

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

Go to latest
Published: Jul 30, 2025 License: BSD-3-Clause Imports: 5 Imported by: 64

Documentation

Index

Constants

View Source
const (
	SecretKeyLen = 32
	PublicKeyLen = 48 // Compressed G1 point
	SignatureLen = 96 // Compressed G2 point
)
View Source
const (
	DSTSignature         = "BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_NUL_"
	DSTProofOfPossession = "BLS_POP_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_"
)

Constants for domain separation tags

Variables

View Source
var (
	ErrNoPublicKeys              = errors.New("no public keys")
	ErrFailedPublicKeyDecompress = errors.New("couldn't decompress public key")

	ErrFailedSignatureDecompress  = errors.New("couldn't decompress signature")
	ErrInvalidSignature           = errors.New("invalid signature")
	ErrNoSignatures               = errors.New("no signatures")
	ErrFailedSignatureAggregation = errors.New("couldn't aggregate signatures")
)

Functions

func PublicKeyToCompressedBytes

func PublicKeyToCompressedBytes(pk *PublicKey) []byte

PublicKeyToCompressedBytes returns the compressed big-endian format of the public key.

func PublicKeyToUncompressedBytes

func PublicKeyToUncompressedBytes(key *PublicKey) []byte

PublicKeyToUncompressedBytes returns the uncompressed big-endian format of the public key. For circl/bls, this is the same as compressed.

func SecretKeyToBytes added in v0.1.3

func SecretKeyToBytes(sk *SecretKey) []byte

SecretKeyToBytes returns the big-endian format of the secret key.

func SignatureToBytes

func SignatureToBytes(sig *Signature) []byte

SignatureToBytes returns the compressed big-endian format of the signature.

func Verify

func Verify(pk *PublicKey, sig *Signature, msg []byte) bool

Verify the [sig] of [msg] against the [pk].

func Verify2 added in v0.1.4

func Verify2(pk *DirectPublicKey, sig *DirectSignature, msg []byte) bool

Verify verifies a signature against a public key and message

func VerifyProofOfPossession

func VerifyProofOfPossession(pk *PublicKey, sig *Signature, msg []byte) bool

VerifyProofOfPossession verifies the possession of the secret pre-image of [sk]

func VerifyProofOfPossession2 added in v0.1.4

func VerifyProofOfPossession2(pk *DirectPublicKey, sig *DirectSignature, msg []byte) bool

VerifyProofOfPossession2 verifies a proof of possession signature

Types

type AggregatePublicKey

type AggregatePublicKey = PublicKey

Types wrapping the circl BLS types

type AggregateSignature

type AggregateSignature = Signature

Types wrapping the circl BLS types

type Ciphersuite

type Ciphersuite int
const (
	CiphersuiteSignature Ciphersuite = iota
	CiphersuiteProofOfPossession
)

func (Ciphersuite) Bytes

func (c Ciphersuite) Bytes() []byte

func (Ciphersuite) String

func (c Ciphersuite) String() string

type DirectPublicKey added in v0.1.4

type DirectPublicKey struct {
	// contains filtered or unexported fields
}

DirectPublicKey represents a BLS public key using G1

func AggregatePublicKeys2 added in v0.1.4

func AggregatePublicKeys2(pks []*DirectPublicKey) (*DirectPublicKey, error)

AggregatePublicKeys2 aggregates multiple public keys

func (*DirectPublicKey) Bytes added in v0.1.4

func (pk *DirectPublicKey) Bytes() []byte

Bytes returns the compressed serialization of the public key

func (*DirectPublicKey) SetBytes added in v0.1.4

func (pk *DirectPublicKey) SetBytes(data []byte) error

SetBytes deserializes a public key from compressed bytes

type DirectSecretKey added in v0.1.4

type DirectSecretKey struct {
	// contains filtered or unexported fields
}

DirectSecretKey represents a BLS secret key

func GenerateKey added in v0.1.4

func GenerateKey(reader io.Reader) (*DirectSecretKey, error)

GenerateKey generates a new BLS secret key

func (*DirectSecretKey) Bytes added in v0.1.4

func (sk *DirectSecretKey) Bytes() []byte

Bytes returns the serialization of the secret key

func (*DirectSecretKey) PublicKey added in v0.1.4

func (sk *DirectSecretKey) PublicKey() *DirectPublicKey

PublicKey returns the public key corresponding to the secret key

func (*DirectSecretKey) SetBytes added in v0.1.4

func (sk *DirectSecretKey) SetBytes(data []byte) error

SetBytes deserializes a secret key from bytes

func (*DirectSecretKey) Sign added in v0.1.4

func (sk *DirectSecretKey) Sign(msg []byte) *DirectSignature

Sign creates a signature for the given message

func (*DirectSecretKey) SignProofOfPossession added in v0.1.4

func (sk *DirectSecretKey) SignProofOfPossession(msg []byte) *DirectSignature

SignProofOfPossession creates a proof of possession signature

type DirectSignature added in v0.1.4

type DirectSignature struct {
	// contains filtered or unexported fields
}

DirectSignature represents a BLS signature using G2

func AggregateSignatures2 added in v0.1.4

func AggregateSignatures2(sigs []*DirectSignature) (*DirectSignature, error)

AggregateSignatures2 aggregates multiple signatures

func (*DirectSignature) Bytes added in v0.1.4

func (sig *DirectSignature) Bytes() []byte

Bytes returns the compressed serialization of the signature

func (*DirectSignature) SetBytes added in v0.1.4

func (sig *DirectSignature) SetBytes(data []byte) error

SetBytes deserializes a signature from compressed bytes

type PublicKey

type PublicKey struct {
	// contains filtered or unexported fields
}

Types wrapping the circl BLS types

func AggregatePublicKeys

func AggregatePublicKeys(pks []*PublicKey) (*PublicKey, error)

AggregatePublicKeys aggregates a non-zero number of public keys into a single aggregated public key.

func PublicKeyFromCompressedBytes

func PublicKeyFromCompressedBytes(pkBytes []byte) (*PublicKey, error)

PublicKeyFromCompressedBytes parses the compressed big-endian format of the public key into a public key.

func PublicKeyFromValidUncompressedBytes

func PublicKeyFromValidUncompressedBytes(pkBytes []byte) *PublicKey

PublicKeyFromValidUncompressedBytes parses the uncompressed big-endian format of the public key into a public key. It is assumed that the provided bytes are valid.

type SecretKey added in v0.1.3

type SecretKey struct {
	// contains filtered or unexported fields
}

Types wrapping the circl BLS types

func NewSecretKey added in v0.1.3

func NewSecretKey() (*SecretKey, error)

NewSecretKey generates a new secret key from the local source of cryptographically secure randomness.

func SecretKeyFromBytes added in v0.1.3

func SecretKeyFromBytes(skBytes []byte) (*SecretKey, error)

SecretKeyFromBytes parses the big-endian format of the secret key into a secret key.

func (*SecretKey) PublicKey added in v0.1.3

func (sk *SecretKey) PublicKey() *PublicKey

PublicKey returns the public key associated with the secret key.

func (*SecretKey) Sign added in v0.1.3

func (sk *SecretKey) Sign(msg []byte) *Signature

Sign [msg] to authorize that this private key signed [msg].

func (*SecretKey) SignProofOfPossession added in v0.1.3

func (sk *SecretKey) SignProofOfPossession(msg []byte) *Signature

SignProofOfPossession signs a [msg] to prove the ownership of this secret key.

type Signature

type Signature struct {
	// contains filtered or unexported fields
}

Types wrapping the circl BLS types

func AggregateSignatures

func AggregateSignatures(sigs []*Signature) (*Signature, error)

AggregateSignatures aggregates a non-zero number of signatures into a single aggregated signature.

func SignatureFromBytes

func SignatureFromBytes(sigBytes []byte) (*Signature, error)

SignatureFromBytes parses the compressed big-endian format of the signature into a signature.

type Signer

type Signer interface {
	PublicKey() *PublicKey
	Sign(msg []byte) (*Signature, error)
	SignProofOfPossession(msg []byte) (*Signature, error)
}

Directories

Path Synopsis
signer

Jump to

Keyboard shortcuts

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