aboutsummaryrefslogtreecommitdiff
path: root/helper.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-11-28 11:46:10 +0100
committerDimitri Sokolyuk <demon@dim13.org>2015-11-28 11:46:10 +0100
commit97828222b81a87b6fb5eeb6ecda33326e7402170 (patch)
tree1159f34a7362d774ba629af553169bc767c820a1 /helper.go
parentab1cab0db527ae0ae4a72b8895233eb99ec3fd34 (diff)
Add key save/load
Diffstat (limited to 'helper.go')
-rw-r--r--helper.go40
1 files changed, 40 insertions, 0 deletions
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)
+}