mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-05 08:47:35 +08:00
42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
package mq
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/gravitl/netmaker/logic"
|
|
"github.com/gravitl/netmaker/models"
|
|
"github.com/gravitl/netmaker/netclient/ncutils"
|
|
)
|
|
|
|
func decryptMsg(msg []byte) ([]byte, error) {
|
|
trafficKey, trafficErr := logic.RetrievePrivateTrafficKey()
|
|
if trafficErr != nil {
|
|
return nil, trafficErr
|
|
}
|
|
return ncutils.DestructMessage(string(msg), &trafficKey), nil
|
|
}
|
|
|
|
func encrypt(node *models.Node, dest string, msg []byte) ([]byte, error) {
|
|
fmt.Printf("original length: %d \n", len(msg))
|
|
node.TrafficKeys.Mine.N = &node.TrafficKeys.Mod
|
|
encrypted := ncutils.BuildMessage(msg, &node.TrafficKeys.Mine)
|
|
if encrypted == "" {
|
|
return nil, fmt.Errorf("could not encrypt message")
|
|
}
|
|
fmt.Printf("resulting length: %d \n", len(encrypted))
|
|
return []byte(encrypted), nil
|
|
}
|
|
|
|
func publish(node *models.Node, dest string, msg []byte) error {
|
|
client := SetupMQTT()
|
|
defer client.Disconnect(250)
|
|
encrypted, encryptErr := encrypt(node, dest, msg)
|
|
if encryptErr != nil {
|
|
return encryptErr
|
|
}
|
|
if token := client.Publish(dest, 0, false, encrypted); token.Wait() && token.Error() != nil {
|
|
return token.Error()
|
|
}
|
|
return nil
|
|
}
|