Make start date certificate optional.
This commit is contained in:
parent
11c5829b6b
commit
c5f866738e
|
|
@ -29,7 +29,7 @@ use super::easy_ext::CertInfo;
|
|||
pub struct Certificate {
|
||||
subject: Option<String>,
|
||||
issuer: Option<String>,
|
||||
pub start_date: DateTime<Utc>,
|
||||
pub start_date: Option<DateTime<Utc>>,
|
||||
pub expire_date: DateTime<Utc>,
|
||||
pub serial_number: String,
|
||||
pub subject_alt_name: Option<String>,
|
||||
|
|
@ -40,7 +40,7 @@ impl Certificate {
|
|||
pub fn new(
|
||||
subject: Option<String>,
|
||||
issuer: Option<String>,
|
||||
start_date: DateTime<Utc>,
|
||||
start_date: Option<DateTime<Utc>>,
|
||||
expire_date: DateTime<Utc>,
|
||||
serial_number: String,
|
||||
subject_alt_name: Option<String>,
|
||||
|
|
@ -75,7 +75,7 @@ impl TryFrom<CertInfo> for Certificate {
|
|||
let attributes = parse_attributes(&cert_info.data);
|
||||
let subject = parse_subject(&attributes).ok();
|
||||
let issuer = parse_issuer(&attributes).ok();
|
||||
let start_date = parse_start_date(&attributes)?;
|
||||
let start_date = parse_start_date(&attributes).ok();
|
||||
let expire_date = parse_expire_date(&attributes)?;
|
||||
let serial_number = parse_serial_number(&attributes)?;
|
||||
let subject_alt_name = parse_subject_alt_name(&attributes).ok();
|
||||
|
|
@ -225,7 +225,7 @@ mod tests {
|
|||
);
|
||||
assert_eq!(
|
||||
parse_start_date(&attributes).unwrap(),
|
||||
chrono::DateTime::parse_from_rfc2822("Tue, 10 Jan 2023 08:29:52 GMT")
|
||||
DateTime::parse_from_rfc2822("Tue, 10 Jan 2023 08:29:52 GMT")
|
||||
.unwrap()
|
||||
.with_timezone(&Utc)
|
||||
);
|
||||
|
|
@ -237,7 +237,7 @@ mod tests {
|
|||
);
|
||||
assert_eq!(
|
||||
parse_start_date(&attributes).unwrap(),
|
||||
chrono::DateTime::parse_from_rfc2822("Tue, 10 Jan 2023 08:29:52 GMT")
|
||||
DateTime::parse_from_rfc2822("Tue, 10 Jan 2023 08:29:52 GMT")
|
||||
.unwrap()
|
||||
.with_timezone(&Utc)
|
||||
);
|
||||
|
|
@ -300,10 +300,10 @@ mod tests {
|
|||
subject: Some("C = US, ST = Denial, L = Springfield, O = Dis, CN = localhost"
|
||||
.to_string()),
|
||||
issuer: Some("C = US, ST = Denial, L = Springfield, O = Dis, CN = localhost".to_string()),
|
||||
start_date: chrono::DateTime::parse_from_rfc2822("Tue, 10 Jan 2023 08:29:52 GMT")
|
||||
start_date: Some(DateTime::parse_from_rfc2822("Tue, 10 Jan 2023 08:29:52 GMT")
|
||||
.unwrap()
|
||||
.with_timezone(&Utc),
|
||||
expire_date: chrono::DateTime::parse_from_rfc2822("Thu, 30 Oct 2025 08:29:52 GMT")
|
||||
.with_timezone(&Utc)),
|
||||
expire_date: DateTime::parse_from_rfc2822("Thu, 30 Oct 2025 08:29:52 GMT")
|
||||
.unwrap()
|
||||
.with_timezone(&Utc),
|
||||
serial_number: "1e:e8:b1:7f:1b:64:d8:d6:b3:de:87:01:03:d2:a4:f5:33:53:5a:b0"
|
||||
|
|
@ -315,7 +315,7 @@ mod tests {
|
|||
Certificate::try_from(CertInfo { data: vec![] })
|
||||
.err()
|
||||
.unwrap(),
|
||||
"missing start date attribute in {}".to_string()
|
||||
"missing expire date attribute".to_string()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -193,7 +193,8 @@ struct CertificateJson {
|
|||
subject: Option<String>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
issuer: Option<String>,
|
||||
start_date: String,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
start_date: Option<String>,
|
||||
expire_date: String,
|
||||
serial_number: String,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
|
|
@ -449,7 +450,7 @@ impl CertificateJson {
|
|||
CertificateJson {
|
||||
subject: c.subject().cloned(),
|
||||
issuer: c.issuer().cloned(),
|
||||
start_date: c.start_date.to_string(),
|
||||
start_date: c.start_date.map(|d| d.to_string()),
|
||||
expire_date: c.expire_date.to_string(),
|
||||
serial_number: c.serial_number.to_string(),
|
||||
subject_alt_name: c.subject_alt_name.clone(),
|
||||
|
|
|
|||
|
|
@ -131,7 +131,6 @@ fn get_call_html(
|
|||
|
||||
// Certificate
|
||||
if let Some(certificate) = &call.response.certificate {
|
||||
let start_date = certificate.start_date.to_string();
|
||||
let end_date = certificate.expire_date.to_string();
|
||||
let mut values = vec![];
|
||||
|
||||
|
|
@ -141,7 +140,10 @@ fn get_call_html(
|
|||
if let Some(issuer) = certificate.issuer() {
|
||||
values.push(("Issuer", issuer.as_str()));
|
||||
}
|
||||
values.push(("Start Date", start_date.as_str()));
|
||||
let start_date = certificate.start_date.map(|d| d.to_string());
|
||||
if let Some(start_date) = start_date.as_ref() {
|
||||
values.push(("Start Date", start_date.as_str()));
|
||||
}
|
||||
values.push(("Expire Date", end_date.as_str()));
|
||||
values.push(("Serial Number", certificate.serial_number.as_str()));
|
||||
if let Some(subject_alt_name) = certificate.subject_alt_name.as_ref() {
|
||||
|
|
|
|||
|
|
@ -392,7 +392,10 @@ fn eval_query_certificate(
|
|||
Some(issuer) => Value::String(issuer.clone()),
|
||||
None => return Ok(None),
|
||||
},
|
||||
CertificateAttributeName::StartDate => Value::Date(certificate.start_date),
|
||||
CertificateAttributeName::StartDate => match certificate.start_date.as_ref() {
|
||||
Some(date) => Value::Date(*date),
|
||||
None => return Ok(None),
|
||||
},
|
||||
CertificateAttributeName::ExpireDate => Value::Date(certificate.expire_date),
|
||||
CertificateAttributeName::SerialNumber => {
|
||||
Value::String(certificate.serial_number.clone())
|
||||
|
|
|
|||
Loading…
Reference in New Issue