Skip to content

Latest commit

 

History

History
 
 

sharing

sharing

import "github.com/coinbase/kryptology/pkg/sharing"

Index

type Feldman

type Feldman struct {
    Threshold, Limit uint32
    Curve            *curves.Curve
}
func NewFeldman(threshold, limit uint32, curve *curves.Curve) (*Feldman, error)

func (Feldman) Combine

func (f Feldman) Combine(shares ...*ShamirShare) (curves.Scalar, error)

func (Feldman) CombinePoints

func (f Feldman) CombinePoints(shares ...*ShamirShare) (curves.Point, error)

func (Feldman) LagrangeCoeffs

func (f Feldman) LagrangeCoeffs(shares map[uint32]*ShamirShare) (map[uint32]curves.Scalar, error)

func (Feldman) Split

func (f Feldman) Split(secret curves.Scalar, reader io.Reader) (*FeldmanVerifier, []*ShamirShare, error)
type FeldmanVerifier struct {
    Commitments []curves.Point
}

func (FeldmanVerifier) Verify

func (v FeldmanVerifier) Verify(share *ShamirShare) error

Pedersen Verifiable Secret Sharing Scheme

type Pedersen struct {
    // contains filtered or unexported fields
}
func NewPedersen(threshold, limit uint32, generator curves.Point) (*Pedersen, error)

NewPedersen creates a new pedersen VSS

func (Pedersen) Combine

func (pd Pedersen) Combine(shares ...*ShamirShare) (curves.Scalar, error)

func (Pedersen) CombinePoints

func (pd Pedersen) CombinePoints(shares ...*ShamirShare) (curves.Point, error)

func (Pedersen) LagrangeCoeffs

func (pd Pedersen) LagrangeCoeffs(shares map[uint32]*ShamirShare) (map[uint32]curves.Scalar, error)

func (Pedersen) Split

func (pd Pedersen) Split(secret curves.Scalar, reader io.Reader) (*PedersenResult, error)

Split creates the verifiers, blinding and shares

PedersenResult contains all the data from calling Split

type PedersenResult struct {
    Blinding                     curves.Scalar
    BlindingShares, SecretShares []*ShamirShare
    FeldmanVerifier              *FeldmanVerifier
    PedersenVerifier             *PedersenVerifier
}
type PedersenVerifier struct {
    Generator   curves.Point
    Commitments []curves.Point
}

func (PedersenVerifier) Verify

func (pv PedersenVerifier) Verify(share, blindShare *ShamirShare) error
type Polynomial struct {
    Coefficients []curves.Scalar
}

func (Polynomial) Evaluate

func (p Polynomial) Evaluate(x curves.Scalar) curves.Scalar

func (*Polynomial) Init

func (p *Polynomial) Init(intercept curves.Scalar, degree uint32, reader io.Reader) *Polynomial

type Shamir

type Shamir struct {
    // contains filtered or unexported fields
}
func NewShamir(threshold, limit uint32, curve *curves.Curve) (*Shamir, error)

func (Shamir) Combine

func (s Shamir) Combine(shares ...*ShamirShare) (curves.Scalar, error)

func (Shamir) CombinePoints

func (s Shamir) CombinePoints(shares ...*ShamirShare) (curves.Point, error)

func (Shamir) LagrangeCoeffs

func (s Shamir) LagrangeCoeffs(shares map[uint32]*ShamirShare) (map[uint32]curves.Scalar, error)

func (Shamir) Split

func (s Shamir) Split(secret curves.Scalar, reader io.Reader) ([]*ShamirShare, error)
type ShamirShare struct {
    Id    uint32 `json:"identifier"`
    Value []byte `json:"value"`
}

func (ShamirShare) Bytes

func (ss ShamirShare) Bytes() []byte

func (ShamirShare) Validate

func (ss ShamirShare) Validate(curve *curves.Curve) error

Generated by gomarkdoc