package tbls
import "go.dedis.ch/kyber/v3/sign/tbls"
Package tbls implements the (t,n)-threshold Boneh-Lynn-Shacham signature scheme. During setup a group of n participants runs a distributed key generation algorithm (see kyber/share/dkg) to compute a joint public signing key X and one secret key share xi for each of the n signers. To compute a signature S on a message m, at least t ouf of n signers have to provide partial (BLS) signatures Si on m using their individual key shares xi which can then be used to recover the full (regular) BLS signature S via Lagrange interpolation. The signature S can be verified with the initially established group key X. Signatures are points on curve G1 and public keys are points on curve G2.
Index ¶
- func Recover(suite pairing.Suite, public *share.PubPoly, msg []byte, sigs [][]byte, t, n int) ([]byte, error)
- func Sign(suite pairing.Suite, private *share.PriShare, msg []byte) ([]byte, error)
- func Verify(suite pairing.Suite, public *share.PubPoly, msg, sig []byte) error
- type SigShare
Functions ¶
func Recover ¶
func Recover(suite pairing.Suite, public *share.PubPoly, msg []byte, sigs [][]byte, t, n int) ([]byte, error)
Recover reconstructs the full BLS signature S = x * H(m) from a threshold t of signature shares Si using Lagrange interpolation. The full signature S can be verified through the regular BLS verification routine using the shared public key X. The shared public key can be computed by evaluating the public sharing polynomial at index 0.
func Sign ¶
Sign creates a threshold BLS signature Si = xi * H(m) on the given message m using the provided secret key share xi.
func Verify ¶
Verify checks the given threshold BLS signature Si on the message m using the public key share Xi that is associated to the secret key share xi. This public key share Xi can be computed by evaluating the public sharing polynonmial at the share's index i.
Types ¶
type SigShare ¶
type SigShare []byte
SigShare encodes a threshold BLS signature share Si = i || v where the 2-byte big-endian value i corresponds to the share's index and v represents the share's value. The signature share Si is a point on curve G1.
func (SigShare) Index ¶
Index returns the index i of the TBLS share Si.
func (*SigShare) Value ¶
Value returns the value v of the TBLS share Si.
Source Files ¶
tbls.go
- Version
- v3.1.0 (latest)
- Published
- Nov 30, 2022
- Platform
- linux/amd64
- Imports
- 5 packages
- Last checked
- 1 month ago –
Tools for package owners.