@super-protocol/addons-tee 0.9.2 → 0.9.4
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/amd-sev-snp-napi-rs/amd-sev-snp-napi-rs.linux-x64-gnu.node +0 -0
- package/bindings/amd-sev-snp-napi-rs/index.d.ts +27 -0
- package/bindings/amd-sev-snp-napi-rs/index.js +12 -1
- package/bindings/sp-sev/.github/workflows/lint.yml +3 -3
- package/bindings/sp-sev/.github/workflows/test.yml +163 -2
- package/bindings/sp-sev/Cargo.lock +521 -281
- package/bindings/sp-sev/Cargo.toml +11 -11
- package/bindings/sp-sev/tests/api.rs +9 -6
- package/bindings/sp-sev/tests/certs.rs +4 -5
- package/bindings/sp-sev/tests/guest.rs +2 -1
- package/bindings/sp-sev/tests/id-block.rs +9 -5
- package/bindings/sp-sev/tests/snp_launch.rs +1 -1
- package/bindings/utils/virtee/libsev.so +0 -0
- package/bindings/utils/virtee/snpguest +0 -0
- package/dist/proto/AmdSevSnp.d.ts +194 -0
- package/dist/proto/AmdSevSnp.js +363 -0
- package/dist/sgx-native-module/dcap-quote-verify.service.js +22 -3
- package/dist/sgx-native-module/index.d.ts +1 -0
- package/dist/sgx-native-module/index.js +2 -1
- package/dist/sgx-native-module/sev-snp-mrenclave.d.ts +2 -2
- package/dist/sgx-native-module/sev-snp-mrenclave.js +46 -11
- package/dist/sgx-native-module/sev-snp-schema.d.ts +22 -0
- package/dist/sgx-native-module/sev-snp-schema.js +24 -0
- package/dist/sgx-native-module/sev-snp.d.ts +20 -32
- package/dist/sgx-native-module/sev-snp.js +126 -177
- package/dto/src/AmdSevSnp.proto +31 -0
- package/dto/src/Compression.proto +11 -0
- package/dto/src/Hash.proto +6 -0
- package/dto/src/OrderReport.proto +21 -0
- package/dto/src/TRI.proto +22 -0
- package/dto/src/TeeDeviceInfo.proto +46 -0
- package/package.json +8 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "sev"
|
|
3
|
-
version = "
|
|
3
|
+
version = "6.2.1"
|
|
4
4
|
authors = [
|
|
5
5
|
"Nathaniel McCallum <npmccallum@redhat.com>",
|
|
6
6
|
"The VirTEE Project Developers",
|
|
@@ -20,7 +20,7 @@ categories = [
|
|
|
20
20
|
"hardware-support",
|
|
21
21
|
]
|
|
22
22
|
exclude = [".gitignore", ".github/*"]
|
|
23
|
-
rust-version = "1.
|
|
23
|
+
rust-version = "1.85.0"
|
|
24
24
|
|
|
25
25
|
[badges]
|
|
26
26
|
# See https://doc.rust-lang.org/cargo/reference/manifest.html#the-badges-section
|
|
@@ -45,20 +45,20 @@ snp = []
|
|
|
45
45
|
crypto_nossl = ["dep:p384", "dep:rsa", "dep:sha2", "dep:x509-cert"]
|
|
46
46
|
|
|
47
47
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
48
|
-
iocuddle = "0.1"
|
|
48
|
+
iocuddle = "^0.1"
|
|
49
49
|
|
|
50
50
|
[dependencies]
|
|
51
|
-
openssl = { version = "0.10", optional = true }
|
|
51
|
+
openssl = { version = "0.10", optional = true, features = ["vendored"] }
|
|
52
52
|
serde = { version = "1.0", features = ["derive"] }
|
|
53
53
|
serde_bytes = "0.11"
|
|
54
|
-
bitflags = "
|
|
54
|
+
bitflags = "2.9.0"
|
|
55
55
|
codicon = "3.0"
|
|
56
|
-
dirs = "
|
|
56
|
+
dirs = "^6.0"
|
|
57
57
|
serde-big-array = "0.5.1"
|
|
58
58
|
static_assertions = "^1.1.0"
|
|
59
|
-
bitfield = "^0.
|
|
59
|
+
bitfield = "^0.19"
|
|
60
60
|
uuid = { version = "^1.11", features = ["serde"] }
|
|
61
|
-
bincode = "^
|
|
61
|
+
bincode = { version = "^2.0", features = ["serde"] }
|
|
62
62
|
hex = "0.4.3"
|
|
63
63
|
libc = "0.2.161"
|
|
64
64
|
lazy_static = "1.4.0"
|
|
@@ -69,12 +69,12 @@ x509-cert = { version = "0.2.5", optional = true }
|
|
|
69
69
|
byteorder = "1.4.3"
|
|
70
70
|
base64 = "0.22.1"
|
|
71
71
|
rdrand = { version = "^0.8", optional = true }
|
|
72
|
-
reqwest = { version="0.
|
|
73
|
-
tokio = {version = "1.29.1", features =["rt-multi-thread"], optional = true }
|
|
72
|
+
reqwest = { version = "^0.12", features = ["blocking"], optional = true }
|
|
73
|
+
tokio = { version = "1.29.1", features = ["rt-multi-thread"], optional = true }
|
|
74
74
|
|
|
75
75
|
[target.'cfg(target_os = "linux")'.dev-dependencies]
|
|
76
76
|
kvm-ioctls = ">=0.16"
|
|
77
|
+
kvm-bindings = "^0.11"
|
|
77
78
|
|
|
78
79
|
[dev-dependencies]
|
|
79
|
-
kvm-bindings = ">=0.9.1"
|
|
80
80
|
serial_test = "3.0"
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
|
|
3
3
|
#[cfg(all(feature = "sev", target_os = "linux"))]
|
|
4
|
-
|
|
5
4
|
mod sev {
|
|
6
5
|
#[cfg(feature = "dangerous_hw_tests")]
|
|
7
6
|
use serial_test::serial;
|
|
8
7
|
#[cfg(feature = "dangerous_hw_tests")]
|
|
9
8
|
use sev::cached_chain;
|
|
10
|
-
use sev::{
|
|
9
|
+
use sev::{
|
|
10
|
+
certs::sev::sev::Usage,
|
|
11
|
+
firmware::host::{Build, Firmware, Version},
|
|
12
|
+
};
|
|
11
13
|
|
|
12
14
|
#[cfg(feature = "dangerous_hw_tests")]
|
|
13
15
|
#[cfg_attr(not(host), ignore)]
|
|
@@ -147,8 +149,8 @@ mod snp {
|
|
|
147
149
|
reported tcb tee version: {}
|
|
148
150
|
reported tcb bootloader version: {}
|
|
149
151
|
state: {}",
|
|
150
|
-
status.version.
|
|
151
|
-
status.version.
|
|
152
|
+
status.version.0,
|
|
153
|
+
status.version.1,
|
|
152
154
|
status.build_id,
|
|
153
155
|
status.guest_count,
|
|
154
156
|
status.platform_tcb_version.microcode,
|
|
@@ -174,8 +176,9 @@ mod snp {
|
|
|
174
176
|
#[cfg_attr(not(all(host, feature = "dangerous_hw_tests")), ignore)]
|
|
175
177
|
#[test]
|
|
176
178
|
#[serial]
|
|
177
|
-
fn
|
|
179
|
+
fn set_config_generation() {
|
|
178
180
|
let mut fw: Firmware = Firmware::open().unwrap();
|
|
181
|
+
|
|
179
182
|
fw.snp_set_config(Config::default()).unwrap();
|
|
180
183
|
}
|
|
181
184
|
|
|
@@ -184,7 +187,7 @@ mod snp {
|
|
|
184
187
|
#[serial]
|
|
185
188
|
fn test_host_fw_error() {
|
|
186
189
|
let mut fw: Firmware = Firmware::open().unwrap();
|
|
187
|
-
let invalid_config = Config::new(TcbVersion::new(100, 100, 100, 100), MaskId(31));
|
|
190
|
+
let invalid_config = Config::new(TcbVersion::new(None, 100, 100, 100, 100), MaskId(31));
|
|
188
191
|
let fw_error = fw.snp_set_config(invalid_config).unwrap_err().to_string();
|
|
189
192
|
assert_eq!(fw_error, "Firmware Error Encountered: Known SEV FW Error: Status Code: 0x16: Given parameter is invalid.")
|
|
190
193
|
}
|
|
@@ -24,6 +24,7 @@ mod sev {
|
|
|
24
24
|
|
|
25
25
|
#[cfg(all(feature = "snp", any(feature = "openssl", feature = "crypto_nossl")))]
|
|
26
26
|
mod snp {
|
|
27
|
+
|
|
27
28
|
use sev::certs::snp::{builtin::milan, ca, Certificate, Chain, Verifiable};
|
|
28
29
|
|
|
29
30
|
const TEST_MILAN_VCEK_DER: &[u8] = include_bytes!("certs_data/vcek_milan.der");
|
|
@@ -85,8 +86,7 @@ mod snp {
|
|
|
85
86
|
let chain = Chain { ca, vek: vcek };
|
|
86
87
|
|
|
87
88
|
let report_bytes = hex::decode(TEST_MILAN_ATTESTATION_REPORT).unwrap();
|
|
88
|
-
let report: AttestationReport =
|
|
89
|
-
unsafe { std::ptr::read(report_bytes.as_ptr() as *const _) };
|
|
89
|
+
let report: AttestationReport = AttestationReport::from_bytes(&report_bytes).unwrap();
|
|
90
90
|
|
|
91
91
|
assert_eq!((&chain, &report).verify().ok(), Some(()));
|
|
92
92
|
}
|
|
@@ -104,9 +104,8 @@ mod snp {
|
|
|
104
104
|
let chain = Chain { ca, vek: vcek };
|
|
105
105
|
|
|
106
106
|
let mut report_bytes = hex::decode(TEST_MILAN_ATTESTATION_REPORT).unwrap();
|
|
107
|
-
report_bytes[
|
|
108
|
-
let report
|
|
109
|
-
unsafe { std::ptr::read(report_bytes.as_ptr() as *const _) };
|
|
107
|
+
report_bytes[21] ^= 0x80;
|
|
108
|
+
let report = AttestationReport::from_bytes(&report_bytes).unwrap();
|
|
110
109
|
|
|
111
110
|
assert_eq!((&chain, &report).verify().ok(), None);
|
|
112
111
|
}
|
|
@@ -27,7 +27,7 @@ fn get_ext_report() {
|
|
|
27
27
|
#[cfg_attr(not(guest), ignore)]
|
|
28
28
|
#[test]
|
|
29
29
|
fn get_derived_key() {
|
|
30
|
-
let derived_key = DerivedKey::new(false, GuestFieldSelect(1), 0, 0, 0);
|
|
30
|
+
let derived_key = DerivedKey::new(false, GuestFieldSelect(1), 0, 0, 0, None);
|
|
31
31
|
|
|
32
32
|
let mut fw = Firmware::open().unwrap();
|
|
33
33
|
|
|
@@ -43,6 +43,7 @@ fn guest_fw_error() {
|
|
|
43
43
|
0xFFFFFFFF,
|
|
44
44
|
0xFFFFFFFF,
|
|
45
45
|
0xFFFFFFFFFFFFFFFF,
|
|
46
|
+
Some(0xFFFFFFFFFFFFFFFF),
|
|
46
47
|
);
|
|
47
48
|
|
|
48
49
|
let mut fw = Firmware::open().unwrap();
|
|
@@ -18,6 +18,8 @@ use sev::measurement::{
|
|
|
18
18
|
snp::SnpLaunchDigest,
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
+
use sev::BINCODE_CFG;
|
|
22
|
+
|
|
21
23
|
// Testing that the appropriate id-block and key digests are being generated.
|
|
22
24
|
#[test]
|
|
23
25
|
fn test_id_block_and_key_digests() {
|
|
@@ -45,8 +47,8 @@ fn test_id_block_and_key_digests() {
|
|
|
45
47
|
.unwrap();
|
|
46
48
|
|
|
47
49
|
// Converting ID-block and key digests into BASE64
|
|
48
|
-
let id_block_string =
|
|
49
|
-
|
|
50
|
+
let id_block_string = general_purpose::STANDARD
|
|
51
|
+
.encode(bincode::encode_to_vec(block_calculations.id_block, BINCODE_CFG).unwrap());
|
|
50
52
|
let id_key_digest_string = general_purpose::STANDARD
|
|
51
53
|
.encode::<Vec<u8>>(block_calculations.id_key_digest.try_into().unwrap());
|
|
52
54
|
let auth_key_digest_string = general_purpose::STANDARD
|
|
@@ -136,7 +138,8 @@ fn test_auth_block_generation() {
|
|
|
136
138
|
let mut id_sig_file = fs::File::open("./tests/measurement/test_id_sig.bin").unwrap();
|
|
137
139
|
let mut id_block_bytes = Vec::new();
|
|
138
140
|
id_sig_file.read_to_end(&mut id_block_bytes).unwrap();
|
|
139
|
-
let id_block_sig: SevEcdsaSig =
|
|
141
|
+
let (id_block_sig, _): (SevEcdsaSig, usize) =
|
|
142
|
+
bincode::decode_from_slice(&id_block_bytes, BINCODE_CFG).unwrap();
|
|
140
143
|
|
|
141
144
|
// Get author private test key from pem
|
|
142
145
|
let author_ec_priv_key = load_priv_key(auth_path).unwrap();
|
|
@@ -148,7 +151,8 @@ fn test_auth_block_generation() {
|
|
|
148
151
|
let mut auth_sig_file = fs::File::open("./tests/measurement/test_auth_sig.bin").unwrap();
|
|
149
152
|
let mut auth_block_bytes = Vec::new();
|
|
150
153
|
auth_sig_file.read_to_end(&mut auth_block_bytes).unwrap();
|
|
151
|
-
let auth_block_sig: SevEcdsaSig =
|
|
154
|
+
let (auth_block_sig, _): (SevEcdsaSig, usize) =
|
|
155
|
+
bincode::decode_from_slice(&auth_block_bytes, BINCODE_CFG).unwrap();
|
|
152
156
|
|
|
153
157
|
let auth_block = IdAuth::new(
|
|
154
158
|
None,
|
|
@@ -160,7 +164,7 @@ fn test_auth_block_generation() {
|
|
|
160
164
|
);
|
|
161
165
|
|
|
162
166
|
// Generate Generate auth_block string
|
|
163
|
-
let id_auth_bytes = bincode::
|
|
167
|
+
let id_auth_bytes = bincode::encode_to_vec(auth_block, BINCODE_CFG).unwrap();
|
|
164
168
|
let id_auth_str = general_purpose::STANDARD.encode(id_auth_bytes);
|
|
165
169
|
|
|
166
170
|
// Comparing auth_blocks
|
|
@@ -71,7 +71,7 @@ fn snp_launch_test() {
|
|
|
71
71
|
let launcher = Launcher::new(vm_fd, sev).unwrap();
|
|
72
72
|
|
|
73
73
|
let mut policy = GuestPolicy(0);
|
|
74
|
-
policy.set_smt_allowed(
|
|
74
|
+
policy.set_smt_allowed(true);
|
|
75
75
|
let start = Start::new(policy, [0; 16]);
|
|
76
76
|
|
|
77
77
|
let mut launcher = launcher.start(start).unwrap();
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import _m0 from "protobufjs/minimal.js";
|
|
2
|
+
export declare const protobufPackage = "";
|
|
3
|
+
export declare enum SevSNPCertType {
|
|
4
|
+
ARK = 0,
|
|
5
|
+
ASK = 1,
|
|
6
|
+
VCEK = 2
|
|
7
|
+
}
|
|
8
|
+
export declare function sevSNPCertTypeFromJSON(object: any): SevSNPCertType;
|
|
9
|
+
export declare function sevSNPCertTypeToJSON(object: SevSNPCertType): string;
|
|
10
|
+
export declare enum SevSnpCertificateFormat {
|
|
11
|
+
PEM = 0,
|
|
12
|
+
DER = 1
|
|
13
|
+
}
|
|
14
|
+
export declare function sevSnpCertificateFormatFromJSON(object: any): SevSnpCertificateFormat;
|
|
15
|
+
export declare function sevSnpCertificateFormatToJSON(object: SevSnpCertificateFormat): string;
|
|
16
|
+
export interface SnpCert {
|
|
17
|
+
type: SevSNPCertType;
|
|
18
|
+
cert: Uint8Array;
|
|
19
|
+
format: SevSnpCertificateFormat;
|
|
20
|
+
}
|
|
21
|
+
export interface SNPReport {
|
|
22
|
+
rawReport: Uint8Array;
|
|
23
|
+
cpuSig: number;
|
|
24
|
+
cores: number;
|
|
25
|
+
cmdLineHash: Uint8Array;
|
|
26
|
+
build: string;
|
|
27
|
+
}
|
|
28
|
+
export interface SNPReportWithChain {
|
|
29
|
+
snpReport: SNPReport | undefined;
|
|
30
|
+
certs: SnpCert[];
|
|
31
|
+
}
|
|
32
|
+
export declare const SnpCert: {
|
|
33
|
+
encode(message: SnpCert, writer?: _m0.Writer): _m0.Writer;
|
|
34
|
+
decode(input: _m0.Reader | Uint8Array, length?: number): SnpCert;
|
|
35
|
+
fromJSON(object: any): SnpCert;
|
|
36
|
+
toJSON(message: SnpCert): unknown;
|
|
37
|
+
create<I extends {
|
|
38
|
+
type?: SevSNPCertType | undefined;
|
|
39
|
+
cert?: Uint8Array | undefined;
|
|
40
|
+
format?: SevSnpCertificateFormat | undefined;
|
|
41
|
+
} & {
|
|
42
|
+
type?: SevSNPCertType | undefined;
|
|
43
|
+
cert?: Uint8Array | undefined;
|
|
44
|
+
format?: SevSnpCertificateFormat | undefined;
|
|
45
|
+
} & { [K in Exclude<keyof I, keyof SnpCert>]: never; }>(base?: I | undefined): SnpCert;
|
|
46
|
+
fromPartial<I_1 extends {
|
|
47
|
+
type?: SevSNPCertType | undefined;
|
|
48
|
+
cert?: Uint8Array | undefined;
|
|
49
|
+
format?: SevSnpCertificateFormat | undefined;
|
|
50
|
+
} & {
|
|
51
|
+
type?: SevSNPCertType | undefined;
|
|
52
|
+
cert?: Uint8Array | undefined;
|
|
53
|
+
format?: SevSnpCertificateFormat | undefined;
|
|
54
|
+
} & { [K_1 in Exclude<keyof I_1, keyof SnpCert>]: never; }>(object: I_1): SnpCert;
|
|
55
|
+
};
|
|
56
|
+
export declare const SNPReport: {
|
|
57
|
+
encode(message: SNPReport, writer?: _m0.Writer): _m0.Writer;
|
|
58
|
+
decode(input: _m0.Reader | Uint8Array, length?: number): SNPReport;
|
|
59
|
+
fromJSON(object: any): SNPReport;
|
|
60
|
+
toJSON(message: SNPReport): unknown;
|
|
61
|
+
create<I extends {
|
|
62
|
+
rawReport?: Uint8Array | undefined;
|
|
63
|
+
cpuSig?: number | undefined;
|
|
64
|
+
cores?: number | undefined;
|
|
65
|
+
cmdLineHash?: Uint8Array | undefined;
|
|
66
|
+
build?: string | undefined;
|
|
67
|
+
} & {
|
|
68
|
+
rawReport?: Uint8Array | undefined;
|
|
69
|
+
cpuSig?: number | undefined;
|
|
70
|
+
cores?: number | undefined;
|
|
71
|
+
cmdLineHash?: Uint8Array | undefined;
|
|
72
|
+
build?: string | undefined;
|
|
73
|
+
} & { [K in Exclude<keyof I, keyof SNPReport>]: never; }>(base?: I | undefined): SNPReport;
|
|
74
|
+
fromPartial<I_1 extends {
|
|
75
|
+
rawReport?: Uint8Array | undefined;
|
|
76
|
+
cpuSig?: number | undefined;
|
|
77
|
+
cores?: number | undefined;
|
|
78
|
+
cmdLineHash?: Uint8Array | undefined;
|
|
79
|
+
build?: string | undefined;
|
|
80
|
+
} & {
|
|
81
|
+
rawReport?: Uint8Array | undefined;
|
|
82
|
+
cpuSig?: number | undefined;
|
|
83
|
+
cores?: number | undefined;
|
|
84
|
+
cmdLineHash?: Uint8Array | undefined;
|
|
85
|
+
build?: string | undefined;
|
|
86
|
+
} & { [K_1 in Exclude<keyof I_1, keyof SNPReport>]: never; }>(object: I_1): SNPReport;
|
|
87
|
+
};
|
|
88
|
+
export declare const SNPReportWithChain: {
|
|
89
|
+
encode(message: SNPReportWithChain, writer?: _m0.Writer): _m0.Writer;
|
|
90
|
+
decode(input: _m0.Reader | Uint8Array, length?: number): SNPReportWithChain;
|
|
91
|
+
fromJSON(object: any): SNPReportWithChain;
|
|
92
|
+
toJSON(message: SNPReportWithChain): unknown;
|
|
93
|
+
create<I extends {
|
|
94
|
+
snpReport?: {
|
|
95
|
+
rawReport?: Uint8Array | undefined;
|
|
96
|
+
cpuSig?: number | undefined;
|
|
97
|
+
cores?: number | undefined;
|
|
98
|
+
cmdLineHash?: Uint8Array | undefined;
|
|
99
|
+
build?: string | undefined;
|
|
100
|
+
} | undefined;
|
|
101
|
+
certs?: {
|
|
102
|
+
type?: SevSNPCertType | undefined;
|
|
103
|
+
cert?: Uint8Array | undefined;
|
|
104
|
+
format?: SevSnpCertificateFormat | undefined;
|
|
105
|
+
}[] | undefined;
|
|
106
|
+
} & {
|
|
107
|
+
snpReport?: ({
|
|
108
|
+
rawReport?: Uint8Array | undefined;
|
|
109
|
+
cpuSig?: number | undefined;
|
|
110
|
+
cores?: number | undefined;
|
|
111
|
+
cmdLineHash?: Uint8Array | undefined;
|
|
112
|
+
build?: string | undefined;
|
|
113
|
+
} & {
|
|
114
|
+
rawReport?: Uint8Array | undefined;
|
|
115
|
+
cpuSig?: number | undefined;
|
|
116
|
+
cores?: number | undefined;
|
|
117
|
+
cmdLineHash?: Uint8Array | undefined;
|
|
118
|
+
build?: string | undefined;
|
|
119
|
+
} & { [K in Exclude<keyof I["snpReport"], keyof SNPReport>]: never; }) | undefined;
|
|
120
|
+
certs?: ({
|
|
121
|
+
type?: SevSNPCertType | undefined;
|
|
122
|
+
cert?: Uint8Array | undefined;
|
|
123
|
+
format?: SevSnpCertificateFormat | undefined;
|
|
124
|
+
}[] & ({
|
|
125
|
+
type?: SevSNPCertType | undefined;
|
|
126
|
+
cert?: Uint8Array | undefined;
|
|
127
|
+
format?: SevSnpCertificateFormat | undefined;
|
|
128
|
+
} & {
|
|
129
|
+
type?: SevSNPCertType | undefined;
|
|
130
|
+
cert?: Uint8Array | undefined;
|
|
131
|
+
format?: SevSnpCertificateFormat | undefined;
|
|
132
|
+
} & { [K_1 in Exclude<keyof I["certs"][number], keyof SnpCert>]: never; })[] & { [K_2 in Exclude<keyof I["certs"], keyof {
|
|
133
|
+
type?: SevSNPCertType | undefined;
|
|
134
|
+
cert?: Uint8Array | undefined;
|
|
135
|
+
format?: SevSnpCertificateFormat | undefined;
|
|
136
|
+
}[]>]: never; }) | undefined;
|
|
137
|
+
} & { [K_3 in Exclude<keyof I, keyof SNPReportWithChain>]: never; }>(base?: I | undefined): SNPReportWithChain;
|
|
138
|
+
fromPartial<I_1 extends {
|
|
139
|
+
snpReport?: {
|
|
140
|
+
rawReport?: Uint8Array | undefined;
|
|
141
|
+
cpuSig?: number | undefined;
|
|
142
|
+
cores?: number | undefined;
|
|
143
|
+
cmdLineHash?: Uint8Array | undefined;
|
|
144
|
+
build?: string | undefined;
|
|
145
|
+
} | undefined;
|
|
146
|
+
certs?: {
|
|
147
|
+
type?: SevSNPCertType | undefined;
|
|
148
|
+
cert?: Uint8Array | undefined;
|
|
149
|
+
format?: SevSnpCertificateFormat | undefined;
|
|
150
|
+
}[] | undefined;
|
|
151
|
+
} & {
|
|
152
|
+
snpReport?: ({
|
|
153
|
+
rawReport?: Uint8Array | undefined;
|
|
154
|
+
cpuSig?: number | undefined;
|
|
155
|
+
cores?: number | undefined;
|
|
156
|
+
cmdLineHash?: Uint8Array | undefined;
|
|
157
|
+
build?: string | undefined;
|
|
158
|
+
} & {
|
|
159
|
+
rawReport?: Uint8Array | undefined;
|
|
160
|
+
cpuSig?: number | undefined;
|
|
161
|
+
cores?: number | undefined;
|
|
162
|
+
cmdLineHash?: Uint8Array | undefined;
|
|
163
|
+
build?: string | undefined;
|
|
164
|
+
} & { [K_4 in Exclude<keyof I_1["snpReport"], keyof SNPReport>]: never; }) | undefined;
|
|
165
|
+
certs?: ({
|
|
166
|
+
type?: SevSNPCertType | undefined;
|
|
167
|
+
cert?: Uint8Array | undefined;
|
|
168
|
+
format?: SevSnpCertificateFormat | undefined;
|
|
169
|
+
}[] & ({
|
|
170
|
+
type?: SevSNPCertType | undefined;
|
|
171
|
+
cert?: Uint8Array | undefined;
|
|
172
|
+
format?: SevSnpCertificateFormat | undefined;
|
|
173
|
+
} & {
|
|
174
|
+
type?: SevSNPCertType | undefined;
|
|
175
|
+
cert?: Uint8Array | undefined;
|
|
176
|
+
format?: SevSnpCertificateFormat | undefined;
|
|
177
|
+
} & { [K_5 in Exclude<keyof I_1["certs"][number], keyof SnpCert>]: never; })[] & { [K_6 in Exclude<keyof I_1["certs"], keyof {
|
|
178
|
+
type?: SevSNPCertType | undefined;
|
|
179
|
+
cert?: Uint8Array | undefined;
|
|
180
|
+
format?: SevSnpCertificateFormat | undefined;
|
|
181
|
+
}[]>]: never; }) | undefined;
|
|
182
|
+
} & { [K_7 in Exclude<keyof I_1, keyof SNPReportWithChain>]: never; }>(object: I_1): SNPReportWithChain;
|
|
183
|
+
};
|
|
184
|
+
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
|
|
185
|
+
export type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
|
|
186
|
+
[K in keyof T]?: DeepPartial<T[K]>;
|
|
187
|
+
} : Partial<T>;
|
|
188
|
+
type KeysOfUnion<T> = T extends T ? keyof T : never;
|
|
189
|
+
export type Exact<P, I extends P> = P extends Builtin ? P : P & {
|
|
190
|
+
[K in keyof P]: Exact<P[K], I[K]>;
|
|
191
|
+
} & {
|
|
192
|
+
[K in Exclude<keyof I, KeysOfUnion<P>>]: never;
|
|
193
|
+
};
|
|
194
|
+
export {};
|