github.com/s7techlab/cckit@v0.10.5/extensions/ecdh/ecdh_test.go (about)

     1  package ecdh_test
     2  
     3  import (
     4  	"crypto/ecdsa"
     5  	"crypto/elliptic"
     6  	"fmt"
     7  	"testing"
     8  
     9  	"github.com/s7techlab/cckit/extensions/ecdh"
    10  	"github.com/s7techlab/cckit/identity/testdata"
    11  
    12  	. "github.com/onsi/ginkgo"
    13  	. "github.com/onsi/gomega"
    14  )
    15  
    16  func TestDebug(t *testing.T) {
    17  	RegisterFailHandler(Fail)
    18  	RunSpecs(t, "ECDH suite")
    19  }
    20  
    21  // load actor certificates
    22  var (
    23  	pubKey1 = testdata.Certificates[0].MustCert().PublicKey.(*ecdsa.PublicKey)
    24  	pubKey2 = testdata.Certificates[1].MustCert().PublicKey.(*ecdsa.PublicKey)
    25  	pubKey3 = testdata.Certificates[2].MustCert().PublicKey.(*ecdsa.PublicKey)
    26  
    27  	privKey1 = testdata.Certificates[0].MustPKey()
    28  	privKey2 = testdata.Certificates[1].MustPKey()
    29  	privKey3 = testdata.Certificates[2].MustPKey()
    30  )
    31  
    32  var _ = Describe(`ECDH`, func() {
    33  
    34  	It("Allow to create shared key for 2 parties", func() {
    35  
    36  		secret12, err := ecdh.GenerateSharedSecret(privKey1, pubKey2)
    37  		Expect(err).To(BeNil())
    38  		secret21, err := ecdh.GenerateSharedSecret(privKey2, pubKey1)
    39  		Expect(err).To(BeNil())
    40  
    41  		Expect(secret12).To(Equal(secret21))
    42  
    43  		secret23, err := ecdh.GenerateSharedSecret(privKey2, pubKey3)
    44  		Expect(err).To(BeNil())
    45  		secret32, err := ecdh.GenerateSharedSecret(privKey3, pubKey2)
    46  		Expect(err).To(BeNil())
    47  
    48  		Expect(secret23).To(Equal(secret32))
    49  
    50  	})
    51  
    52  	It("Allow to create shared key for 3 parties", func() {
    53  
    54  		secret12, err := ecdh.GenerateSharedSecret(privKey1, pubKey2)
    55  		Expect(err).To(BeNil())
    56  
    57  		x, y := elliptic.Unmarshal(pubKey1.Curve, secret12)
    58  
    59  		fmt.Println(x, y)
    60  		//if x == nil || y == nil {
    61  		//	return key, false
    62  		//}
    63  		//key = &ellipticPublicKey{
    64  		//	Curve: e.curve,
    65  		//	X:     x,
    66  		//	Y:     y,
    67  		//}
    68  
    69  	})
    70  
    71  })