Server inbound processing
This commit is contained in:
parent
1c3118ff48
commit
37f6d7b93a
@ -7,6 +7,7 @@ import (
|
|||||||
|
|
||||||
"forge.redroom.link/yves/meowlib"
|
"forge.redroom.link/yves/meowlib"
|
||||||
"github.com/ProtonMail/gopenpgp/v2/helper"
|
"github.com/ProtonMail/gopenpgp/v2/helper"
|
||||||
|
"google.golang.org/protobuf/proto"
|
||||||
)
|
)
|
||||||
|
|
||||||
const key = "3pw0c8#6ZG8{75b5;3?fe80$2"
|
const key = "3pw0c8#6ZG8{75b5;3?fe80$2"
|
||||||
@ -51,14 +52,17 @@ func (id *Identity) Save(file string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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) {
|
// Inbound processing chain
|
||||||
EncryptedMsg, Signature, err = meowlib.AsymEncryptAndSign(ClientPublicKey, id.ServerKp.Private, Message)
|
//
|
||||||
if err != nil {
|
|
||||||
fmt.Println(err.Error())
|
// Unpack a protobuf received packed message
|
||||||
return nil, nil, err
|
func (id *Identity) UnpackReceived(message []byte) (fromPublicKey string, encryptedMessage []byte, signature []byte, err error) {
|
||||||
|
pmsg := &meowlib.PackedServerMessage{}
|
||||||
|
if err := proto.Unmarshal(message, pmsg); err != nil {
|
||||||
|
return "", nil, nil, err
|
||||||
}
|
}
|
||||||
return EncryptedMsg, Signature, err
|
return pmsg.From, pmsg.Payload, pmsg.Signature, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// AsymDecryptMessage reads a message from a specific client contact
|
// AsymDecryptMessage reads a message from a specific client contact
|
||||||
@ -70,3 +74,26 @@ func (id *Identity) AsymDecryptMessage(ClientPublicKey string, Message []byte, S
|
|||||||
}
|
}
|
||||||
return DecryptedMsg, err
|
return DecryptedMsg, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Decode decrypted ToServerMessage
|
||||||
|
func (id *Identity) DecodeToServerMessage(toServerMessage []byte) (*meowlib.ToServerMessage, error) {
|
||||||
|
tsmsg := &meowlib.ToServerMessage{}
|
||||||
|
if err := proto.Unmarshal(toServerMessage, tsmsg); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return tsmsg, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Outbound processing chain
|
||||||
|
//
|
||||||
|
|
||||||
|
// 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)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err.Error())
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
return EncryptedMsg, Signature, err
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user