From 959e402ca97a0bb18ba2ad208a6d6cd1b6a91153 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 4 Jan 2016 20:29:05 +0100 Subject: Create*File --- crypto.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'crypto.go') 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) +} -- cgit v1.2.3