sidh_torture/csidh/cmd/torturer/main.go

86 lines
1.8 KiB
Go
Raw Normal View History

2019-01-30 16:17:20 +00:00
package main
import (
"bytes"
"crypto/rand"
2019-01-30 16:17:20 +00:00
"fmt"
"time"
"github.com/henrydcase/nobs/dh/csidh"
"github.com/henrydcase/sidh_torture/csidh/ref/go-wrapper"
2019-01-30 16:17:20 +00:00
)
func TestSS() {
var r wrapper.Ref
2019-01-30 20:30:11 +00:00
var ssRef [csidh.SharedSecretSize]byte
var ss [csidh.SharedSecretSize]byte
2019-01-30 16:17:20 +00:00
// Go types
prA := r.KeygenPrv()
pkA := r.KeygenPub(&prA)
prB := csidh.NewPrivateKey()
pkB := csidh.NewPublicKey()
prB.Generate(rand.Reader)
pkB.Generate(&prB)
s1 := time.Now()
// Generate with Go
pkB.DeriveSecret(ss[:], &pkA, &prB)
s2 := time.Since(s1)
// Generate with C
s1 = time.Now()
r.Derive(ssRef[:], &pkB, &prA)
s3 := time.Since(s1)
fmt.Printf("|TestSharedSecret | %.8s | %.8s |\n", s2, s3)
if !bytes.Equal(ss[:], ssRef[:]) {
panic("TestSS")
}
}
func TestKeyGeneration() {
var r wrapper.Ref
2019-01-30 20:30:11 +00:00
var ssRef [csidh.SharedSecretSize]byte
var ss [csidh.SharedSecretSize]byte
2019-01-30 16:17:20 +00:00
// Go types
prA := csidh.NewPrivateKey()
pkA := csidh.NewPublicKey()
prB := csidh.NewPrivateKey()
pkB := csidh.NewPublicKey()
prA.Generate(rand.Reader)
pkA.Generate(&prA)
prB.Generate(rand.Reader)
pkB.Generate(&prB)
s1 := time.Now()
// Generate with Go
r.Derive(ss[:], &pkA, &prB)
s2 := time.Since(s1)
// Generate with C
s1 = time.Now()
r.Derive(ssRef[:], &pkB, &prA)
s3 := time.Since(s1)
fmt.Printf("|TestKeyGeneration | %.8s | %.8s |\n", s2, s3)
if !bytes.Equal(ss[:], ssRef[:]) {
panic("TestKeyGeneration")
}
}
func main() {
fmt.Printf("| TestName |Go | C |\n")
fmt.Printf("|------------------|----------|----------|\n")
2019-01-30 20:30:11 +00:00
// OZAPTF: make configurable
2019-01-30 16:17:20 +00:00
// for i:=0; i<100; i++ {
for {
TestSS()
TestKeyGeneration()
}
}