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