From c85dd28171031fb112ed5746a901517fcb6ad549 Mon Sep 17 00:00:00 2001 From: Jeromy <jeromyj@gmail.com> Date: Mon, 1 Sep 2014 19:36:03 -0700 Subject: [PATCH] add test for crypto handshake --- identify/identify.go | 7 +++--- identify/identify_test.go | 53 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 identify/identify_test.go diff --git a/identify/identify.go b/identify/identify.go index 3fdb5e0df..a238c4a47 100644 --- a/identify/identify.go +++ b/identify/identify.go @@ -54,6 +54,7 @@ func Handshake(self, remote *peer.Peer, in, out chan []byte) error { out <- encrypted challenge := <-in + // Decrypt challenge and send plaintext to partner plain, err := rsa.DecryptPKCS1v15(rand.Reader, self.PrivKey.(*rsa.PrivateKey), challenge) if err != nil { return err @@ -108,15 +109,15 @@ type KeyPair struct { Priv crypto.PrivateKey } -func GenKeypair() (*KeyPair, error) { - priv, err := rsa.GenerateKey(rand.Reader, 4096) +func GenKeypair(bits int) (*KeyPair, error) { + priv, err := rsa.GenerateKey(rand.Reader, bits) if err != nil { return nil, err } return &KeyPair{ Priv: priv, - Pub: priv.PublicKey, + Pub: &priv.PublicKey, }, nil } diff --git a/identify/identify_test.go b/identify/identify_test.go new file mode 100644 index 000000000..1f932e6fc --- /dev/null +++ b/identify/identify_test.go @@ -0,0 +1,53 @@ +package identify + +import ( + "testing" + + "github.com/jbenet/go-ipfs/peer" +) + +func TestHandshake(t *testing.T) { + kpa, err := GenKeypair(512) + if err != nil { + t.Fatal(err) + } + kpb, err := GenKeypair(512) + if err != nil { + t.Fatal(err) + } + + cha := make(chan []byte, 5) + chb := make(chan []byte, 5) + + ida, err := kpa.ID() + if err != nil { + t.Fatal(err) + } + pa := &peer.Peer{ + ID: ida, + PubKey: kpa.Pub, + PrivKey: kpa.Priv, + } + + idb, err := kpb.ID() + if err != nil { + t.Fatal(err) + } + pb := &peer.Peer{ + ID: idb, + PubKey: kpb.Pub, + PrivKey: kpb.Priv, + } + + go func() { + err := Handshake(pa, pb, cha, chb) + if err != nil { + t.Fatal(err) + } + }() + + err = Handshake(pb, pa, chb, cha) + if err != nil { + t.Fatal(err) + } +} -- GitLab