2019-09-14 23:44:19 +00:00
|
|
|
package primitives
|
|
|
|
|
|
|
|
import (
|
2020-03-21 19:42:46 +00:00
|
|
|
"crypto/subtle"
|
2019-09-14 23:44:19 +00:00
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestIdentity_EDH(t *testing.T) {
|
|
|
|
|
|
|
|
id1, _ := InitializeEphemeralIdentity()
|
|
|
|
id2, _ := InitializeEphemeralIdentity()
|
|
|
|
|
2020-03-21 19:42:46 +00:00
|
|
|
k1, err1 := id1.EDH(id2.PublicKey())
|
|
|
|
k2, err2 := id2.EDH(id1.PublicKey())
|
2019-09-14 23:44:19 +00:00
|
|
|
|
2020-03-21 19:42:46 +00:00
|
|
|
if err1 == nil && err2 == nil && subtle.ConstantTimeCompare(k1, k2) == 1 {
|
|
|
|
t.Logf("k1: %x\nk2: %x\n", k1, k2)
|
|
|
|
} else {
|
|
|
|
t.Fatalf("The derived keys should be identical")
|
|
|
|
}
|
2019-09-14 23:44:19 +00:00
|
|
|
|
|
|
|
}
|
2020-03-21 19:42:46 +00:00
|
|
|
|
|
|
|
func BenchmarkEDH(b *testing.B) {
|
|
|
|
id1, _ := InitializeEphemeralIdentity()
|
|
|
|
id2, _ := InitializeEphemeralIdentity()
|
|
|
|
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
|
|
k1, err1 := id1.EDH(id2.PublicKey())
|
|
|
|
k2, err2 := id2.EDH(id1.PublicKey())
|
|
|
|
if err1 == nil && err2 == nil && subtle.ConstantTimeCompare(k1, k2) == 1 {
|
|
|
|
//b.Logf("k1: %x\nk2: %x\n", k1, k2)
|
|
|
|
} else {
|
|
|
|
b.Fatalf("The derived keys should be identical")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|