aboutsummaryrefslogtreecommitdiff
path: root/key/sig.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-07-18 01:14:06 +0200
committerDimitri Sokolyuk <demon@dim13.org>2017-07-18 01:14:06 +0200
commit77a47c251ecac64ed625c7963aa9bb2c4f09fcbd (patch)
treecf544fbae0e4708e787307d8652ee688a3a8b0bc /key/sig.go
parent9016e5ac116959e6795b7e65eab90228be5f0240 (diff)
Split
Diffstat (limited to 'key/sig.go')
-rw-r--r--key/sig.go28
1 files changed, 28 insertions, 0 deletions
diff --git a/key/sig.go b/key/sig.go
new file mode 100644
index 0000000..ecd02c6
--- /dev/null
+++ b/key/sig.go
@@ -0,0 +1,28 @@
+package key
+
+import "golang.org/x/crypto/ed25519"
+
+type Sig struct {
+ PKAlg [2]byte
+ KeyNum [8]byte
+ Sig [ed25519.SignatureSize]byte
+}
+
+func (v *Sig) Check() error {
+ if v.PKAlg != pkAlg {
+ return ErrInvalidPK
+ }
+ return nil
+}
+
+func (v *Sig) MarshalBinary() ([]byte, error) {
+ return Marshal(v)
+}
+
+func ParseSig(data []byte) (*Sig, error) {
+ var sig *Sig
+ if err := Unmarshal(data, sig); err != nil {
+ return nil, err
+ }
+ return sig, sig.Check()
+}