Skip to content
This repository has been archived by the owner on Aug 24, 2022. It is now read-only.

Fix saving of keyless aeon to file and validation #201

Merged
merged 1 commit into from
Oct 8, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 16 additions & 19 deletions beacon/aeon_details.go
Original file line number Diff line number Diff line change
Expand Up @@ -139,23 +139,20 @@ func keylessAeonDetails(dkgID int64, validatorHeight int64, aeonStart int64, aeo
}

func (aeon *aeonDetails) dkgOutput() *DKGOutput {
if aeon.aeonExecUnit == nil {
return &DKGOutput{
Start: aeon.Start,
End: aeon.End,
}
}
output := DKGOutput{
KeyType: aeon.aeonExecUnit.Name(),
GroupPublicKey: aeon.aeonExecUnit.GroupPublicKey(),
Generator: aeon.aeonExecUnit.Generator(),
PublicKeyShares: make([]string, len(aeon.validators.Validators)),
ValidatorHeight: aeon.validatorHeight,
DKGID: aeon.dkgID,
Qual: aeon.qual,
Start: aeon.Start,
End: aeon.End,
DKGID: aeon.dkgID,
ValidatorHeight: aeon.validatorHeight,
}
if aeon.IsKeyless() {
return &output
}
output.KeyType = aeon.aeonExecUnit.Name()
output.GroupPublicKey = aeon.aeonExecUnit.GroupPublicKey()
output.Generator = aeon.aeonExecUnit.Generator()
output.PublicKeyShares = make([]string, len(aeon.validators.Validators))
output.Qual = aeon.qual
publicKeyShares := aeon.aeonExecUnit.PublicKeyShares()
for i := 0; i < int(publicKeyShares.Size()); i++ {
output.PublicKeyShares[i] = publicKeyShares.Get(i)
Expand Down Expand Up @@ -269,15 +266,15 @@ func (output *DKGOutput) ValidateBasic() error {
if len(output.Generator) == 0 {
return fmt.Errorf("Empty generator")
}
if output.ValidatorHeight <= 0 {
return fmt.Errorf("Invalid validator height %v", output.ValidatorHeight)
}
if len(output.Qual) == 0 || len(output.Qual) > len(output.PublicKeyShares) {
return fmt.Errorf("Qual size %v invalid. Expected non-zero qual less than public key shares %v", len(output.Qual), len(output.PublicKeyShares))
}
if output.DKGID < 0 {
return fmt.Errorf("Invalid dkg id %v", output.DKGID)
}
}
if output.ValidatorHeight <= 0 {
return fmt.Errorf("Invalid validator height %v", output.ValidatorHeight)
}
if output.DKGID < 0 {
return fmt.Errorf("Invalid dkg id %v", output.DKGID)
}
if output.Start <= 0 || output.End < output.Start {
return fmt.Errorf("Invalid start %v or end %v", output.Start, output.End)
Expand Down