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
Branches
Tags
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