11use crate :: prelude:: * ;
22use crate :: serde_base64;
33use crate :: Error ;
4- use crate :: ReportData ;
54use lcp_types:: Time ;
65use serde:: { Deserialize , Serialize } ;
76
87#[ derive( Debug , Serialize , Deserialize ) ]
98pub struct DCAPQuote {
109 #[ serde( with = "serde_base64" ) ]
1110 pub raw : Vec < u8 > ,
12- pub tcb_status : TcbStatus ,
11+ pub tcb_status : String ,
1312 pub advisory_ids : Option < Vec < String > > ,
1413 pub attested_at : Time ,
1514}
1615
17- #[ derive( Debug , Clone , PartialEq , Serialize , Deserialize ) ]
18- pub enum TcbStatus {
19- OK ,
20- TcbSwHardeningNeeded ,
21- TcbConfigurationAndSwHardeningNeeded ,
22- TcbConfigurationNeeded ,
23- TcbOutOfDate ,
24- TcbOutOfDateConfigurationNeeded ,
25- TcbRevoked ,
26- TcbUnrecognized ,
27- }
28-
29- impl TcbStatus {
30- pub fn from_str ( s : & str ) -> Self {
31- return match s {
32- "UpToDate" => TcbStatus :: OK ,
33- "SWHardeningNeeded" => TcbStatus :: TcbSwHardeningNeeded ,
34- "ConfigurationAndSWHardeningNeeded" => TcbStatus :: TcbConfigurationAndSwHardeningNeeded ,
35- "ConfigurationNeeded" => TcbStatus :: TcbConfigurationNeeded ,
36- "OutOfDate" => TcbStatus :: TcbOutOfDate ,
37- "OutOfDateConfigurationNeeded" => TcbStatus :: TcbOutOfDateConfigurationNeeded ,
38- "Revoked" => TcbStatus :: TcbRevoked ,
39- _ => TcbStatus :: TcbUnrecognized ,
40- } ;
41- }
42- }
43-
44- impl ToString for TcbStatus {
45- fn to_string ( & self ) -> String {
46- return match self {
47- TcbStatus :: OK => "UpToDate" . to_string ( ) ,
48- TcbStatus :: TcbSwHardeningNeeded => "SWHardeningNeeded" . to_string ( ) ,
49- TcbStatus :: TcbConfigurationAndSwHardeningNeeded => {
50- "ConfigurationAndSWHardeningNeeded" . to_string ( )
51- }
52- TcbStatus :: TcbConfigurationNeeded => "ConfigurationNeeded" . to_string ( ) ,
53- TcbStatus :: TcbOutOfDate => "OutOfDate" . to_string ( ) ,
54- TcbStatus :: TcbOutOfDateConfigurationNeeded => {
55- "OutOfDateConfigurationNeeded" . to_string ( )
56- }
57- TcbStatus :: TcbRevoked => "Revoked" . to_string ( ) ,
58- TcbStatus :: TcbUnrecognized => "Unrecognized" . to_string ( ) ,
59- } ;
60- }
61- }
62-
6316impl DCAPQuote {
6417 pub fn new (
6518 raw_quote : Vec < u8 > ,
@@ -69,7 +22,7 @@ impl DCAPQuote {
6922 ) -> Self {
7023 DCAPQuote {
7124 raw : raw_quote,
72- tcb_status : TcbStatus :: from_str ( & tcb_status ) ,
25+ tcb_status,
7326 advisory_ids,
7427 attested_at,
7528 }
@@ -84,9 +37,9 @@ impl DCAPQuote {
8437 }
8538
8639 #[ cfg( feature = "std" ) ]
87- pub fn report_data ( & self ) -> ReportData {
40+ pub fn report_data ( & self ) -> Result < crate :: ReportData , Error > {
8841 use dcap_rs:: types:: quotes:: version_3:: QuoteV3 ;
8942 let quote = QuoteV3 :: from_bytes ( & self . raw ) ;
90- ReportData ( quote. isv_enclave_report . report_data )
43+ Ok ( crate :: ReportData ( quote. isv_enclave_report . report_data ) )
9144 }
9245}
0 commit comments