From 97828222b81a87b6fb5eeb6ecda33326e7402170 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 28 Nov 2015 11:46:10 +0100 Subject: Add key save/load --- helper.go | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'helper.go') diff --git a/helper.go b/helper.go index 0ce20ae..6829fb3 100644 --- a/helper.go +++ b/helper.go @@ -1,10 +1,16 @@ package acme import ( + "crypto/rsa" + "crypto/x509" "encoding/json" + "encoding/pem" "fmt" + "io/ioutil" + "os" ) +// Dump ... func Dump(v interface{}) error { body, err := json.MarshalIndent(v, "", "\t") if err != nil { @@ -14,6 +20,40 @@ func Dump(v interface{}) error { return nil } +// Print ... func Print(v interface{}) (int, error) { return fmt.Printf("%+v\n", v) } + +// Save ... +func Save(fname string, v interface{}) error { + body, err := json.MarshalIndent(v, "", "\t") + if err != nil { + return err + } + return ioutil.WriteFile(fname, body, 0644) +} + +// SaveKey stores RSA private key into file +func SaveKey(fname string, key *rsa.PrivateKey) error { + file, err := os.Create(fname) + if err != nil { + return err + } + defer file.Close() + block := &pem.Block{ + Type: "RSA PRIVATE KEY", + Bytes: x509.MarshalPKCS1PrivateKey(key), + } + return pem.Encode(file, block) +} + +// LoadKey loads RSA private key from file +func LoadKey(fname string) (*rsa.PrivateKey, error) { + file, err := ioutil.ReadFile(fname) + if err != nil { + return nil, err + } + block, _ := pem.Decode(file) + return x509.ParsePKCS1PrivateKey(block.Bytes) +} -- cgit v1.2.3