From 959e402ca97a0bb18ba2ad208a6d6cd1b6a91153 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 4 Jan 2016 20:29:05 +0100 Subject: Create*File --- account.go | 8 +------- crypto.go | 18 ++++++++++++++++++ desire.go | 14 ++------------ 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/account.go b/account.go index ccaf8ff..3fa1ae7 100644 --- a/account.go +++ b/account.go @@ -6,8 +6,6 @@ import ( "encoding/base64" "io" "net/mail" - "os" - "path" "strings" "github.com/square/go-jose" @@ -91,11 +89,7 @@ func KeyAuthorization(s Thumber, token string) (string, error) { } func (a *Account) Save(fname string) error { - if err := os.MkdirAll(path.Dir(fname), 0700); err != nil { - return err - } - flags := os.O_WRONLY | os.O_CREATE | os.O_TRUNC - fd, err := os.OpenFile(fname, flags, 0600) + fd, err := CreateKeyFile(fname) if err != nil { return err } diff --git a/crypto.go b/crypto.go index 7ceefcc..c0fbfd0 100644 --- a/crypto.go +++ b/crypto.go @@ -9,6 +9,8 @@ import ( "encoding/pem" "io" "io/ioutil" + "os" + "path" ) func LoadKey(r io.Reader) (*rsa.PrivateKey, error) { @@ -68,3 +70,19 @@ func LoadCert(r io.Reader) (*x509.Certificate, error) { block, _ := pem.Decode(der) return x509.ParseCertificate(block.Bytes) } + +func CreateKeyFile(fname string) (io.WriteCloser, error) { + return createFile(fname, 0700) +} + +func CreateCertFile(fname string) (io.WriteCloser, error) { + return createFile(fname, 0755) +} + +func createFile(fname string, mode os.FileMode) (io.WriteCloser, error) { + if err := os.MkdirAll(path.Dir(fname), mode); err != nil { + return nil, err + } + flags := os.O_WRONLY | os.O_CREATE | os.O_TRUNC + return os.OpenFile(fname, flags, mode&0644) +} diff --git a/desire.go b/desire.go index a687f44..aefeb27 100644 --- a/desire.go +++ b/desire.go @@ -6,8 +6,6 @@ import ( "crypto/x509" "crypto/x509/pkix" "encoding/base64" - "os" - "path" ) type Desire struct { @@ -28,11 +26,7 @@ func NewDesire(altnames []string, size int) (*Desire, error) { } func (d *Desire) SaveKey(fname string) error { - if err := os.MkdirAll(path.Dir(fname), 0700); err != nil { - return err - } - flags := os.O_WRONLY | os.O_CREATE | os.O_TRUNC - fd, err := os.OpenFile(fname, flags, 0600) + fd, err := CreateKeyFile(fname) if err != nil { return err } @@ -41,11 +35,7 @@ func (d *Desire) SaveKey(fname string) error { } func (d *Desire) SaveCert(fname string) error { - if err := os.MkdirAll(path.Dir(fname), 0755); err != nil { - return err - } - flags := os.O_WRONLY | os.O_CREATE | os.O_TRUNC - fd, err := os.OpenFile(fname, flags, 0644) + fd, err := CreateCertFile(fname) if err != nil { return err } -- cgit v1.2.3