aboutsummaryrefslogtreecommitdiff
path: root/key/sig.go
diff options
context:
space:
mode:
Diffstat (limited to 'key/sig.go')
-rw-r--r--key/sig.go26
1 files changed, 22 insertions, 4 deletions
diff --git a/key/sig.go b/key/sig.go
index 378a0cf..649133e 100644
--- a/key/sig.go
+++ b/key/sig.go
@@ -1,6 +1,11 @@
package key
-import "golang.org/x/crypto/ed25519"
+import (
+ "bytes"
+ "encoding/binary"
+
+ "golang.org/x/crypto/ed25519"
+)
type Sig struct {
PKAlg [2]byte
@@ -26,9 +31,6 @@ func (v *Sig) Verify(message []byte, pub *Pub) error {
return nil
}
-func (v *Sig) MarshalBinary() ([]byte, error) { return Marshal(v) }
-func (v *Sig) UnmarshalBinary(data []byte) error { return Unmarshal(data, v) }
-
// NewSig return parsed signature
func NewSig(data []byte) (*Sig, error) {
sig := new(Sig)
@@ -37,3 +39,19 @@ func NewSig(data []byte) (*Sig, error) {
}
return sig, sig.Validate()
}
+
+func (v *Sig) MarshalBinary() ([]byte, error) {
+ buf := new(bytes.Buffer)
+ if err := binary.Write(buf, binary.BigEndian, v); err != nil {
+ return nil, err
+ }
+ return buf.Bytes(), nil
+}
+
+func (v *Sig) UnmarshalBinary(data []byte) error {
+ buf := bytes.NewReader(data)
+ if err := binary.Read(buf, binary.BigEndian, v); err != nil {
+ return err
+ }
+ return nil
+}