Skip to content

Commit 1a9dbbc

Browse files
authored
Merge pull request #93 from deeglaze/skipnofetch
Add DisableCertFetching verify_test mode
2 parents 1298952 + a43493f commit 1a9dbbc

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

Diff for: verify/verify.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -474,9 +474,12 @@ func decodeCerts(chain *spb.CertificateChain, key abi.ReportSigner, options *Opt
474474
case abi.VlekReportSigner:
475475
ek = chain.GetVlekCert()
476476
}
477+
if len(ek) == 0 {
478+
return nil, nil, fmt.Errorf("missing %v certificate", key)
479+
}
477480
endorsementKeyCert, err := trust.ParseCert(ek)
478481
if err != nil {
479-
return nil, nil, fmt.Errorf("could not interpret %v DER bytes: %v", key, err)
482+
return nil, nil, fmt.Errorf("could not interpret %v DER bytes %v: %v", key, ek, err)
480483
}
481484
exts, err := validateKDSCertificateProductNonspecific(endorsementKeyCert, key)
482485
if err != nil {

Diff for: verify/verify_test.go

+18-3
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
_ "embed"
2222
"encoding/asn1"
2323
"encoding/pem"
24+
"flag"
2425
"fmt"
2526
"math/big"
2627
"math/rand"
@@ -43,8 +44,10 @@ import (
4344
)
4445

4546
var (
46-
signMu sync.Once
47-
signer *test.AmdSigner
47+
signMu sync.Once
48+
signer *test.AmdSigner
49+
requireCache = flag.Bool("require_cert_cache", true,
50+
"If true, hardware tests depend on host cache of endorsement key certificates")
4851
)
4952

5053
func product() string {
@@ -442,6 +445,7 @@ func TestOpenGetExtendedReportVerifyClose(t *testing.T) {
442445
name string
443446
getter reportGetter
444447
skipVlek bool
448+
skipNoCache bool
445449
badRootErr string
446450
vlekOnly bool
447451
vlekErr string
@@ -459,6 +463,7 @@ func TestOpenGetExtendedReportVerifyClose(t *testing.T) {
459463
badRootErr: "error verifying VCEK certificate",
460464
vlekErr: "VLEK certificate is missing",
461465
vlekBadRootErr: "VLEK certificate is missing",
466+
skipNoCache: true,
462467
},
463468
{
464469
name: "GetReportVlek",
@@ -484,10 +489,16 @@ func TestOpenGetExtendedReportVerifyClose(t *testing.T) {
484489
vlekOnly: true,
485490
badRootErr: "error verifying VLEK certificate",
486491
vlekBadRootErr: "error verifying VLEK certificate",
492+
skipNoCache: true,
487493
},
488494
}
489495
// Trust the test device's root certs.
490-
options := &Options{TrustedRoots: goodRoots, Getter: kds, Product: testProduct(t)}
496+
options := &Options{
497+
TrustedRoots: goodRoots,
498+
Getter: kds,
499+
Product: testProduct(t),
500+
DisableCertFetching: *requireCache && !sg.UseDefaultSevGuest(),
501+
}
491502
badOptions := &Options{TrustedRoots: badRoots, Getter: kds, Product: testProduct(t)}
492503
for _, tc := range tests {
493504
if testclient.SkipUnmockableTestCase(&tc) {
@@ -504,6 +515,10 @@ func TestOpenGetExtendedReportVerifyClose(t *testing.T) {
504515
t.Skip()
505516
return
506517
}
518+
if getReport.skipNoCache && *requireCache {
519+
t.Skip()
520+
return
521+
}
507522
ereport, err := getReport.getter(d, tc.Input)
508523
if !test.Match(err, tc.WantErr) {
509524
t.Fatalf("(d, %v) = %v, %v. Want err: %v", tc.Input, ereport, err, tc.WantErr)

0 commit comments

Comments
 (0)