pe-sign 0.1.8

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;

use crate::{cert::name::RelativeDistinguishedName, utils::IndentString};

use super::GeneralNames;

#[derive(Clone, Debug, Eq, PartialEq)]
#[allow(missing_docs)]
pub enum DistributionPointName {
    FullName(GeneralNames),
    NameRelativeToCRLIssuer(RelativeDistinguishedName),
}

impl From<x509_cert::ext::pkix::name::DistributionPointName> for DistributionPointName {
    fn from(value: x509_cert::ext::pkix::name::DistributionPointName) -> Self {
        match value {
            x509_cert::ext::pkix::name::DistributionPointName::FullName(vv) => {
                Self::FullName(vv.into())
            }
            x509_cert::ext::pkix::name::DistributionPointName::NameRelativeToCRLIssuer(vv) => {
                Self::NameRelativeToCRLIssuer(vv.into())
            }
        }
    }
}

impl Display for DistributionPointName {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match self {
            DistributionPointName::FullName(vv) => {
                writeln!(f, "Full Name:")?;
                write!(f, "{}", vv.to_string().indent(4))?;
            }
            DistributionPointName::NameRelativeToCRLIssuer(vv) => {
                writeln!(f, "Name Relative To CRL Issuer:")?;
                write!(f, "{}", vv.to_string().indent(4))?;
            }
        }

        Ok(())
    }
}