Skip to content

Commit cf3ab47

Browse files
committed
Remove automatic TEE detection in token command.
1 parent 3fef05b commit cf3ab47

File tree

2 files changed

+29
-10
lines changed

2 files changed

+29
-10
lines changed

cmd/token.go

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -132,19 +132,38 @@ The OIDC token includes claims regarding the GCE VM, which is verified by Attest
132132
if err != nil {
133133
return fmt.Errorf("failed to get an AK: %w", err)
134134
}
135-
attestation, err := ak.Attest(client.AttestOpts{Nonce: challenge.Nonce, CertChainFetcher: http.DefaultClient})
135+
136+
attestOpts := client.AttestOpts{Nonce: challenge.Nonce, CertChainFetcher: http.DefaultClient}
137+
138+
// Add logic to open other hardware devices when required.
139+
switch teeTechnology {
140+
case SevSnp:
141+
attestOpts.TEEDevice, err = client.CreateSevSnpQuoteProvider()
142+
if err != nil {
143+
return fmt.Errorf("failed to open %s device: %v", SevSnp, err)
144+
}
145+
attestOpts.TEENonce = teeNonce
146+
case Tdx:
147+
attestOpts.TEEDevice, err = client.CreateTdxQuoteProvider()
148+
if err != nil {
149+
return fmt.Errorf("failed to create %s quote provider: %v", Tdx, err)
150+
}
151+
attestOpts.TEENonce = teeNonce
152+
case "":
153+
if len(teeNonce) != 0 {
154+
return fmt.Errorf("use of --tee-nonce requires specifying TEE hardware type with --tee-technology")
155+
}
156+
default:
157+
// Change the return statement when more devices are added
158+
return fmt.Errorf("tee-technology should be either empty or should have values %s or %s", SevSnp, Tdx)
159+
}
160+
161+
attestation, err := ak.Attest(attestOpts)
136162
if err != nil {
137163
return fmt.Errorf("failed to attest: %v", err)
138164
}
139165
ak.Close()
140166

141-
// If teeTechnology is not set, try to detect it from the attestation.
142-
if teeTechnology == "" {
143-
if attestation.GetTdxAttestation() != nil {
144-
teeTechnology = Tdx
145-
}
146-
}
147-
148167
req := verifier.VerifyAttestationRequest{
149168
Challenge: challenge,
150169
GcpCredentials: principalTokens,

cmd/token_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,12 +86,12 @@ func TestTokenWithGCEAK(t *testing.T) {
8686
}
8787

8888
if op.fail {
89-
RootCmd.SetArgs([]string{"token", "--algo", op.algo, "--output", secretFile1, "--verifier-endpoint", mockAttestationServer.Server.URL, "--cloud-log", "--audience", util.FakeCustomAudience, "--custom-nonce", "fail test"})
89+
RootCmd.SetArgs([]string{"token", "--algo", op.algo, "--output", secretFile1, "--verifier-endpoint", mockAttestationServer.Server.URL, "--cloud-log", "--audience", util.FakeCustomAudience, "--custom-nonce", "fail test", "--tee-technology", "", "--tee-nonce", ""})
9090
if err := RootCmd.Execute(); err != nil && !strings.Contains(err.Error(), "googleapi: Error 400") {
9191
t.Error(err)
9292
}
9393
} else {
94-
RootCmd.SetArgs([]string{"token", "--algo", op.algo, "--output", secretFile1, "--verifier-endpoint", mockAttestationServer.Server.URL, "--cloud-log", "--audience", util.FakeCustomAudience, "--custom-nonce", util.FakeCustomNonce[0], "--custom-nonce", util.FakeCustomNonce[1]})
94+
RootCmd.SetArgs([]string{"token", "--algo", op.algo, "--output", secretFile1, "--verifier-endpoint", mockAttestationServer.Server.URL, "--cloud-log", "--audience", util.FakeCustomAudience, "--custom-nonce", util.FakeCustomNonce[0], "--custom-nonce", util.FakeCustomNonce[1], "--tee-technology", "", "--tee-nonce", ""})
9595
if err := RootCmd.Execute(); err != nil {
9696
t.Error(err)
9797
}

0 commit comments

Comments
 (0)