From 2f4094a0eec39152c599ec4a8f452dd4a4f6577d Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 7 Mar 2016 02:42:34 +0100 Subject: Parse Leaf --- cmd/acme/file.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'cmd/acme/file.go') diff --git a/cmd/acme/file.go b/cmd/acme/file.go index c639fe9..dbc8bd1 100644 --- a/cmd/acme/file.go +++ b/cmd/acme/file.go @@ -3,6 +3,7 @@ package main import ( "crypto" "crypto/tls" + "crypto/x509" "io" "os" "path" @@ -13,7 +14,7 @@ import ( func NewFile(fname string, mode os.FileMode) (io.WriteCloser, error) { err := os.Rename(fname, fname+".bak") - if nerr, ok := err.(*os.LinkError); ok && nerr.Err != syscall.ENOENT { + if e, ok := err.(*os.LinkError); ok && e.Err != syscall.ENOENT { return nil, err } flags := os.O_WRONLY | os.O_CREATE | os.O_TRUNC @@ -51,7 +52,12 @@ func (d domain) Save(cert tls.Certificate) error { } func (d domain) Load() (tls.Certificate, error) { - return tls.LoadX509KeyPair(d.CrtFile, d.KeyFile) + crt, err := tls.LoadX509KeyPair(d.CrtFile, d.KeyFile) + if e, ok := err.(*os.PathError); ok && e.Err != syscall.ENOENT { + return tls.Certificate{}, nil + } + crt.Leaf, err = x509.ParseCertificate(crt.Certificate[0]) + return crt, err } func (a account) Save(key crypto.PrivateKey) error { -- cgit v1.2.3