x509_client/provided/
debug.rs

1use crate::api::X509Iterator;
2use bytes::Bytes;
3use std::convert::Infallible;
4use std::vec;
5
6#[derive(Clone, Debug)]
7pub struct DebugX509Iterator(Option<Bytes>);
8
9impl IntoIterator for DebugX509Iterator {
10    type Item = Bytes;
11    type IntoIter = vec::IntoIter<Self::Item>;
12
13    fn into_iter(self) -> Self::IntoIter {
14        self.0
15            .map_or_else(std::vec::Vec::new, |b| vec![b])
16            .into_iter()
17    }
18}
19
20impl FromIterator<<Self as IntoIterator>::Item> for DebugX509Iterator {
21    fn from_iter<T: IntoIterator<Item = <Self as IntoIterator>::Item>>(iter: T) -> Self {
22        Self(iter.into_iter().next())
23    }
24}
25
26impl X509Iterator for DebugX509Iterator {
27    type X509IteratorError = Infallible;
28
29    fn from_cer<T: AsRef<[u8]>>(src: T) -> Result<Self, Self::X509IteratorError> {
30        Ok(Self(Some(Bytes::copy_from_slice(src.as_ref()))))
31    }
32
33    fn from_pem<T: AsRef<[u8]>>(src: T) -> Result<Self, Self::X509IteratorError> {
34        Ok(Self(Some(Bytes::copy_from_slice(src.as_ref()))))
35    }
36
37    fn from_pkcs7<T: AsRef<[u8]>>(src: T) -> Result<Self, Self::X509IteratorError> {
38        Ok(Self(Some(Bytes::copy_from_slice(src.as_ref()))))
39    }
40}