pe-sign 0.1.10

pe-sign is a cross-platform tool developed in Rust, designed for parsing and verifying digital signatures in PE files. It provides a simple command-line interface that supports extracting certificates, verifying digital signatures, calculating Authenticode digests, and printing certificate information.
Documentation
use std::fmt::Display;

pub use x509_cert::ext::pkix::crl::dp::ReasonFlags;

use crate::{
    cert::ext::name::{DistributionPointName, GeneralNames},
    utils::OptionInto,
};

#[derive(Clone, Debug, PartialEq, Eq)]
pub struct DistributionPoint {
    pub distribution_point: Option<DistributionPointName>,
    pub reasons: Option<crate::cert::ext::crl::dp::ReasonFlags>,
    pub crl_issuer: Option<GeneralNames>,
}

impl From<x509_cert::ext::pkix::crl::dp::DistributionPoint> for DistributionPoint {
    fn from(value: x509_cert::ext::pkix::crl::dp::DistributionPoint) -> Self {
        Self {
            distribution_point: value.distribution_point.opt_into(),
            reasons: value.reasons,
            crl_issuer: value.crl_issuer.opt_into(),
        }
    }
}

impl Display for DistributionPoint {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match &self.distribution_point {
            Some(vv) => write!(f, "{}", vv),
            None => match &self.crl_issuer {
                Some(vv) => write!(f, "{}", vv),
                None => write!(f, "None"),
            },
        }
    }
}