use crate::item::ItemSearchOptions;
use crate::os::macos::keychain::SecKeychain;
pub use crate::key::KeyType;
#[doc(hidden)]
pub trait ItemSearchOptionsExt {
fn keychains(&mut self, keychains: &[SecKeychain]) -> &mut Self;
}
impl ItemSearchOptionsExt for ItemSearchOptions {
fn keychains(&mut self, keychains: &[SecKeychain]) -> &mut Self {
Self::keychains(self, keychains)
}
}
#[cfg(test)]
mod test {
use crate::item::*;
use crate::os::macos::certificate::SecCertificateExt;
use crate::os::macos::test::keychain;
use tempfile::tempdir;
#[test]
fn find_certificate() {
let dir = p!(tempdir());
let keychain = keychain(dir.path());
let results = p!(ItemSearchOptions::new()
.keychains(&[keychain])
.class(ItemClass::certificate())
.search());
assert_eq!(1, results.len());
let SearchResult::Ref(Reference::Certificate(certificate)) = &results[0] else {
panic!("expected certificate")
};
assert_eq!("foobar.com", p!(certificate.common_name()));
}
}