1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
// Copyright (c) 2018, Google LLC All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package tpm2
import (
"crypto/sha256"
"testing"
. "github.com/google/go-tpm/legacy/tpm2"
)
func BenchmarkRSA2048Signing(b *testing.B) {
b.StopTimer()
rw := openTPM(b)
defer rw.Close()
pub := Public{
Type: AlgRSA,
NameAlg: AlgSHA256,
Attributes: FlagSign | FlagSensitiveDataOrigin | FlagUserWithAuth,
RSAParameters: &RSAParams{
Sign: &SigScheme{
Alg: AlgRSASSA,
Hash: AlgSHA256,
},
KeyBits: 2048,
},
}
signerHandle, _, err := CreatePrimary(rw, HandleOwner, pcrSelection7, emptyPassword, defaultPassword, pub)
if err != nil {
b.Fatalf("CreatePrimary failed: %v", err)
}
defer FlushContext(rw, signerHandle)
digest := sha256.Sum256([]byte("randomString"))
b.StartTimer()
for i := 0; i < b.N; i++ {
if _, err := Sign(rw, signerHandle, defaultPassword, digest[:], nil, pub.RSAParameters.Sign); err != nil {
b.Fatalf("Signing failed: %v", err)
}
}
}
func BenchmarkECCNISTP256Signing(b *testing.B) {
b.StopTimer()
rw := openTPM(b)
defer rw.Close()
skipOnUnsupportedAlg(b, rw, AlgECC)
pub := Public{
Type: AlgECC,
NameAlg: AlgSHA256,
Attributes: FlagSign | FlagSensitiveDataOrigin | FlagUserWithAuth,
ECCParameters: &ECCParams{
Sign: &SigScheme{
Alg: AlgECDSA,
Hash: AlgSHA256,
},
CurveID: CurveNISTP256,
},
}
signerHandle, _, err := CreatePrimary(rw, HandleOwner, pcrSelection7, emptyPassword, defaultPassword, pub)
if err != nil {
b.Fatalf("CreatePrimary failed: %v", err)
}
defer FlushContext(rw, signerHandle)
digest := sha256.Sum256([]byte("randomString"))
b.StartTimer()
for i := 0; i < b.N; i++ {
if _, err := Sign(rw, signerHandle, defaultPassword, digest[:], nil, pub.ECCParameters.Sign); err != nil {
b.Fatalf("Signing failed: %v", err)
}
}
}
|