Expose subject certificate getter.
This commit is contained in:
parent
cd3534e411
commit
10e56ff441
|
|
@ -27,7 +27,7 @@ use super::easy_ext::CertInfo;
|
|||
/// (i.e. a certificate without serial number).
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
pub struct Certificate {
|
||||
pub subject: Option<String>,
|
||||
subject: Option<String>,
|
||||
pub issuer: String,
|
||||
pub start_date: DateTime<Utc>,
|
||||
pub expire_date: DateTime<Utc>,
|
||||
|
|
@ -35,6 +35,31 @@ pub struct Certificate {
|
|||
pub subject_alt_name: Option<String>,
|
||||
}
|
||||
|
||||
impl Certificate {
|
||||
/// Creates a new instance.
|
||||
pub fn new(
|
||||
subject: Option<String>,
|
||||
issuer: String,
|
||||
start_date: DateTime<Utc>,
|
||||
expire_date: DateTime<Utc>,
|
||||
serial_number: String,
|
||||
subject_alt_name: Option<String>,
|
||||
) -> Self {
|
||||
Self {
|
||||
subject,
|
||||
issuer,
|
||||
start_date,
|
||||
expire_date,
|
||||
serial_number,
|
||||
subject_alt_name,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn subject(&self) -> Option<&String> {
|
||||
self.subject.as_ref()
|
||||
}
|
||||
}
|
||||
|
||||
impl TryFrom<CertInfo> for Certificate {
|
||||
type Error = String;
|
||||
|
||||
|
|
|
|||
|
|
@ -446,7 +446,7 @@ impl ResponseCookieJson {
|
|||
impl CertificateJson {
|
||||
fn from_certificate(c: &Certificate) -> Self {
|
||||
CertificateJson {
|
||||
subject: c.subject.clone(),
|
||||
subject: c.subject().cloned(),
|
||||
issuer: c.issuer.clone(),
|
||||
start_date: c.start_date.to_string(),
|
||||
expire_date: c.expire_date.to_string(),
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ fn get_call_html(
|
|||
let end_date = certificate.expire_date.to_string();
|
||||
let mut values = vec![];
|
||||
|
||||
if let Some(subject) = certificate.subject.as_ref() {
|
||||
if let Some(subject) = certificate.subject() {
|
||||
values.push(("Subject", subject.as_str()));
|
||||
}
|
||||
values.push(("Issuer", certificate.issuer.as_str()));
|
||||
|
|
|
|||
|
|
@ -384,7 +384,7 @@ fn eval_query_certificate(
|
|||
) -> QueryResult {
|
||||
if let Some(certificate) = &response.certificate {
|
||||
let value = match certificate_attribute {
|
||||
CertificateAttributeName::Subject => match certificate.subject.as_ref() {
|
||||
CertificateAttributeName::Subject => match certificate.subject() {
|
||||
Some(s) => Value::String(s.clone()),
|
||||
None => return Ok(None),
|
||||
},
|
||||
|
|
@ -1485,17 +1485,25 @@ pub mod tests {
|
|||
)
|
||||
.unwrap()
|
||||
.is_none());
|
||||
|
||||
let subject = Some("A=B, C=D".to_string());
|
||||
let issuer = String::new();
|
||||
let start_date = Default::default();
|
||||
let expire_date = Default::default();
|
||||
let serial_number = String::new();
|
||||
let subject_alt_name = Some(String::new());
|
||||
let certificate = http::Certificate::new(
|
||||
subject,
|
||||
issuer,
|
||||
start_date,
|
||||
expire_date,
|
||||
serial_number,
|
||||
subject_alt_name,
|
||||
);
|
||||
assert_eq!(
|
||||
eval_query_certificate(
|
||||
&Response {
|
||||
certificate: Some(http::Certificate {
|
||||
subject: Some("A=B, C=D".to_string()),
|
||||
issuer: String::new(),
|
||||
start_date: Default::default(),
|
||||
expire_date: Default::default(),
|
||||
serial_number: String::new(),
|
||||
subject_alt_name: Some(String::new())
|
||||
}),
|
||||
certificate: Some(certificate),
|
||||
..default_response()
|
||||
},
|
||||
CertificateAttributeName::Subject
|
||||
|
|
|
|||
Loading…
Reference in New Issue