mirror of
https://github.com/vlang/v.git
synced 2025-08-05 02:37:30 -04:00
64 lines
1.7 KiB
Go
64 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"crypto/ecdsa"
|
|
"crypto/elliptic"
|
|
"crypto/rand"
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
func main() {
|
|
iterations := 1000
|
|
|
|
fmt.Println("Benchmarking key generation...")
|
|
var totalGenTime int64
|
|
for i := 0; i < iterations; i++ {
|
|
start := time.Now()
|
|
_, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
totalGenTime += time.Since(start).Microseconds()
|
|
}
|
|
avgGenTime := totalGenTime / int64(iterations)
|
|
fmt.Printf("Average key generation time: %d µs\n", avgGenTime)
|
|
|
|
privKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
message := []byte("Benchmark message")
|
|
|
|
fmt.Println("Benchmarking signing...")
|
|
var totalSignTime int64
|
|
for i := 0; i < iterations; i++ {
|
|
start := time.Now()
|
|
_, _, err := ecdsa.Sign(rand.Reader, privKey, message)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
totalSignTime += time.Since(start).Microseconds()
|
|
}
|
|
avgSignTime := totalSignTime / int64(iterations)
|
|
fmt.Printf("Average sign time: %d µs\n", avgSignTime)
|
|
|
|
r, s, err := ecdsa.Sign(rand.Reader, privKey, message)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
pubKey := &privKey.PublicKey
|
|
|
|
fmt.Println("Benchmarking verification...")
|
|
var totalVerifyTime int64
|
|
for i := 0; i < iterations; i++ {
|
|
start := time.Now()
|
|
ecdsa.Verify(pubKey, message, r, s)
|
|
totalVerifyTime += time.Since(start).Microseconds()
|
|
}
|
|
avgVerifyTime := totalVerifyTime / int64(iterations)
|
|
fmt.Printf("Average verify time: %d µs\n", avgVerifyTime)
|
|
}
|
|
|