diff --git a/cmix/nodes/request.go b/cmix/nodes/request.go index 455a0e3832d2b0792af4fbeb11bc00f1c79a8636..aa98aa7f625f1b44522111cc3ec085f1b43b0433 100644 --- a/cmix/nodes/request.go +++ b/cmix/nodes/request.go @@ -9,6 +9,7 @@ package nodes import ( "io" + "time" "github.com/golang/protobuf/proto" "github.com/pkg/errors" @@ -41,6 +42,7 @@ func requestKey(sender gateway.Sender, comms RegisterNodeCommsInterface, // Generate a Diffie-Hellman keypair grp := r.session.GetCmixGroup() + start := time.Now() prime := grp.GetPBytes() keyLen := len(prime) dhPrivBytes, err := csprng.GenerateInGroup(prime, keyLen, rng) @@ -66,8 +68,9 @@ func requestKey(sender gateway.Sender, comms RegisterNodeCommsInterface, // Request nonce message from gateway jww.INFO.Printf("Register: Requesting client key from "+ - "gateway %s", gatewayID) + "gateway %s, setup took ", gatewayID, time.Since(start)) + start = time.Now() result, err := sender.SendToAny(func(host *connect.Host) (interface{}, error) { keyResponse, err2 := comms.SendRequestClientKeyMessage(host, signedKeyReq) if err2 != nil { @@ -81,6 +84,7 @@ func requestKey(sender gateway.Sender, comms RegisterNodeCommsInterface, return keyResponse, nil }, stop) + jww.INFO.Printf("reg request took %s", time.Since(start)) if err != nil { return nil, nil, 0, err @@ -188,11 +192,14 @@ func processRequestResponse(signedKeyResponse *pb.SignedKeyResponse, // Convert Node DH Public key to a cyclic.Int nodeDHPub := grp.NewIntFromBytes(keyResponse.NodeDHPubKey) + start := time.Now() // Construct the session key h.Reset() sessionKey := registration.GenerateBaseKey(grp, nodeDHPub, dhPrivKey, h) + jww.INFO.Printf("DH for reg took %s", time.Since(start)) + // Verify the HMAC if !registration.VerifyClientHMAC(sessionKey.Bytes(), keyResponse.EncryptedClientKey, opts.Hash.New, diff --git a/cmix/params.go b/cmix/params.go index d933dbc9df696105de2cccc9aba8bae98f78625d..532226507565aea214cb7c9402b0fcbef370d48e 100644 --- a/cmix/params.go +++ b/cmix/params.go @@ -99,7 +99,7 @@ func GetDefaultParams() Params { MaxCheckedRounds: 500, RegNodesBufferLen: 1000, NetworkHealthTimeout: 15 * time.Second, - ParallelNodeRegistrations: 20, + ParallelNodeRegistrations: 4, KnownRoundsThreshold: 1500, // 5 rounds/sec * 60 sec/min * 5 min FastPolling: true, VerboseRoundTracking: false,