util.go 1010 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package mq
  2. import (
  3. "github.com/gravitl/netmaker/logic"
  4. "github.com/gravitl/netmaker/netclient/ncutils"
  5. )
  6. func decryptMsg(nodeid string, msg []byte) ([]byte, error) {
  7. trafficKey, trafficErr := logic.RetrieveTrafficKey(nodeid)
  8. if trafficErr != nil {
  9. return nil, trafficErr
  10. }
  11. return ncutils.DecryptWithPrivateKey(msg, &trafficKey), nil
  12. }
  13. func encrypt(nodeid string, dest string, msg []byte) ([]byte, error) {
  14. var node, err = logic.GetNodeByID(nodeid)
  15. if err != nil {
  16. return nil, err
  17. }
  18. encrypted, encryptErr := ncutils.EncryptWithPublicKey(msg, &node.TrafficKeys.Mine)
  19. if encryptErr != nil {
  20. return nil, encryptErr
  21. }
  22. return encrypted, nil
  23. }
  24. func publish(nodeid string, dest string, msg []byte) error {
  25. client := SetupMQTT()
  26. defer client.Disconnect(250)
  27. encrypted, encryptErr := encrypt(nodeid, dest, msg)
  28. if encryptErr != nil {
  29. return encryptErr
  30. }
  31. if token := client.Publish(dest, 0, false, encrypted); token.Wait() && token.Error() != nil {
  32. return token.Error()
  33. }
  34. return nil
  35. }