@super-protocol/addons-tee 1.0.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/bindings/amd-sev-snp-napi-rs/amd-sev-snp-napi-rs.linux-x64-gnu.node +0 -0
  2. package/bindings/go-tdx-attest-wrapper/.gitignore +8 -0
  3. package/bindings/go-tdx-attest-wrapper/go.mod +18 -0
  4. package/bindings/go-tdx-attest-wrapper/go.sum +29 -0
  5. package/bindings/go-tdx-attest-wrapper/main.go +244 -0
  6. package/bindings/sgx-native/build/Release/libmbedcrypto_gramine.so.15 +0 -0
  7. package/bindings/sgx-native/build/Release/libmbedx509_gramine.so.6 +0 -0
  8. package/bindings/sgx-native/build/Release/libsgx_dcap_quoteverify.so.1 +0 -0
  9. package/bindings/sgx-native/build/Release/libtdx_attest.so.1 +0 -0
  10. package/bindings/sgx-native/build/Release/sgx_native.node +0 -0
  11. package/bindings/utils/virtee/libsev.so +0 -0
  12. package/bindings/utils/virtee/snpguest +0 -0
  13. package/dist/sgx-native-module/dcap-quote-verify.service.d.ts +7 -0
  14. package/dist/sgx-native-module/dcap-quote-verify.service.js +189 -1
  15. package/dist/sgx-native-module/index.d.ts +2 -0
  16. package/dist/sgx-native-module/index.js +3 -1
  17. package/dist/sgx-native-module/tdx-parsed-quote-schema.d.ts +10 -0
  18. package/dist/sgx-native-module/tdx-parsed-quote-schema.js +13 -0
  19. package/dist/sgx-native-module/tdx-quote-with-event-log-schema.d.ts +19 -0
  20. package/dist/sgx-native-module/tdx-quote-with-event-log-schema.js +13 -0
  21. package/package.json +3 -5
  22. package/dto/src/AmdSevSnp.proto +0 -31
  23. package/dto/src/Compression.proto +0 -11
  24. package/dto/src/Hash.proto +0 -6
  25. package/dto/src/OrderReport.proto +0 -21
  26. package/dto/src/TRI.proto +0 -22
  27. package/dto/src/TeeDeviceInfo.proto +0 -46
