Skip to content
Snippets Groups Projects
Commit 7c23013f authored by Josh Brooks's avatar Josh Brooks
Browse files

Add timestamp send in requestNonce

parent 56dc5bd5
No related branches found
No related tags found
1 merge request!23Release
...@@ -59,6 +59,8 @@ func registerNodes(sender *gateway.Sender, session *storage.Session, rngGen *fas ...@@ -59,6 +59,8 @@ func registerNodes(sender *gateway.Sender, session *storage.Session, rngGen *fas
stop *stoppable.Single, c chan network.NodeGateway) { stop *stoppable.Single, c chan network.NodeGateway) {
u := session.User() u := session.User()
regSignature := u.GetTransmissionRegistrationValidationSignature() regSignature := u.GetTransmissionRegistrationValidationSignature()
// Timestamp in which user has registered with permissioning
regTimestamp := u.GetRegistrationTimestampNano()
uci := u.GetCryptographicIdentity() uci := u.GetCryptographicIdentity()
cmix := session.Cmix() cmix := session.Cmix()
...@@ -71,7 +73,7 @@ func registerNodes(sender *gateway.Sender, session *storage.Session, rngGen *fas ...@@ -71,7 +73,7 @@ func registerNodes(sender *gateway.Sender, session *storage.Session, rngGen *fas
t.Stop() t.Stop()
return return
case gw := <-c: case gw := <-c:
err := registerWithNode(sender, comms, gw, regSignature, uci, cmix, rng) err := registerWithNode(sender, comms, gw, regSignature, regTimestamp, uci, cmix, rng)
if err != nil { if err != nil {
jww.ERROR.Printf("Failed to register node: %+v", err) jww.ERROR.Printf("Failed to register node: %+v", err)
} }
...@@ -82,8 +84,10 @@ func registerNodes(sender *gateway.Sender, session *storage.Session, rngGen *fas ...@@ -82,8 +84,10 @@ func registerNodes(sender *gateway.Sender, session *storage.Session, rngGen *fas
//registerWithNode serves as a helper for RegisterWithNodes //registerWithNode serves as a helper for RegisterWithNodes
// It registers a user with a specific in the client's ndf. // It registers a user with a specific in the client's ndf.
func registerWithNode(sender *gateway.Sender, comms RegisterNodeCommsInterface, ngw network.NodeGateway, regSig []byte, func registerWithNode(sender *gateway.Sender, comms RegisterNodeCommsInterface, ngw network.NodeGateway,
uci *user.CryptographicIdentity, store *cmix.Store, rng csprng.Source) error { regSig []byte, registrationTimestampNano int64, uci *user.CryptographicIdentity,
store *cmix.Store, rng csprng.Source) error {
nodeID, err := ngw.Node.GetNodeId() nodeID, err := ngw.Node.GetNodeId()
if err != nil { if err != nil {
jww.ERROR.Println("registerWithNode() failed to decode nodeId") jww.ERROR.Println("registerWithNode() failed to decode nodeId")
...@@ -118,7 +122,7 @@ func registerWithNode(sender *gateway.Sender, comms RegisterNodeCommsInterface, ...@@ -118,7 +122,7 @@ func registerWithNode(sender *gateway.Sender, comms RegisterNodeCommsInterface,
// keys // keys
transmissionHash, _ := hash.NewCMixHash() transmissionHash, _ := hash.NewCMixHash()
nonce, dhPub, err := requestNonce(sender, comms, gatewayID, regSig, uci, store, rng) nonce, dhPub, err := requestNonce(sender, comms, gatewayID, regSig, registrationTimestampNano, uci, store, rng)
if err != nil { if err != nil {
return errors.Errorf("Failed to request nonce: %+v", err) return errors.Errorf("Failed to request nonce: %+v", err)
} }
...@@ -145,8 +149,10 @@ func registerWithNode(sender *gateway.Sender, comms RegisterNodeCommsInterface, ...@@ -145,8 +149,10 @@ func registerWithNode(sender *gateway.Sender, comms RegisterNodeCommsInterface,
return nil return nil
} }
func requestNonce(sender *gateway.Sender, comms RegisterNodeCommsInterface, gwId *id.ID, regHash []byte, func requestNonce(sender *gateway.Sender, comms RegisterNodeCommsInterface, gwId *id.ID,
uci *user.CryptographicIdentity, store *cmix.Store, rng csprng.Source) ([]byte, []byte, error) { regSig []byte, registrationTimestampNano int64, uci *user.CryptographicIdentity,
store *cmix.Store, rng csprng.Source) ([]byte, []byte, error) {
dhPub := store.GetDHPublicKey().Bytes() dhPub := store.GetDHPublicKey().Bytes()
opts := rsa.NewDefaultOptions() opts := rsa.NewDefaultOptions()
opts.Hash = hash.CMixHash opts.Hash = hash.CMixHash
...@@ -170,13 +176,15 @@ func requestNonce(sender *gateway.Sender, comms RegisterNodeCommsInterface, gwId ...@@ -170,13 +176,15 @@ func requestNonce(sender *gateway.Sender, comms RegisterNodeCommsInterface, gwId
Salt: uci.GetTransmissionSalt(), Salt: uci.GetTransmissionSalt(),
ClientRSAPubKey: string(rsa.CreatePublicKeyPem(uci.GetTransmissionRSA().GetPublic())), ClientRSAPubKey: string(rsa.CreatePublicKeyPem(uci.GetTransmissionRSA().GetPublic())),
ClientSignedByServer: &messages.RSASignature{ ClientSignedByServer: &messages.RSASignature{
Signature: regHash, Signature: regSig,
}, },
ClientDHPubKey: dhPub, ClientDHPubKey: dhPub,
RequestSignature: &messages.RSASignature{ RequestSignature: &messages.RSASignature{
Signature: clientSig, Signature: clientSig,
}, },
Target: gwId.Marshal(), Target: gwId.Marshal(),
// Timestamp in which user has registered with permissioning
TimeStamp: registrationTimestampNano,
}) })
if err != nil { if err != nil {
errMsg := fmt.Sprintf("Register: Failed requesting nonce from gateway: %+v", err) errMsg := fmt.Sprintf("Register: Failed requesting nonce from gateway: %+v", err)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment