OSDN Git Service

Merge pull request #201 from Bytom/v0.1
[bytom/vapor.git] / p2p / signlib / chainkd.go
diff --git a/p2p/signlib/chainkd.go b/p2p/signlib/chainkd.go
new file mode 100644 (file)
index 0000000..b15db25
--- /dev/null
@@ -0,0 +1,43 @@
+package signlib
+
+import (
+       "errors"
+
+       "github.com/vapor/crypto/ed25519/chainkd"
+)
+
+const (
+       PubkeySize     = 64
+       AuthSigMsgSize = 132
+)
+
+var (
+       ErrPubkeyLength = errors.New("pubkey length error")
+)
+
+type PubKey interface {
+       String() string
+       Bytes() []byte
+       Verify(msg []byte, sig []byte) bool
+       MarshalText() ([]byte, error)
+}
+
+type PrivKey interface {
+       Bytes() []byte
+       Sign(msg []byte) []byte
+       XPub() chainkd.XPub
+}
+
+func NewPrivKey() (PrivKey, error) {
+       return chainkd.NewXPrv(nil)
+}
+
+func NewPubKey(pubkey []byte) (PubKey, error) {
+       if len(pubkey) != PubkeySize {
+               return nil, ErrPubkeyLength
+       }
+
+       var pubKey chainkd.XPub
+       copy(pubKey[:], pubkey[:])
+       return pubKey, nil
+}