aboutsummaryrefslogtreecommitdiff
path: root/file.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-04-26 12:28:26 +0200
committerDimitri Sokolyuk <demon@dim13.org>2017-04-26 12:28:26 +0200
commit8882c1c6387cdd61e9e0ab7f5607eb6b93a0d330 (patch)
tree97315d2d53e6b1006e3f2da90bbeaa5d6e64385f /file.go
parent78518feb5f0791f8fbb95a571243d940ebdc044b (diff)
...
Diffstat (limited to 'file.go')
-rw-r--r--file.go43
1 files changed, 25 insertions, 18 deletions
diff --git a/file.go b/file.go
index 93dbd6d..91b855c 100644
--- a/file.go
+++ b/file.go
@@ -25,7 +25,7 @@ type PubFile struct {
type SigFile struct {
Comment string
Sig *Sig
- Message string
+ Message []byte
}
type File struct {
@@ -59,33 +59,36 @@ func (f *File) Embedded() bool {
return len(f.Message) > 0
}
-func (f *File) ReadFrom(r io.Reader) error {
+func read(r io.Reader) (string, []byte, []byte, error) {
buf := bufio.NewReader(r)
-
comment, err := buf.ReadString('\n')
if err != nil {
- return err
+ return "", nil, nil, err
}
if err := checkComment(comment); err != nil {
- return err
+ return "", nil, nil, err
}
- f.Comment = strings.TrimSpace(comment[len(commentHdr):])
-
+ comment = strings.TrimSpace(comment[len(commentHdr):])
raw, err := buf.ReadString('\n')
if err != nil {
- return err
+ return "", nil, nil, err
}
-
- f.RawKey, err = base64.StdEncoding.DecodeString(raw)
+ rawKey, err := base64.StdEncoding.DecodeString(raw)
if err != nil {
- return err
+ return "", nil, nil, err
}
+ message, err := ioutil.ReadAll(buf)
+ if err != nil {
+ return "", nil, nil, err
+ }
+ return comment, rawKey, message, nil
+}
- f.Message, err = ioutil.ReadAll(buf)
+func (f *File) ReadFrom(r io.Reader) (err error) {
+ f.Comment, f.RawKey, f.Message, err = read(r)
if err != nil {
return err
}
-
return nil
}
@@ -114,15 +117,19 @@ func (f File) Bytes() ([]byte, error) {
return buf.Bytes(), nil
}
-func (f File) WriteTo(w io.Writer) error {
- fmt.Fprintln(w, commentHdr, f.Comment)
- fmt.Fprintln(w, base64.StdEncoding.EncodeToString(f.RawKey))
- if f.Message != nil {
- w.Write(f.Message)
+func write(w io.Writer, comment string, key, message []byte) error {
+ fmt.Fprintln(w, commentHdr, comment)
+ fmt.Fprintln(w, base64.StdEncoding.EncodeToString(key))
+ if message != nil {
+ w.Write(message)
}
return nil
}
+func (f File) WriteTo(w io.Writer) error {
+ return write(w, f.Comment, f.RawKey, f.Message)
+}
+
const (
SecMode os.FileMode = 0600
PubMode os.FileMode = 0644