55 lines
1.1 KiB
Go
55 lines
1.1 KiB
Go
|
package meowlib
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
|
||
|
"github.com/rs/zerolog/log"
|
||
|
)
|
||
|
|
||
|
const MessagesType = 1
|
||
|
const PollRequestType = 1
|
||
|
const PollResponseType = 1
|
||
|
const MtrkType = 1
|
||
|
|
||
|
func (msg *ServerMessage) Pack() *PackedServerMessage {
|
||
|
var pck PackedServerMessage
|
||
|
|
||
|
jsonMsg, _ := json.Marshal(msg)
|
||
|
armor, err := Encrypt(msg.ServerPubKey, jsonMsg)
|
||
|
if err != nil {
|
||
|
log.Error().Msg("Message encryption failed")
|
||
|
}
|
||
|
pck.Payload = []byte(armor)
|
||
|
return &pck
|
||
|
}
|
||
|
|
||
|
func (pck *PackedServerMessage) Unpack(privateKey string) *ServerMessage {
|
||
|
var msg *ServerMessage
|
||
|
|
||
|
decrypted, err := Decrypt(privateKey, pck.Payload)
|
||
|
if err != nil {
|
||
|
log.Error().Msg("Message decryption failed")
|
||
|
}
|
||
|
err = json.Unmarshal(decrypted, &msg)
|
||
|
if err != nil {
|
||
|
log.Error().Msg("Message encryption failed")
|
||
|
}
|
||
|
return msg
|
||
|
}
|
||
|
|
||
|
func CreateMtrkChainServerMessage([]Server, []PackedUserMessage) *PackedServerMessage {
|
||
|
var msg PackedServerMessage
|
||
|
return &msg
|
||
|
}
|
||
|
|
||
|
func (msg *ServerMessage) Parse() {
|
||
|
var pck PackedServerMessage
|
||
|
|
||
|
jsonMsg, _ := json.Marshal(msg)
|
||
|
armor, err := Encrypt(msg.ServerPubKey, jsonMsg)
|
||
|
if err != nil {
|
||
|
log.Error().Msg("Message encryption failed")
|
||
|
}
|
||
|
pck.Payload = []byte(armor)
|
||
|
}
|