OSDN Git Service

update
authorChengcheng Zhang <943420582@qq.com>
Thu, 23 May 2019 09:09:37 +0000 (17:09 +0800)
committerChengcheng Zhang <943420582@qq.com>
Thu, 23 May 2019 09:09:37 +0000 (17:09 +0800)
crypto/csp/util.go
crypto/ed25519/chainkd/chainkd.go
crypto/ed25519/chainkd/util.go
crypto/xkeys.go
testutil/keys.go

index 48a5b74..a464c96 100644 (file)
@@ -22,7 +22,10 @@ func NewXKeys(r io.Reader) (xprv vcrypto.XPrvKeyer, xpub vcrypto.XPubKeyer, err
 func XPubKeys(xpubs []vcrypto.XPubKeyer) []crypto.PublicKey {
        res := make([]crypto.PublicKey, 0, len(xpubs))
        for _, xpub := range xpubs {
-               res = append(res, xpub.PublicKey())
+               switch xpb := xpub.(type) {
+               case edchainkd.XPub:
+                       res = append(res, xpb.PublicKey())
+               }
        }
        return res
 }
@@ -30,8 +33,11 @@ func XPubKeys(xpubs []vcrypto.XPubKeyer) []crypto.PublicKey {
 func DeriveXPubs(xpubs []vcrypto.XPubKeyer, path [][]byte) []vcrypto.XPubKeyer {
        res := make([]vcrypto.XPubKeyer, 0, len(xpubs))
        for _, xpub := range xpubs {
-               d := xpub.Derive(path)
-               res = append(res, d)
+               switch xpb := xpub.(type) {
+               case edchainkd.XPub:
+                       d := xpb.Derive(path)
+                       res = append(res, d)
+               }
        }
        return res
 }
index 9965b23..f0387f0 100644 (file)
@@ -1,7 +1,6 @@
 package chainkd
 
 import (
-       "crypto"
        "crypto/hmac"
        "crypto/rand"
        "crypto/sha512"
@@ -238,11 +237,7 @@ func (xprv XPrv) Sign(msg []byte) []byte {
 // Verify checks an EdDSA signature using public key
 // extracted from the first 32 bytes of the xpub.
 func (xpub XPub) Verify(msg []byte, sig []byte) bool {
-       publicKey := xpub.PublicKey()
-       if pk, ok := publicKey.(ed25519.PublicKey); ok {
-               return ed25519.Verify(pk, msg, sig)
-       }
-       return false
+       return ed25519.Verify(xpub.PublicKey(), msg, sig)
 }
 
 // ExpandedPrivateKey generates a 64-byte key where
@@ -259,7 +254,7 @@ func (xprv XPrv) ExpandedPrivateKey() ExpandedPrivateKey {
 }
 
 // PublicKey extracts the ed25519 public key from an xpub.
-func (xpub XPub) PublicKey() crypto.PublicKey {
+func (xpub XPub) PublicKey() ed25519.PublicKey {
        return ed25519.PublicKey(xpub[:32])
 }
 
index 6b2b747..db67b36 100644 (file)
@@ -25,10 +25,7 @@ func NewXKeys(r io.Reader) (xprv XPrv, xpub XPub, err error) {
 func XPubKeys(xpubs []XPub) []ed25519.PublicKey {
        res := make([]ed25519.PublicKey, 0, len(xpubs))
        for _, xpub := range xpubs {
-               publicKey := xpub.PublicKey()
-               if pk, ok := publicKey.(ed25519.PublicKey); ok {
-                       res = append(res, pk)
-               }
+               res = append(res, xpub.PublicKey())
        }
        return res
 }
index cf03c58..9b331e8 100644 (file)
@@ -1,9 +1,5 @@
 package crypto
 
-import (
-       "crypto"
-)
-
 // var currentCrypt XXXXX
 
 // var (
@@ -14,25 +10,29 @@ import (
 //     currentCrypt = currentCrypto[config。?????]
 // }
 
-type XPrvKeyer interface {
-       // XPub derives an extended public key from a given xprv.
-       XPub() XPubKeyer
-       // Derive generates a child xprv by recursively deriving
-       // non-hardened child xprvs over the list of selectors:
-       // `Derive([a,b,c,...]) == Child(a).Child(b).Child(c)...`
-       Derive(path [][]byte) XPrvKeyer
-       // Sign creates an EdDSA signature using expanded private key
-       // derived from the xprv.
-       Sign(msg []byte) []byte
-}
+type XPrvKeyer interface{}
+
+type XPubKeyer interface{}
 
-type XPubKeyer interface {
-       // PublicKey extracts the public key from an xpub.
-       PublicKey() crypto.PublicKey
-       // Derive generates a child xpub by recursively deriving
-       // non-hardened child xpubs over the list of selectors:
-       // `Derive([a,b,c,...]) == Child(a).Child(b).Child(c)...`
-       Derive(path [][]byte) XPubKeyer
-       // Verify checks an EdDSA signature using public key
-       Verify(msg []byte, sig []byte) bool
-}
+// type XPrvKeyer interface {
+//     // XPub derives an extended public key from a given xprv.
+//     XPub() XPubKeyer
+//     // Derive generates a child xprv by recursively deriving
+//     // non-hardened child xprvs over the list of selectors:
+//     // `Derive([a,b,c,...]) == Child(a).Child(b).Child(c)...`
+//     Derive(path [][]byte) XPrvKeyer
+//     // Sign creates an EdDSA signature using expanded private key
+//     // derived from the xprv.
+//     Sign(msg []byte) []byte
+// }
+
+// type XPubKeyer interface {
+//     // PublicKey extracts the public key from an xpub.
+//     PublicKey() crypto.PublicKey
+//     // Derive generates a child xpub by recursively deriving
+//     // non-hardened child xpubs over the list of selectors:
+//     // `Derive([a,b,c,...]) == Child(a).Child(b).Child(c)...`
+//     Derive(path [][]byte) XPubKeyer
+//     // Verify checks an EdDSA signature using public key
+//     Verify(msg []byte, sig []byte) bool
+// }
index 8c619ed..df7c6be 100644 (file)
@@ -1,16 +1,15 @@
 package testutil
 
 import (
-       "github.com/vapor/crypto"
-       "github.com/vapor/crypto/csp"
        "github.com/vapor/crypto/ed25519"
+       edchainkd "github.com/vapor/crypto/ed25519/chainkd"
 )
 
 var (
-       TestXPub   crypto.XPubKeyer
-       TestXPrv   crypto.XPrvKeyer
-       TestEdPub  ed25519.PublicKey
-       TestEdPubs []ed25519.PublicKey
+       TestXPub edchainkd.XPub
+       TestXPrv edchainkd.XPrv
+       TestPub  ed25519.PublicKey
+       TestPubs []ed25519.PublicKey
 )
 
 type zeroReader struct{}
@@ -24,13 +23,10 @@ func (z zeroReader) Read(buf []byte) (int, error) {
 
 func init() {
        var err error
-       _, TestXPub, err := csp.NewXKeys(zeroReader{})
+       TestXPrv, TestXPub, err = edchainkd.NewXKeys(zeroReader{})
        if err != nil {
                panic(err)
        }
-       TestPub := TestXPub.PublicKey()
-       switch tpk := TestPub.(type) {
-       case ed25519.PublicKey:
-               TestEdPubs = []ed25519.PublicKey{tpk}
-       }
+       TestPub = TestXPub.PublicKey()
+       TestPubs = []ed25519.PublicKey{TestPub}
 }