@@ -27,6 +27,7 @@ pub enum Error {
27
27
DecodeAskArk ,
28
28
DecodeCek ,
29
29
DecodeChain ,
30
+ Deprecated ,
30
31
DownloadCek ( curl:: Error ) ,
31
32
DownloadAskArk ( curl:: Error ) ,
32
33
EncodeChain ,
@@ -265,7 +266,6 @@ pub struct AmdSev {
265
266
tee_config : TeeConfig ,
266
267
fw : Firmware ,
267
268
start : Start ,
268
- sev_es : bool ,
269
269
curl_agent : Arc < Mutex < CurlAgent > > ,
270
270
}
271
271
@@ -274,7 +274,6 @@ impl AmdSev {
274
274
let mut fw = Firmware :: open ( ) . map_err ( Error :: OpenFirmware ) ?;
275
275
let mut curl_agent = CurlAgent :: new ( ) ;
276
276
let chain = get_and_store_chain ( & mut fw, tee_config, & mut curl_agent) ?;
277
- let mut sev_es = false ;
278
277
279
278
let start = if !tee_config. attestation_url . is_empty ( ) {
280
279
let build = fw
@@ -305,18 +304,22 @@ impl AmdSev {
305
304
let sev_challenge: SevChallenge = serde_json:: from_value ( challenge. extra_params )
306
305
. map_err ( Error :: ParseSessionResponse ) ?;
307
306
308
- if sev_challenge
307
+ if ! sev_challenge
309
308
. start
310
309
. policy
311
310
. flags
312
311
. contains ( PolicyFlags :: ENCRYPTED_STATE )
313
312
{
314
- sev_es = true ;
313
+ error ! ( "SEV without ES is no longer supported. Please switch to SEV-ES or SNP" ) ;
314
+ return Err ( Error :: Deprecated ) ;
315
315
}
316
316
317
317
sev_challenge. start
318
318
} else {
319
- let policy = Policy :: default ( ) ;
319
+ let policy = Policy {
320
+ flags : PolicyFlags :: ENCRYPTED_STATE ,
321
+ ..Default :: default ( )
322
+ } ;
320
323
let session = Session :: try_from ( policy) . map_err ( Error :: SessionFromPolicy ) ?;
321
324
session. start ( chain) . map_err ( Error :: StartFromSession ) ?
322
325
} ;
@@ -325,7 +328,6 @@ impl AmdSev {
325
328
tee_config : tee_config. clone ( ) ,
326
329
fw,
327
330
start,
328
- sev_es,
329
331
curl_agent : Arc :: new ( Mutex :: new ( curl_agent) ) ,
330
332
} )
331
333
}
@@ -366,11 +368,7 @@ impl AmdSev {
366
368
let vm_rfd = vm_fd. as_raw_fd ( ) ;
367
369
let fw_rfd = self . fw . as_raw_fd ( ) ;
368
370
369
- let launcher = if self . sev_es {
370
- Launcher :: new_es ( vm_rfd, fw_rfd) . unwrap ( )
371
- } else {
372
- Launcher :: new ( vm_rfd, fw_rfd) . unwrap ( )
373
- } ;
371
+ let launcher = Launcher :: new_es ( vm_rfd, fw_rfd) . unwrap ( ) ;
374
372
375
373
for region in guest_mem. iter ( ) {
376
374
// It's safe to unwrap because the guest address is valid.
@@ -401,9 +399,7 @@ impl AmdSev {
401
399
. map_err ( Error :: SevLaunchUpdateData ) ?;
402
400
}
403
401
404
- if self . sev_es {
405
- launcher. update_vmsa ( ) . unwrap ( )
406
- }
402
+ launcher. update_vmsa ( ) . unwrap ( ) ;
407
403
408
404
let mut launcher = launcher. measure ( ) . unwrap ( ) ;
409
405
let measurement = launcher. measurement ( ) ;
0 commit comments