diff --git a/dfssc/cmd/root.go b/dfssc/cmd/root.go index 773f4071e7c8df30242115e9b52e533dd97eb000..95c117df4fda02609c09a92e0537e3eecd2d50bd 100644 --- a/dfssc/cmd/root.go +++ b/dfssc/cmd/root.go @@ -3,7 +3,6 @@ package cmd import ( "dfss" - dapi "dfss/dfssd/api" "github.com/spf13/cobra" "github.com/spf13/viper" @@ -31,7 +30,7 @@ A tool to sign multiparty contract using a secure cryptographic protocol`, // All of the flags will be gathered by viper, this is why // we do not store their values func init() { - // Bind flags to the dfsst command + // Bind flags to the dfssc command RootCmd.PersistentFlags().BoolP("verbose", "v", false, "print verbose messages") RootCmd.PersistentFlags().String("ca", "ca.pem", "path to the root certificate") RootCmd.PersistentFlags().String("cert", "cert.pem", "path to the user's certificate") @@ -40,6 +39,8 @@ func init() { RootCmd.PersistentFlags().String("host", "localhost:9000", "host of the dfss platform") RootCmd.PersistentFlags().IntP("port", "p", 9005, "port to use for P2P communication between clients") + signCmd.Flags().Duration("slowdown", 0, "Delay between each promises round") + // Store flag values into viper _ = viper.BindPFlag("verbose", RootCmd.PersistentFlags().Lookup("verbose")) _ = viper.BindPFlag("file_ca", RootCmd.PersistentFlags().Lookup("ca")) diff --git a/dfssc/cmd/sign.go b/dfssc/cmd/sign.go index 7725a89d54548dfb6f50c198ea7593992e5c1fbc..2874a89edb8230dc09f3465fe059e7ee85df8ed9 100644 --- a/dfssc/cmd/sign.go +++ b/dfssc/cmd/sign.go @@ -6,6 +6,7 @@ import ( "dfss/dfssc/sign" "github.com/spf13/cobra" + "github.com/spf13/viper" ) var signCmd = &cobra.Command{ @@ -17,6 +18,8 @@ var signCmd = &cobra.Command{ os.Exit(1) } + _ = viper.BindPFlag("slowdown", cmd.Flags().Lookup("slowdown")) + filename := args[0] fmt.Println("You are going to sign the following contract:") showContract(cmd, args) diff --git a/dfssc/sign/protocol.go b/dfssc/sign/protocol.go index 21a870c01e6d43c8fc59096e05ec5d9104b39f6b..5c22fdf47bc7ea0e5aa1c3c31bb17c0884e9b4da 100644 --- a/dfssc/sign/protocol.go +++ b/dfssc/sign/protocol.go @@ -8,6 +8,7 @@ import ( cAPI "dfss/dfssc/api" "dfss/dfssc/common" dAPI "dfss/dfssd/api" + "github.com/spf13/viper" ) // Sign performs all the message exchanges for the contract to be signed @@ -42,6 +43,7 @@ func (m *SignatureManager) Sign() error { // Follow the sequence until there is no next occurence of me for m.currentIndex >= 0 { m.OnProgressUpdate(m.currentIndex, seqLen+1) + time.Sleep(viper.GetDuration("slowdown")) dAPI.DLog("starting round at index [" + fmt.Sprintf("%d", m.currentIndex) + "] with nextIndex=" + fmt.Sprintf("%d", nextIndex)) // Set of promises we are waiting for