From 65558011b5d957a9af03f4e18306bf0625c28804 Mon Sep 17 00:00:00 2001
From: Lesterpig <git@lesterpig.com>
Date: Fri, 27 May 2016 17:08:14 +0200
Subject: [PATCH] [c] Fix unregister command

---
 dfssc/cmd/unregister.go  |  5 +++--
 dfssc/user/unregister.go | 30 +++++++++++++++++-------------
 2 files changed, 20 insertions(+), 15 deletions(-)

diff --git a/dfssc/cmd/unregister.go b/dfssc/cmd/unregister.go
index 32a05cc..97e9054 100644
--- a/dfssc/cmd/unregister.go
+++ b/dfssc/cmd/unregister.go
@@ -22,14 +22,15 @@ var unregisterCmd = &cobra.Command{
 		}
 
 		// Confirmation
-		var ready string
+		var passphrase, ready string
+		_ = readPassword(&passphrase, false)
 		readStringParam("Do you REALLY want to delete "+cert.Subject.CommonName+"? Type 'yes' to confirm", "", &ready)
 		if ready != "yes" {
 			fmt.Fprintln(os.Stderr, "Unregistering aborted!")
 			os.Exit(1)
 		}
 
-		err = user.Unregister()
+		err = user.Unregister(passphrase)
 		if err != nil {
 			fmt.Fprintln(os.Stderr, "Cannot unregister:", err.Error())
 			os.Exit(2)
diff --git a/dfssc/user/unregister.go b/dfssc/user/unregister.go
index 428922e..a218b1d 100644
--- a/dfssc/user/unregister.go
+++ b/dfssc/user/unregister.go
@@ -1,31 +1,35 @@
 package user
 
 import (
-	"errors"
-
-	pb "dfss/dfssp/api"
+	"dfss/dfssc/common"
+	"dfss/dfssc/security"
+	"dfss/dfssp/api"
 	"dfss/net"
+	"github.com/spf13/viper"
 	"golang.org/x/net/context"
-	"google.golang.org/grpc"
 )
 
 // Unregister a user from the platform
-func Unregister() error {
-	client, err := connect()
+func Unregister(passphrase string) error {
+	auth := security.NewAuthContainer(passphrase)
+	ca, cert, key, err := auth.LoadFiles()
+	if err != nil {
+		return err
+	}
+
+	conn, err := net.Connect(viper.GetString("platform_addrport"), cert, key, ca, nil)
 	if err != nil {
 		return err
 	}
 
-	// Stop the context if it takes too long for the platform to answer
+	client := api.NewPlatformClient(conn)
 	ctx, cancel := context.WithTimeout(context.Background(), net.DefaultTimeout)
 	defer cancel()
-	response, err := client.Unregister(ctx, &pb.Empty{})
+	response, err := client.Unregister(ctx, &api.Empty{})
+
 	if err != nil {
-		return errors.New(grpc.ErrorDesc(err))
-	}
-	if response.Code != pb.ErrorCode_SUCCESS {
-		return errors.New(response.Message)
+		return err
 	}
 
-	return nil
+	return common.EvaluateErrorCodeResponse(response)
 }
-- 
GitLab