Documentation ¶
Index ¶
- Constants
- Variables
- func DefaultThreshold(n int) int
- func Load(path string, t Tomler) error
- func Save(path string, t Tomler, secure bool) error
- type BeaconSignature
- type ByKey
- type DistPublic
- type DistPublicTOML
- type Group
- func (g *Group) Contains(pub *Identity) bool
- func (g *Group) Filter(indexes []int) *Group
- func (g *Group) FromTOML(i interface{}) error
- func (g *Group) Identities() []*Identity
- func (g *Group) Index(pub *Identity) (int, bool)
- func (g *Group) Len() int
- func (g *Group) Points() []kyber.Point
- func (g *Group) Public(i int) *Identity
- func (g *Group) TOML() interface{}
- func (g *Group) TOMLValue() interface{}
- type GroupTOML
- type Identity
- type IndexedPublic
- type Pair
- type PairTOML
- type PublicTOML
- type Share
- type ShareTOML
- type Store
- type Tomler
Constants ¶
const ConfigFolderFlag = "homedir"
ConfigFolderFlag holds the name of the flag to set using the CLI to change the default configuration folder of drand. It mimicks the gpg flag option.
const GroupFolderName = "groups"
const KeyFolderName = "key"
Variables ¶
var ErrAbsent = errors.New("store can't find requested object")
var ErrStoreFile = errors.New("store file issues")
var G1 = Pairing.G1()
var G2 = Pairing.G2()
var Pairing = bn256.NewSuite()
Functions ¶
func DefaultThreshold ¶
Types ¶
type BeaconSignature ¶
BeaconSignature is the final reconstructed BLS signature that is saved in the filesystem.
func NewBeaconSignature ¶
func NewBeaconSignature(timestamp int64, previousSig, signature []byte) *BeaconSignature
NewBeaconSignature initializes a beacon signature from - a timestamp - a previous sig. Can be nil if there is no previous signature - a signature of the timestamp and the previous sig
func (*BeaconSignature) FromTOML ¶
func (b *BeaconSignature) FromTOML(i interface{}) error
FromTOML initializes b from a TOML-compatible version of a beacon signature
func (*BeaconSignature) RawSig ¶
func (b *BeaconSignature) RawSig() []byte
RawSig returns the signature
func (*BeaconSignature) TOML ¶
func (b *BeaconSignature) TOML() interface{}
TOML returns a TOML-compatible version of this beacon signature
func (*BeaconSignature) TOMLValue ¶
func (b *BeaconSignature) TOMLValue() interface{}
TOMLValue returns an empty TOML-compatible version of a beacon signature
type DistPublic ¶
DistPublic represents the distributed public key generated during a DKG. This is the information that can be safely exported to end users verifying a drand signature. The public key belongs in the same group as the individual public key,i.e. G2
func (*DistPublic) FromTOML ¶
func (d *DistPublic) FromTOML(i interface{}) error
FromTOML initializes d from the TOML-compatible version of a DistPublic
func (*DistPublic) TOML ¶
func (d *DistPublic) TOML() interface{}
TOML returns a TOML-compatible version of d
func (*DistPublic) TOMLValue ¶
func (d *DistPublic) TOMLValue() interface{}
TOMLValue returns an empty TOML-compatible dist public interface
type DistPublicTOML ¶
type DistPublicTOML struct {
Key string
}
DistPublicTOML is a TOML compatible value of a DistPublic
type Group ¶
type Group struct { Nodes []*IndexedPublic Threshold int }
Group is a list of IndexedPublic providing helper methods to search and get public keys from a list. It orders public keys from their byte lexicographical order TODO remove that non-sense afterall it is useless (i believe)
func NewGroup ¶
NewGroup returns a list of identities as a Group. The threshold is set to a the default returned by DefaultThreshod.
func (*Group) Identities ¶
func (*Group) Index ¶
Index returns the index of the given public key with a boolean indicating whether the public has been found or not.
func (*Group) Public ¶
Public returns the public associated to that index or panic otherwise. XXX Change that to return error
type GroupTOML ¶
type GroupTOML struct { Nodes []*PublicTOML Threshold int }
GroupTOML is the representation of a Group TOML compatible
type Identity ¶
Identity holds the corresponding public key of a Private. It also includes a valid internet facing ipv4 address where to this reach the node holding the public / private key pair.
type IndexedPublic ¶
IndexedPublic wraps a Public with its index relative to the group
type Pair ¶ added in v0.3.6
Pair is a wrapper around a random scalar and the corresponding public key in G2
func NewKeyPair ¶
NewKeyPair returns a freshly created private / public key pair. The group is decided by the group variable by default. Currently, drand only supports bn256.
func NewTLSKeyPair ¶ added in v0.3.7
func (*Pair) FromTOML ¶ added in v0.3.6
FromTOML constructs the private key from an unmarshalled structure from TOML
type PairTOML ¶ added in v0.3.6
type PairTOML struct {
Key string
}
PairTOML is the TOML-able version of a private key
type PublicTOML ¶
PublicTOML is the TOML-able version of a public key
type Share ¶
type Share dkg.DistKeyShare
Share represents the private information that a node holds after a successful DKG. This information MUST stay private !
func (*Share) FromTOML ¶
FromTOML initializes the share from the given TOML-compatible share interface
func (*Share) Public ¶
func (s *Share) Public() *DistPublic
Public returns the distributed public key associated with the distributed key share
type ShareTOML ¶
type ShareTOML struct { int Share string Commits []string // at the given index. PrivatePoly []string }Index
ShareTOML is the TOML representation of a dkg.DistKeyShare
type Store ¶
type Store interface { // SaveKeyPair saves the private key generated by drand as well as the // public identity key associated SaveKeyPair(p *Pair) error // LoadKeyPair loads the private/public key pair associated with the drand // operator LoadKeyPair() (*Pair, error) SaveGroup(*Group) error LoadGroup() (*Group, error) SaveDistPublic(d *DistPublic) error LoadDistPublic() (*DistPublic, error) }
Store abstracts the loading and saving of any private/public cryptographic material to be used by drand. For the moment, only a file based store is implemented.