Skip to content

Commit 08be6c0

Browse files
authored
Merge pull request #54 from qmuntal/bench-sign1
add Sign1Message benchmarks
2 parents 52f40e3 + 9b59e6b commit 08be6c0

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed

bench_test.go

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
package cose_test
2+
3+
import (
4+
"io"
5+
"testing"
6+
7+
"github.com/veraison/go-cose"
8+
)
9+
10+
func newSign1Message() *cose.Sign1Message {
11+
return &cose.Sign1Message{
12+
Headers: cose.Headers{
13+
Protected: cose.ProtectedHeader{
14+
cose.HeaderLabelAlgorithm: cose.AlgorithmES256,
15+
},
16+
Unprotected: cose.UnprotectedHeader{
17+
cose.HeaderLabelKeyID: 1,
18+
},
19+
},
20+
Payload: make([]byte, 100),
21+
Signature: make([]byte, 32),
22+
}
23+
}
24+
25+
type noSigner struct{}
26+
27+
func (noSigner) Algorithm() cose.Algorithm {
28+
return cose.AlgorithmES256
29+
}
30+
31+
func (noSigner) Sign(_ io.Reader, digest []byte) ([]byte, error) {
32+
return digest, nil
33+
}
34+
35+
func (noSigner) Verify(_, _ []byte) error {
36+
return nil
37+
}
38+
39+
func BenchmarkSign1Message_MarshalCBOR(b *testing.B) {
40+
msg := newSign1Message()
41+
b.ReportAllocs()
42+
b.ResetTimer()
43+
for i := 0; i < b.N; i++ {
44+
_, err := msg.MarshalCBOR()
45+
if err != nil {
46+
b.Fatal(err)
47+
}
48+
}
49+
}
50+
51+
func BenchmarkSign1Message_UnmarshalCBOR(b *testing.B) {
52+
data, err := newSign1Message().MarshalCBOR()
53+
if err != nil {
54+
b.Fatal(err)
55+
}
56+
b.ReportAllocs()
57+
b.ResetTimer()
58+
for i := 0; i < b.N; i++ {
59+
var m cose.Sign1Message
60+
err = m.UnmarshalCBOR(data)
61+
if err != nil {
62+
b.Fatal(err)
63+
}
64+
}
65+
}
66+
67+
func BenchmarkSign1Message_Sign(b *testing.B) {
68+
msg := newSign1Message()
69+
b.ReportAllocs()
70+
b.ResetTimer()
71+
for i := 0; i < b.N; i++ {
72+
msg.Signature = nil
73+
err := msg.Sign(zeroSource{}, nil, noSigner{})
74+
if err != nil {
75+
b.Fatal(err)
76+
}
77+
}
78+
}
79+
80+
func BenchmarkSign1Message_Verify(b *testing.B) {
81+
msg := newSign1Message()
82+
b.ReportAllocs()
83+
b.ResetTimer()
84+
for i := 0; i < b.N; i++ {
85+
err := msg.Verify(nil, noSigner{})
86+
if err != nil {
87+
b.Fatal(err)
88+
}
89+
}
90+
}

0 commit comments

Comments
 (0)