server helper functions + refactor
This commit is contained in:
		@@ -125,9 +125,10 @@ func TestEndToEnd(t *testing.T) {
 | 
				
			|||||||
		srv_msg, err := server1.DecodeToServerMessage(srv_clear)
 | 
							srv_msg, err := server1.DecodeToServerMessage(srv_clear)
 | 
				
			||||||
		// Response : Ack received message
 | 
							// Response : Ack received message
 | 
				
			||||||
		srv_fromServerMessage, err := server1.BuildSimpleAckResponseMessage(srv_msg.Uuid)
 | 
							srv_fromServerMessage, err := server1.BuildSimpleAckResponseMessage(srv_msg.Uuid)
 | 
				
			||||||
		srv_resp, srv_respsig, err := server1.AsymEncryptMessage(srv_from, srv_fromServerMessage)
 | 
							encoded_srv_fromServerMessage, err := server1.EncodeFromServerMessage(srv_fromServerMessage)
 | 
				
			||||||
		resp, err := server1.PackResponseMessage(srv_resp, srv_respsig)
 | 
							srv_resp, srv_respsig, err := server1.AsymEncryptMessage(srv_from, encoded_srv_fromServerMessage)
 | 
				
			||||||
 | 
							resp, err := server1.PackForSending(srv_resp, srv_respsig)
 | 
				
			||||||
 | 
							print(resp)
 | 
				
			||||||
		//////////////////////////////////////////////
 | 
							//////////////////////////////////////////////
 | 
				
			||||||
		// Back to client, decoding server response //
 | 
							// Back to client, decoding server response //
 | 
				
			||||||
		//////////////////////////////////////////////
 | 
							//////////////////////////////////////////////
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -84,24 +84,48 @@ func (id *Identity) DecodeToServerMessage(toServerMessage []byte) (*meowlib.ToSe
 | 
				
			|||||||
	return tsmsg, nil
 | 
						return tsmsg, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Inbound helper function
 | 
				
			||||||
 | 
					func (id *Identity) ProcessInbound(message []byte) (*meowlib.ToServerMessage, error) {
 | 
				
			||||||
 | 
						// Unpack
 | 
				
			||||||
 | 
						srv_from, srv_encmsg, srv_signature, err := id.UnpackReceived(message)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						// Decrypt
 | 
				
			||||||
 | 
						srv_clear, err := id.AsymDecryptMessage(srv_from, srv_encmsg, srv_signature)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						// Decode msg
 | 
				
			||||||
 | 
						srv_msg, err := id.DecodeToServerMessage(srv_clear)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return srv_msg, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// Outbound processing chain
 | 
					// Outbound processing chain
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (id *Identity) BuildSimpleAckResponseMessage(uuidToAck string) (fromServerMessage []byte, err error) {
 | 
					func (id *Identity) BuildSimpleAckResponseMessage(uuidToAck string) (fromServerMessage *meowlib.FromServerMessage, err error) {
 | 
				
			||||||
	var msg meowlib.FromServerMessage
 | 
						var msg meowlib.FromServerMessage
 | 
				
			||||||
	msg.ServerPublicKey = id.ServerKp.Public
 | 
						msg.ServerPublicKey = id.ServerKp.Public
 | 
				
			||||||
	msg.UuidAck = uuidToAck
 | 
						msg.UuidAck = uuidToAck
 | 
				
			||||||
	out, err := proto.Marshal(&msg)
 | 
						return &msg, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (id *Identity) EncodeFromServerMessage(msg *meowlib.FromServerMessage) (encodedFromServerMessage []byte, err error) {
 | 
				
			||||||
 | 
						out, err := proto.Marshal(msg)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return out, nil
 | 
						return out, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// AsymEncryptMessage prepares a message to send to a specific client contact
 | 
					// AsymEncryptMessage prepares a message to send to a specific peer contact
 | 
				
			||||||
func (id *Identity) AsymEncryptMessage(ClientPublicKey string, Message []byte) (EncryptedMsg []byte, Signature []byte, err error) {
 | 
					func (id *Identity) AsymEncryptMessage(peerPublicKey string, Message []byte) (EncryptedMsg []byte, Signature []byte, err error) {
 | 
				
			||||||
	EncryptedMsg, Signature, err = meowlib.AsymEncryptAndSign(ClientPublicKey, id.ServerKp.Private, Message)
 | 
						EncryptedMsg, Signature, err = meowlib.AsymEncryptAndSign(peerPublicKey, id.ServerKp.Private, Message)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		fmt.Println(err.Error())
 | 
							fmt.Println(err.Error())
 | 
				
			||||||
		return nil, nil, err
 | 
							return nil, nil, err
 | 
				
			||||||
@@ -109,7 +133,7 @@ func (id *Identity) AsymEncryptMessage(ClientPublicKey string, Message []byte) (
 | 
				
			|||||||
	return EncryptedMsg, Signature, err
 | 
						return EncryptedMsg, Signature, err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (id *Identity) PackResponseMessage(encryptedMessage []byte, signature []byte) (fromServerMessage []byte, err error) {
 | 
					func (id *Identity) PackForSending(encryptedMessage []byte, signature []byte) (fromServerMessage []byte, err error) {
 | 
				
			||||||
	var pmsg meowlib.PackedServerMessage
 | 
						var pmsg meowlib.PackedServerMessage
 | 
				
			||||||
	pmsg.Payload = encryptedMessage
 | 
						pmsg.Payload = encryptedMessage
 | 
				
			||||||
	pmsg.Signature = signature
 | 
						pmsg.Signature = signature
 | 
				
			||||||
@@ -120,3 +144,20 @@ func (id *Identity) PackResponseMessage(encryptedMessage []byte, signature []byt
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	return out, nil
 | 
						return out, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Outbound helper function
 | 
				
			||||||
 | 
					func (id *Identity) ProcessOut(peerPublicKey string, msg *meowlib.FromServerMessage) (fromServerMessage []byte, err error) {
 | 
				
			||||||
 | 
						encoded_srv_fromServerMessage, err := id.EncodeFromServerMessage(msg)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						srv_resp, srv_respsig, err := id.AsymEncryptMessage(peerPublicKey, encoded_srv_fromServerMessage)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						resp, err := id.PackForSending(srv_resp, srv_respsig)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return resp, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user