use openssl::asn1::{Asn1Time, Asn1TimeRef}; /// Clone Asn1 time pub fn clone_asn1_time(time: &Asn1TimeRef) -> anyhow::Result { let diff = time.diff(Asn1Time::from_unix(0)?.as_ref())?; let days = diff.days.abs(); let secs = diff.secs.abs(); Ok(Asn1Time::from_unix((days * 3600 * 24 + secs) as i64)?) } #[cfg(test)] mod test { use crate::crypto::openssl_utils::clone_asn1_time; use openssl::asn1::Asn1Time; use std::cmp::Ordering; #[test] fn test_clone_asn1_time() { let a = Asn1Time::from_unix(10).unwrap(); let b = clone_asn1_time(a.as_ref()).unwrap(); assert_eq!(a.compare(&b).unwrap(), Ordering::Equal); } }