@@ -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
@@ -58,7 +62,7 @@ const (
5862)
5963
6064// New takes in a socket and start to listen to it, and create a server
61- func New (ctx context.Context , unixSock string , a agent.AttestationAgent , logger logging.Logger , launchSpec spec.LaunchSpec , clients * AttestClients ) (* TeeServer , error ) {
65+ func New (ctx context.Context , unixSock string , a agent.AttestationAgent , logger logging.Logger , launchSpec spec.LaunchSpec , clients AttestClients ) (* TeeServer , error ) {
6266 var err error
6367 nl , err := net .Listen ("unix" , unixSock )
6468 if err != nil {
@@ -88,8 +92,8 @@ func (a *attestHandler) Handler() http.Handler {
8892 // curl -d '{"audience":"<aud>", "nonces":["<nonce1>"]}' -H "Content-Type: application/json" -X POST
8993 // --unix-socket /tmp/container_launcher/teeserver.sock http://localhost/v1/token
9094
91- mux .HandleFunc ("/v1/token" , a .getToken )
92- mux .HandleFunc ("/v1/intel/token" , a .getITAToken )
95+ mux .HandleFunc (gcaEndpoint , a .getToken )
96+ mux .HandleFunc (itaEndpoint , a .getITAToken )
9397 return mux
9498}
9599
@@ -105,16 +109,13 @@ func (a *attestHandler) logAndWriteError(errStr string, status int, w http.Respo
105109func (a * attestHandler ) getToken (w http.ResponseWriter , r * http.Request ) {
106110 w .Header ().Set ("Content-Type" , "text/html" )
107111
108- // If the handler does not have a GCA client, create one.
109- if a .clients .GCA == nil {
110- gcaClient , err := util .NewRESTClient (a .ctx , a .launchSpec .AttestationServiceAddr , a .launchSpec .ProjectID , a .launchSpec .Region )
111- if err != nil {
112- errStr := fmt .Sprintf ("failed to create REST verifier client: %v" , err )
113- a .logAndWriteError (errStr , http .StatusInternalServerError , w )
114- return
115- }
112+ a .logger .Info (fmt .Sprintf ("%s called" , gcaEndpoint ))
116113
117- a .clients .GCA = gcaClient
114+ // If the handler does not have an GCA client, return error.
115+ if a .clients .GCA == nil {
116+ errStr := "no GCA verifier client present, please try rebooting your VM"
117+ a .logAndWriteError (errStr , http .StatusInternalServerError , w )
118+ return
118119 }
119120
120121 a .attest (w , r , a .clients .GCA )
@@ -124,10 +125,12 @@ func (a *attestHandler) getToken(w http.ResponseWriter, r *http.Request) {
124125func (a * attestHandler ) getITAToken (w http.ResponseWriter , r * http.Request ) {
125126 w .Header ().Set ("Content-Type" , "text/html" )
126127
128+ a .logger .Info (fmt .Sprintf ("%s called" , itaEndpoint ))
129+
127130 // If the handler does not have an ITA client, return error.
128131 if a .clients .ITA == nil {
129132 errStr := "no ITA verifier client present - ensure ITA Region and Key are defined in metadata"
130- a .logAndWriteError (errStr , http .StatusPreconditionFailed , w )
133+ a .logAndWriteError (errStr , http .StatusInternalServerError , w )
131134 return
132135 }
133136
@@ -176,11 +179,10 @@ func (a *attestHandler) attest(w http.ResponseWriter, r *http.Request, client ve
176179 }
177180
178181 // Do not check that TokenTypeOptions matches TokenType in the launcher.
179-
180- tok , err := a .attestAgent .AttestWithClient (a .ctx , agent.AttestAgentOpts {
182+ opts := agent.AttestAgentOpts {
181183 TokenOptions : & tokenOptions ,
182- }, client )
183-
184+ }
185+ tok , err := a . attestAgent . AttestWithClient ( a . ctx , opts , client )
184186 if err != nil {
185187 a .handleAttestError (w , err , "failed to retrieve custom attestation service token" )
186188 return
0 commit comments