@super-protocol/addons-tee 0.9.10 → 2.0.0
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/nvidia-native/README.md +174 -0
- package/bindings/nvidia-native/package.json +26 -0
- package/bindings/nvidia-native/postinstall.js +40 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -28
- package/package.json +4 -2
- package/.editorconfig +0 -15
- package/.eslintrc.json +0 -61
- package/.prettierignore +0 -3
- package/.prettierrc +0 -15
- 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 +0 -51
- package/bindings/amd-sev-snp-napi-rs/index.js +0 -339
- package/bindings/amd-sev-snp-napi-rs/package-lock.json +0 -40
- package/bindings/sgx-native/build/Release/libmbedcrypto_gramine.so.15 +0 -0
- package/bindings/sgx-native/build/Release/libmbedx509_gramine.so.6 +0 -0
- package/bindings/sgx-native/build/Release/libsgx_dcap_quoteverify.so.1 +0 -0
- package/bindings/sgx-native/build/Release/libtdx_attest.so.1 +0 -0
- package/bindings/sgx-native/build/Release/sgx_native.node +0 -0
- package/bindings/sgx-native/package-lock.json +0 -23
- package/bindings/sp-sev/.github/auto_assign-issues.yml +0 -5
- package/bindings/sp-sev/.github/auto_assign.yml +0 -21
- package/bindings/sp-sev/.github/dependabot.yml +0 -6
- package/bindings/sp-sev/.github/workflows/dco.yml +0 -10
- package/bindings/sp-sev/.github/workflows/lint.yml +0 -56
- package/bindings/sp-sev/.github/workflows/test.yml +0 -215
- package/bindings/sp-sev/.rustfmt.toml +0 -2
- package/bindings/sp-sev/CODEOWNERS +0 -1
- package/bindings/sp-sev/Cargo.lock +0 -2461
- package/bindings/sp-sev/Cargo.toml +0 -80
- package/bindings/sp-sev/LICENSE +0 -201
- package/bindings/sp-sev/README.md +0 -82
- package/bindings/sp-sev/build.rs +0 -17
- package/bindings/sp-sev/docs/attestation/README.md +0 -239
- package/bindings/sp-sev/docs/attestation/certchain.dot +0 -14
- package/bindings/sp-sev/docs/attestation/certchain.dot.png +0 -0
- package/bindings/sp-sev/docs/attestation/prerequisites.md +0 -6
- package/bindings/sp-sev/docs/attestation/process.msc +0 -60
- package/bindings/sp-sev/docs/attestation/process.msc.png +0 -0
- package/bindings/sp-sev/docs/attestation/protections.md +0 -53
- package/bindings/sp-sev/package-version.py +0 -11
- package/bindings/sp-sev/tests/api.rs +0 -194
- package/bindings/sp-sev/tests/certs.rs +0 -142
- package/bindings/sp-sev/tests/certs_data/cert_chain_milan +0 -74
- package/bindings/sp-sev/tests/certs_data/cert_chain_turin +0 -74
- package/bindings/sp-sev/tests/certs_data/report_milan.hex +0 -1
- package/bindings/sp-sev/tests/certs_data/vcek_milan.der +0 -0
- package/bindings/sp-sev/tests/certs_data/vcek_turin.der +0 -0
- package/bindings/sp-sev/tests/guest.rs +0 -57
- package/bindings/sp-sev/tests/id-block.rs +0 -172
- package/bindings/sp-sev/tests/measurement/ovmf_AmdSev_suffix.bin +0 -0
- package/bindings/sp-sev/tests/measurement/ovmf_OvmfX64_suffix.bin +0 -0
- package/bindings/sp-sev/tests/measurement/test_auth_block.bin +0 -0
- package/bindings/sp-sev/tests/measurement/test_auth_key.pem +0 -6
- package/bindings/sp-sev/tests/measurement/test_auth_sig.bin +0 -0
- package/bindings/sp-sev/tests/measurement/test_id_key.pem +0 -6
- package/bindings/sp-sev/tests/measurement/test_id_sig.bin +0 -0
- package/bindings/sp-sev/tests/measurement.rs +0 -510
- package/bindings/sp-sev/tests/naples/ark.cert.bad +0 -0
- package/bindings/sp-sev/tests/naples/ark.cert.sig +0 -0
- package/bindings/sp-sev/tests/naples/ark.rs +0 -38
- package/bindings/sp-sev/tests/naples/ask.rs +0 -29
- package/bindings/sp-sev/tests/naples/cek.cert +0 -0
- package/bindings/sp-sev/tests/naples/cek.rs +0 -30
- package/bindings/sp-sev/tests/naples/mod.rs +0 -20
- package/bindings/sp-sev/tests/naples/oca.cert +0 -0
- package/bindings/sp-sev/tests/naples/oca.rs +0 -45
- package/bindings/sp-sev/tests/naples/pdh.cert +0 -0
- package/bindings/sp-sev/tests/naples/pdh.rs +0 -28
- package/bindings/sp-sev/tests/naples/pek.cert +0 -0
- package/bindings/sp-sev/tests/naples/pek.rs +0 -32
- package/bindings/sp-sev/tests/rome/ark.rs +0 -33
- package/bindings/sp-sev/tests/rome/ask.rs +0 -29
- package/bindings/sp-sev/tests/rome/cek.cert +0 -0
- package/bindings/sp-sev/tests/rome/cek.rs +0 -29
- package/bindings/sp-sev/tests/rome/mod.rs +0 -16
- package/bindings/sp-sev/tests/rome/oca.cert +0 -0
- package/bindings/sp-sev/tests/rome/oca.rs +0 -45
- package/bindings/sp-sev/tests/rome/pdh.cert +0 -0
- package/bindings/sp-sev/tests/rome/pdh.rs +0 -28
- package/bindings/sp-sev/tests/rome/pek.cert +0 -0
- package/bindings/sp-sev/tests/rome/pek.rs +0 -32
- package/bindings/sp-sev/tests/session.rs +0 -39
- package/bindings/sp-sev/tests/sev_launch.rs +0 -120
- package/bindings/sp-sev/tests/snp_launch.rs +0 -108
- package/bindings/utils/virtee/LICENSE +0 -201
- package/bindings/utils/virtee/libsev.so +0 -0
- package/bindings/utils/virtee/snpguest +0 -0
- package/dist/proto/AmdSevSnp.d.ts +0 -194
- package/dist/proto/AmdSevSnp.js +0 -363
- package/dist/sgx-native-module/consts.d.ts +0 -24
- package/dist/sgx-native-module/consts.js +0 -38
- package/dist/sgx-native-module/dcap-quote-verify.service.d.ts +0 -12
- package/dist/sgx-native-module/dcap-quote-verify.service.js +0 -84
- package/dist/sgx-native-module/enclave.service.d.ts +0 -93
- package/dist/sgx-native-module/enclave.service.js +0 -211
- package/dist/sgx-native-module/errors.d.ts +0 -19
- package/dist/sgx-native-module/errors.js +0 -69
- package/dist/sgx-native-module/helpers.d.ts +0 -1
- package/dist/sgx-native-module/helpers.js +0 -50
- package/dist/sgx-native-module/index.d.ts +0 -9
- package/dist/sgx-native-module/index.js +0 -26
- package/dist/sgx-native-module/pki.service.d.ts +0 -52
- package/dist/sgx-native-module/pki.service.js +0 -89
- package/dist/sgx-native-module/sev-snp-mrenclave.d.ts +0 -59
- package/dist/sgx-native-module/sev-snp-mrenclave.js +0 -323
- package/dist/sgx-native-module/sev-snp-schema.d.ts +0 -22
- package/dist/sgx-native-module/sev-snp-schema.js +0 -24
- package/dist/sgx-native-module/sev-snp.d.ts +0 -126
- package/dist/sgx-native-module/sev-snp.js +0 -491
- package/dto/src/AmdSevSnp.proto +0 -31
- package/dto/src/Compression.proto +0 -11
- package/dto/src/Hash.proto +0 -6
- package/dto/src/OrderReport.proto +0 -21
- package/dto/src/TRI.proto +0 -22
- package/dto/src/TeeDeviceInfo.proto +0 -46
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
# Commits which modify this file MUST generate the new .png!
|
|
2
|
-
msc {
|
|
3
|
-
tenant [textbgcolor="green"],
|
|
4
|
-
host [textbgcolor="red"],
|
|
5
|
-
bios [textbgcolor="orange"],
|
|
6
|
-
bootloader [textbgcolor="orange"],
|
|
7
|
-
kernel [textbgcolor="orange"],
|
|
8
|
-
psp [textbgcolor="yellow"];
|
|
9
|
-
|
|
10
|
-
tenant=>host [label="cert chain request"];
|
|
11
|
-
host=>psp [label="cert chain request"];
|
|
12
|
-
psp=>host [label="cert chain reply\n(w/ firmware version)"];
|
|
13
|
-
host=>tenant [label="cert chain reply\n(w/ firmware version)"];
|
|
14
|
-
|
|
15
|
-
...;
|
|
16
|
-
|
|
17
|
-
tenant box tenant [label="validate cert chain"];
|
|
18
|
-
tenant box tenant [label="validate fw version"];
|
|
19
|
-
tenant box tenant [label="craft exec policy"];
|
|
20
|
-
tenant box tenant [label="random cdh keypair"];
|
|
21
|
-
tenant box tenant [label="random tek/tik"];
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
tenant box tenant [label="DH(cdh, pdh) => z"];
|
|
25
|
-
tenant box tenant [label="KDF(z) => master"];
|
|
26
|
-
tenant box tenant [label="KDF(master) => kek"];
|
|
27
|
-
tenant box tenant [label="KDF(master) => kik"];
|
|
28
|
-
|
|
29
|
-
tenant => host [label="CDH, MAC(tik, policy),\nMAC(kik, ENC(kek, tek||tik))"];
|
|
30
|
-
host => psp [label="CDH, MAC(tik, policy),\nMAC(kik, ENC(kek, tek||tik))"];
|
|
31
|
-
|
|
32
|
-
psp box psp [label="DH(cdh, pdh) => z"];
|
|
33
|
-
psp box psp [label="KDF(z) => master"];
|
|
34
|
-
psp box psp [label="KDF(master) => kek"];
|
|
35
|
-
psp box psp [label="KDF(master) => kik"];
|
|
36
|
-
|
|
37
|
-
psp box psp [label="check MAC(kik, ...)"];
|
|
38
|
-
psp box psp [label="DEC(kek, tek||tik)"];
|
|
39
|
-
|
|
40
|
-
host => psp [label="guest pages"];
|
|
41
|
-
psp box psp [label="measure guest pages"];
|
|
42
|
-
|
|
43
|
-
psp => host [label="MAC(tik, measurement)"];
|
|
44
|
-
host => tenant [label="MAC(tik, measurement)"];
|
|
45
|
-
|
|
46
|
-
tenant box tenant [label="validate measure"];
|
|
47
|
-
tenant box tenant [label="prepare metadata"];
|
|
48
|
-
tenant => host [label="enc = ENC(tek, metadata)\nMAC(tik, enc)"];
|
|
49
|
-
host => psp [label="enc = ENC(tek, metadata)\nMAC(tik, enc)"];
|
|
50
|
-
|
|
51
|
-
psp => bios [label="decrypt metadata into guest memory"];
|
|
52
|
-
|
|
53
|
-
--- [label="VM START"];
|
|
54
|
-
|
|
55
|
-
bios => bootloader [label="metadata"];
|
|
56
|
-
bootloader => kernel [label="metadata"];
|
|
57
|
-
kernel box kernel [label="unlock volume"];
|
|
58
|
-
|
|
59
|
-
--- [label="BOOT COMPLETE"];
|
|
60
|
-
}
|
|
Binary file
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# Protections
|
|
2
|
-
|
|
3
|
-
An SEV-enabled guest will be protected from a number of potential threats.
|
|
4
|
-
|
|
5
|
-
These threats are broadly categorized like so:
|
|
6
|
-
|
|
7
|
-
**Confidentiality**: Anything that could disclose and/or read the contents of the virtual machine without
|
|
8
|
-
its explicit permission is a threat to the virtual machine's confidentiality.
|
|
9
|
-
|
|
10
|
-
**Integrity**: The virtual machine must always see the data that it last wrote. If this invariant is broken,
|
|
11
|
-
then the integrity of the virtual machine is compromised.
|
|
12
|
-
|
|
13
|
-
**Physical Access Attacks**: An attacker with a substantial level of access to the physical hardware may use
|
|
14
|
-
this access to conduct attacks on the system and virtual machines running on it.
|
|
15
|
-
|
|
16
|
-
**Miscellaneous**: An attack which doesn't fit in as nicely to any of the other above categories.
|
|
17
|
-
|
|
18
|
-
Table legend:
|
|
19
|
-
|
|
20
|
-
* :heavy\_check\_mark:: indicates that this attack is thwarted by an SEV feature.
|
|
21
|
-
|
|
22
|
-
* :star2:: indicates that this mitigation may be optionally enabled.
|
|
23
|
-
|
|
24
|
-
* : an empty cell indicates that the attack is *not* mitigated by that technology.
|
|
25
|
-
|
|
26
|
-
| **Confidentiality** | **SEV** | **SEV-ES** | **SEV-SNP** |
|
|
27
|
-
| ------------------: | :-----: | :--------: | :---------: |
|
|
28
|
-
| VM Memory (*ex: Hypervisor reads private VM memory*) | :heavy\_check\_mark: | :heavy\_check\_mark: | :heavy\_check\_mark: |
|
|
29
|
-
| VM Register State (*ex: Hypervisor attempts to read VM register context*) | | :heavy\_check\_mark: | :heavy\_check\_mark: |
|
|
30
|
-
| DMA Protection (*ex: Device attempts to read VM memory*) | :heavy\_check\_mark: | :heavy\_check\_mark: | :heavy\_check\_mark: |
|
|
31
|
-
| **Integrity** | **SEV** | **SEV-ES** | **SEV-SNP** |
|
|
32
|
-
| Replay Protection (*ex: VM memory is replaced with an old copy*) | | | :heavy\_check\_mark: |
|
|
33
|
-
| Data Corruption (*ex: VM memory is replaced with junk data*) | | | :heavy\_check\_mark: |
|
|
34
|
-
| Memory Aliasing (*ex: Hypervisor maps two guest pages to same DRAM page*) | | | :heavy\_check\_mark: |
|
|
35
|
-
| Memory Re-mapping (*ex: Hypervisor switches DRAM page mapped to a guest page*) | | | :heavy\_check\_mark: |
|
|
36
|
-
| **Availability** | **SEV** | **SEV-ES** | **SEV-SNP** |
|
|
37
|
-
| Guest to Host Denial of Service (*ex: Guest refuses to yield/exit*) | :heavy\_check\_mark: | :heavy\_check\_mark: | :heavy\_check\_mark: |
|
|
38
|
-
| Host to Guest Denial of Service (*ex: Host refuses to run guest*) | | | |
|
|
39
|
-
| **Physical Access Attacks** | **SEV** | **SEV-ES** | **SEV-SNP** |
|
|
40
|
-
| Offline DRAM analysis (*ex: Cold boot*) | :heavy\_check\_mark: | :heavy\_check\_mark: | :heavy\_check\_mark: |
|
|
41
|
-
| Active DRAM corruption (*ex: Manipulate DDR bus while VM is running*) | | | |
|
|
42
|
-
| **Miscellaneous Attacks** | **SEV** | **SEV-ES** | **SEV-SNP** |
|
|
43
|
-
| TCB Rollback (*ex: AMD-SP firmware is reverted to older version*) | | | :heavy\_check\_mark: |
|
|
44
|
-
| Malicious Interrupt/Exception Injection (*ex: interrupt injected while RFLAGS.IF=0*) | | | :star2: |
|
|
45
|
-
| Indirect Branch Predictor Poisoning (*ex: Poison BTB from hypervisor*) | | | :star2: |
|
|
46
|
-
| Secure Hardware Debug Registers (*ex: Breakpoints changed during debugging*) | | | :star2: |
|
|
47
|
-
| Trusted CPUID Information (*ex: Hypervisor lies about platform capabilities*) | | | :star2: |
|
|
48
|
-
| Architectural Side Channels (*ex: PRIME+PROBE to track VM accesses*) | | | |
|
|
49
|
-
| Page-level Side Channels (*ex: Track VM access patterns through page tables*) | | | |
|
|
50
|
-
| Performance Counter Tracking (*ex: Fingerprint VM workloads by performance data*) | | | |
|
|
51
|
-
|
|
52
|
-
*The table above was taken directly from the [AMD SEV-SNP Whitepaper (Table 1: Threat Model)](
|
|
53
|
-
https://www.amd.com/system/files/TechDocs/SEV-SNP-strengthening-vm-isolation-with-integrity-protection-and-more.pdf).*
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
-
|
|
3
|
-
#[cfg(all(feature = "sev", target_os = "linux"))]
|
|
4
|
-
mod sev {
|
|
5
|
-
#[cfg(feature = "dangerous_hw_tests")]
|
|
6
|
-
use serial_test::serial;
|
|
7
|
-
#[cfg(feature = "dangerous_hw_tests")]
|
|
8
|
-
use sev::cached_chain;
|
|
9
|
-
use sev::{
|
|
10
|
-
certs::sev::sev::Usage,
|
|
11
|
-
firmware::host::{Build, Firmware, Version},
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
#[cfg(feature = "dangerous_hw_tests")]
|
|
15
|
-
#[cfg_attr(not(host), ignore)]
|
|
16
|
-
#[test]
|
|
17
|
-
#[serial]
|
|
18
|
-
fn platform_reset() {
|
|
19
|
-
let mut fw = Firmware::open().unwrap();
|
|
20
|
-
fw.platform_reset().unwrap();
|
|
21
|
-
cached_chain::rm_cached_chain();
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
#[cfg_attr(not(host), ignore)]
|
|
25
|
-
#[test]
|
|
26
|
-
fn platform_status() {
|
|
27
|
-
let mut fw = Firmware::open().unwrap();
|
|
28
|
-
let status = fw.platform_status().unwrap();
|
|
29
|
-
assert!(
|
|
30
|
-
status.build
|
|
31
|
-
> Build {
|
|
32
|
-
version: Version {
|
|
33
|
-
major: 0,
|
|
34
|
-
minor: 14
|
|
35
|
-
},
|
|
36
|
-
..Default::default()
|
|
37
|
-
}
|
|
38
|
-
);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
#[cfg(feature = "dangerous_hw_tests")]
|
|
42
|
-
#[cfg_attr(not(host), ignore)]
|
|
43
|
-
#[test]
|
|
44
|
-
#[serial]
|
|
45
|
-
fn pek_generate() {
|
|
46
|
-
let mut fw = Firmware::open().unwrap();
|
|
47
|
-
fw.pek_generate().unwrap();
|
|
48
|
-
cached_chain::rm_cached_chain();
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
#[cfg_attr(not(host), ignore)]
|
|
52
|
-
#[test]
|
|
53
|
-
fn pek_csr() {
|
|
54
|
-
let mut fw = Firmware::open().unwrap();
|
|
55
|
-
let pek = fw.pek_csr().unwrap();
|
|
56
|
-
assert_eq!(pek, Usage::PEK);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
#[cfg(feature = "dangerous_hw_tests")]
|
|
60
|
-
#[cfg_attr(not(host), ignore)]
|
|
61
|
-
#[test]
|
|
62
|
-
#[serial]
|
|
63
|
-
fn pdh_generate() {
|
|
64
|
-
let mut fw = Firmware::open().unwrap();
|
|
65
|
-
fw.pdh_generate().unwrap();
|
|
66
|
-
cached_chain::rm_cached_chain();
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
#[cfg(feature = "openssl")]
|
|
70
|
-
#[cfg_attr(not(host), ignore)]
|
|
71
|
-
#[test]
|
|
72
|
-
fn pdh_cert_export() {
|
|
73
|
-
use sev::certs::sev::Verifiable;
|
|
74
|
-
|
|
75
|
-
let mut fw = Firmware::open().unwrap();
|
|
76
|
-
let chain = fw.pdh_cert_export().unwrap();
|
|
77
|
-
|
|
78
|
-
assert_eq!(chain.pdh, Usage::PDH);
|
|
79
|
-
assert_eq!(chain.pek, Usage::PEK);
|
|
80
|
-
assert_eq!(chain.oca, Usage::OCA);
|
|
81
|
-
assert_eq!(chain.cek, Usage::CEK);
|
|
82
|
-
|
|
83
|
-
chain.verify().unwrap();
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
#[cfg(all(feature = "openssl", feature = "dangerous_hw_tests"))]
|
|
87
|
-
#[cfg_attr(not(host), ignore)]
|
|
88
|
-
#[test]
|
|
89
|
-
#[serial]
|
|
90
|
-
fn pek_cert_import() {
|
|
91
|
-
use sev::certs::sev::{sev::Certificate, Signer, Verifiable};
|
|
92
|
-
|
|
93
|
-
let mut fw = Firmware::open().unwrap();
|
|
94
|
-
|
|
95
|
-
let (mut oca, key) = Certificate::generate(Usage::OCA).unwrap();
|
|
96
|
-
key.sign(&mut oca).unwrap();
|
|
97
|
-
|
|
98
|
-
let mut pek = fw.pek_csr().unwrap();
|
|
99
|
-
key.sign(&mut pek).unwrap();
|
|
100
|
-
|
|
101
|
-
fw.pek_cert_import(&pek, &oca).unwrap();
|
|
102
|
-
|
|
103
|
-
let chain = fw.pdh_cert_export().unwrap();
|
|
104
|
-
assert_eq!(oca, chain.oca);
|
|
105
|
-
chain.verify().unwrap();
|
|
106
|
-
|
|
107
|
-
fw.platform_reset().unwrap();
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
#[cfg_attr(not(host), ignore)]
|
|
111
|
-
#[test]
|
|
112
|
-
fn get_identifier() {
|
|
113
|
-
let mut fw = Firmware::open().unwrap();
|
|
114
|
-
let id = fw.get_identifier().unwrap();
|
|
115
|
-
assert_ne!(Vec::from(id), vec![0u8; 64]);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
#[cfg(all(feature = "snp", target_os = "linux"))]
|
|
120
|
-
mod snp {
|
|
121
|
-
use serial_test::serial;
|
|
122
|
-
use sev::firmware::host::{Config, Firmware, MaskId, SnpPlatformStatus, TcbVersion};
|
|
123
|
-
|
|
124
|
-
#[cfg_attr(not(host), ignore)]
|
|
125
|
-
#[test]
|
|
126
|
-
fn get_identifier() {
|
|
127
|
-
let mut fw = Firmware::open().unwrap();
|
|
128
|
-
let id = fw.get_identifier().unwrap();
|
|
129
|
-
assert_ne!(Vec::from(id), vec![0u8; 64]);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
#[cfg_attr(not(host), ignore)]
|
|
133
|
-
#[test]
|
|
134
|
-
fn platform_status() {
|
|
135
|
-
let mut fw: Firmware = Firmware::open().unwrap();
|
|
136
|
-
let status: SnpPlatformStatus = fw.snp_platform_status().unwrap();
|
|
137
|
-
|
|
138
|
-
println!(
|
|
139
|
-
"Platform status ioctl results:
|
|
140
|
-
version (major, minor): {}.{}
|
|
141
|
-
build id: {}
|
|
142
|
-
guests: {}
|
|
143
|
-
platform tcb microcode version: {}
|
|
144
|
-
platform tcb snp version: {}
|
|
145
|
-
platform tcb tee version: {}
|
|
146
|
-
platform tcb bootloader version: {}
|
|
147
|
-
reported tcb microcode version: {}
|
|
148
|
-
reported tcb snp version: {}
|
|
149
|
-
reported tcb tee version: {}
|
|
150
|
-
reported tcb bootloader version: {}
|
|
151
|
-
state: {}",
|
|
152
|
-
status.version.0,
|
|
153
|
-
status.version.1,
|
|
154
|
-
status.build_id,
|
|
155
|
-
status.guest_count,
|
|
156
|
-
status.platform_tcb_version.microcode,
|
|
157
|
-
status.platform_tcb_version.snp,
|
|
158
|
-
status.platform_tcb_version.tee,
|
|
159
|
-
status.platform_tcb_version.bootloader,
|
|
160
|
-
status.reported_tcb_version.microcode,
|
|
161
|
-
status.reported_tcb_version.snp,
|
|
162
|
-
status.reported_tcb_version.tee,
|
|
163
|
-
status.reported_tcb_version.bootloader,
|
|
164
|
-
status.state
|
|
165
|
-
);
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
#[cfg_attr(not(all(host, feature = "dangerous_hw_tests")), ignore)]
|
|
169
|
-
#[test]
|
|
170
|
-
#[serial]
|
|
171
|
-
fn commit_snp() {
|
|
172
|
-
let mut fw: Firmware = Firmware::open().unwrap();
|
|
173
|
-
fw.snp_commit().unwrap();
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
#[cfg_attr(not(all(host, feature = "dangerous_hw_tests")), ignore)]
|
|
177
|
-
#[test]
|
|
178
|
-
#[serial]
|
|
179
|
-
fn set_config_generation() {
|
|
180
|
-
let mut fw: Firmware = Firmware::open().unwrap();
|
|
181
|
-
|
|
182
|
-
fw.snp_set_config(Config::default()).unwrap();
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
#[cfg_attr(not(all(host, feature = "dangerous_hw_tests")), ignore)]
|
|
186
|
-
#[test]
|
|
187
|
-
#[serial]
|
|
188
|
-
fn test_host_fw_error() {
|
|
189
|
-
let mut fw: Firmware = Firmware::open().unwrap();
|
|
190
|
-
let invalid_config = Config::new(TcbVersion::new(None, 100, 100, 100, 100), MaskId(31));
|
|
191
|
-
let fw_error = fw.snp_set_config(invalid_config).unwrap_err().to_string();
|
|
192
|
-
assert_eq!(fw_error, "Firmware Error Encountered: Known SEV FW Error: Status Code: 0x16: Given parameter is invalid.")
|
|
193
|
-
}
|
|
194
|
-
}
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
-
|
|
3
|
-
#[cfg(feature = "sev")]
|
|
4
|
-
mod naples;
|
|
5
|
-
|
|
6
|
-
#[cfg(feature = "sev")]
|
|
7
|
-
mod rome;
|
|
8
|
-
|
|
9
|
-
#[cfg(all(feature = "openssl", feature = "sev"))]
|
|
10
|
-
mod sev {
|
|
11
|
-
use super::*;
|
|
12
|
-
|
|
13
|
-
#[test]
|
|
14
|
-
fn test_for_verify_false_positive() {
|
|
15
|
-
use ::sev::certs::sev::*;
|
|
16
|
-
use codicon::Decoder;
|
|
17
|
-
|
|
18
|
-
// https://github.com/enarx/enarx/issues/520
|
|
19
|
-
let naples_cek = sev::Certificate::decode(&mut &naples::CEK[..], ()).unwrap();
|
|
20
|
-
let rome_ask = ca::Certificate::decode(&mut &builtin::rome::ASK[..], ()).unwrap();
|
|
21
|
-
assert!((&rome_ask, &naples_cek).verify().is_err());
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
#[cfg(all(feature = "snp", any(feature = "openssl", feature = "crypto_nossl")))]
|
|
26
|
-
mod snp {
|
|
27
|
-
|
|
28
|
-
use sev::certs::snp::{builtin::milan, ca, Certificate, Chain, Verifiable};
|
|
29
|
-
|
|
30
|
-
const TEST_MILAN_VCEK_DER: &[u8] = include_bytes!("certs_data/vcek_milan.der");
|
|
31
|
-
|
|
32
|
-
#[cfg(feature = "openssl")]
|
|
33
|
-
const TEST_TURIN_VCEK_DER: &[u8] = include_bytes!("certs_data/vcek_turin.der");
|
|
34
|
-
|
|
35
|
-
const TEST_MILAN_ATTESTATION_REPORT: &[u8] = include_bytes!("certs_data/report_milan.hex");
|
|
36
|
-
|
|
37
|
-
#[cfg(feature = "openssl")]
|
|
38
|
-
const TEST_MILAN_CA: &[u8] = include_bytes!("certs_data/cert_chain_milan");
|
|
39
|
-
|
|
40
|
-
#[cfg(feature = "openssl")]
|
|
41
|
-
const TEST_TURIN_CA: &[u8] = include_bytes!("certs_data/cert_chain_turin");
|
|
42
|
-
|
|
43
|
-
#[test]
|
|
44
|
-
fn milan_chain() {
|
|
45
|
-
let ark = milan::ark().unwrap();
|
|
46
|
-
let ask = milan::ask().unwrap();
|
|
47
|
-
let vcek = Certificate::from_der(TEST_MILAN_VCEK_DER).unwrap();
|
|
48
|
-
|
|
49
|
-
let ca = ca::Chain { ark, ask };
|
|
50
|
-
|
|
51
|
-
let chain = Chain {
|
|
52
|
-
ca,
|
|
53
|
-
vek: vcek.clone(),
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
assert_eq!(chain.verify().ok(), Some(&vcek));
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
#[test]
|
|
60
|
-
fn milan_chain_invalid() {
|
|
61
|
-
let ark = milan::ark().unwrap();
|
|
62
|
-
let ask = milan::ask().unwrap();
|
|
63
|
-
let vcek = {
|
|
64
|
-
let mut buf = TEST_MILAN_VCEK_DER.to_vec();
|
|
65
|
-
buf[40] ^= 0xff;
|
|
66
|
-
Certificate::from_der(&buf).unwrap()
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
let ca = ca::Chain { ark, ask };
|
|
70
|
-
|
|
71
|
-
let chain = Chain { ca, vek: vcek };
|
|
72
|
-
|
|
73
|
-
assert_eq!(chain.verify().ok(), None);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
#[test]
|
|
77
|
-
fn milan_report() {
|
|
78
|
-
use sev::firmware::guest::AttestationReport;
|
|
79
|
-
|
|
80
|
-
let ark = milan::ark().unwrap();
|
|
81
|
-
let ask = milan::ask().unwrap();
|
|
82
|
-
let vcek = Certificate::from_der(TEST_MILAN_VCEK_DER).unwrap();
|
|
83
|
-
|
|
84
|
-
let ca = ca::Chain { ark, ask };
|
|
85
|
-
|
|
86
|
-
let chain = Chain { ca, vek: vcek };
|
|
87
|
-
|
|
88
|
-
let report_bytes = hex::decode(TEST_MILAN_ATTESTATION_REPORT).unwrap();
|
|
89
|
-
let report: AttestationReport = AttestationReport::from_bytes(&report_bytes).unwrap();
|
|
90
|
-
|
|
91
|
-
assert_eq!((&chain, &report).verify().ok(), Some(()));
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
#[test]
|
|
95
|
-
fn milan_report_invalid() {
|
|
96
|
-
use sev::firmware::guest::AttestationReport;
|
|
97
|
-
|
|
98
|
-
let ark = milan::ark().unwrap();
|
|
99
|
-
let ask = milan::ask().unwrap();
|
|
100
|
-
let vcek = Certificate::from_der(TEST_MILAN_VCEK_DER).unwrap();
|
|
101
|
-
|
|
102
|
-
let ca = ca::Chain { ark, ask };
|
|
103
|
-
|
|
104
|
-
let chain = Chain { ca, vek: vcek };
|
|
105
|
-
|
|
106
|
-
let mut report_bytes = hex::decode(TEST_MILAN_ATTESTATION_REPORT).unwrap();
|
|
107
|
-
report_bytes[21] ^= 0x80;
|
|
108
|
-
let report = AttestationReport::from_bytes(&report_bytes).unwrap();
|
|
109
|
-
|
|
110
|
-
assert_eq!((&chain, &report).verify().ok(), None);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
#[cfg(feature = "openssl")]
|
|
114
|
-
#[test]
|
|
115
|
-
fn milan_ca_stack() {
|
|
116
|
-
let vcek = Certificate::from_der(TEST_MILAN_VCEK_DER).unwrap();
|
|
117
|
-
|
|
118
|
-
let ca = ca::Chain::from_pem_bytes(TEST_MILAN_CA).unwrap();
|
|
119
|
-
|
|
120
|
-
let chain = Chain {
|
|
121
|
-
ca,
|
|
122
|
-
vek: vcek.clone(),
|
|
123
|
-
};
|
|
124
|
-
|
|
125
|
-
assert_eq!(chain.verify().ok(), Some(&vcek));
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
#[cfg(feature = "openssl")]
|
|
129
|
-
#[test]
|
|
130
|
-
fn turin_ca_stack() {
|
|
131
|
-
let vcek = Certificate::from_der(TEST_TURIN_VCEK_DER).unwrap();
|
|
132
|
-
|
|
133
|
-
let ca = ca::Chain::from_pem_bytes(TEST_TURIN_CA).unwrap();
|
|
134
|
-
|
|
135
|
-
let chain = Chain {
|
|
136
|
-
ca,
|
|
137
|
-
vek: vcek.clone(),
|
|
138
|
-
};
|
|
139
|
-
|
|
140
|
-
assert_eq!(chain.verify().ok(), Some(&vcek));
|
|
141
|
-
}
|
|
142
|
-
}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
|
2
|
-
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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
jup9mw5se6QUV7GqpCA2TNypolmuQ+cAaxV7JqHE8dl9pWf+Y3arb+9iiFCwFt4l
|
|
18
|
-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
-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
-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
-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
-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
-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
-
ZHNpbnRmLmFtZC5jb20vdmNlay92MS9NaWxhbi9jcmwwRgYJKoZIhvcNAQEKMDmg
|
|
25
|
-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
-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
-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
-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
-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
-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
-
mt8Vr9xnXRpznqCRvqjr+kVrb6dlfuTlliXeQTMlBoRWFJORL8AcBJxGZ4K2mXft
|
|
32
|
-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
-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
-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
-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
-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
|
|
37
|
-
-----END CERTIFICATE-----
|
|
38
|
-
-----BEGIN CERTIFICATE-----
|
|
39
|
-
MIIGYzCCBBKgAwIBAgIDAQAAMEYGCSqGSIb3DQEBCjA5oA8wDQYJYIZIAWUDBAIC
|
|
40
|
-
BQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAICBQCiAwIBMKMDAgEBMHsxFDAS
|
|
41
|
-
BgNVBAsMC0VuZ2luZWVyaW5nMQswCQYDVQQGEwJVUzEUMBIGA1UEBwwLU2FudGEg
|
|
42
|
-
Q2xhcmExCzAJBgNVBAgMAkNBMR8wHQYDVQQKDBZBZHZhbmNlZCBNaWNybyBEZXZp
|
|
43
|
-
Y2VzMRIwEAYDVQQDDAlBUkstTWlsYW4wHhcNMjAxMDIyMTcyMzA1WhcNNDUxMDIy
|
|
44
|
-
MTcyMzA1WjB7MRQwEgYDVQQLDAtFbmdpbmVlcmluZzELMAkGA1UEBhMCVVMxFDAS
|
|
45
|
-
BgNVBAcMC1NhbnRhIENsYXJhMQswCQYDVQQIDAJDQTEfMB0GA1UECgwWQWR2YW5j
|
|
46
|
-
ZWQgTWljcm8gRGV2aWNlczESMBAGA1UEAwwJQVJLLU1pbGFuMIICIjANBgkqhkiG
|
|
47
|
-
9w0BAQEFAAOCAg8AMIICCgKCAgEA0Ld52RJOdeiJlqK2JdsVmD7FktuotWwX1fNg
|
|
48
|
-
W41XY9Xz1HEhSUmhLz9Cu9DHRlvgJSNxbeYYsnJfvyjx1MfU0V5tkKiU1EesNFta
|
|
49
|
-
1kTA0szNisdYc9isqk7mXT5+KfGRbfc4V/9zRIcE8jlHN61S1ju8X93+6dxDUrG2
|
|
50
|
-
SzxqJ4BhqyYmUDruPXJSX4vUc01P7j98MpqOS95rORdGHeI52Naz5m2B+O+vjsC0
|
|
51
|
-
60d37jY9LFeuOP4Meri8qgfi2S5kKqg/aF6aPtuAZQVR7u3KFYXP59XmJgtcog05
|
|
52
|
-
gmI0T/OitLhuzVvpZcLph0odh/1IPXqx3+MnjD97A7fXpqGd/y8KxX7jksTEzAOg
|
|
53
|
-
bKAeam3lm+3yKIcTYMlsRMXPcjNbIvmsBykD//xSniusuHBkgnlENEWx1UcbQQrs
|
|
54
|
-
+gVDkuVPhsnzIRNgYvM48Y+7LGiJYnrmE8xcrexekBxrva2V9TJQqnN3Q53kt5vi
|
|
55
|
-
Qi3+gCfmkwC0F0tirIZbLkXPrPwzZ0M9eNxhIySb2npJfgnqz55I0u33wh4r0ZNQ
|
|
56
|
-
eTGfw03MBUtyuzGesGkcw+loqMaq1qR4tjGbPYxCvpCq7+OgpCCoMNit2uLo9M18
|
|
57
|
-
fHz10lOMT8nWAUvRZFzteXCm+7PHdYPlmQwUw3LvenJ/ILXoQPHfbkH0CyPfhl1j
|
|
58
|
-
WhJFZasCAwEAAaN+MHwwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSFrBrRQ/fI
|
|
59
|
-
rFXUxR1BSKvVeErUUzAPBgNVHRMBAf8EBTADAQH/MDoGA1UdHwQzMDEwL6AtoCuG
|
|
60
|
-
KWh0dHBzOi8va2RzaW50Zi5hbWQuY29tL3ZjZWsvdjEvTWlsYW4vY3JsMEYGCSqG
|
|
61
|
-
SIb3DQEBCjA5oA8wDQYJYIZIAWUDBAICBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZI
|
|
62
|
-
AWUDBAICBQCiAwIBMKMDAgEBA4ICAQC6m0kDp6zv4Ojfgy+zleehsx6ol0ocgVel
|
|
63
|
-
ETobpx+EuCsqVFRPK1jZ1sp/lyd9+0fQ0r66n7kagRk4Ca39g66WGTJMeJdqYriw
|
|
64
|
-
STjjDCKVPSesWXYPVAyDhmP5n2v+BYipZWhpvqpaiO+EGK5IBP+578QeW/sSokrK
|
|
65
|
-
dHaLAxG2LhZxj9aF73fqC7OAJZ5aPonw4RE299FVarh1Tx2eT3wSgkDgutCTB1Yq
|
|
66
|
-
zT5DuwvAe+co2CIVIzMDamYuSFjPN0BCgojl7V+bTou7dMsqIu/TW/rPCX9/EUcp
|
|
67
|
-
KGKqPQ3P+N9r1hjEFY1plBg93t53OOo49GNI+V1zvXPLI6xIFVsh+mto2RtgEX/e
|
|
68
|
-
pmMKTNN6psW88qg7c1hTWtN6MbRuQ0vm+O+/2tKBF2h8THb94OvvHHoFDpbCELlq
|
|
69
|
-
HnIYhxy0YKXGyaW1NjfULxrrmxVW4wcn5E8GddmvNa6yYm8scJagEi13mhGu4Jqh
|
|
70
|
-
3QU3sf8iUSUr09xQDwHtOQUVIqx4maBZPBtSMf+qUDtjXSSq8lfWcd8bLr9mdsUn
|
|
71
|
-
JZJ0+tuPMKmBnSH860llKk+VpVQsgqbzDIvOLvD6W1Umq25boxCYJ+TuBoa4s+HH
|
|
72
|
-
CViAvgT9kf/rBq1d+ivj6skkHxuzcxbk1xv6ZGxrteJxVH7KlX7YRdZ6eARKwLe4
|
|
73
|
-
AFZEAwoKCQ==
|
|
74
|
-
-----END CERTIFICATE-----
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
|
2
|
-
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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
C2XepTQqaKpmt6mnDWSCHCVsQoY0gSibeaG6doM6OiNUCbKXaC7KHH5b/96BD1DJ
|
|
14
|
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
AgEwowMCAQEDggIBAAXWJ3DPahralt5kXLPMm9oKlFRqeU3HcS7kA+VBlBA1lQRU
|
|
27
|
-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
-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
-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
-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
-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
-
D5ZG/Qiz+tmhnptyPVcweC9uJlSWYm25KiV4lT52uBjxatDZKQcrpdgcU8+ozzKU
|
|
33
|
-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
-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
-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
-
8RZwPU/Mn7IuQBauCy78G7FS0ta3q1et74faYBBgeJ6awEasa25CvmsmlU0R
|
|
37
|
-
-----END CERTIFICATE-----
|
|
38
|
-
-----BEGIN CERTIFICATE-----
|
|
39
|
-
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
-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
-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
-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
-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
-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
-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
-
ZWQgTWljcm8gRGV2aWNlczESMBAGA1UEAwwJQVJLLVR1cmluMIICIjANBgkqhkiG
|
|
47
|
-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
-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
-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
-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
-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
-
ua+zuAG7i52epoRF2GfU0TYk/yf+vCNB2tnechFQuP2e8bLk95ZdqPi9/UWw4JXj
|
|
53
|
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
|
|
73
|
-
zpacMwFusA==
|
|
74
|
-
-----END CERTIFICATE-----
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0200000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000030000000000087301000000000000000000000000000000D447B55D197491BFE15CF298F9DE9986B7A7C4BE2468B4F6E2D53B71D7C645810B0F2CDFCA0040433BE063FC1A8293F0F3F8DAE7B79FECB3D1CD82BD6A93EBFD7A1E5C266C0108DBC9BB94FA926951320940915D0AAFB42464BD88B579EA158D3E1A0DC39B2C60BD95B9C480CD81841F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000092B3B47D59F0A2A10A74C5678868A80238CF593C01A82F3CFFB878E904C28D5BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0300000000000873000000000000000000000000000000000000000000000000D49554EC717F4E5B0FE6B143BCF0405BD7AE304727EDF46603F2A76AEF6A3ABC15D7AF38DB757039029F0EFACFD08E244324884738C72B082E2F87A44D541EB603000000000008730434010004340100030000000000087300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061AB4F11AA661997625F233DF42A4AD54440EEB7A96EA63DE170CBC29C37C005CB54054881EC7D2BEE569B02D07F8272000000000000000000000000000000000000000000000000209D7EB9BE919A1D0BAF1D57FE6EBFEABBC53B778C6E977E40B15CA931BB6D44C5AB9E30CFDC7346CB41AC083B90BF490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
Binary file
|
|
Binary file
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
-
|
|
3
|
-
#![cfg(all(feature = "snp", target_os = "linux"))]
|
|
4
|
-
|
|
5
|
-
use sev::firmware::guest::*;
|
|
6
|
-
|
|
7
|
-
#[cfg_attr(not(guest), ignore)]
|
|
8
|
-
#[test]
|
|
9
|
-
fn get_report() {
|
|
10
|
-
let unique_data = [0u8; 64];
|
|
11
|
-
|
|
12
|
-
let mut fw = Firmware::open().unwrap();
|
|
13
|
-
|
|
14
|
-
fw.get_report(None, Some(unique_data), None).unwrap();
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
#[cfg_attr(not(guest), ignore)]
|
|
18
|
-
#[test]
|
|
19
|
-
fn get_ext_report() {
|
|
20
|
-
let unique_data = [0u8; 64];
|
|
21
|
-
|
|
22
|
-
let mut fw = Firmware::open().unwrap();
|
|
23
|
-
|
|
24
|
-
fw.get_ext_report(None, Some(unique_data), None).unwrap();
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
#[cfg_attr(not(guest), ignore)]
|
|
28
|
-
#[test]
|
|
29
|
-
fn get_derived_key() {
|
|
30
|
-
let derived_key = DerivedKey::new(false, GuestFieldSelect(1), 0, 0, 0, None);
|
|
31
|
-
|
|
32
|
-
let mut fw = Firmware::open().unwrap();
|
|
33
|
-
|
|
34
|
-
fw.get_derived_key(None, derived_key).unwrap();
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
#[cfg_attr(not(guest), ignore)]
|
|
38
|
-
#[test]
|
|
39
|
-
fn guest_fw_error() {
|
|
40
|
-
let derived_key = DerivedKey::new(
|
|
41
|
-
false,
|
|
42
|
-
GuestFieldSelect(48),
|
|
43
|
-
0xFFFFFFFF,
|
|
44
|
-
0xFFFFFFFF,
|
|
45
|
-
0xFFFFFFFFFFFFFFFF,
|
|
46
|
-
Some(0xFFFFFFFFFFFFFFFF),
|
|
47
|
-
);
|
|
48
|
-
|
|
49
|
-
let mut fw = Firmware::open().unwrap();
|
|
50
|
-
|
|
51
|
-
let fw_err = fw
|
|
52
|
-
.get_derived_key(None, derived_key)
|
|
53
|
-
.unwrap_err()
|
|
54
|
-
.to_string();
|
|
55
|
-
|
|
56
|
-
assert_eq!(fw_err, "Firmware Error Encountered: Known SEV FW Error: Status Code: 0x16: Given parameter is invalid.")
|
|
57
|
-
}
|