mirror of
https://github.com/vlang/v.git
synced 2025-09-16 16:02:29 +03:00
crypto: ecdsa module (on top of openssl)
This commit is contained in:
parent
9c0a7e7955
commit
f7cc9d5daa
4 changed files with 522 additions and 0 deletions
63
bench/crypto/ecdsa/ecdsa.go
Normal file
63
bench/crypto/ecdsa/ecdsa.go
Normal file
|
@ -0,0 +1,63 @@
|
|||
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)
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue