boldyreva02

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Feb 16, 2026 License: Apache-2.0 Imports: 4 Imported by: 0

README

boldyreva02

Implementation of the Boldyreva threshold BLS signature scheme.

Overview

This package implements threshold BLS signatures based on the Boldyreva's construction. It provides a simple non-interactive signing protocol where each party produces a partial signature that can be aggregated into a full threshold signature.

Rogue Key Prevention

Supports three algorithms to prevent rogue key attacks:

  • Basic - No protection (use only in trusted settings)
  • MessageAugmentation - Prepends public key to message before signing
  • POP (Proof of Possession) - Requires parties to prove knowledge of their secret key

Subpackages

  • keygen - Shard creation from DKG output
  • signing - Threshold signing protocol with cosigners and aggregator

Reference

Documentation

Overview

Package boldyreva02 provides implementation of the Boldyreva threshold BLS signature scheme.

See README.md for details.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type PartialSignature

type PartialSignature[
	Sig curves.PairingFriendlyPoint[Sig, SigFE, PK, PKFE, E, S], SigFE algebra.FieldElement[SigFE],
	PK curves.PairingFriendlyPoint[PK, PKFE, Sig, SigFE, E, S], PKFE algebra.FieldElement[PKFE],
	E algebra.MultiplicativeGroupElement[E], S algebra.PrimeFieldElement[S],
] struct {
	// SigmaI is the partial signature on the message.
	SigmaI *bls.Signature[Sig, SigFE, PK, PKFE, E, S]
	// SigmaPopI is the proof-of-possession signature, present only when using POP algorithm.
	SigmaPopI *bls.Signature[Sig, SigFE, PK, PKFE, E, S]
}

PartialSignature represents a partial BLS signature produced by a single party in the Boldyreva threshold BLS scheme. It contains the partial signature on the message (SigmaI) and optionally a proof-of-possession signature (SigmaPopI) when using the POP rogue key prevention algorithm.

func (*PartialSignature[Sig, SigFE, PK, PKFE, E, S]) Bytes

func (ps *PartialSignature[Sig, SigFE, PK, PKFE, E, S]) Bytes() []byte

Bytes returns the byte representation of the partial signature. It concatenates the message signature bytes with the POP signature bytes (if present).

func (*PartialSignature[Sig, SigFE, PK, PKFE, E, S]) Equal

func (ps *PartialSignature[Sig, SigFE, PK, PKFE, E, S]) Equal(other *PartialSignature[Sig, SigFE, PK, PKFE, E, S]) bool

Equal returns true if two PartialSignature instances are equal. Two partial signatures are equal if both their message signatures and POP signatures match.

type PublicMaterial

type PublicMaterial[
	PK curves.PairingFriendlyPoint[PK, PKFE, SG, SGFE, E, S], PKFE algebra.FieldElement[PKFE],
	SG curves.PairingFriendlyPoint[SG, SGFE, PK, PKFE, E, S], SGFE algebra.FieldElement[SGFE],
	E algebra.MultiplicativeGroupElement[E], S algebra.PrimeFieldElement[S],
] = tbls.PublicMaterial[PK, PKFE, SG, SGFE, E, S]

PublicMaterial is an alias for tbls.PublicMaterial, containing the public cryptographic material for the Boldyreva threshold BLS scheme.

type Shard

type Shard[
	PK curves.PairingFriendlyPoint[PK, PKFE, SG, SGFE, E, S], PKFE algebra.FieldElement[PKFE],
	SG curves.PairingFriendlyPoint[SG, SGFE, PK, PKFE, E, S], SGFE algebra.FieldElement[SGFE],
	E algebra.MultiplicativeGroupElement[E], S algebra.PrimeFieldElement[S],
] = tbls.Shard[PK, PKFE, SG, SGFE, E, S]

Shard is an alias for tbls.Shard, representing a party's secret share in the Boldyreva threshold BLS signature scheme.

Directories

Path Synopsis
Package keygen provides shard creation for Boldyreva threshold BLS signatures.
Package keygen provides shard creation for Boldyreva threshold BLS signatures.
Package signing provides threshold BLS signing protocol for Boldyreva scheme.
Package signing provides threshold BLS signing protocol for Boldyreva scheme.

Jump to

Keyboard shortcuts

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