bls

package
v0.1.3 Latest Latest
Warning

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

Go to latest
Published: Jan 16, 2024 License: GPL-3.0 Imports: 8 Imported by: 0

Documentation

Overview

Package bls implements a go-wrapper around a library implementing the the BLS12-381 curve and signature scheme. This package exposes a public API for verifying and aggregating BLS signatures used by Ethereum.

Index

Constants

View Source
const CurveOrder = "52435875175126190479447740508185965837690552500527637822603658699938581184513"

CurveOrder for the BLS12-381 curve.

View Source
const DomainByteLength = 4

DomainByteLength length of domain byte array.

Variables

This section is empty.

Functions

func AggregateCompressedSignatures

func AggregateCompressedSignatures(multiSigs [][]byte) (common.Signature, error)

AggregateCompressedSignatures converts a list of compressed signatures into a single, aggregated sig.

func AggregateSignatures

func AggregateSignatures(sigs []common.Signature) common.Signature

AggregateSignatures converts a list of signatures into a single, aggregated sig.

func E2P

func E2P(err error)

func NewAggregateSignature

func NewAggregateSignature() common.Signature

NewAggregateSignature creates a blank aggregate signature.

func RandKey

func RandKey() (common.SecretKey, error)

RandKey creates a new private key using a random input.

func SecretKeyFromRandom32Byte

func SecretKeyFromRandom32Byte(ikm [32]byte) (common.SecretKey, error)

SecretKeyFromRandom32Byte creates a new private key using random 32 bytes

func TestAggregateVerify2

func TestAggregateVerify2() error

func TestAggregateVerify_CompressedSignatures2

func TestAggregateVerify_CompressedSignatures2() error

func TestCopy2

func TestCopy2() error

func TestEth2FastAggregateVerify2

func TestEth2FastAggregateVerify2() error

func TestEth2FastAggregateVerify_ReturnsFalseOnEmptyPubKeyList2

func TestEth2FastAggregateVerify_ReturnsFalseOnEmptyPubKeyList2() error

func TestEth2FastAggregateVerify_ReturnsTrueOnG2PointAtInfinity2

func TestEth2FastAggregateVerify_ReturnsTrueOnG2PointAtInfinity2() error

func TestFastAggregateVerify2

func TestFastAggregateVerify2() error

func TestFastAggregateVerify_ReturnsFalseOnEmptyPubKeyList2

func TestFastAggregateVerify_ReturnsFalseOnEmptyPubKeyList2() error

func TestMultipleSignatureFromBytes2

func TestMultipleSignatureFromBytes2() error

func TestMultipleSignatureVerification2

func TestMultipleSignatureVerification2() error

func TestSecretKeyFromBytes2

func TestSecretKeyFromBytes2() error

func TestSignVerify2

func TestSignVerify2() error

func TestSignatureFromBytes2

func TestSignatureFromBytes2() error

func TestVerifyCompressed2

func TestVerifyCompressed2() error

func VerifyMultipleSignatures

func VerifyMultipleSignatures(sigs [][]byte, msgs [][32]byte, pubKeys []common.PublicKey) (bool, error)

VerifyMultipleSignatures verifies multiple signatures for distinct messages securely.

Types

type PublicKey

type PublicKey = common.PublicKey

PublicKey represents a BLS public key.

func AggregateMultiplePubkeys

func AggregateMultiplePubkeys(pubs []PublicKey) PublicKey

AggregateMultiplePubkeys aggregates the provided decompressed keys into a single key.

func AggregatePublicKeys

func AggregatePublicKeys(pubs [][]byte) (PublicKey, error)

AggregatePublicKeys aggregates the provided raw public keys into a single key.

func PublicKeyFromBytes

func PublicKeyFromBytes(pubKey []byte) (PublicKey, error)

PublicKeyFromBytes creates a BLS public key from a BigEndian byte slice.

type SecretKey

type SecretKey = common.SecretKey

SecretKey represents a BLS secret or private key.

func SecretKeyFromBytes

func SecretKeyFromBytes(privKey []byte) (SecretKey, error)

SecretKeyFromBytes creates a BLS private key from a BigEndian byte slice.

type Signature

type Signature = common.Signature

Signature represents a BLS signature.

func MultipleSignaturesFromBytes

func MultipleSignaturesFromBytes(sigs [][]byte) ([]Signature, error)

MultipleSignaturesFromBytes creates a slice of BLS signatures from a LittleEndian 2d-byte slice.

func SignatureFromBytes

func SignatureFromBytes(sig []byte) (Signature, error)

SignatureFromBytes creates a BLS signature from a LittleEndian byte slice.

type SignatureBatch

type SignatureBatch struct {
	Signatures [][]byte
	PublicKeys []PublicKey
	Messages   [][32]byte
}

SignatureBatch refers to the defined set of signatures and its respective public keys and messages required to verify it.

func NewSet

func NewSet() *SignatureBatch

NewSet constructs an empty signature batch object.

func (*SignatureBatch) AggregateBatch

func (s *SignatureBatch) AggregateBatch() (*SignatureBatch, error)

AggregateBatch aggregates common messages in the provided batch to reduce the number of pairings required when we finally verify the whole batch.

func (*SignatureBatch) Copy

func (s *SignatureBatch) Copy() *SignatureBatch

Copy the attached signature batch and return it to the caller.

func (*SignatureBatch) Join

Join merges the provided signature batch to out current one.

func (*SignatureBatch) RemoveDuplicates

func (s *SignatureBatch) RemoveDuplicates() (int, *SignatureBatch, error)

RemoveDuplicates removes duplicate signature sets from the signature batch.

func (*SignatureBatch) Verify

func (s *SignatureBatch) Verify() (bool, error)

Verify the current signature batch using the batch verify algorithm.

Directories

Path Synopsis
Package blst implements a go-wrapper around a library implementing the the BLS12-381 curve and signature scheme.
Package blst implements a go-wrapper around a library implementing the the BLS12-381 curve and signature scheme.
Package common provides the BLS interfaces that are implemented by the various BLS wrappers.
Package common provides the BLS interfaces that are implemented by the various BLS wrappers.

Jump to

Keyboard shortcuts

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