diff options
Diffstat (limited to 'go')
-rw-r--r-- | go/bls/bls.go | 6 | ||||
-rw-r--r-- | go/bls/bls_test.go | 14 |
2 files changed, 20 insertions, 0 deletions
diff --git a/go/bls/bls.go b/go/bls/bls.go index 2812697..61a96f5 100644 --- a/go/bls/bls.go +++ b/go/bls/bls.go @@ -288,3 +288,9 @@ func (sign *Sign) Verify(pub *PublicKey, m string) bool { func (sign *Sign) VerifyPop(pub *PublicKey) bool { return C.blsVerifyPop(sign.getPointer(), pub.getPointer()) == 1 } + +// DHKeyExchange -- +func DHKeyExchange(sec *SecretKey, pub *PublicKey) (out PublicKey) { + C.blsDHKeyExchange(out.getPointer(), sec.getPointer(), pub.getPointer()) + return out +} diff --git a/go/bls/bls_test.go b/go/bls/bls_test.go index 31f7f8a..998dd1f 100644 --- a/go/bls/bls_test.go +++ b/go/bls/bls_test.go @@ -305,6 +305,19 @@ func testOrder(t *testing.T, c int) { } } +func testDHKeyExchange(t *testing.T) { + var sec1, sec2 SecretKey + sec1.SetByCSPRNG() + sec2.SetByCSPRNG() + pub1 := sec1.GetPublicKey() + pub2 := sec2.GetPublicKey() + out1 := DHKeyExchange(&sec1, pub2) + out2 := DHKeyExchange(&sec2, pub1) + if !out1.IsEqual(&out2) { + t.Errorf("DH key is not equal") + } +} + func test(t *testing.T, c int) { err := Init(c) if err != nil { @@ -321,6 +334,7 @@ func test(t *testing.T, c int) { testData(t) testStringConversion(t) testOrder(t, c) + testDHKeyExchange(t) } func TestMain(t *testing.T) { |