wireguardManagerSetup.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package main
  2. import (
  3. "3nets.io/wireguardcommon"
  4. "crypto"
  5. "flag"
  6. "fmt"
  7. "log"
  8. )
  9. func main() {
  10. var err error
  11. var managerPrivate crypto.PrivateKey
  12. var managerPublic crypto.PublicKey
  13. var managerPublicBytes [32]byte
  14. var managerPrivateBytes [32]byte
  15. edgePublicPtr := flag.String("edgePublic", "", "the public part from edge")
  16. edgeName := flag.String("edgeName", "3netsedge.io", "The name of the edge")
  17. generateSignatureUrl := flag.String("generateSignatureUrl", "http://test1.jagat.me:8123/nacl-encrypt", "The url to use for generating Signature")
  18. flag.Parse()
  19. managerPrivate, managerPublic, err = wireguardcommon.GenerateKeyPair()
  20. if err != nil {
  21. fmt.Printf("Failed to generate manager private/public key pair: %s\n", err)
  22. return
  23. }
  24. if ok := wireguardcommon.CheckType(&managerPrivateBytes, managerPrivate); !ok {
  25. panic("ecdh: unexpected type of manager public key")
  26. }
  27. if ok := wireguardcommon.CheckType(&managerPublicBytes, managerPublic); !ok {
  28. panic("ecdh: unexpected type of manager public key")
  29. }
  30. fmt.Println("edgePublic=", *edgePublicPtr)
  31. fmt.Println("edgeName=", *edgeName)
  32. fmt.Println("generateSignatureUrl=", *generateSignatureUrl)
  33. if *edgePublicPtr != "" {
  34. presharedKey, err := wireguardcommon.GenPskOnManager(*edgePublicPtr, managerPrivate)
  35. if err != nil {
  36. fmt.Printf("Failed to generate manager private/public key pair: %s\n", err)
  37. return
  38. } else {
  39. fmt.Printf("presharedkey=%s\n", presharedKey)
  40. }
  41. } else {
  42. if *edgeName != "" {
  43. signature, err := wireguardcommon.EncryptMessage(*generateSignatureUrl, *edgeName)
  44. if err != nil {
  45. log.Fatalf("Cant reach the url for generating signature, %s", err)
  46. }
  47. fmt.Printf("edgeSignature: %s\n", signature)
  48. } else {
  49. log.Fatalf("edgeName is required")
  50. }
  51. }
  52. }