@@ -211,7 +211,7 @@ impl EnclaveKeyManager {
211211 }
212212 }
213213
214- /// Returns a list of available enclave keys
214+ /// Returns a list of attested enclave keys
215215 ///
216216 /// The order of the returned keys is by the `valid_to` timestamp in descending order.
217217 ///
@@ -221,7 +221,7 @@ impl EnclaveKeyManager {
221221 /// * `ra_type` - The type of remote attestation. If None, all available keys are returned.
222222 ///
223223 /// # Returns
224- /// Returns a list of available enclave keys
224+ /// Returns a list of attested enclave keys
225225 pub fn available_keys (
226226 & self ,
227227 mrenclave : Mrenclave ,
@@ -565,6 +565,69 @@ mod tests {
565565 }
566566 }
567567
568+ #[ test]
569+ fn test_all_keys ( ) {
570+ let km = EnclaveKeyManager :: new_in_memory ( ) . unwrap ( ) ;
571+ let mrenclave = create_mrenclave ( ) ;
572+ let sealed_ek = create_sealed_sk ( ) ;
573+ let address1 = create_address ( ) ;
574+ let report1 = create_report ( mrenclave, address1, false ) ;
575+ let address2 = create_address ( ) ;
576+ let report2 = create_report ( mrenclave, address2, false ) ;
577+ let address3 = create_address ( ) ;
578+ let report3 = create_report ( mrenclave, address3, false ) ;
579+ km. save ( sealed_ek. clone ( ) , report1, QEType :: QE3 ) . unwrap ( ) ;
580+ km. save ( sealed_ek. clone ( ) , report2, QEType :: QE3 ) . unwrap ( ) ;
581+ km. save ( sealed_ek. clone ( ) , report3, QEType :: QE3 ) . unwrap ( ) ;
582+ let keys = km. all_keys ( ) . unwrap ( ) ;
583+ assert_eq ! ( keys. len( ) , 3 ) ;
584+ assert_eq ! ( keys[ 0 ] . address, address1) ;
585+ assert_eq ! ( keys[ 1 ] . address, address2) ;
586+ assert_eq ! ( keys[ 2 ] . address, address3) ;
587+ }
588+
589+ #[ test]
590+ fn test_available_keys ( ) {
591+ let km = EnclaveKeyManager :: new_in_memory ( ) . unwrap ( ) ;
592+ let mrenclave = create_mrenclave ( ) ;
593+ let sealed_ek = create_sealed_sk ( ) ;
594+ let address1 = create_address ( ) ;
595+ let report1 = create_report ( mrenclave, address1, false ) ;
596+ let address2 = create_address ( ) ;
597+ let report2 = create_report ( mrenclave, address2, false ) ;
598+ let address3 = create_address ( ) ;
599+ let report3 = create_report ( mrenclave, address3, false ) ;
600+ km. save ( sealed_ek. clone ( ) , report1, QEType :: QE3 ) . unwrap ( ) ;
601+ km. save ( sealed_ek. clone ( ) , report2, QEType :: QE3 ) . unwrap ( ) ;
602+ km. save ( sealed_ek. clone ( ) , report3, QEType :: QE3 ) . unwrap ( ) ;
603+ let keys = km. available_keys ( mrenclave, false , None ) . unwrap ( ) ;
604+ assert_eq ! ( keys. len( ) , 0 ) ;
605+ let dcap_quote = RAQuote :: DCAP ( create_dcap_quote ( get_time2 ( Duration :: days ( 30 ) ) ) ) ;
606+ km. update_ra_quote ( address1, dcap_quote) . unwrap ( ) ;
607+ let keys = km
608+ . available_keys ( mrenclave, false , Some ( RAType :: DCAP ) )
609+ . unwrap ( ) ;
610+ assert_eq ! ( keys. len( ) , 1 ) ;
611+ assert_eq ! ( keys[ 0 ] . address, address1) ;
612+ let dcap_quote = RAQuote :: DCAP ( create_dcap_quote ( get_time2 ( Duration :: days ( 29 ) ) ) ) ;
613+ km. update_ra_quote ( address2, dcap_quote) . unwrap ( ) ;
614+ let keys = km
615+ . available_keys ( mrenclave, false , Some ( RAType :: DCAP ) )
616+ . unwrap ( ) ;
617+ assert_eq ! ( keys. len( ) , 2 ) ;
618+ assert_eq ! ( keys[ 0 ] . address, address1) ;
619+ assert_eq ! ( keys[ 1 ] . address, address2) ;
620+ let dcap_quote = RAQuote :: DCAP ( create_dcap_quote ( get_time2 ( Duration :: days ( 31 ) ) ) ) ;
621+ km. update_ra_quote ( address3, dcap_quote) . unwrap ( ) ;
622+ let keys = km
623+ . available_keys ( mrenclave, false , Some ( RAType :: DCAP ) )
624+ . unwrap ( ) ;
625+ assert_eq ! ( keys. len( ) , 3 ) ;
626+ assert_eq ! ( keys[ 0 ] . address, address3) ;
627+ assert_eq ! ( keys[ 1 ] . address, address1) ;
628+ assert_eq ! ( keys[ 2 ] . address, address2) ;
629+ }
630+
568631 #[ test]
569632 fn test_key_expiration ( ) {
570633 // Test for Unattested key
0 commit comments