Skip to content

Commit ac2623a

Browse files
committed
add tests for all_keys and available_keys
Signed-off-by: Jun Kimura <jun.kimura@datachain.jp>
1 parent d82b9fa commit ac2623a

File tree

1 file changed

+65
-2
lines changed

1 file changed

+65
-2
lines changed

modules/keymanager/src/lib.rs

Lines changed: 65 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)