Server processing initiated

This commit is contained in:
ycc 2022-09-25 10:16:39 +02:00
parent adb058492f
commit 6293e979b7
3 changed files with 42 additions and 13 deletions

View File

@ -8,6 +8,7 @@ import (
"forge.redroom.link/yves/meowlib" "forge.redroom.link/yves/meowlib"
"forge.redroom.link/yves/meowlib/client" "forge.redroom.link/yves/meowlib/client"
"forge.redroom.link/yves/meowlib/server"
) )
func TestEndToEnd(t *testing.T) { func TestEndToEnd(t *testing.T) {
@ -112,17 +113,40 @@ func TestEndToEnd(t *testing.T) {
/////////////////////////////////////// ///////////////////////////////////////
// Simulating server side processing // // Simulating server side processing //
/////////////////////////////////////// ///////////////////////////////////////
var server1 server.Identity
server1.ServerName = intS1.ServerData.Name
server1.ServerKp = FriendServer1KP
server1.ServerDesc = intS1.ServerData.Description
// Unpack
srv_from, srv_encmsg, srv_signature, err := server1.UnpackReceived(protoPackedServerMsg)
// Decrypt
srv_clear, err := server1.AsymDecryptMessage(srv_from, srv_encmsg, srv_signature)
// Decode msg
srv_msg, err := server1.DecodeToServerMessage(srv_clear)
// Response : Ack received message
srv_fromServerMessage, err := server1.BuildSimpleAckResponseMessage(srv_msg.Uuid)
srv_resp, srv_respsig, err := server1.AsymEncryptMessage(srv_from, srv_fromServerMessage)
resp, err := server1.PackResponseMessage(srv_resp, srv_respsig)
////////////////////////////////////////////// //////////////////////////////////////////////
// Back to client, decoding server response // // Back to client, decoding server response //
////////////////////////////////////////////// //////////////////////////////////////////////
// // server unpack
// server decrypt
// server decode protobuf
// user unpack
// user decrypt
decMess, err2 := MyFirstFriend.AsymDecryptMessage([]byte(EncMsg), EncMsgSignature) decMess, err2 := MyFirstFriend.AsymDecryptMessage([]byte(EncMsg), EncMsgSignature)
if err2 != nil { if err2 != nil {
fmt.Println(err2.Error()) fmt.Println(err2.Error())
} }
fmt.Println(decMess) fmt.Println(decMess)
// user decode protobuf
} }

View File

@ -11,7 +11,7 @@ message PackedServerMessage {
// structure defining a message for a server, that will be encrypted, then sent in a "packedmessage" payload // structure defining a message for a server, that will be encrypted, then sent in a "packedmessage" payload
message ToServerMessage { message ToServerMessage {
string type = 1; // Type string type = 1; // Type 1 : final destination / 2 : forward
string from = 2 ; // My pub key for the server to send me an encrypter answer string from = 2 ; // My pub key for the server to send me an encrypter answer
bytes payload = 3 ; // optional payload for server bytes payload = 3 ; // optional payload for server
@ -28,6 +28,7 @@ message ToServerMessage {
repeated PackedUserMessage messages = 5; repeated PackedUserMessage messages = 5;
repeated Server knownServers = 6; repeated Server knownServers = 6;
string uuid = 7; string uuid = 7;
} }
@ -83,16 +84,16 @@ message PackedUserMessage {
// structure defining information that might be exchanged between two peers. // structure defining information that might be exchanged between two peers.
message UserMessage { message UserMessage {
string Destination = 1; string destination = 1;
string From = 2; string from = 2;
string Type = 3; string type = 3;
bytes Data = 4; bytes data = 4;
message ConversationStatus { message ConversationStatus {
string LocalUuid = 1; string localUuid = 1;
uint64 LocalSequence = 2 ; uint64 localSequence = 2 ;
uint64 Sent = 3 ; uint64 sent = 3 ;
uint64 Received = 4; uint64 received = 4;
uint64 Processed = 5; uint64 processed = 5;
ContactCard myNextIdentity = 6; ContactCard myNextIdentity = 6;
int32 peerNextIdentityAck = 7; // version of the new peed accepted id int32 peerNextIdentityAck = 7; // version of the new peed accepted id
} }

View File

@ -88,11 +88,15 @@ func (id *Identity) DecodeToServerMessage(toServerMessage []byte) (*meowlib.ToSe
// Outbound processing chain // Outbound processing chain
// //
func (id *Identity) BuildSimpleAckResponseMessage(uuidToAck string) (fromServerMessage *meowlib.FromServerMessage, err error) { func (id *Identity) BuildSimpleAckResponseMessage(uuidToAck string) (fromServerMessage []byte, 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
return &msg, nil 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 // AsymEncryptMessage prepares a message to send to a specific client contact