@super-protocol/addons-tee 1.1.1 → 1.1.3
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.
- package/bindings/go-tdx-attest-wrapper/go-tdx-attest-wrapper +0 -0
- package/bindings/utils/virtee/libsev.so +0 -0
- package/bindings/utils/virtee/snpguest +0 -0
- package/dist/sgx-native-module/dcap-quote-verify.service.d.ts +2 -2
- package/dist/sgx-native-module/dcap-quote-verify.service.js +1 -1
- package/dist/sgx-native-module/tdx-parsed-quote-schema.d.ts +2 -1
- package/dist/sgx-native-module/tdx-parsed-quote-schema.js +2 -1
- package/package.json +1 -1
- package/bindings/go-tdx-attest-wrapper/.gitignore +0 -8
- package/bindings/go-tdx-attest-wrapper/go.mod +0 -18
- package/bindings/go-tdx-attest-wrapper/go.sum +0 -29
- package/bindings/go-tdx-attest-wrapper/main.go +0 -244
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { TdxEventLogEntry, TdxQuoteWithEventLog } from "./tdx-quote-with-event-log-schema";
|
|
3
|
-
import {
|
|
3
|
+
import { TdxParsedQuote } from "./tdx-parsed-quote-schema";
|
|
4
4
|
export declare class DcapQuoteVerifyService {
|
|
5
5
|
private readonly quoteVerifier;
|
|
6
6
|
private static isInGramineMode;
|
|
@@ -10,7 +10,7 @@ export declare class DcapQuoteVerifyService {
|
|
|
10
10
|
validateQuoteVerifierEnclave(quote: Buffer, checkSecurity?: boolean): Promise<void>;
|
|
11
11
|
generateTDXQuote(userData: Buffer): Promise<Buffer>;
|
|
12
12
|
validateRtmrEventLogIntegrity(eventLog: TdxEventLogEntry[], rtmr: string | Buffer): Promise<void>;
|
|
13
|
-
parseTDXQuote(quote: Buffer): Promise<
|
|
13
|
+
parseTDXQuote(quote: Buffer): Promise<TdxParsedQuote>;
|
|
14
14
|
generateTDXQuoteWithEventLog(userData: Buffer): Promise<TdxQuoteWithEventLog>;
|
|
15
15
|
private static formatSubprocessError;
|
|
16
16
|
private normalizeRtmr;
|
|
@@ -269,4 +269,4 @@ class DcapQuoteVerifyService {
|
|
|
269
269
|
exports.DcapQuoteVerifyService = DcapQuoteVerifyService;
|
|
270
270
|
DcapQuoteVerifyService.isInGramineMode = false;
|
|
271
271
|
DcapQuoteVerifyService.executeLikeWithMutex = new p_queue_1.default({ concurrency: 1 });
|
|
272
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGNhcC1xdW90ZS12ZXJpZnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZ3gtbmF0aXZlLW1vZHVsZS9kY2FwLXF1b3RlLXZlcmlmeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsTUFBTSxFQUFFLHNCQUFzQixFQUFFLEdBQUcsT0FBTyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7QUFDdEcscUNBQWdFO0FBQ2hFLHFDQUtrQjtBQUNsQixzREFBNEI7QUFDNUIsMkJBQXlDO0FBQ3pDLGlEQUF5QztBQUN6QyxtQ0FBb0M7QUFDcEMsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3QiwrQkFBaUM7QUFDakMsbURBQWdEO0FBQ2hELHVDQUFtRDtBQUNuRCx1RkFLMkM7QUFDM0MsdUVBQW9GO0FBRXBGLE1BQU0sYUFBYSxHQUFHLElBQUEsZ0JBQVMsRUFBQyx3QkFBUSxDQUFDLENBQUM7QUFDMUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSw0REFBNEQsQ0FBQyxDQUFDO0FBUXRILE1BQWEsc0JBQXNCO0lBSy9CO1FBQ0ksSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLHNCQUFzQixFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVELEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxZQUFvQjtRQUMzQyxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSwrQ0FBc0MsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxLQUFhLEVBQUUsYUFBdUI7UUFDckUsYUFBYSxHQUFHLGFBQWEsSUFBSSxLQUFLLENBQUM7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
|
|
272
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGNhcC1xdW90ZS12ZXJpZnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZ3gtbmF0aXZlLW1vZHVsZS9kY2FwLXF1b3RlLXZlcmlmeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsTUFBTSxFQUFFLHNCQUFzQixFQUFFLEdBQUcsT0FBTyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7QUFDdEcscUNBQWdFO0FBQ2hFLHFDQUtrQjtBQUNsQixzREFBNEI7QUFDNUIsMkJBQXlDO0FBQ3pDLGlEQUF5QztBQUN6QyxtQ0FBb0M7QUFDcEMsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3QiwrQkFBaUM7QUFDakMsbURBQWdEO0FBQ2hELHVDQUFtRDtBQUNuRCx1RkFLMkM7QUFDM0MsdUVBQXFGO0FBRXJGLE1BQU0sYUFBYSxHQUFHLElBQUEsZ0JBQVMsRUFBQyx3QkFBUSxDQUFDLENBQUM7QUFDMUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSw0REFBNEQsQ0FBQyxDQUFDO0FBUXRILE1BQWEsc0JBQXNCO0lBSy9CO1FBQ0ksSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLHNCQUFzQixFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVELEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxZQUFvQjtRQUMzQyxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSwrQ0FBc0MsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxLQUFhLEVBQUUsYUFBdUI7UUFDckUsYUFBYSxHQUFHLGFBQWEsSUFBSSxLQUFLLENBQUM7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
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Static } from "@sinclair/typebox";
|
|
2
2
|
export declare const TdxParsedQuoteJsonSchema: import("@sinclair/typebox").TObject<{
|
|
3
|
+
reportData: import("@sinclair/typebox").TString;
|
|
3
4
|
tdattributes: import("@sinclair/typebox").TString;
|
|
4
5
|
mrtd: import("@sinclair/typebox").TString;
|
|
5
6
|
rtmr0: import("@sinclair/typebox").TString;
|
|
@@ -7,4 +8,4 @@ export declare const TdxParsedQuoteJsonSchema: import("@sinclair/typebox").TObje
|
|
|
7
8
|
rtmr2: import("@sinclair/typebox").TString;
|
|
8
9
|
rtmr3: import("@sinclair/typebox").TString;
|
|
9
10
|
}>;
|
|
10
|
-
export type
|
|
11
|
+
export type TdxParsedQuote = Static<typeof TdxParsedQuoteJsonSchema>;
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.TdxParsedQuoteJsonSchema = void 0;
|
|
4
4
|
const typebox_1 = require("@sinclair/typebox");
|
|
5
5
|
exports.TdxParsedQuoteJsonSchema = typebox_1.Type.Object({
|
|
6
|
+
reportData: typebox_1.Type.String(),
|
|
6
7
|
tdattributes: typebox_1.Type.String(),
|
|
7
8
|
mrtd: typebox_1.Type.String(),
|
|
8
9
|
rtmr0: typebox_1.Type.String(),
|
|
@@ -10,4 +11,4 @@ exports.TdxParsedQuoteJsonSchema = typebox_1.Type.Object({
|
|
|
10
11
|
rtmr2: typebox_1.Type.String(),
|
|
11
12
|
rtmr3: typebox_1.Type.String(),
|
|
12
13
|
});
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGR4LXBhcnNlZC1xdW90ZS1zY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2d4LW5hdGl2ZS1tb2R1bGUvdGR4LXBhcnNlZC1xdW90ZS1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0NBQWlEO0FBRXBDLFFBQUEsd0JBQXdCLEdBQUcsY0FBSSxDQUFDLE1BQU0sQ0FBQztJQUNoRCxVQUFVLEVBQUUsY0FBSSxDQUFDLE1BQU0sRUFBRTtJQUN6QixZQUFZLEVBQUUsY0FBSSxDQUFDLE1BQU0sRUFBRTtJQUMzQixJQUFJLEVBQUUsY0FBSSxDQUFDLE1BQU0sRUFBRTtJQUNuQixLQUFLLEVBQUUsY0FBSSxDQUFDLE1BQU0sRUFBRTtJQUNwQixLQUFLLEVBQUUsY0FBSSxDQUFDLE1BQU0sRUFBRTtJQUNwQixLQUFLLEVBQUUsY0FBSSxDQUFDLE1BQU0sRUFBRTtJQUNwQixLQUFLLEVBQUUsY0FBSSxDQUFDLE1BQU0sRUFBRTtDQUN2QixDQUFDLENBQUMifQ==
|
package/package.json
CHANGED
|
@@ -1,18 +0,0 @@
|
|
|
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
|
-
)
|
|
@@ -1,29 +0,0 @@
|
|
|
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=
|
|
@@ -1,244 +0,0 @@
|
|
|
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
|
-
}
|