From ab444fef442808f7ff41f70992f19f4b2417841d Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sun, 18 Sep 2016 13:23:50 +0200 Subject: ReadFull --- sig.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 sig.go (limited to 'sig.go') diff --git a/sig.go b/sig.go new file mode 100644 index 0000000..5abea82 --- /dev/null +++ b/sig.go @@ -0,0 +1,34 @@ +package main + +import ( + "bytes" + "encoding/base64" + "io" + + "golang.org/x/crypto/ed25519" +) + +type Sig struct { + PKAlg [2]byte + KeyNum [KeyNumLen]byte + Sig [ed25519.SignatureSize]byte +} + +func (v *Sig) Unmarshal(b []byte) error { + buf := bytes.NewBuffer(b) + dec := base64.NewDecoder(base64.StdEncoding, buf) + io.ReadFull(dec, v.PKAlg[:]) + io.ReadFull(dec, v.KeyNum[:]) + io.ReadFull(dec, v.Sig[:]) + return nil +} + +func (v *Sig) Marshal() ([]byte, error) { + buf := new(bytes.Buffer) + enc := base64.NewEncoder(base64.StdEncoding, buf) + enc.Write(v.PKAlg[:]) + enc.Write(v.KeyNum[:]) + enc.Write(v.Sig[:]) + enc.Close() + return buf.Bytes(), nil +} -- cgit v1.2.3