aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-01-04 20:29:05 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-01-04 20:29:05 +0100
commit959e402ca97a0bb18ba2ad208a6d6cd1b6a91153 (patch)
treeb45fab0d4501dee9ad014c969a16346124e38d0a
parent9166b6a2acd2c6b42c3b09f054b2a6588758b2bf (diff)
Create*File
-rw-r--r--account.go8
-rw-r--r--crypto.go18
-rw-r--r--desire.go14
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
}