@@ -0,0 +1,8 @@
1
+ .gocache/
2
+ .gomodcache/
3
+ /go-tdx-attest-wrapper
4
+ /tdx-attest-wrapper
5
+ !go.mod
6
+ !go.sum
7
+ !main.go
8
+ !.gitignore
@@ -0,0 +1,18 @@
1
+ module github.com/super-protocol/sp-nodejs-addons/tee-addon/bindings/go-tdx-attest-wrapper
2
+
3
+ go 1.22
4
+
5
+ require (
6
+ github.com/google/go-eventlog v0.0.2
7
+ github.com/google/go-tdx-guest v0.3.1
8
+ )
9
+
10
+ require (
11
+ github.com/google/go-configfs-tsm v0.2.2 // indirect
12
+ github.com/google/go-tpm v0.9.0 // indirect
13
+ github.com/google/logger v1.1.1 // indirect
14
+ go.uber.org/multierr v1.11.0 // indirect
15
+ golang.org/x/crypto v0.17.0 // indirect
16
+ golang.org/x/sys v0.19.0 // indirect
17
+ google.golang.org/protobuf v1.34.2 // indirect
18
+ )
@@ -0,0 +1,29 @@
1
+ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
2
+ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
3
+ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
4
+ github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
5
+ github.com/google/go-configfs-tsm v0.2.2 h1:YnJ9rXIOj5BYD7/0DNnzs8AOp7UcvjfTvt215EWcs98=
6
+ github.com/google/go-configfs-tsm v0.2.2/go.mod h1:EL1GTDFMb5PZQWDviGfZV9n87WeGTR/JUg13RfwkgRo=
7
+ github.com/google/go-eventlog v0.0.2 h1:Q3XESKw1xuO7+U37PmFGmteQqprL8U5/linAiuy3oIY=
8
+ github.com/google/go-eventlog v0.0.2/go.mod h1:7huE5P8w2NTObSwSJjboHmB7ioBNblkijdzoVa2skfQ=
9
+ github.com/google/go-tdx-guest v0.3.1 h1:gl0KvjdsD4RrJzyLefDOvFOUH3NAJri/3qvaL5m83Iw=
10
+ github.com/google/go-tdx-guest v0.3.1/go.mod h1:/rc3d7rnPykOPuY8U9saMyEps0PZDThLk/RygXm04nE=
11
+ github.com/google/go-tpm v0.9.0 h1:sQF6YqWMi+SCXpsmS3fd21oPy/vSddwZry4JnmltHVk=
12
+ github.com/google/go-tpm v0.9.0/go.mod h1:FkNVkc6C+IsvDI9Jw1OveJmxGZUUaKxtrpOS47QWKfU=
13
+ github.com/google/logger v1.1.1 h1:+6Z2geNxc9G+4D4oDO9njjjn2d0wN5d7uOo0vOIW1NQ=
14
+ github.com/google/logger v1.1.1/go.mod h1:BkeJZ+1FhQ+/d087r4dzojEg1u2ZX+ZqG1jTUrLM+zQ=
15
+ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
16
+ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
17
+ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
18
+ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
19
+ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
20
+ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
21
+ golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
22
+ golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
23
+ golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
24
+ golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
25
+ golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
26
+ google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
27
+ google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
28
+ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
29
+ gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
@@ -0,0 +1,244 @@
1
+ package main
2
+
3
+ import (
4
+ "encoding/base64"
5
+ "encoding/hex"
6
+ "encoding/json"
7
+ "errors"
8
+ "flag"
9
+ "fmt"
10
+ "io"
11
+ "os"
12
+ "strings"
13
+
14
+ "github.com/google/go-tdx-guest/abi"
15
+ "github.com/google/go-eventlog/register"
16
+ "github.com/google/go-eventlog/tcg"
17
+ "github.com/google/go-tdx-guest/client"
18
+ pb "github.com/google/go-tdx-guest/proto/tdx"
19
+ )
20
+
21
+ const (
22
+ defaultCCELEventLogPath = "/sys/firmware/acpi/tables/data/CCEL"
23
+ rtmr0MRIndex = 1
24
+ )
25
+
26
+ type eventRecord struct {
27
+ Type string `json:"type"`
28
+ Digest string `json:"digest"`
29
+ }
30
+
31
+ type outputPayload struct {
32
+ Quote string `json:"quote"`
33
+ EventLog []eventRecord `json:"eventLog"`
34
+ }
35
+
36
+ type parsedQuotePayload struct {
37
+ TDAttributes string `json:"tdattributes"`
38
+ MRTD string `json:"mrtd"`
39
+ RTMR0 string `json:"rtmr0"`
40
+ RTMR1 string `json:"rtmr1"`
41
+ RTMR2 string `json:"rtmr2"`
42
+ RTMR3 string `json:"rtmr3"`
43
+ }
44
+
45
+ func main() {
46
+ if err := run(); err != nil {
47
+ fmt.Fprintf(os.Stderr, "error: %v\n", err)
48
+ os.Exit(1)
49
+ }
50
+ }
51
+
52
+ func run() error {
53
+ if len(os.Args) < 2 {
54
+ return usageError("missing subcommand: expected 'attest' or 'parse-quote'")
55
+ }
56
+
57
+ switch os.Args[1] {
58
+ case "attest":
59
+ return runAttest(os.Args[2:])
60
+ case "parse-quote":
61
+ return runParseQuote(os.Args[2:])
62
+ default:
63
+ return usageError(fmt.Sprintf("unknown subcommand %q: expected 'attest' or 'parse-quote'", os.Args[1]))
64
+ }
65
+ }
66
+
67
+ func runAttest(args []string) error {
68
+ fs := newFlagSet("attest")
69
+ reportDataHex := fs.String("report-data", "", "hex-encoded report data, up to 64 bytes")
70
+ outputPath := fs.String("output", "", "write JSON output to file")
71
+ ccelEventLogPath := fs.String("ccel-event-log", defaultCCELEventLogPath, "path to CCEL event log data")
72
+ if err := fs.Parse(args); err != nil {
73
+ return err
74
+ }
75
+
76
+ if *reportDataHex == "" {
77
+ return errors.New("missing required flag --report-data")
78
+ }
79
+ if *outputPath == "" {
80
+ return errors.New("missing required flag --output")
81
+ }
82
+
83
+ reportData, err := decodeReportData(*reportDataHex)
84
+ if err != nil {
85
+ return fmt.Errorf("decode report data: %w", err)
86
+ }
87
+
88
+ quoteProvider, err := client.GetQuoteProvider()
89
+ if err != nil {
90
+ return fmt.Errorf("get quote provider: %w", err)
91
+ }
92
+
93
+ rawQuote, err := client.GetRawQuote(quoteProvider, reportData)
94
+ if err != nil {
95
+ return fmt.Errorf("get TDX quote: %w", err)
96
+ }
97
+
98
+ events, err := readRTMR0Events(*ccelEventLogPath)
99
+ if err != nil {
100
+ return err
101
+ }
102
+
103
+ payload := outputPayload{
104
+ Quote: base64.StdEncoding.EncodeToString(rawQuote),
105
+ EventLog: events,
106
+ }
107
+
108
+ return writeJSON(*outputPath, payload)
109
+ }
110
+
111
+ func runParseQuote(args []string) error {
112
+ fs := newFlagSet("parse-quote")
113
+ quotePath := fs.String("quote-file", "", "path to a raw TDX quote file")
114
+ outputPath := fs.String("output", "", "write JSON output to file")
115
+ if err := fs.Parse(args); err != nil {
116
+ return err
117
+ }
118
+
119
+ if *quotePath == "" {
120
+ return errors.New("missing required flag --quote-file")
121
+ }
122
+ if *outputPath == "" {
123
+ return errors.New("missing required flag --output")
124
+ }
125
+
126
+ rawQuote, err := os.ReadFile(*quotePath)
127
+ if err != nil {
128
+ return fmt.Errorf("read quote file %q: %w", *quotePath, err)
129
+ }
130
+
131
+ payload, err := parseQuote(rawQuote)
132
+ if err != nil {
133
+ return err
134
+ }
135
+
136
+ return writeJSON(*outputPath, payload)
137
+ }
138
+
139
+ func newFlagSet(name string) *flag.FlagSet {
140
+ fs := flag.NewFlagSet(name, flag.ContinueOnError)
141
+ fs.SetOutput(io.Discard)
142
+ return fs
143
+ }
144
+
145
+ func writeJSON(outputPath string, payload any) error {
146
+ jsonData, err := json.MarshalIndent(payload, "", " ")
147
+ if err != nil {
148
+ return fmt.Errorf("marshal JSON: %w", err)
149
+ }
150
+
151
+ if err := os.WriteFile(outputPath, append(jsonData, '\n'), 0o644); err != nil {
152
+ return fmt.Errorf("write output file %q: %w", outputPath, err)
153
+ }
154
+
155
+ return nil
156
+ }
157
+
158
+ func parseQuote(rawQuote []byte) (parsedQuotePayload, error) {
159
+ anyQuote, err := abi.QuoteToProto(rawQuote)
160
+ if err != nil {
161
+ return parsedQuotePayload{}, fmt.Errorf("parse quote: %w", err)
162
+ }
163
+
164
+ switch quote := anyQuote.(type) {
165
+ case *pb.QuoteV4:
166
+ tdQuoteBody := quote.GetTdQuoteBody()
167
+ if tdQuoteBody == nil {
168
+ return parsedQuotePayload{}, errors.New("parse quote: missing TD quote body")
169
+ }
170
+
171
+ rtmrs := tdQuoteBody.GetRtmrs()
172
+ if len(rtmrs) < 4 {
173
+ return parsedQuotePayload{}, fmt.Errorf("parse quote: expected at least 4 RTMRs, got %d", len(rtmrs))
174
+ }
175
+
176
+ return parsedQuotePayload{
177
+ TDAttributes: hex.EncodeToString(tdQuoteBody.GetTdAttributes()),
178
+ MRTD: hex.EncodeToString(tdQuoteBody.GetMrTd()),
179
+ RTMR0: hex.EncodeToString(rtmrs[0]),
180
+ RTMR1: hex.EncodeToString(rtmrs[1]),
181
+ RTMR2: hex.EncodeToString(rtmrs[2]),
182
+ RTMR3: hex.EncodeToString(rtmrs[3]),
183
+ }, nil
184
+ default:
185
+ return parsedQuotePayload{}, fmt.Errorf("parse quote: unsupported quote type %T", anyQuote)
186
+ }
187
+ }
188
+
189
+ func usageError(message string) error {
190
+ return fmt.Errorf("%s\nusage:\n %s attest --report-data <hex> --output <file> [--ccel-event-log <path>]\n %s parse-quote --quote-file <path> --output <file>", message, os.Args[0], os.Args[0])
191
+ }
192
+
193
+ func decodeReportData(raw string) ([64]byte, error) {
194
+ var reportData [64]byte
195
+
196
+ normalized := strings.TrimSpace(raw)
197
+ normalized = strings.TrimPrefix(normalized, "0x")
198
+ normalized = strings.TrimPrefix(normalized, "0X")
199
+
200
+ decoded, err := hex.DecodeString(normalized)
201
+ if err != nil {
202
+ return reportData, err
203
+ }
204
+ if len(decoded) > len(reportData) {
205
+ return reportData, fmt.Errorf("report data is %d bytes, exceeds 64 bytes", len(decoded))
206
+ }
207
+
208
+ copy(reportData[:], decoded)
209
+ return reportData, nil
210
+ }
211
+
212
+ func readRTMR0Events(eventLogPath string) ([]eventRecord, error) {
213
+ eventLogData, err := os.ReadFile(eventLogPath)
214
+ if err != nil {
215
+ return nil, fmt.Errorf("read CCEL event log %q: %w", eventLogPath, err)
216
+ }
217
+
218
+ eventLog, err := tcg.ParseEventLog(eventLogData, tcg.ParseOpts{AllowPadding: true})
219
+ if err != nil {
220
+ return nil, fmt.Errorf("parse CCEL event log %q: %w", eventLogPath, err)
221
+ }
222
+
223
+ records := make([]eventRecord, 0)
224
+ for _, event := range eventLog.Events(register.HashSHA384) {
225
+ if event.MRIndex() != rtmr0MRIndex {
226
+ continue
227
+ }
228
+
229
+ records = append(records, eventRecord{
230
+ Type: eventTypeTCGString(event.UntrustedType()),
231
+ Digest: hex.EncodeToString(event.ReplayedDigest()),
232
+ })
233
+ }
234
+
235
+ return records, nil
236
+ }
237
+
238
+ func eventTypeTCGString(eventType any) string {
239
+ if typed, ok := eventType.(interface{ TCGString() string }); ok {
240
+ return typed.TCGString()
241
+ }
242
+
243
+ return fmt.Sprintf("%v", eventType)
244
+ }
Binary file
Binary file
@@ -1,4 +1,6 @@
1
1
  /// <reference types="node" />
