mirror of https://github.com/certusone/dc4bc.git
wip
This commit is contained in:
parent
c6e95948bf
commit
0528c779d7
|
@ -107,10 +107,9 @@ func (am *Machine) reconstructThresholdSignature(o *client.Operation) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
response := client.ReconstructedSignature{
|
response := client.ReconstructedSignature{
|
||||||
Data: payload.SrcPayload,
|
SrcPayload: payload.SrcPayload,
|
||||||
Signature: reconstructedSignature,
|
Signature: reconstructedSignature,
|
||||||
DKGRoundID: o.DKGIdentifier,
|
DKGRoundID: o.DKGIdentifier,
|
||||||
SigningID: payload.SigningId,
|
|
||||||
}
|
}
|
||||||
respBz, err := json.Marshal(response)
|
respBz, err := json.Marshal(response)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -146,7 +146,8 @@ func (c *BaseClient) processSignature(message storage.Message) error {
|
||||||
if err = json.Unmarshal(message.Data, &signature); err != nil {
|
if err = json.Unmarshal(message.Data, &signature); err != nil {
|
||||||
return fmt.Errorf("failed to unmarshal reconstructed signature: %w", err)
|
return fmt.Errorf("failed to unmarshal reconstructed signature: %w", err)
|
||||||
}
|
}
|
||||||
signature.Participant = message.SenderAddr
|
signature.Username = message.SenderAddr
|
||||||
|
signature.DKGRoundID = message.DkgRoundID
|
||||||
return c.state.SaveSignature(signature)
|
return c.state.SaveSignature(signature)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -160,6 +161,11 @@ func (c *BaseClient) ProcessMessage(message storage.Message) error {
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
if fsm.Event(message.Event) == sipf.EventSigningStart {
|
||||||
|
if err := c.processSignature(message); err != nil {
|
||||||
|
return fmt.Errorf("failed to process signature: %w", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
fsmInstance, err := c.getFSMInstance(message.DkgRoundID)
|
fsmInstance, err := c.getFSMInstance(message.DkgRoundID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to getFSMInstance: %w", err)
|
return fmt.Errorf("failed to getFSMInstance: %w", err)
|
||||||
|
|
|
@ -243,7 +243,7 @@ func (c *BaseClient) getSignatureByIDHandler(w http.ResponseWriter, r *http.Requ
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
signature, err := c.GetSignatureByID(r.URL.Query().Get("dkgID"), r.URL.Query().Get("hash"))
|
signature, err := c.GetSignatureByID(r.URL.Query().Get("dkgID"), r.URL.Query().Get("id"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errorResponse(w, http.StatusInternalServerError, fmt.Sprintf("failed to get signature: %v", err))
|
errorResponse(w, http.StatusInternalServerError, fmt.Sprintf("failed to get signature: %v", err))
|
||||||
return
|
return
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
package client
|
package client
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"crypto/md5"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
|
"encoding/hex"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -338,9 +340,11 @@ func (s *LevelDBState) SaveSignature(signature types.ReconstructedSignature) err
|
||||||
signatures = make(map[string][]types.ReconstructedSignature)
|
signatures = make(map[string][]types.ReconstructedSignature)
|
||||||
}
|
}
|
||||||
|
|
||||||
sig := signatures[signature.SigningID]
|
dataHash := md5.Sum(signature.SrcPayload)
|
||||||
|
dataHashString := hex.EncodeToString(dataHash[:])
|
||||||
|
sig := signatures[dataHashString]
|
||||||
sig = append(sig, signature)
|
sig = append(sig, signature)
|
||||||
signatures[signature.SigningID] = sig
|
signatures[dataHashString] = sig
|
||||||
|
|
||||||
signaturesJSON, err := json.Marshal(signatures)
|
signaturesJSON, err := json.Marshal(signatures)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -23,11 +23,10 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
type ReconstructedSignature struct {
|
type ReconstructedSignature struct {
|
||||||
SigningID string
|
SrcPayload []byte
|
||||||
Data []byte
|
Signature []byte
|
||||||
Signature []byte
|
Username string
|
||||||
Participant string
|
DKGRoundID string
|
||||||
DKGRoundID string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Operation is the type for any Operation that might be required for
|
// Operation is the type for any Operation that might be required for
|
||||||
|
|
|
@ -122,7 +122,6 @@ func getOperationsCommand() *cobra.Command {
|
||||||
}
|
}
|
||||||
msgHash := md5.Sum(payload.SrcPayload)
|
msgHash := md5.Sum(payload.SrcPayload)
|
||||||
fmt.Printf("Hash of the message to sign - %s\n", hex.EncodeToString(msgHash[:]))
|
fmt.Printf("Hash of the message to sign - %s\n", hex.EncodeToString(msgHash[:]))
|
||||||
fmt.Printf("Signing ID: %s", payload.SigningId)
|
|
||||||
}
|
}
|
||||||
fmt.Println("-----------------------------------------------------")
|
fmt.Println("-----------------------------------------------------")
|
||||||
}
|
}
|
||||||
|
@ -170,7 +169,7 @@ func getSignaturesCommand() *cobra.Command {
|
||||||
fmt.Printf("Hash of the signing data: %s\n", dataHash)
|
fmt.Printf("Hash of the signing data: %s\n", dataHash)
|
||||||
for _, participantSig := range signature {
|
for _, participantSig := range signature {
|
||||||
fmt.Printf("\tDKG round ID: %s\n", participantSig.DKGRoundID)
|
fmt.Printf("\tDKG round ID: %s\n", participantSig.DKGRoundID)
|
||||||
fmt.Printf("\tParticipant: %s\n", participantSig.Participant)
|
fmt.Printf("\tParticipant: %s\n", participantSig.Username)
|
||||||
fmt.Printf("\tReconstructed signature for the data: %s\n", base64.StdEncoding.EncodeToString(participantSig.Signature))
|
fmt.Printf("\tReconstructed signature for the data: %s\n", base64.StdEncoding.EncodeToString(participantSig.Signature))
|
||||||
fmt.Println()
|
fmt.Println()
|
||||||
}
|
}
|
||||||
|
@ -181,7 +180,7 @@ func getSignaturesCommand() *cobra.Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
func getSignatureRequest(host string, dkgID, dataHash string) (*SignatureResponse, error) {
|
func getSignatureRequest(host string, dkgID, dataHash string) (*SignatureResponse, error) {
|
||||||
resp, err := http.Get(fmt.Sprintf("http://%s/getSignatureByDataHash?dkgID=%s&hash=%s", host, dkgID, dataHash))
|
resp, err := http.Get(fmt.Sprintf("http://%s/getSignatureByID?dkgID=%s&id=%s", host, dkgID, dataHash))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to get signatures: %w", err)
|
return nil, fmt.Errorf("failed to get signatures: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -216,7 +215,7 @@ func getSignatureCommand() *cobra.Command {
|
||||||
return fmt.Errorf("failed to get signatures: %s", signatures.ErrorMessage)
|
return fmt.Errorf("failed to get signatures: %s", signatures.ErrorMessage)
|
||||||
}
|
}
|
||||||
for _, participantSig := range signatures.Result {
|
for _, participantSig := range signatures.Result {
|
||||||
fmt.Printf("\tParticipant: %s\n", participantSig.Participant)
|
fmt.Printf("\tParticipant: %s\n", participantSig.Username)
|
||||||
fmt.Printf("\tReconstructed signature for the data: %s\n", base64.StdEncoding.EncodeToString(participantSig.Signature))
|
fmt.Printf("\tReconstructed signature for the data: %s\n", base64.StdEncoding.EncodeToString(participantSig.Signature))
|
||||||
fmt.Println()
|
fmt.Println()
|
||||||
}
|
}
|
||||||
|
@ -243,7 +242,7 @@ func getSignatureDataCommand() *cobra.Command {
|
||||||
return fmt.Errorf("failed to get signatures: %s", signatures.ErrorMessage)
|
return fmt.Errorf("failed to get signatures: %s", signatures.ErrorMessage)
|
||||||
}
|
}
|
||||||
if len(signatures.Result) > 0 {
|
if len(signatures.Result) > 0 {
|
||||||
fmt.Println(string(signatures.Result[0].Data))
|
fmt.Println(string(signatures.Result[0].SrcPayload))
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
|
|
|
@ -180,19 +180,19 @@ func (mr *MockStateMockRecorder) SaveSignature(signature interface{}) *gomock.Ca
|
||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SaveSignature", reflect.TypeOf((*MockState)(nil).SaveSignature), signature)
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SaveSignature", reflect.TypeOf((*MockState)(nil).SaveSignature), signature)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetSignatureByDataHash mocks base method
|
// GetSignatureByID mocks base method
|
||||||
func (m *MockState) GetSignatureByDataHash(dkgID, signatureID string) ([]types.ReconstructedSignature, error) {
|
func (m *MockState) GetSignatureByID(dkgID, signatureID string) ([]types.ReconstructedSignature, error) {
|
||||||
m.ctrl.T.Helper()
|
m.ctrl.T.Helper()
|
||||||
ret := m.ctrl.Call(m, "GetSignatureByDataHash", dkgID, signatureID)
|
ret := m.ctrl.Call(m, "GetSignatureByID", dkgID, signatureID)
|
||||||
ret0, _ := ret[0].([]types.ReconstructedSignature)
|
ret0, _ := ret[0].([]types.ReconstructedSignature)
|
||||||
ret1, _ := ret[1].(error)
|
ret1, _ := ret[1].(error)
|
||||||
return ret0, ret1
|
return ret0, ret1
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetSignatureByDataHash indicates an expected call of GetSignatureByDataHash
|
// GetSignatureByID indicates an expected call of GetSignatureByID
|
||||||
func (mr *MockStateMockRecorder) GetSignatureByDataHash(dkgID, signatureID interface{}) *gomock.Call {
|
func (mr *MockStateMockRecorder) GetSignatureByID(dkgID, signatureID interface{}) *gomock.Call {
|
||||||
mr.mock.ctrl.T.Helper()
|
mr.mock.ctrl.T.Helper()
|
||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSignatureByDataHash", reflect.TypeOf((*MockState)(nil).GetSignatureByDataHash), dkgID, signatureID)
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSignatureByID", reflect.TypeOf((*MockState)(nil).GetSignatureByID), dkgID, signatureID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetSignatures mocks base method
|
// GetSignatures mocks base method
|
||||||
|
|
Loading…
Reference in New Issue