@@ -14,11 +14,15 @@ import (
1414 "github.com/google/go-tpm-tools/launcher/spec"
1515 "github.com/google/go-tpm-tools/verifier"
1616 "github.com/google/go-tpm-tools/verifier/models"
17- "github.com/google/go-tpm-tools/verifier/util"
1817 "google.golang.org/grpc/codes"
1918 "google.golang.org/grpc/status"
2019)
2120
21+ const (
22+ gcaEndpoint = "/v1/token"
23+ itaEndpoint = "/v1/intel/token"
24+ )
25+
2226var clientErrorCodes = map [codes.Code ]struct {}{
2327 codes .InvalidArgument : {},
2428 codes .FailedPrecondition : {},
@@ -43,7 +47,7 @@ type attestHandler struct {
4347 // defaultTokenFile string
4448 logger logging.Logger
4549 launchSpec spec.LaunchSpec
46- clients * AttestClients
50+ clients AttestClients
4751}
4852
4953// TeeServer is a server that can be called from a container through a unix
@@ -54,7 +58,7 @@ type TeeServer struct {
5458}
5559
5660// New takes in a socket and start to listen to it, and create a server
57- func New (ctx context.Context , unixSock string , a agent.AttestationAgent , logger logging.Logger , launchSpec spec.LaunchSpec , clients * AttestClients ) (* TeeServer , error ) {
61+ func New (ctx context.Context , unixSock string , a agent.AttestationAgent , logger logging.Logger , launchSpec spec.LaunchSpec , clients AttestClients ) (* TeeServer , error ) {
5862 var err error
5963 nl , err := net .Listen ("unix" , unixSock )
6064 if err != nil {
@@ -84,8 +88,8 @@ func (a *attestHandler) Handler() http.Handler {
8488 // curl -d '{"audience":"<aud>", "nonces":["<nonce1>"]}' -H "Content-Type: application/json" -X POST
8589 // --unix-socket /tmp/container_launcher/teeserver.sock http://localhost/v1/token
8690
87- mux .HandleFunc ("/v1/token" , a .getToken )
88- mux .HandleFunc ("/v1/intel/token" , a .getITAToken )
91+ mux .HandleFunc (gcaEndpoint , a .getToken )
92+ mux .HandleFunc (itaEndpoint , a .getITAToken )
8993 return mux
9094}
9195
@@ -101,16 +105,13 @@ func (a *attestHandler) logAndWriteError(errStr string, status int, w http.Respo
101105func (a * attestHandler ) getToken (w http.ResponseWriter , r * http.Request ) {
102106 w .Header ().Set ("Content-Type" , "text/html" )
103107
104- // If the handler does not have a GCA client, create one.
105- if a .clients .GCA == nil {
106- gcaClient , err := util .NewRESTClient (a .ctx , a .launchSpec .AttestationServiceAddr , a .launchSpec .ProjectID , a .launchSpec .Region )
107- if err != nil {
108- errStr := fmt .Sprintf ("failed to create REST verifier client: %v" , err )
109- a .logAndWriteError (errStr , http .StatusInternalServerError , w )
110- return
111- }
108+ a .logger .Info (fmt .Sprintf ("%s called" , gcaEndpoint ))
112109
113- a .clients .GCA = gcaClient
110+ // If the handler does not have an GCA client, return error.
111+ if a .clients .GCA == nil {
112+ errStr := "no GCA verifier client present, please try rebooting your VM"
113+ a .logAndWriteError (errStr , http .StatusInternalServerError , w )
114+ return
114115 }
115116
116117 a .attest (w , r , a .clients .GCA )
@@ -120,10 +121,12 @@ func (a *attestHandler) getToken(w http.ResponseWriter, r *http.Request) {
120121func (a * attestHandler ) getITAToken (w http.ResponseWriter , r * http.Request ) {
121122 w .Header ().Set ("Content-Type" , "text/html" )
122123
124+ a .logger .Info (fmt .Sprintf ("%s called" , itaEndpoint ))
125+
123126 // If the handler does not have an ITA client, return error.
124127 if a .clients .ITA == nil {
125128 errStr := "no ITA verifier client present - ensure ITA Region and Key are defined in metadata"
126- a .logAndWriteError (errStr , http .StatusPreconditionFailed , w )
129+ a .logAndWriteError (errStr , http .StatusInternalServerError , w )
127130 return
128131 }
129132
@@ -173,11 +176,10 @@ func (a *attestHandler) attest(w http.ResponseWriter, r *http.Request, client ve
173176 }
174177
175178 // Do not check that TokenTypeOptions matches TokenType in the launcher.
176-
177- tok , err := a .attestAgent .AttestWithClient (a .ctx , agent.AttestAgentOpts {
179+ opts := agent.AttestAgentOpts {
178180 TokenOptions : & tokenOptions ,
179- }, client )
180-
181+ }
182+ tok , err := a . attestAgent . AttestWithClient ( a . ctx , opts , client )
181183 if err != nil {
182184 a .handleAttestError (w , err , "failed to retrieve custom attestation service token" )
183185 return
0 commit comments