From c12bc16015f7b89653f75ba2d27bf0d797bdbc21 Mon Sep 17 00:00:00 2001 From: sloumdrone Date: Wed, 2 Oct 2019 19:25:29 -0700 Subject: [PATCH] Sets certificate to update as SET is called --- client.go | 3 +++ gemini/gemini.go | 14 +++++--------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/client.go b/client.go index a8b7b2f..424cb97 100644 --- a/client.go +++ b/client.go @@ -403,6 +403,9 @@ func (c *client) doCommandAs(action string, values []string) { return } c.Options[values[0]] = lowerCaseOpt(values[0], val) + if values[0] == "tlskey" || values[0] == "tlscertificate" { + c.Certs.LoadCertificate(c.Options["tlscertificate"], c.Options["tlskey"]) + } err := saveConfig() if err != nil { c.SetMessage("Value set, but error saving config to file", true) diff --git a/gemini/gemini.go b/gemini/gemini.go index 9e474fc..14bf788 100644 --- a/gemini/gemini.go +++ b/gemini/gemini.go @@ -24,7 +24,6 @@ type Capsule struct { type TofuDigest struct { certs map[string]string ClientCert tls.Certificate - UseClientCert bool } @@ -33,13 +32,12 @@ type TofuDigest struct { //--------------------------------------------------\\ func (t *TofuDigest) LoadCertificate(cert, key string) { - validClientCert := true certificate, err := tls.LoadX509KeyPair(cert, key) if err != nil { - panic(err) + t.ClientCert = tls.Certificate{} + return } t.ClientCert = certificate - t.UseClientCert = validClientCert } func (t *TofuDigest) Purge(host string) error { @@ -156,10 +154,8 @@ func Retrieve(host, port, resource string, td *TofuDigest) (string, error) { InsecureSkipVerify: true, } - if td.UseClientCert { - conf.GetClientCertificate = func(*tls.CertificateRequestInfo) (*tls.Certificate, error) { - return &td.ClientCert, nil - } + conf.GetClientCertificate = func(*tls.CertificateRequestInfo) (*tls.Certificate, error) { + return &td.ClientCert, nil } conn, err := tls.Dial("tcp", addr, conf) @@ -401,5 +397,5 @@ func MakeCapsule() Capsule { } func MakeTofuDigest() TofuDigest { - return TofuDigest{make(map[string]string), tls.Certificate{}, false} + return TofuDigest{make(map[string]string), tls.Certificate{}} }