From 4b27e95c269496a5b575f6f25f11dd423c6d0fce Mon Sep 17 00:00:00 2001 From: Dan Ballard Date: Mon, 30 Apr 2018 10:01:08 -0700 Subject: [PATCH] only generate private key if keyfile is missing, not on other errors: possible corrupt and loss --- server/server.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/server/server.go b/server/server.go index f616826..a814b4c 100644 --- a/server/server.go +++ b/server/server.go @@ -1,7 +1,6 @@ package server import ( - //"crypto/rsa" "git.mascherari.press/cwtch/server/fetch" "git.mascherari.press/cwtch/server/listen" "git.mascherari.press/cwtch/server/send" @@ -11,6 +10,7 @@ import ( "github.com/s-rah/go-ricochet/utils" "log" + "os" "io/ioutil" ) @@ -19,19 +19,23 @@ type Server struct { func (s *Server) Run(privateKeyFile string) { cwtchserver := new(application.RicochetApplication) - pk, err := utils.LoadPrivateKeyFromFile(privateKeyFile) - if err != nil { + if _, err := os.Stat(privateKeyFile); os.IsNotExist(err) { log.Printf("no private key found!") log.Printf("generating new private key...") - var pk_err error = nil - pk, pk_err = utils.GeneratePrivateKey() + pk, pk_err := utils.GeneratePrivateKey() if pk_err != nil { log.Fatalf("error generating new private key: %v", err) } ioutil.WriteFile(privateKeyFile, []byte(utils.PrivateKeyToString(pk)), 0400) } + pk, err := utils.LoadPrivateKeyFromFile(privateKeyFile) + + if err != nil { + log.Fatalf("error reading private key file: %v", err) + } + l, err := application.SetupOnion("127.0.0.1:9051", "tcp4", "", pk, 9878) if err != nil {