0xdcarns 3 years ago
parent
commit
08e219cdcc
3 changed files with 55 additions and 57 deletions
  1. 23 21
      controllers/server.go
  2. 27 26
      netclient/config/config.go
  3. 5 10
      netclient/functions/register.go

+ 23 - 21
controllers/server.go

@@ -176,30 +176,32 @@ func register(w http.ResponseWriter, r *http.Request) {
 		return
 	}
 
-	caBytes, err := config.ConvertCertToBytes(*ca)
-	if err != nil {
-		logger.Log(0, "failed to encode CA cert ", err.Error())
-		errorResponse := models.ErrorResponse{
-			Code: http.StatusInternalServerError, Message: err.Error(),
-		}
-		returnErrorResponse(w, r, errorResponse)
-		return
-	}
+	// caBytes, err := config.ConvertCertToBytes(*ca)
+	// if err != nil {
+	// 	logger.Log(0, "failed to encode CA cert ", err.Error())
+	// 	errorResponse := models.ErrorResponse{
+	// 		Code: http.StatusInternalServerError, Message: err.Error(),
+	// 	}
+	// 	returnErrorResponse(w, r, errorResponse)
+	// 	return
+	// }
 
-	certBytes, err := config.ConvertCertToBytes(*cert)
-	if err != nil {
-		logger.Log(0, "failed to encode CA cert ", err.Error())
-		errorResponse := models.ErrorResponse{
-			Code: http.StatusInternalServerError, Message: err.Error(),
-		}
-		returnErrorResponse(w, r, errorResponse)
-		return
-	}
+	// certBytes, err := config.ConvertCertToBytes(*cert)
+	// if err != nil {
+	// 	logger.Log(0, "failed to encode CA cert ", err.Error())
+	// 	errorResponse := models.ErrorResponse{
+	// 		Code: http.StatusInternalServerError, Message: err.Error(),
+	// 	}
+	// 	returnErrorResponse(w, r, errorResponse)
+	// 	return
+	// }
 
 	response := config.RegisterResponse{
-		Key:       *key,
-		CABytes:   caBytes,
-		CertBytes: certBytes,
+		Key:        *key,
+		CA:         *ca,
+		CAPubKey:   (ca.PublicKey).(ed25519.PublicKey),
+		Cert:       *cert,
+		CertPubKey: (cert.PublicKey).(ed25519.PublicKey),
 	}
 	w.WriteHeader(http.StatusOK)
 	json.NewEncoder(w).Encode(response)

+ 27 - 26
netclient/config/config.go

@@ -2,11 +2,10 @@ package config
 
 import (
 	//"github.com/davecgh/go-spew/spew"
-	"bytes"
+
 	"crypto/ed25519"
 	"crypto/x509"
 	"encoding/base64"
-	"encoding/gob"
 	"encoding/json"
 	"errors"
 	"fmt"
@@ -48,33 +47,35 @@ type RegisterRequest struct {
 	Key ed25519.PublicKey
 }
 
-// ConvertStructToByte - util to convert bytes to a key to use elsewhere
-func ConvertCertToBytes(cert x509.Certificate) ([]byte, error) {
-	var buffer bytes.Buffer
-	var enc = gob.NewEncoder(&buffer)
-	if err := enc.Encode(cert); err != nil {
-		return nil, err
-	}
-	return buffer.Bytes(), nil
-}
-
-// ConvertStructToByte - util to convert bytes to a key to use elsewhere
-func ConvertBytesToCert(data []byte) (x509.Certificate, error) {
-	var buffer = bytes.NewBuffer(data)
-	var dec = gob.NewDecoder(buffer)
-	var result = new(x509.Certificate)
-	var err = dec.Decode(result)
-	if err != nil {
-		return *result, err
-	}
-	return *result, nil
-}
+// // ConvertStructToByte - util to convert bytes to a key to use elsewhere
+// func ConvertCertToBytes(cert x509.Certificate) ([]byte, error) {
+// 	var buffer bytes.Buffer
+// 	var enc = gob.NewEncoder(&buffer)
+// 	if err := enc.Encode(cert); err != nil {
+// 		return nil, err
+// 	}
+// 	return buffer.Bytes(), nil
+// }
+
+// // ConvertStructToByte - util to convert bytes to a key to use elsewhere
+// func ConvertBytesToCert(data []byte) (x509.Certificate, error) {
+// 	var buffer = bytes.NewBuffer(data)
+// 	var dec = gob.NewDecoder(buffer)
+// 	var result = new(x509.Certificate)
+// 	var err = dec.Decode(result)
+// 	if err != nil {
+// 		return *result, err
+// 	}
+// 	return *result, nil
+// }
 
 // RegisterResponse - the response to register function
 type RegisterResponse struct {
-	Key       ed25519.PrivateKey
-	CABytes   []byte
-	CertBytes []byte
+	Key        ed25519.PrivateKey
+	CA         x509.Certificate
+	CAPubKey   ed25519.PublicKey
+	Cert       x509.Certificate
+	CertPubKey ed25519.PublicKey
 }
 
 // Write - writes the config of a client to disk

+ 5 - 10
netclient/functions/register.go

@@ -63,19 +63,14 @@ func Register(cfg *config.ClientConfig) error {
 	if err := json.NewDecoder(response.Body).Decode(&resp); err != nil {
 		return errors.New("unmarshal cert error " + err.Error())
 	}
-	responseCA, err := config.ConvertBytesToCert(resp.CABytes)
-	if err != nil {
-		return errors.New("could not acquire CA from response " + err.Error())
-	}
-	responseCert, err := config.ConvertBytesToCert(resp.CertBytes)
-	if err != nil {
-		return errors.New("could not acquire client certificate from response " + err.Error())
-	}
 
-	if err := tls.SaveCert(ncutils.GetNetclientPath()+cfg.Server.Server+"/", "root.pem", &responseCA); err != nil {
+	resp.CA.PublicKey = resp.CAPubKey
+	resp.Cert.PublicKey = resp.CertPubKey
+
+	if err := tls.SaveCert(ncutils.GetNetclientPath()+cfg.Server.Server+"/", "root.pem", &resp.CA); err != nil {
 		return err
 	}
-	if err := tls.SaveCert(ncutils.GetNetclientPath()+cfg.Server.Server+"/", "client.pem", &responseCert); err != nil {
+	if err := tls.SaveCert(ncutils.GetNetclientPath()+cfg.Server.Server+"/", "client.pem", &resp.Cert); err != nil {
 		return err
 	}
 	if err := tls.SaveKey(ncutils.GetNetclientPath(), "client.key", private); err != nil {