aboutsummaryrefslogtreecommitdiff
path: root/key/sig.go
diff options
context:
space:
mode:
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()
+}