From 8882c1c6387cdd61e9e0ab7f5607eb6b93a0d330 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Wed, 26 Apr 2017 12:28:26 +0200 Subject: ... --- file.go | 43 +++++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 18 deletions(-) (limited to 'file.go') 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 -- cgit v1.2.3