server helper functions + refactor
This commit is contained in:
		@@ -84,24 +84,48 @@ func (id *Identity) DecodeToServerMessage(toServerMessage []byte) (*meowlib.ToSe
 | 
			
		||||
	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
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
	msg.ServerPublicKey = id.ServerKp.Public
 | 
			
		||||
	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 {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return out, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// AsymEncryptMessage prepares a message to send to a specific client contact
 | 
			
		||||
func (id *Identity) AsymEncryptMessage(ClientPublicKey string, Message []byte) (EncryptedMsg []byte, Signature []byte, err error) {
 | 
			
		||||
	EncryptedMsg, Signature, err = meowlib.AsymEncryptAndSign(ClientPublicKey, id.ServerKp.Private, Message)
 | 
			
		||||
// AsymEncryptMessage prepares a message to send to a specific peer contact
 | 
			
		||||
func (id *Identity) AsymEncryptMessage(peerPublicKey string, Message []byte) (EncryptedMsg []byte, Signature []byte, err error) {
 | 
			
		||||
	EncryptedMsg, Signature, err = meowlib.AsymEncryptAndSign(peerPublicKey, id.ServerKp.Private, Message)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		fmt.Println(err.Error())
 | 
			
		||||
		return nil, nil, err
 | 
			
		||||
@@ -109,7 +133,7 @@ func (id *Identity) AsymEncryptMessage(ClientPublicKey string, Message []byte) (
 | 
			
		||||
	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
 | 
			
		||||
	pmsg.Payload = encryptedMessage
 | 
			
		||||
	pmsg.Signature = signature
 | 
			
		||||
@@ -120,3 +144,20 @@ func (id *Identity) PackResponseMessage(encryptedMessage []byte, signature []byt
 | 
			
		||||
	}
 | 
			
		||||
	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