diff --git a/src/golang/cctrusted_vm/cmd/app/imr.go b/src/golang/cctrusted_vm/cmd/app/imr.go index 985123e..f56211e 100644 --- a/src/golang/cctrusted_vm/cmd/app/imr.go +++ b/src/golang/cctrusted_vm/cmd/app/imr.go @@ -17,7 +17,7 @@ var imrCmd = &cobra.Command{ if err != nil { return err } - report, err := sdk.GetCCReport("", "", nil) + report, err := sdk.GetCCReport(nil, nil, nil) if err != nil { return err } diff --git a/src/golang/cctrusted_vm/cmd/app/report.go b/src/golang/cctrusted_vm/cmd/app/report.go index 4f8aceb..d16d722 100644 --- a/src/golang/cctrusted_vm/cmd/app/report.go +++ b/src/golang/cctrusted_vm/cmd/app/report.go @@ -1,7 +1,6 @@ package app import ( - "encoding/base64" "encoding/binary" "math" "math/rand" @@ -31,14 +30,14 @@ var reportCmd = &cobra.Command{ }, } -func makeNonce() string { +func makeNonce() []byte { num := uint64(rand.Int63n(math.MaxInt64)) b := make([]byte, 8) binary.LittleEndian.PutUint64(b, num) - return base64.StdEncoding.EncodeToString(b) + return b } -func makeUserData() string { +func makeUserData() []byte { b := []byte("demo user data") - return base64.StdEncoding.EncodeToString(b) + return b } diff --git a/src/golang/cctrusted_vm/cvm.go b/src/golang/cctrusted_vm/cvm.go index 3f8731f..d9c12d3 100644 --- a/src/golang/cctrusted_vm/cvm.go +++ b/src/golang/cctrusted_vm/cvm.go @@ -17,7 +17,7 @@ const ( type Device interface { ProbeDevice() error - Report(nonce, userData string, extraArgs map[string]any) (evidence_api.CcReport, error) + Report(nonce, userData []byte, extraArgs map[string]any) (evidence_api.CcReport, error) Name() string CCType() evidence_api.CC_Type Version() evidence_api.DeviceVersion @@ -27,7 +27,7 @@ type GenericDevice struct { Device } -func (d *GenericDevice) Report(nonce, userData string, extraArgs map[string]any) (evidence_api.CcReport, error) { +func (d *GenericDevice) Report(nonce, userData []byte, extraArgs map[string]any) (evidence_api.CcReport, error) { var err error if _, err = os.Stat(TSM_PREFIX); os.IsNotExist(err) { return evidence_api.CcReport{}, errors.New("Configfs TSM is not supported in the current environment.") @@ -36,18 +36,18 @@ func (d *GenericDevice) Report(nonce, userData string, extraArgs map[string]any) // concatenate nonce and userData // check if the data is base64 encoded, if yes, decode before doing hash hasher := sha512.New() - if nonce != "" { - val, err := base64.StdEncoding.DecodeString(nonce) + if nonce != nil { + val, err := base64.StdEncoding.DecodeString(string(nonce)) if err != nil { - hasher.Write([]byte(nonce)) + hasher.Write(nonce) } else { hasher.Write(val) } } - if userData != "" { - val, err := base64.StdEncoding.DecodeString(userData) + if userData != nil { + val, err := base64.StdEncoding.DecodeString(string(userData)) if err != nil { - hasher.Write([]byte(userData)) + hasher.Write(userData) } else { hasher.Write(val) } diff --git a/src/golang/cctrusted_vm/sdk/sdk.go b/src/golang/cctrusted_vm/sdk/sdk.go index be3dd14..a9219c6 100644 --- a/src/golang/cctrusted_vm/sdk/sdk.go +++ b/src/golang/cctrusted_vm/sdk/sdk.go @@ -37,7 +37,7 @@ func (s *SDK) DumpCCReport(reportBytes []byte) error { // GetCCMeasurement implements evidence_api.EvidenceAPI. func (s *SDK) GetCCMeasurement(index int, alg evidence_api.TCG_ALG) (evidence_api.TcgDigest, error) { emptyRet := evidence_api.TcgDigest{} - report, err := s.GetCCReport("", "", nil) + report, err := s.GetCCReport(nil, nil, nil) if err != nil { return emptyRet, err } @@ -121,7 +121,7 @@ func (s *SDK) internelEventlog() (*evidence_api.EventLogger, error) { } // Report implements EvidenceAPI. -func (s *SDK) GetCCReport(nonce, userData string, extraArgs map[string]any) (evidence_api.Report, error) { +func (s *SDK) GetCCReport(nonce, userData []byte, extraArgs map[string]any) (evidence_api.Report, error) { if s.cvm == nil { return nil, errors.New("no available cvm in sdk") } diff --git a/src/golang/cctrusted_vm/tdx/device.go b/src/golang/cctrusted_vm/tdx/device.go index 2ec6ad5..d27260f 100644 --- a/src/golang/cctrusted_vm/tdx/device.go +++ b/src/golang/cctrusted_vm/tdx/device.go @@ -62,7 +62,7 @@ func (t *TDXDevice) initDevice() error { } // Report implements cctrusted_vm.Device, get CC report -func (t *TDXDevice) Report(nonce, userData string, extraArgs map[string]any) (evidence_api.CcReport, error) { +func (t *TDXDevice) Report(nonce, userData []byte, extraArgs map[string]any) (evidence_api.CcReport, error) { var resp evidence_api.CcReport var err error diff --git a/src/golang/cctrusted_vm/tdx/device_test.go b/src/golang/cctrusted_vm/tdx/device_test.go index 664e0c1..8b7c3f3 100644 --- a/src/golang/cctrusted_vm/tdx/device_test.go +++ b/src/golang/cctrusted_vm/tdx/device_test.go @@ -22,8 +22,8 @@ func TestReport15(t *testing.T) { fmt.Println(res) assert.Equal(t, true, res) - nonce := "IXUKoBO1UM3c1wopN4sY" - userData := "MTIzNDU2NzgxMjM0NTY3ODEyMzQ1Njc4MTIzNDU2NzgxMjM0NTY3ODEyMzQ1Njc4" + nonce := []byte{"IXUKoBO1UM3c1wopN4sY"} + userData := []byte{"MTIzNDU2NzgxMjM0NTY3ODEyMzQ1Njc4MTIzNDU2NzgxMjM0NTY3ODEyMzQ1Njc4"} tdreport, err := device.TdReport(nonce, userData) assert.Nil(t, err) t.Log(tdreport) diff --git a/src/golang/cctrusted_vm/tdx/quote_handler.go b/src/golang/cctrusted_vm/tdx/quote_handler.go index 74aa94e..5f60e31 100644 --- a/src/golang/cctrusted_vm/tdx/quote_handler.go +++ b/src/golang/cctrusted_vm/tdx/quote_handler.go @@ -21,7 +21,7 @@ type QuoteHandler interface { Quote([tdx.TD_REPORT_LEN]byte) ([]byte, error) // TdReport gets the td report of the td vm, where nonce ad userData // are encoded in base64 - TdReport(nonce, userData string) ([tdx.TD_REPORT_LEN]byte, error) + TdReport(nonce, userData []byte) ([tdx.TD_REPORT_LEN]byte, error) } var _ QuoteHandler = (*QuoteHandler15)(nil) @@ -34,7 +34,7 @@ type QuoteHandler15 struct { } // TdReport implements QuoteHandler. -func (q *QuoteHandler15) TdReport(nonce, userData string) ([tdx.TD_REPORT_LEN]byte, error) { +func (q *QuoteHandler15) TdReport(nonce, userData []byte) ([tdx.TD_REPORT_LEN]byte, error) { tdreport := [tdx.TD_REPORT_LEN]uint8{} var err error var file *os.File @@ -55,18 +55,18 @@ func (q *QuoteHandler15) TdReport(nonce, userData string) ([tdx.TD_REPORT_LEN]by // check if the data is base64 encoded, if yes, decode before doing hash hasher := sha512.New() if len(nonce) > 0 { - nonceDecoded, err := base64.StdEncoding.DecodeString(nonce) + nonceDecoded, err := base64.StdEncoding.DecodeString(string(nonce)) if err != nil { - hasher.Write([]byte(nonce)) + hasher.Write(nonce) } else { hasher.Write(nonceDecoded) } } if len(userData) > 0 { - userDataDecoded, err := base64.StdEncoding.DecodeString(userData) + userDataDecoded, err := base64.StdEncoding.DecodeString(string(userData)) if err != nil { - hasher.Write([]byte(userData)) + hasher.Write(userData) } else { hasher.Write(userDataDecoded) }