From 1a87fe8789699298eccbecc93e8016a73283cfec Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 29 Apr 2017 15:44:29 +0200 Subject: ... --- file.go | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 62 insertions(+), 2 deletions(-) (limited to 'file.go') 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 -- cgit v1.2.3