mirror of https://github.com/certusone/dc4bc.git
wip
This commit is contained in:
parent
cb263b45b1
commit
039a664564
|
@ -24,7 +24,7 @@ import (
|
|||
//
|
||||
// req := requests.SigningProposalPartialKeyRequest{
|
||||
// ParticipantId: 0, // TODO: from where?
|
||||
// PartialKey: partialSign,
|
||||
// PartialSign: partialSign,
|
||||
// CreatedAt: o.CreatedAt,
|
||||
// }
|
||||
// reqBz, err := json.Marshal(req)
|
||||
|
|
|
@ -183,9 +183,9 @@ func (s SigningParticipantStatus) String() string {
|
|||
}
|
||||
|
||||
type SigningProposalParticipant struct {
|
||||
Addr string
|
||||
Status SigningParticipantStatus
|
||||
PartialKey []byte
|
||||
Error error
|
||||
UpdatedAt time.Time
|
||||
Addr string
|
||||
Status SigningParticipantStatus
|
||||
PartialSign []byte
|
||||
Error error
|
||||
UpdatedAt time.Time
|
||||
}
|
||||
|
|
|
@ -50,6 +50,7 @@ var (
|
|||
|
||||
testSigningId string
|
||||
testSigningInitiator int
|
||||
testSigningPayload = []byte("message to sign")
|
||||
|
||||
testFSMDump = map[fsm.State][]byte{}
|
||||
)
|
||||
|
@ -880,7 +881,6 @@ func Test_SigningProposal_EventSigningInit(t *testing.T) {
|
|||
// Start
|
||||
func Test_SigningProposal_EventSigningStart(t *testing.T) {
|
||||
var (
|
||||
mockPayload = []byte("message to sign")
|
||||
fsmResponse *fsm.Response
|
||||
)
|
||||
|
||||
|
@ -919,8 +919,8 @@ func Test_SigningProposal_EventSigningStart(t *testing.T) {
|
|||
t.Fatalf("expected field {SigningId}")
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(response.SrcPayload, mockPayload) {
|
||||
t.Fatalf("expected matched {SigningId}")
|
||||
if !reflect.DeepEqual(response.SrcPayload, testSigningPayload) {
|
||||
t.Fatalf("expected matched {SrcPayload}")
|
||||
}
|
||||
|
||||
testSigningId = response.SigningId
|
||||
|
@ -977,6 +977,20 @@ func Test_SigningProposal_EventConfirmSigningConfirmation_Positive(t *testing.T)
|
|||
|
||||
compareState(t, sif.StateSigningAwaitPartialKeys, fsmResponse.State)
|
||||
|
||||
response, ok := fsmResponse.Data.(responses.SigningPartialSignsParticipantInvitationsResponse)
|
||||
|
||||
if !ok {
|
||||
t.Fatalf("expected response {SigningProposalParticipantInvitationsResponse}")
|
||||
}
|
||||
|
||||
if response.SigningId == "" {
|
||||
t.Fatalf("expected field {SigningId}")
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(response.SrcPayload, testSigningPayload) {
|
||||
t.Fatalf("expected matched {SrcPayload}")
|
||||
}
|
||||
|
||||
testFSMDump[sif.StateSigningAwaitPartialKeys] = testFSMDumpLocal
|
||||
|
||||
compareDumpNotZero(t, testFSMDump[sif.StateSigningAwaitPartialKeys])
|
||||
|
@ -1059,7 +1073,7 @@ func Test_SigningProposal_EventSigningPartialKeyReceived_Positive(t *testing.T)
|
|||
fsmResponse, testFSMDumpLocal, err = testFSMInstance.Do(sif.EventSigningPartialKeyReceived, requests.SigningProposalPartialKeyRequest{
|
||||
SigningId: testSigningId,
|
||||
ParticipantId: participantId,
|
||||
PartialKey: participant.DkgPartialKey,
|
||||
PartialSign: participant.DkgPartialKey,
|
||||
CreatedAt: time.Now(),
|
||||
})
|
||||
|
||||
|
@ -1077,6 +1091,20 @@ func Test_SigningProposal_EventSigningPartialKeyReceived_Positive(t *testing.T)
|
|||
|
||||
compareState(t, sif.StateSigningPartialKeysCollected, fsmResponse.State)
|
||||
|
||||
response, ok := fsmResponse.Data.(responses.SigningProcessParticipantResponse)
|
||||
|
||||
if !ok {
|
||||
t.Fatalf("expected response {SigningProcessParticipantResponse}")
|
||||
}
|
||||
|
||||
if response.SigningId == "" {
|
||||
t.Fatalf("expected field {SigningId}")
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(response.SrcPayload, testSigningPayload) {
|
||||
t.Fatalf("expected matched {SrcPayload}")
|
||||
}
|
||||
|
||||
testFSMDump[sif.StateSigningPartialKeysCollected] = testFSMDumpLocal
|
||||
|
||||
compareDumpNotZero(t, testFSMDump[sif.StateSigningPartialKeysCollected])
|
||||
|
|
|
@ -84,7 +84,6 @@ func (m *SigningProposalFSM) actionStartSigningProposal(inEvent fsm.Event, args
|
|||
m.payload.SigningProposalPayload.CreatedAt = request.CreatedAt
|
||||
|
||||
// Make response
|
||||
|
||||
responseData := responses.SigningProposalParticipantInvitationsResponse{
|
||||
SigningId: m.payload.SigningProposalPayload.SigningId,
|
||||
InitiatorId: m.payload.SigningProposalPayload.InitiatorId,
|
||||
|
@ -192,6 +191,15 @@ func (m *SigningProposalFSM) actionValidateSigningProposalConfirmations(inEvent
|
|||
participant.Status = internal.SigningAwaitPartialKeys
|
||||
}
|
||||
|
||||
// Make response
|
||||
responseData := responses.SigningPartialSignsParticipantInvitationsResponse{
|
||||
SigningId: m.payload.SigningProposalPayload.SigningId,
|
||||
InitiatorId: m.payload.SigningProposalPayload.InitiatorId,
|
||||
SrcPayload: m.payload.SigningProposalPayload.SrcPayload,
|
||||
}
|
||||
|
||||
response = responseData
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -227,8 +235,8 @@ func (m *SigningProposalFSM) actionPartialKeyConfirmationReceived(inEvent fsm.Ev
|
|||
return
|
||||
}
|
||||
|
||||
signingProposalParticipant.PartialKey = make([]byte, len(request.PartialKey))
|
||||
copy(signingProposalParticipant.PartialKey, request.PartialKey)
|
||||
signingProposalParticipant.PartialSign = make([]byte, len(request.PartialSign))
|
||||
copy(signingProposalParticipant.PartialSign, request.PartialSign)
|
||||
signingProposalParticipant.Status = internal.SigningPartialKeysConfirmed
|
||||
|
||||
signingProposalParticipant.UpdatedAt = request.CreatedAt
|
||||
|
@ -280,6 +288,7 @@ func (m *SigningProposalFSM) actionValidateSigningPartialKeyAwaitConfirmations(i
|
|||
// Response
|
||||
responseData := responses.SigningProcessParticipantResponse{
|
||||
SigningId: m.payload.SigningProposalPayload.SigningId,
|
||||
SrcPayload: m.payload.SigningProposalPayload.SrcPayload,
|
||||
Participants: make([]*responses.SigningProcessParticipantEntry, 0),
|
||||
}
|
||||
|
||||
|
@ -287,7 +296,7 @@ func (m *SigningProposalFSM) actionValidateSigningPartialKeyAwaitConfirmations(i
|
|||
responseEntry := &responses.SigningProcessParticipantEntry{
|
||||
ParticipantId: participantId,
|
||||
Addr: participant.Addr,
|
||||
PartialKey: participant.PartialKey,
|
||||
PartialSign: participant.PartialSign,
|
||||
}
|
||||
responseData.Participants = append(responseData.Participants, responseEntry)
|
||||
}
|
||||
|
|
|
@ -24,6 +24,6 @@ type SigningProposalParticipantRequest struct {
|
|||
type SigningProposalPartialKeyRequest struct {
|
||||
SigningId string
|
||||
ParticipantId int
|
||||
PartialKey []byte
|
||||
PartialSign []byte
|
||||
CreatedAt time.Time
|
||||
}
|
||||
|
|
|
@ -43,8 +43,8 @@ func (r *SigningProposalPartialKeyRequest) Validate() error {
|
|||
return errors.New("{ParticipantId} cannot be a negative number")
|
||||
}
|
||||
|
||||
if len(r.PartialKey) == 0 {
|
||||
return errors.New("{PartialKey} cannot zero length")
|
||||
if len(r.PartialSign) == 0 {
|
||||
return errors.New("{PartialSign} cannot zero length")
|
||||
}
|
||||
|
||||
if r.CreatedAt.IsZero() {
|
||||
|
|
|
@ -4,7 +4,6 @@ package responses
|
|||
|
||||
// Event: "event_sig_proposal_init"
|
||||
// States: "__idle"
|
||||
|
||||
type SignatureProposalParticipantInvitationsResponse []*SignatureProposalParticipantInvitationEntry
|
||||
|
||||
type SignatureProposalParticipantInvitationEntry struct {
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package responses
|
||||
|
||||
// Event: "event_signing_start"
|
||||
// States: "state_signing_await_confirmations"
|
||||
type SigningProposalParticipantInvitationsResponse struct {
|
||||
SigningId string
|
||||
InitiatorId int
|
||||
|
@ -14,6 +16,16 @@ type SigningProposalParticipantInvitationEntry struct {
|
|||
Status uint8
|
||||
}
|
||||
|
||||
// Event: "event_signing_proposal_confirm_by_participant"
|
||||
// States: "state_signing_await_partial_keys"
|
||||
type SigningPartialSignsParticipantInvitationsResponse struct {
|
||||
SigningId string
|
||||
InitiatorId int
|
||||
SrcPayload []byte
|
||||
}
|
||||
|
||||
// Event: ""
|
||||
// States: ""
|
||||
type SigningProposalParticipantStatusResponse struct {
|
||||
SigningId string
|
||||
Participants []*SignatureProposalParticipantStatusEntry
|
||||
|
@ -25,6 +37,8 @@ type SigningProposalParticipantStatusEntry struct {
|
|||
Status uint8
|
||||
}
|
||||
|
||||
// Event: ""
|
||||
// States: ""
|
||||
type SigningProcessParticipantResponse struct {
|
||||
SigningId string
|
||||
SrcPayload []byte
|
||||
|
@ -34,5 +48,5 @@ type SigningProcessParticipantResponse struct {
|
|||
type SigningProcessParticipantEntry struct {
|
||||
ParticipantId int
|
||||
Addr string
|
||||
PartialKey []byte
|
||||
PartialSign []byte
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue