apple_security_framework/os/macos/
item.rs1pub use crate::key::KeyType;
4use crate::{
5 item::ItemSearchOptions, os::macos::keychain::SecKeychain, ItemSearchOptionsInternals,
6};
7
8pub trait ItemSearchOptionsExt {
10 fn keychains(&mut self, keychains: &[SecKeychain]) -> &mut Self;
14}
15
16impl ItemSearchOptionsExt for ItemSearchOptions {
17 #[inline(always)]
18 fn keychains(&mut self, keychains: &[SecKeychain]) -> &mut Self {
19 ItemSearchOptionsInternals::keychains(self, keychains)
20 }
21}
22
23#[cfg(test)]
24mod test {
25 use tempfile::tempdir;
26
27 use crate::{
28 item::*,
29 os::macos::{certificate::SecCertificateExt, item::ItemSearchOptionsExt, test::keychain},
30 };
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}