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