apple_security/os/macos/
item.rs1use crate::item::ItemSearchOptions;
3use crate::os::macos::keychain::SecKeychain;
4use crate::ItemSearchOptionsInternals;
5
6pub use crate::key::KeyType;
8
9pub trait ItemSearchOptionsExt {
11 fn keychains(&mut self, keychains: &[SecKeychain]) -> &mut Self;
15}
16
17impl ItemSearchOptionsExt for ItemSearchOptions {
18 #[inline(always)]
19 fn keychains(&mut self, keychains: &[SecKeychain]) -> &mut Self {
20 ItemSearchOptionsInternals::keychains(self, keychains)
21 }
22}
23
24#[cfg(test)]
25mod test {
26 use crate::item::*;
27 use crate::os::macos::certificate::SecCertificateExt;
28 use crate::os::macos::item::ItemSearchOptionsExt;
29 use crate::os::macos::test::keychain;
30 use tempfile::tempdir;
31
32 #[test]
33 fn find_certificate() {
34 let dir = p!(tempdir());
35 let keychain = keychain(dir.path());
36 let results = p!(ItemSearchOptions::new()
37 .keychains(&[keychain])
38 .class(ItemClass::certificate())
39 .search());
40 assert_eq!(1, results.len());
41 let certificate = match results[0] {
42 SearchResult::Ref(Reference::Certificate(ref cert)) => cert,
43 _ => panic!("expected certificate"),
44 };
45 assert_eq!("foobar.com", p!(certificate.common_name()));
46 }
47}