Skip to content

Commit 1c1f733

Browse files
committed
Modified Connector to use new attestation end-point for Azure tdvm. (#100)
1 parent d0c37c8 commit 1c1f733

File tree

15 files changed

+39
-35
lines changed

15 files changed

+39
-35
lines changed

go-connector/attest.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func (connector *trustAuthorityConnector) Attest(args AttestArgs) (AttestRespons
2424
return response, errors.Errorf("Failed to collect evidence from adapter: %s", err)
2525
}
2626

27-
tokenResponse, err := connector.GetToken(GetTokenArgs{nil, evidence, args.PolicyIds, args.RequestId, args.TokenSigningAlg})
27+
tokenResponse, err := connector.GetToken(GetTokenArgs{nonceResponse.Nonce, evidence, args.PolicyIds, args.RequestId, args.TokenSigningAlg})
2828
response.Token, response.Headers = tokenResponse.Token, tokenResponse.Headers
2929
if err != nil {
3030
return response, errors.Errorf("Failed to collect token from Trust Authority: %s", err)

go-connector/attest_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func TestAttest(t *testing.T) {
2626
connector, mux, _, teardown := setup()
2727
defer teardown()
2828

29-
mux.HandleFunc("/appraisal/v1/nonce", func(w http.ResponseWriter, r *http.Request) {
29+
mux.HandleFunc(nonceEndpoint, func(w http.ResponseWriter, r *http.Request) {
3030
w.WriteHeader(http.StatusOK)
3131
w.Write([]byte(`{"val":"` + nonceVal + `","iat":"` + nonceIat + `","signature":"` + nonceSig + `"}`))
3232
})
@@ -35,7 +35,7 @@ func TestAttest(t *testing.T) {
3535
evidence := &Evidence{}
3636
adapter.On("CollectEvidence", mock.Anything).Return(evidence, nil)
3737

38-
mux.HandleFunc("/appraisal/v1/attest", func(w http.ResponseWriter, r *http.Request) {
38+
mux.HandleFunc(attestEndpoint, func(w http.ResponseWriter, r *http.Request) {
3939
w.WriteHeader(http.StatusOK)
4040
w.Write([]byte(`{"token":"` + token + `"}`))
4141
})
@@ -50,15 +50,15 @@ func TestAttest_nonceFailure(t *testing.T) {
5050
connector, mux, _, teardown := setup()
5151
defer teardown()
5252

53-
mux.HandleFunc("/appraisal/v1/nonce", func(w http.ResponseWriter, r *http.Request) {
53+
mux.HandleFunc(nonceEndpoint, func(w http.ResponseWriter, r *http.Request) {
5454
w.WriteHeader(http.StatusOK)
5555
w.Write([]byte(`invalid nonce`))
5656
})
5757

5858
adapter := MockAdapter{}
5959
adapter.On("CollectEvidence", mock.Anything).Return(mock.Anything, nil)
6060

61-
mux.HandleFunc("/appraisal/v1/attest", func(w http.ResponseWriter, r *http.Request) {
61+
mux.HandleFunc(attestEndpoint, func(w http.ResponseWriter, r *http.Request) {
6262
w.WriteHeader(http.StatusOK)
6363
w.Write([]byte(`{"token":"` + token + `"}`))
6464
})
@@ -96,7 +96,7 @@ func TestAttest_evidenceFailure(t *testing.T) {
9696
connector, mux, _, teardown := setup()
9797
defer teardown()
9898

99-
mux.HandleFunc("/appraisal/v1/nonce", func(w http.ResponseWriter, r *http.Request) {
99+
mux.HandleFunc(nonceEndpoint, func(w http.ResponseWriter, r *http.Request) {
100100
w.WriteHeader(http.StatusOK)
101101
w.Write([]byte(`{"val":"` + nonceVal + `","iat":"` + nonceIat + `","signature":"` + nonceSig + `"}`))
102102
})
@@ -105,7 +105,7 @@ func TestAttest_evidenceFailure(t *testing.T) {
105105
evidence := &Evidence{}
106106
adapter.On("CollectEvidence", mock.Anything).Return(evidence, errors.New("failed to collect evidence"))
107107

108-
mux.HandleFunc("/appraisal/v1/attest", func(w http.ResponseWriter, r *http.Request) {
108+
mux.HandleFunc(attestEndpoint, func(w http.ResponseWriter, r *http.Request) {
109109
w.WriteHeader(http.StatusOK)
110110
w.Write([]byte(`{"token":"` + token + `"}`))
111111
})
@@ -120,7 +120,7 @@ func TestAttest_tokenFailure(t *testing.T) {
120120
connector, mux, _, teardown := setup()
121121
defer teardown()
122122

123-
mux.HandleFunc("/appraisal/v1/nonce", func(w http.ResponseWriter, r *http.Request) {
123+
mux.HandleFunc(nonceEndpoint, func(w http.ResponseWriter, r *http.Request) {
124124
w.WriteHeader(http.StatusOK)
125125
w.Write([]byte(`{"val":"` + nonceVal + `","iat":"` + nonceIat + `","signature":"` + nonceSig + `"}`))
126126
})
@@ -129,7 +129,7 @@ func TestAttest_tokenFailure(t *testing.T) {
129129
evidence := &Evidence{}
130130
adapter.On("CollectEvidence", mock.Anything).Return(evidence, nil)
131131

132-
mux.HandleFunc("/appraisal/v1/attest", func(w http.ResponseWriter, r *http.Request) {
132+
mux.HandleFunc(attestEndpoint, func(w http.ResponseWriter, r *http.Request) {
133133
w.WriteHeader(http.StatusOK)
134134
w.Write([]byte(`invalid token`))
135135
})

go-connector/connector.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,11 @@ type AttestResponse struct {
7575

7676
// Evidence is used to store Quote to be sent for Attestation
7777
type Evidence struct {
78-
Type uint32
79-
Evidence []byte
80-
UserData []byte
81-
EventLog []byte
78+
Type uint32
79+
Quote []byte
80+
UserData []byte
81+
EventLog []byte
82+
RuntimeData []byte
8283
}
8384

8485
// RetryConfig holds the configuration for automatic retries to tolerate minor outages

go-connector/const.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ const (
1212
HeaderRequestId = "request-id"
1313
HeaderTraceId = "trace-id"
1414

15+
nonceEndpoint = "/appraisal/v1/nonce"
16+
attestEndpoint = "/appraisal/v1/attest/azure/tdxvm"
17+
1518
mimeApplicationJson = "application/json"
1619
AtsCertChainMaxLen = 10
1720
MaxRetries = 2

go-connector/nonce.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ package connector
77

88
import (
99
"encoding/json"
10-
"fmt"
1110
"io"
1211
"net/http"
1312

@@ -16,7 +15,7 @@ import (
1615

1716
// GetNonce is used to get Intel Trust Authority signed nonce
1817
func (connector *trustAuthorityConnector) GetNonce(args GetNonceArgs) (GetNonceResponse, error) {
19-
url := fmt.Sprintf("%s/appraisal/v1/nonce", connector.cfg.ApiUrl)
18+
url := connector.cfg.ApiUrl + nonceEndpoint
2019

2120
newRequest := func() (*http.Request, error) {
2221
return http.NewRequest(http.MethodGet, url, nil)

go-connector/nonce_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func TestGetNonce(t *testing.T) {
2222
connector, mux, _, teardown := setup()
2323
defer teardown()
2424

25-
mux.HandleFunc("/appraisal/v1/nonce", func(w http.ResponseWriter, r *http.Request) {
25+
mux.HandleFunc(nonceEndpoint, func(w http.ResponseWriter, r *http.Request) {
2626
w.WriteHeader(http.StatusOK)
2727
w.Write([]byte(`{"val":"` + nonceVal + `","iat":"` + nonceIat + `","signature":"` + nonceSig + `"}`))
2828
})
@@ -51,7 +51,7 @@ func TestGetNonce_invalidNonce(t *testing.T) {
5151
connector, mux, _, teardown := setup()
5252
defer teardown()
5353

54-
mux.HandleFunc("/appraisal/v1/nonce", func(w http.ResponseWriter, r *http.Request) {
54+
mux.HandleFunc(nonceEndpoint, func(w http.ResponseWriter, r *http.Request) {
5555
w.WriteHeader(http.StatusOK)
5656
w.Write([]byte(`invalid nonce`))
5757
})

go-connector/token.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ type tokenRequest struct {
3131
VerifierNonce *VerifierNonce `json:"verifier_nonce,omitempty"`
3232
RuntimeData []byte `json:"runtime_data,omitempty"`
3333
PolicyIds []uuid.UUID `json:"policy_ids,omitempty"`
34-
EventLog []byte `json:"event_log,omitempty"`
34+
UserData []byte `json:"user_data,omitempty"`
3535
TokenSigningAlg string `json:"token_signing_alg,omitempty"`
3636
}
3737

@@ -42,15 +42,15 @@ type AttestationTokenResponse struct {
4242

4343
// GetToken is used to get attestation token from Intel Trust Authority
4444
func (connector *trustAuthorityConnector) GetToken(args GetTokenArgs) (GetTokenResponse, error) {
45-
url := fmt.Sprintf("%s/appraisal/v1/attest", connector.cfg.ApiUrl)
45+
url := connector.cfg.ApiUrl + attestEndpoint
4646

4747
newRequest := func() (*http.Request, error) {
4848
tr := tokenRequest{
49-
Quote: args.Evidence.Evidence,
49+
Quote: args.Evidence.Quote,
5050
VerifierNonce: args.Nonce,
51-
RuntimeData: args.Evidence.UserData,
51+
RuntimeData: args.Evidence.RuntimeData,
5252
PolicyIds: args.PolicyIds,
53-
EventLog: args.Evidence.EventLog,
53+
UserData: args.Evidence.UserData,
5454
TokenSigningAlg: args.TokenSigningAlg,
5555
}
5656

go-connector/token_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ func TestGetToken(t *testing.T) {
3434
connector, mux, _, teardown := setup()
3535
defer teardown()
3636

37-
mux.HandleFunc("/appraisal/v1/attest", func(w http.ResponseWriter, r *http.Request) {
37+
mux.HandleFunc(attestEndpoint, func(w http.ResponseWriter, r *http.Request) {
3838
w.WriteHeader(http.StatusOK)
3939
w.Write([]byte(`{"token":"` + token + `"}`))
4040
})
@@ -51,7 +51,7 @@ func TestGetToken_invalidToken(t *testing.T) {
5151
connector, mux, _, teardown := setup()
5252
defer teardown()
5353

54-
mux.HandleFunc("/appraisal/v1/attest", func(w http.ResponseWriter, r *http.Request) {
54+
mux.HandleFunc(attestEndpoint, func(w http.ResponseWriter, r *http.Request) {
5555
w.WriteHeader(http.StatusOK)
5656
w.Write([]byte(`invalid token`))
5757
})

go-sgx/collect_evidence.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ func (adapter *sgxAdapter) CollectEvidence(nonce []byte) (*connector.Evidence, e
8686

8787
return &connector.Evidence{
8888
Type: 0,
89-
Evidence: quote_buffer,
89+
Quote: quote_buffer,
9090
UserData: adapter.uData,
9191
}, nil
9292
}

go-tdx/azure_adapter.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,10 +118,11 @@ func (adapter *azureAdapter) CollectEvidence(nonce []byte) (*connector.Evidence,
118118
}
119119

120120
return &connector.Evidence{
121-
Type: 1,
122-
Evidence: quote,
123-
UserData: runtimeData,
124-
EventLog: eventLog,
121+
Type: 1,
122+
Quote: quote,
123+
UserData: adapter.uData,
124+
EventLog: eventLog,
125+
RuntimeData: runtimeData,
125126
}, nil
126127
}
127128

0 commit comments

Comments
 (0)