OSDN Git Service

add package
[bytom/vapor.git] / vendor / github.com / libp2p / go-libp2p-crypto / ecdsa_test.go
diff --git a/vendor/github.com/libp2p/go-libp2p-crypto/ecdsa_test.go b/vendor/github.com/libp2p/go-libp2p-crypto/ecdsa_test.go
new file mode 100644 (file)
index 0000000..328b9a7
--- /dev/null
@@ -0,0 +1,96 @@
+package crypto
+
+import (
+       "crypto/rand"
+       "testing"
+)
+
+func TestECDSABasicSignAndVerify(t *testing.T) {
+       priv, pub, err := GenerateECDSAKeyPair(rand.Reader)
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       data := []byte("hello! and welcome to some awesome crypto primitives")
+
+       sig, err := priv.Sign(data)
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       ok, err := pub.Verify(data, sig)
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       if !ok {
+               t.Fatal("signature didnt match")
+       }
+
+       // change data
+       data[0] = ^data[0]
+       ok, err = pub.Verify(data, sig)
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       if ok {
+               t.Fatal("signature matched and shouldn't")
+       }
+}
+
+func TestECDSASignZero(t *testing.T) {
+       priv, pub, err := GenerateECDSAKeyPair(rand.Reader)
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       data := make([]byte, 0)
+       sig, err := priv.Sign(data)
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       ok, err := pub.Verify(data, sig)
+       if err != nil {
+               t.Fatal(err)
+       }
+       if !ok {
+               t.Fatal("signature didn't match")
+       }
+}
+
+func TestECDSAMarshalLoop(t *testing.T) {
+       priv, pub, err := GenerateECDSAKeyPair(rand.Reader)
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       privB, err := priv.Bytes()
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       privNew, err := UnmarshalPrivateKey(privB)
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       if !priv.Equals(privNew) || !privNew.Equals(priv) {
+               t.Fatal("keys are not equal")
+       }
+
+       pubB, err := pub.Bytes()
+       if err != nil {
+               t.Fatal(err)
+       }
+       pubNew, err := UnmarshalPublicKey(pubB)
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       if !pub.Equals(pubNew) || !pubNew.Equals(pub) {
+               t.Fatal("keys are not equal")
+       }
+
+}