aboutsummaryrefslogtreecommitdiff
path: root/crypto.go
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 /crypto.go
parent9166b6a2acd2c6b42c3b09f054b2a6588758b2bf (diff)
Create*File
Diffstat (limited to 'crypto.go')
-rw-r--r--crypto.go18
1 files changed, 18 insertions, 0 deletions
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)
+}