aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-04-30 14:15:04 +0200
committerDimitri Sokolyuk <demon@dim13.org>2017-04-30 14:15:04 +0200
commit62edf30ea7b3985c8d76a0e06a0650e5f179014c (patch)
tree987a4d182eeff274c1029b6cf6c383aee2dc3ef9
parentcf8716e54b78c18ef4bea649451e59c1772ed937 (diff)
...
-rw-r--r--file.go40
-rw-r--r--sig/sig.go8
2 files changed, 48 insertions, 0 deletions
diff --git a/file.go b/file.go
index 0bc7c5d..afbcf26 100644
--- a/file.go
+++ b/file.go
@@ -10,6 +10,8 @@ import (
"io/ioutil"
"os"
"strings"
+
+ "dim13.org/signify/sig"
)
type File struct {
@@ -124,3 +126,41 @@ func (f File) WriteFile(fname string, perm os.FileMode) error {
defer fd.Close()
return f.WriteTo(fd)
}
+
+////////////////////////////////////////////////////////////////////////
+
+func OpenEnc(fname string) (key *EncKey, err error) {
+ block, err := sig.DecodeFile(fname)
+ if err != nil {
+ return nil, err
+ }
+ key := new(EncKey)
+ if err := Unmarshal(block.Bytes, key); err != nil {
+ return nil, err
+ }
+ return key, nil
+}
+
+func OpenPub(fname string) (*PubKey, error) {
+ block, err := sig.DecodeFile(fname)
+ if err != nil {
+ return nil, err
+ }
+ key := new(PubKey)
+ if err := Unmarshal(block.Bytes, key); err != nil {
+ return nil, err
+ }
+ return key, nil
+}
+
+func OpenSig(fname string) (*Sig, error) {
+ block, err := sig.DecodeFile(fname)
+ if err != nil {
+ return nil, err
+ }
+ key := new(Sig)
+ if err := Unmarshal(block.Bytes, key); err != nil {
+ return nil, err
+ }
+ return key, nil
+}
diff --git a/sig/sig.go b/sig/sig.go
index 4e91336..b07a63b 100644
--- a/sig/sig.go
+++ b/sig/sig.go
@@ -67,3 +67,11 @@ func Decode(data []byte) (*Block, error) {
Message: message,
}, nil
}
+
+func DecodeFile(fname string) (*Block, error) {
+ body, err := ioutil.ReadFile(fname)
+ if err != nil {
+ return nil, err
+ }
+ return Decode(body)
+}