aboutsummaryrefslogtreecommitdiff
path: root/file.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-04-29 15:44:29 +0200
committerDimitri Sokolyuk <demon@dim13.org>2017-04-29 15:44:29 +0200
commit1a87fe8789699298eccbecc93e8016a73283cfec (patch)
tree24cd5388e45d3cbb2d4636a538b94b3f36a3b16b /file.go
parent8882c1c6387cdd61e9e0ab7f5607eb6b93a0d330 (diff)
...
Diffstat (limited to 'file.go')
-rw-r--r--file.go64
1 files changed, 62 insertions, 2 deletions
diff --git a/file.go b/file.go
index 91b855c..9de3f95 100644
--- a/file.go
+++ b/file.go
@@ -14,12 +14,44 @@ import (
type EncFile struct {
Comment string
- Key *EncKey
+ Enc *EncKey
+}
+
+func ParseEnc(r io.Reader) (*EncFile, error) {
+ comment, raw, _, err := read(r)
+ if err != nil {
+ return nil, err
+ }
+ enc := new(EncKey)
+ if err := Unmarshal(raw, enc); err != nil {
+ return nil, err
+ }
+ return &EncFile{Comment: comment, Enc: enc}, nil
+}
+
+func WriteEnc(w io.Writer, enc *EncFile) error {
+ raw, err := Marshal(enc.Enc)
+ if err != nil {
+ return err
+ }
+ return write(w, enc.Comment, raw, nil)
}
type PubFile struct {
Comment string
- Key *PubKey
+ Pub *PubKey
+}
+
+func ParsePub(r io.Reader) (*PubFile, error) {
+ comment, raw, _, err := read(r)
+ if err != nil {
+ return nil, err
+ }
+ pub := new(PubKey)
+ if err := Unmarshal(raw, pub); err != nil {
+ return nil, err
+ }
+ return &PubFile{Comment: comment, Pub: pub}, nil
}
type SigFile struct {
@@ -28,6 +60,34 @@ type SigFile struct {
Message []byte
}
+func WritePub(w io.Writer, pub *PubFile) error {
+ raw, err := Marshal(pub.Pub)
+ if err != nil {
+ return err
+ }
+ return write(w, pub.Comment, raw, nil)
+}
+
+func ParseSig(r io.Reader) (*SigFile, error) {
+ comment, raw, message, err := read(r)
+ if err != nil {
+ return nil, err
+ }
+ sig := new(Sig)
+ if err := Unmarshal(raw, sig); err != nil {
+ return nil, err
+ }
+ return &SigFile{Comment: comment, Sig: sig, Message: message}, nil
+}
+
+func WriteSig(w io.Writer, sig *SigFile) error {
+ raw, err := Marshal(sig.Sig)
+ if err != nil {
+ return err
+ }
+ return write(w, sig.Comment, raw, sig.Message)
+}
+
type File struct {
Comment string
RawKey []byte