2
+ import { TdxEventLogEntry, TdxQuoteWithEventLog } from "./tdx-quote-with-event-log-schema";
3
+ import { TdxParseQuote } from "./tdx-parsed-quote-schema";
2
4
  export declare class DcapQuoteVerifyService {
3
5
  private readonly quoteVerifier;
4
6
  private static isInGramineMode;
@@ -7,6 +9,11 @@ export declare class DcapQuoteVerifyService {
7
9
  extractQuoteFromCert(pemOrDerCert: Buffer): Promise<Buffer>;
8
10
  validateQuoteVerifierEnclave(quote: Buffer, checkSecurity?: boolean): Promise<void>;
9
11
  generateTDXQuote(userData: Buffer): Promise<Buffer>;
12
+ validateRtmrEventLogIntegrity(eventLog: TdxEventLogEntry[], rtmr: string | Buffer): Promise<void>;
13
+ parseTDXQuote(quote: Buffer): Promise<TdxParseQuote>;
14
+ generateTDXQuoteWithEventLog(userData: Buffer): Promise<TdxQuoteWithEventLog>;
15
+ private static formatSubprocessError;
16
+ private normalizeRtmr;
10
17
  private validateMode;
11
18
  generateSGXQuote(userData: Buffer): Promise<Buffer>;
12
19
  }
@@ -1,4 +1,27 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
@@ -9,6 +32,17 @@ const consts_1 = require("./consts");
9
32
  const errors_1 = require("./errors");
10
33
  const p_queue_1 = __importDefault(require("p-queue"));
11
34
  const fs_1 = require("fs");
35
+ const child_process_1 = require("child_process");
36
+ const crypto_1 = require("crypto");
37
+ const os = __importStar(require("os"));
38
+ const path = __importStar(require("path"));
39
+ const util_1 = require("util");
40
+ const value_1 = require("@sinclair/typebox/value");
41
+ const helpers_1 = require("./helpers");
42
+ const tdx_quote_with_event_log_schema_1 = require("./tdx-quote-with-event-log-schema");
43
+ const tdx_parsed_quote_schema_1 = require("./tdx-parsed-quote-schema");
44
+ const execFileAsync = (0, util_1.promisify)(child_process_1.execFile);
45
+ const TDX_ATTEST_WRAPPER_PATH = path.resolve(__dirname, "../../bindings/go-tdx-attest-wrapper/go-tdx-attest-wrapper");
12
46
  class DcapQuoteVerifyService {
13
47
  constructor() {
14
48
  this.quoteVerifier = new SgxAttestationVerifier();
@@ -35,6 +69,160 @@ class DcapQuoteVerifyService {
35
69
  async generateTDXQuote(userData) {
36
70
  return this.quoteVerifier.generateTDXQuote(userData);
37
71
  }
72
+ async validateRtmrEventLogIntegrity(eventLog, rtmr) {
73
+ if (!Array.isArray(eventLog)) {
74
+ throw new Error("eventLog must be an array");
75
+ }
76
+ let current = Buffer.alloc(48);
77
+ for (const [i, event] of eventLog.entries()) {
78
+ if (!event || typeof event.digest !== "string") {
79
+ throw new Error(`event ${i}: digest must be a string`);
80
+ }
81
+ if (!/^[0-9a-fA-F]+$/.test(event.digest) || event.digest.length % 2 !== 0) {
82
+ throw new Error(`event ${i}: decode sha384: encoding/hex: invalid byte`);
83
+ }
84
+ const measurement = Buffer.from(event.digest, "hex");
85
+ if (measurement.length !== 48) {
86
+ throw new Error(`event ${i}: sha384 length is ${measurement.length} bytes, want 48`);
87
+ }
88
+ current = (0, crypto_1.createHash)("sha384")
89
+ .update(Buffer.concat([current, measurement]))
90
+ .digest();
91
+ }
92
+ const expectedRtmr = this.normalizeRtmr(rtmr);
93
+ if (!current.equals(expectedRtmr)) {
94
+ throw new Error("RTMR does not match event log");
95
+ }
96
+ }
97
+ async parseTDXQuote(quote) {
98
+ if (!Buffer.isBuffer(quote)) {
99
+ throw new Error("quote must be a Buffer");
100
+ }
101
+ if (quote.length === 0) {
102
+ throw new Error("quote cannot be empty");
103
+ }
104
+ let tempDir = "";
105
+ try {
106
+ await fs_1.promises.access(TDX_ATTEST_WRAPPER_PATH, fs_1.constants.X_OK);
107
+ tempDir = await fs_1.promises.mkdtemp(path.join(os.tmpdir(), "tdx-parsed-quote-"));
108
+ const quotePath = path.join(tempDir, "quote.bin");
109
+ const outputPath = path.join(tempDir, "parsed-quote.json");
110
+ await fs_1.promises.writeFile(quotePath, quote);
111
+ try {
112
+ await execFileAsync(TDX_ATTEST_WRAPPER_PATH, [
113
+ "parse-quote",
114
+ "--quote-file",
115
+ quotePath,
116
+ "--output",
117
+ outputPath,
118
+ ]);
119
+ }
120
+ catch (error) {
121
+ throw new Error(`Failed to parse quote: ${DcapQuoteVerifyService.formatSubprocessError(error)}`);
122
+ }
123
+ const rawJson = await fs_1.promises.readFile(outputPath, "utf8");
124
+ const parsed = JSON.parse(rawJson);
125
+ if (!value_1.Value.Check(tdx_parsed_quote_schema_1.TdxParsedQuoteJsonSchema, parsed)) {
126
+ const [firstError] = [...value_1.Value.Errors(tdx_parsed_quote_schema_1.TdxParsedQuoteJsonSchema, parsed)];
127
+ const errorMessage = firstError ? `${firstError.path} ${firstError.message}`.trim() : "unknown error";
128
+ throw new Error(`Failed to validate parsed quote JSON: ${errorMessage}`);
129
+ }
130
+ return parsed;
131
+ }
132
+ catch (error) {
133
+ if (error instanceof Error) {
134
+ throw new Error(`Failed to parse quote: ${error.message}`);
135
+ }
136
+ throw new Error("Failed to parse quote: unknown error");
137
+ }
138
+ finally {
139
+ if (tempDir) {
140
+ await (0, helpers_1.gramineCompatibleRmDir)(tempDir);
141
+ }
142
+ }
143
+ }
144
+ async generateTDXQuoteWithEventLog(userData) {
145
+ if (!Buffer.isBuffer(userData)) {
146
+ throw new Error("userData must be a Buffer");
147
+ }
148
+ if (userData.length === 0) {
149
+ throw new Error("userData cannot be empty");
150
+ }
151
+ let tempDir = "";
152
+ try {
153
+ await fs_1.promises.access(TDX_ATTEST_WRAPPER_PATH, fs_1.constants.X_OK);
154
+ tempDir = await fs_1.promises.mkdtemp(path.join(os.tmpdir(), "tdx-quote-with-event-log-"));
155
+ const outputPath = path.join(tempDir, "quote-with-event-log.json");
156
+ await DcapQuoteVerifyService.executeLikeWithMutex.add(async () => {
157
+ try {
158
+ await execFileAsync(TDX_ATTEST_WRAPPER_PATH, [
159
+ "attest",
160
+ "--report-data",
161
+ userData.toString("hex"),
162
+ "--output",
163
+ outputPath,
164
+ ]);
165
+ }
166
+ catch (error) {
167
+ throw new errors_1.QuoteGenerationError(`Failed to generate quote with event log: ${DcapQuoteVerifyService.formatSubprocessError(error)}`);
168
+ }
169
+ });
170
+ const rawJson = await fs_1.promises.readFile(outputPath, "utf8");
171
+ const parsed = JSON.parse(rawJson);
172
+ if (!value_1.Value.Check(tdx_quote_with_event_log_schema_1.TdxQuoteWithEventLogJsonSchema, parsed)) {
173
+ const [firstError] = [...value_1.Value.Errors(tdx_quote_with_event_log_schema_1.TdxQuoteWithEventLogJsonSchema, parsed)];
174
+ const errorMessage = firstError ? `${firstError.path} ${firstError.message}`.trim() : "unknown error";
175
+ throw new errors_1.QuoteGenerationError(`Failed to validate quote with event log JSON: ${errorMessage}`);
176
+ }
177
+ const result = parsed;
178
+ return {
179
+ quote: Buffer.from(result.quote, "base64"),
180
+ eventLog: result.eventLog,
181
+ };
182
+ }
183
+ catch (error) {
184
+ if (error instanceof errors_1.QuoteGenerationError) {
185
+ throw error;
186
+ }
187
+ if (error instanceof Error) {
188
+ throw new errors_1.QuoteGenerationError(`Failed to generate quote with event log: ${error.message}`);
189
+ }
190
+ throw new errors_1.QuoteGenerationError("Failed to generate quote with event log: unknown error");
191
+ }
192
+ finally {
193
+ if (tempDir) {
194
+ await (0, helpers_1.gramineCompatibleRmDir)(tempDir);
195
+ }
196
+ }
197
+ }
198
+ static formatSubprocessError(error) {
199
+ if (!(error instanceof Error)) {
200
+ return "unknown error";
201
+ }
202
+ const processError = error;
203
+ const output = [processError.stdout, processError.stderr].filter(Boolean).join("\n").trim();
204
+ return output ? `${processError.message}\n${output}` : processError.message;
205
+ }
206
+ normalizeRtmr(rtmr) {
207
+ if (Buffer.isBuffer(rtmr)) {
208
+ if (rtmr.length !== 48) {
209
+ throw new Error("rtmr must be a 48-byte Buffer or SHA-384 hex string");
210
+ }
211
+ return rtmr;
212
+ }
213
+ if (typeof rtmr !== "string") {
214
+ throw new Error("rtmr must be a 48-byte Buffer or SHA-384 hex string");
215
+ }
216
+ const normalized = rtmr.trim().replace(/^0x/i, "");
217
+ if (!/^[0-9a-fA-F]+$/.test(normalized) || normalized.length % 2 !== 0) {
218
+ throw new Error("rtmr must be a 48-byte Buffer or SHA-384 hex string");
219
+ }
220
+ const decoded = Buffer.from(normalized, "hex");
221
+ if (decoded.length !== 48) {
222
+ throw new Error("rtmr must be a 48-byte Buffer or SHA-384 hex string");
223
+ }
224
+ return decoded;
225
+ }
38
226
  async validateMode() {
39
227
  if (DcapQuoteVerifyService.isInGramineMode) {
40
228
  return;
@@ -81,4 +269,4 @@ class DcapQuoteVerifyService {
81
269
  exports.DcapQuoteVerifyService = DcapQuoteVerifyService;
82
270
  DcapQuoteVerifyService.isInGramineMode = false;
83
271
  DcapQuoteVerifyService.executeLikeWithMutex = new p_queue_1.default({ concurrency: 1 });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGNhcC1xdW90ZS12ZXJpZnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZ3gtbmF0aXZlLW1vZHVsZS9kY2FwLXF1b3RlLXZlcmlmeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE1BQU0sRUFBRSxzQkFBc0IsRUFBRSxHQUFHLE9BQU8sQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO0FBQ3RHLHFDQUFnRTtBQUNoRSxxQ0FLa0I7QUFDbEIsc0RBQTRCO0FBQzVCLDJCQUE4QjtBQVE5QixNQUFhLHNCQUFzQjtJQUsvQjtRQUNJLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFRCxLQUFLLENBQUMsb0JBQW9CLENBQUMsWUFBb0I7UUFDM0MsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksK0NBQXNDLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxLQUFLLENBQUMsNEJBQTRCLENBQUMsS0FBYSxFQUFFLGFBQXVCO1FBQ3JFLGFBQWEsR0FBRyxhQUFhLElBQUksS0FBSyxDQUFDO1FBRXZDLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLCtDQUFzQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvRCxJQUFJLGFBQWEsSUFBSSxZQUFZLENBQUMsVUFBVSxLQUFLLGdCQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckUsTUFBTSxJQUFJLHFDQUE0QixDQUFDLFlBQVksQ0FB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
272
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGNhcC1xdW90ZS12ZXJpZnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZ3gtbmF0aXZlLW1vZHVsZS9kY2FwLXF1b3RlLXZlcmlmeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsTUFBTSxFQUFFLHNCQUFzQixFQUFFLEdBQUcsT0FBTyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7QUFDdEcscUNBQWdFO0FBQ2hFLHFDQUtrQjtBQUNsQixzREFBNEI7QUFDNUIsMkJBQXlDO0FBQ3pDLGlEQUF5QztBQUN6QyxtQ0FBb0M7QUFDcEMsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3QiwrQkFBaUM7QUFDakMsbURBQWdEO0FBQ2hELHVDQUFtRDtBQUNuRCx1RkFLMkM7QUFDM0MsdUVBQW9GO0FBRXBGLE1BQU0sYUFBYSxHQUFHLElBQUEsZ0JBQVMsRUFBQyx3QkFBUSxDQUFDLENBQUM7QUFDMUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSw0REFBNEQsQ0FBQyxDQUFDO0FBUXRILE1BQWEsc0JBQXNCO0lBSy9CO1FBQ0ksSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLHNCQUFzQixFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVELEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxZQUFvQjtRQUMzQyxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSwrQ0FBc0MsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxLQUFhLEVBQUUsYUFBdUI7UUFDckUsYUFBYSxHQUFHLGFBQWEsSUFBSSxLQUFLLENBQUM7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
@@ -6,4 +6,6 @@ export * from "./pki.service";
6
6
  export * from "./sev-snp";
7
7
  export * from "./sev-snp-mrenclave";
8
8
  export * from "./sev-snp-schema";
9
+ export * from "./tdx-parsed-quote-schema";
10
+ export * from "./tdx-quote-with-event-log-schema";
9
11
  export * from "../proto/AmdSevSnp";
@@ -22,5 +22,7 @@ __exportStar(require("./pki.service"), exports);
22
22
  __exportStar(require("./sev-snp"), exports);
23
23
  __exportStar(require("./sev-snp-mrenclave"), exports);
24
24
  __exportStar(require("./sev-snp-schema"), exports);
25
+ __exportStar(require("./tdx-parsed-quote-schema"), exports);
26
+ __exportStar(require("./tdx-quote-with-event-log-schema"), exports);
25
27
  __exportStar(require("../proto/AmdSevSnp"), exports);
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2d4LW5hdGl2ZS1tb2R1bGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF5QjtBQUN6QiwyQ0FBeUI7QUFDekIsb0RBQWtDO0FBQ2xDLDhEQUE0QztBQUM1QyxnREFBOEI7QUFDOUIsNENBQTBCO0FBQzFCLHNEQUFvQztBQUNwQyxtREFBaUM7QUFDakMscURBQW1DIn0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2d4LW5hdGl2ZS1tb2R1bGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF5QjtBQUN6QiwyQ0FBeUI7QUFDekIsb0RBQWtDO0FBQ2xDLDhEQUE0QztBQUM1QyxnREFBOEI7QUFDOUIsNENBQTBCO0FBQzFCLHNEQUFvQztBQUNwQyxtREFBaUM7QUFDakMsNERBQTBDO0FBQzFDLG9FQUFrRDtBQUNsRCxxREFBbUMifQ==
@@ -0,0 +1,10 @@
1
+ import { Static } from "@sinclair/typebox";
2
+ export declare const TdxParsedQuoteJsonSchema: import("@sinclair/typebox").TObject<{
3
+ tdattributes: import("@sinclair/typebox").TString;
4
+ mrtd: import("@sinclair/typebox").TString;
5
+ rtmr0: import("@sinclair/typebox").TString;
6
+ rtmr1: import("@sinclair/typebox").TString;
7
+ rtmr2: import("@sinclair/typebox").TString;
8
+ rtmr3: import("@sinclair/typebox").TString;
9
+ }>;
10
+ export type TdxParseQuote = Static<typeof TdxParsedQuoteJsonSchema>;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TdxParsedQuoteJsonSchema = void 0;
4
+ const typebox_1 = require("@sinclair/typebox");
5
+ exports.TdxParsedQuoteJsonSchema = typebox_1.Type.Object({
6
+ tdattributes: typebox_1.Type.String(),
7
+ mrtd: typebox_1.Type.String(),
8
+ rtmr0: typebox_1.Type.String(),
9
+ rtmr1: typebox_1.Type.String(),
10
+ rtmr2: typebox_1.Type.String(),
11
+ rtmr3: typebox_1.Type.String(),
12
+ });
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGR4LXBhcnNlZC1xdW90ZS1zY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2d4LW5hdGl2ZS1tb2R1bGUvdGR4LXBhcnNlZC1xdW90ZS1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0NBQWlEO0FBRXBDLFFBQUEsd0JBQXdCLEdBQUcsY0FBSSxDQUFDLE1BQU0sQ0FBQztJQUNoRCxZQUFZLEVBQUUsY0FBSSxDQUFDLE1BQU0sRUFBRTtJQUMzQixJQUFJLEVBQUUsY0FBSSxDQUFDLE1BQU0sRUFBRTtJQUNuQixLQUFLLEVBQUUsY0FBSSxDQUFDLE1BQU0sRUFBRTtJQUNwQixLQUFLLEVBQUUsY0FBSSxDQUFDLE1BQU0sRUFBRTtJQUNwQixLQUFLLEVBQUUsY0FBSSxDQUFDLE1BQU0sRUFBRTtJQUNwQixLQUFLLEVBQUUsY0FBSSxDQUFDLE1BQU0sRUFBRTtDQUN2QixDQUFDLENBQUMifQ==
@@ -0,0 +1,19 @@
1
+ /// <reference types="node" />
2
+ import { Static } from "@sinclair/typebox";
3
+ export declare const TdxEventLogEntrySchema: import("@sinclair/typebox").TObject<{
4
+ type: import("@sinclair/typebox").TString;
5
+ digest: import("@sinclair/typebox").TString;
6
+ }>;
7
+ export declare const TdxQuoteWithEventLogJsonSchema: import("@sinclair/typebox").TObject<{
8
+ quote: import("@sinclair/typebox").TString;
9
+ eventLog: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
10
+ type: import("@sinclair/typebox").TString;
11
+ digest: import("@sinclair/typebox").TString;
12
+ }>>;
13
+ }>;
14
+ export type TdxEventLogEntry = Static<typeof TdxEventLogEntrySchema>;
15
+ export type TdxQuoteWithEventLogJson = Static<typeof TdxQuoteWithEventLogJsonSchema>;
16
+ export interface TdxQuoteWithEventLog {
17
+ quote: Buffer;
18
+ eventLog: TdxEventLogEntry[];
19
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TdxQuoteWithEventLogJsonSchema = exports.TdxEventLogEntrySchema = void 0;
4
+ const typebox_1 = require("@sinclair/typebox");
5
+ exports.TdxEventLogEntrySchema = typebox_1.Type.Object({
6
+ type: typebox_1.Type.String(),
7
+ digest: typebox_1.Type.String(),
8
+ });
9
+ exports.TdxQuoteWithEventLogJsonSchema = typebox_1.Type.Object({
10
+ quote: typebox_1.Type.String(),
11
+ eventLog: typebox_1.Type.Array(exports.TdxEventLogEntrySchema),
12
+ });
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGR4LXF1b3RlLXdpdGgtZXZlbnQtbG9nLXNjaGVtYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZ3gtbmF0aXZlLW1vZHVsZS90ZHgtcXVvdGUtd2l0aC1ldmVudC1sb2ctc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtDQUFpRDtBQUVwQyxRQUFBLHNCQUFzQixHQUFHLGNBQUksQ0FBQyxNQUFNLENBQUM7SUFDOUMsSUFBSSxFQUFFLGNBQUksQ0FBQyxNQUFNLEVBQUU7SUFDbkIsTUFBTSxFQUFFLGNBQUksQ0FBQyxNQUFNLEVBQUU7Q0FDeEIsQ0FBQyxDQUFDO0FBRVUsUUFBQSw4QkFBOEIsR0FBRyxjQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3RELEtBQUssRUFBRSxjQUFJLENBQUMsTUFBTSxFQUFFO0lBQ3BCLFFBQVEsRUFBRSxjQUFJLENBQUMsS0FBSyxDQUFDLDhCQUFzQixDQUFDO0NBQy9DLENBQUMsQ0FBQyJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@super-protocol/addons-tee",
3
- "version": "1.0.0",
3
+ "version": "1.1.1",
4
4
  "description": "The TEE trusted loader addons",
5
5
  "tags": [
6
6
  "tee"
@@ -15,8 +15,8 @@
15
15
  "author": "Super Protocol",
16
16
  "license": "ISC",
17
17
  "engines": {
18
- "node": ">=14.0",
19
- "npm": ">=6.0"
18
+ "node": ">=20.0",
19
+ "npm": ">=10.0"
20
20
  },
21
21
  "main": "dist/index.js",
22
22
  "module": "dist/index.js",
@@ -43,7 +43,6 @@
43
43
  "dependencies": {
44
44
  "@super-protocol/eslint-config-typescript": "2.0.1",
45
45
  "asn1-tree": "^0.1.1",
46
- "msgpack5": "^6.0.2",
47
46
  "node-forge": "^1.3.1",
48
47
  "p-queue": "^6.6.2",
49
48
  "@sinclair/typebox": "0.33.17"
@@ -57,7 +56,6 @@
57
56
  "@peculiar/x509": "^1.9.3",
58
57
  "@types/jest": "^27.5.2",
59
58
  "@types/lodash": "^4.17.5",
60
- "@types/msgpack5": "^3.4.6",
61
59
  "@types/node": "^17.0.0",
62
60
  "@types/node-forge": "^1.3.1",
63
61
  "jest": "^29.7.0",
@@ -1,31 +0,0 @@
1
- syntax = "proto3";
2
-
3
- enum SevSNPCertType {
4
- ARK = 0;
5
- ASK = 1;
6
- VCEK = 2;
7
- }
8
-
9
- enum SevSnpCertificateFormat {
10
- PEM = 0;
11
- DER = 1;
12
- }
13
-
14
- message SnpCert {
15
- SevSNPCertType type = 1;
16
- bytes cert = 2;
17
- SevSnpCertificateFormat format = 3;
18
- }
19
-
20
- message SNPReport {
21
- bytes rawReport = 1;
22
- uint32 cpuSig = 2;
23
- uint32 cores = 3;
24
- bytes cmdLineHash = 4;
25
- string build = 5;
26
- }
27
-
28
- message SNPReportWithChain {
29
- SNPReport snpReport = 1;
30
- repeated SnpCert certs = 2;
31
- }
@@ -1,11 +0,0 @@
1
- syntax = "proto3";
2
-
3
- message Compression {
4
- enum TYPE {
5
- Uncompressed = 0;
6
- GZIP = 1;
7
- }
8
-
9
- TYPE type = 1;
10
- bytes data = 2;
11
- }
@@ -1,6 +0,0 @@
1
- syntax = "proto3";
2
-
3
- message Hash {
4
- string algo = 1;
5
- bytes hash = 2;
6
- }
@@ -1,21 +0,0 @@
1
- syntax = "proto3";
2
-
3
- import "Hash.proto";
4
-
5
- message OrderReportProto {
6
- repeated bytes certificates = 1;
7
- WorkloadInfo workloadInfo = 2;
8
- }
9
-
10
- message WorkloadInfo {
11
- repeated RuntimeInfo runtimeInfo = 1;
12
- int64 created = 2;
13
- }
14
-
15
- message RuntimeInfo {
16
- string type = 1;
17
- int64 size = 2;
18
- Hash hash = 3;
19
- optional Hash signatureKeyHash = 4;
20
- optional Hash argsHash = 5;
21
- }
package/dto/src/TRI.proto DELETED
@@ -1,22 +0,0 @@
1
- syntax = "proto3";
2
-
3
- import "Hash.proto";
4
-
5
- message Encryption {
6
- string algo = 1;
7
- optional bytes key = 2;
8
- optional string cipher = 3;
9
- optional bytes ciphertext = 4;
10
- optional bytes iv = 6;
11
- optional bytes mac = 7;
12
- string encoding = 8;
13
- }
14
-
15
- message TRI {
16
- repeated Hash solutionHashes = 1;
17
- bytes mrenclave = 2;
18
- string args = 3;
19
- Encryption encryption = 4;
20
- bytes mrsigner = 5;
21
- repeated Hash imageHashes = 6;
22
- }
@@ -1,46 +0,0 @@
1
- syntax = "proto3";
2
-
3
- message TeeDeviceInfo {
4
- CpuInfo cpu = 1;
5
- MemoryInfo memory = 2;
6
- DiskInfo disk = 3;
7
- GpuInfo gpu = 4;
8
- }
9
-
10
- message CpuInfo {
11
- string vendor_id = 1;
12
- int32 cpu_family = 2;
13
- int32 model = 3;
14
- string model_name = 4;
15
- int32 total_physical_cores = 5;
16
- int32 total_logical_cores = 6;
17
- int32 base_freq = 7;
18
- int32 max_freq = 8;
19
- }
20
-
21
- message MemoryInfo {
22
- string type = 1;
23
- int64 size = 2;
24
- }
25
-
26
- message DiskInfo {
27
- string type = 1;
28
- int64 size = 2;
29
- }
30
-
31
- message GpuInfo {
32
- string type = 1;
33
- int32 count = 2;
34
- int64 memory_size = 3;
35
- }
36
-
37
- message NvtrustGPUInfo {
38
- string model = 1;
39
- string driverVersion = 2;
40
- string vbios = 3;
41
- bool dbgStat = 4;
42
- }
43
-
44
- message NvtrustGPUList {
45
- repeated NvtrustGPUInfo gpus = 1;
46
- }