Skip to content

Commit f3c62a3

Browse files
committed
Merge remote-tracking branch 'origin/master' into codex/pr752-dstack-volume
# Conflicts: # dstack/vmm/src/app/qemu.rs
2 parents 2edd4ef + 1227894 commit f3c62a3

99 files changed

Lines changed: 9764 additions & 1323 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/aws-ec2-production-verifier-runbook.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ jq -e \
181181
.is_valid == true and
182182
.details.quote_verified == true and
183183
.details.report_data == $expected_report_data and
184-
.details.boot_info.attestationMode == "dstack-aws-nitro-tpm" and
184+
.details.boot_info.teeVariant == "dstack-aws-nitro-tpm" and
185185
.details.boot_info.tcbStatus == "UpToDate" and
186186
.details.boot_info.osImageHash == $expected_os_image_hash
187187
' request.json.verification.json
@@ -226,9 +226,9 @@ key_provider_id })` and compare it to PCR8. dstack's own verifier and KMS do
226226
**not** check PCR8 — they rely on PCR14 replay — so it is not part of the
227227
required policy above.
228228

229-
The `attestationMode` field is carried in the verified boot info for
229+
The `teeVariant` field is carried in the verified boot info for
230230
observability; a relying party may additionally assert
231-
`attestationMode == "dstack-aws-nitro-tpm"` against the verifier output, but the
231+
`teeVariant == "dstack-aws-nitro-tpm"` against the verifier output, but the
232232
authorization contract itself keys on the standard fields above.
233233

234234
Same-account AWS KMS is not a trusted secret authority in this threat model if
@@ -261,7 +261,7 @@ Require the generated `endpoint-cert.pem.ratls-verification.json` to contain:
261261
```bash
262262
jq -e '
263263
.is_valid == true and
264-
.details.attestation_mode == "dstack-aws-nitro-tpm" and
264+
.details.tee_variant == "dstack-aws-nitro-tpm" and
265265
.details.app_info.os_image_hash_verified == true
266266
' endpoint-cert.pem.ratls-verification.json
267267
```

dstack/Cargo.lock

Lines changed: 129 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dstack/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ members = [
6969
"crates/dstack-auth",
7070
"crates/api-auth",
7171
"crates/build-info",
72+
"crates/mock-attestation",
7273
]
7374
resolver = "2"
7475

dstack/cert-client/src/lib.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,16 @@
22
//
33
// SPDX-License-Identifier: Apache-2.0
44

5+
use std::sync::Arc;
6+
57
use anyhow::{Context, Result};
68
use dstack_kms_rpc::{kms_client::KmsClient, SignCertRequest};
79
use dstack_types::{AppKeys, KeyProvider};
810
use ra_rpc::client::{RaClient, RaClientConfig};
9-
use ra_tls::cert::{generate_ra_cert, CaCert, CertSigningRequestV2};
11+
use ra_tls::{
12+
attestation::AttestationVerifier,
13+
cert::{generate_ra_cert, CaCert, CertSigningRequestV2},
14+
};
1015

1116
pub enum CertRequestClient {
1217
Local {
@@ -54,7 +59,7 @@ impl CertRequestClient {
5459

5560
pub async fn create(
5661
keys: &AppKeys,
57-
pccs_url: Option<&str>,
62+
attestation_verifier: Arc<AttestationVerifier>,
5863
vm_config: String,
5964
) -> Result<CertRequestClient> {
6065
match &keys.key_provider {
@@ -79,7 +84,7 @@ impl CertRequestClient {
7984
.tls_client_key(client_cert.key_pem)
8085
.tls_ca_cert(keys.ca_cert.clone())
8186
.tls_built_in_root_certs(false)
82-
.maybe_pccs_url(pccs_url.map(|s| s.to_string()))
87+
.attestation_verifier(attestation_verifier)
8388
.build()
8489
.into_client()
8590
.context("Failed to create RA client")?;

dstack/crates/dstack-auth/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ mod tests {
291291
#[test]
292292
fn deserializes_the_kms_bootinfo_wire_contract() {
293293
let wire = r#"{
294-
"attestationMode": "dstack",
294+
"teeVariant": "dstack",
295295
"mrAggregated": "0xAABB",
296296
"osImageHash": "0xC2AA",
297297
"mrSystem": "0xdead",
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# SPDX-FileCopyrightText: © 2026 Phala Network <dstack@phala.network>
2+
#
3+
# SPDX-License-Identifier: Apache-2.0
4+
5+
[package]
6+
name = "mock-attestation"
7+
version.workspace = true
8+
authors.workspace = true
9+
edition.workspace = true
10+
license.workspace = true
11+
description = "Development-only cryptographically valid attestation evidence generator"
12+
13+
[[bin]]
14+
name = "dstack-mock-attestation"
15+
path = "src/main.rs"
16+
17+
[dependencies]
18+
anyhow.workspace = true
19+
clap.workspace = true
20+
fs-err.workspace = true
21+
rcgen.workspace = true
22+
ciborium.workspace = true
23+
p384 = { workspace = true, features = ["ecdsa", "pkcs8"] }
24+
p256 = { workspace = true, features = ["ecdsa", "pkcs8"] }
25+
sha2.workspace = true
26+
sev.workspace = true
27+
sev-snp-qvl.workspace = true
28+
tpm-types.workspace = true
29+
tpm-qvl.workspace = true
30+
dstack-types.workspace = true
31+
dcap-qvl.workspace = true
32+
scale.workspace = true
33+
yasna.workspace = true
34+
chrono.workspace = true
35+
rand.workspace = true
36+
tokio = { workspace = true, features = ["full"] }
37+
axum = "0.8"
38+
hex.workspace = true
39+
urlencoding = "2"
40+
reqwest.workspace = true
41+
serde.workspace = true
42+
serde_json.workspace = true
43+
time.workspace = true
44+
45+
[dev-dependencies]
46+
tempfile.workspace = true
47+
nsm-qvl.workspace = true

0 commit comments

Comments
 (0)