aboutsummaryrefslogtreecommitdiff
path: root/crypto.go
diff options
context:
space:
mode:
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)
+}