run tree from tal pass
This commit is contained in:
@@ -11,8 +11,8 @@ use crate::data_model::common::{
|
||||
};
|
||||
use crate::data_model::oid::{
|
||||
OID_AD_CA_ISSUERS, OID_AD_SIGNED_OBJECT, OID_AUTHORITY_INFO_ACCESS,
|
||||
OID_AUTHORITY_KEY_IDENTIFIER, OID_AUTONOMOUS_SYS_IDS, OID_CRL_DISTRIBUTION_POINTS,
|
||||
OID_CP_IPADDR_ASNUMBER, OID_IP_ADDR_BLOCKS, OID_SHA256_WITH_RSA_ENCRYPTION,
|
||||
OID_AUTHORITY_KEY_IDENTIFIER, OID_AUTONOMOUS_SYS_IDS, OID_CP_IPADDR_ASNUMBER,
|
||||
OID_CRL_DISTRIBUTION_POINTS, OID_IP_ADDR_BLOCKS, OID_SHA256_WITH_RSA_ENCRYPTION,
|
||||
OID_SUBJECT_INFO_ACCESS, OID_SUBJECT_KEY_IDENTIFIER,
|
||||
};
|
||||
|
||||
@@ -451,19 +451,13 @@ pub enum ResourceCertificateProfileError {
|
||||
)]
|
||||
CrlDistributionPointsCriticality,
|
||||
|
||||
#[error(
|
||||
"CRLDistributionPoints MUST be omitted in self-signed certificates (RFC 6487 §4.8.6)"
|
||||
)]
|
||||
#[error("CRLDistributionPoints MUST be omitted in self-signed certificates (RFC 6487 §4.8.6)")]
|
||||
CrlDistributionPointsSelfSignedMustOmit,
|
||||
|
||||
#[error(
|
||||
"CRLDistributionPoints must contain exactly one DistributionPoint (RFC 6487 §4.8.6)"
|
||||
)]
|
||||
#[error("CRLDistributionPoints must contain exactly one DistributionPoint (RFC 6487 §4.8.6)")]
|
||||
CrlDistributionPointsNotSingle,
|
||||
|
||||
#[error(
|
||||
"CRLDistributionPoints distributionPoint field MUST be present (RFC 6487 §4.8.6)"
|
||||
)]
|
||||
#[error("CRLDistributionPoints distributionPoint field MUST be present (RFC 6487 §4.8.6)")]
|
||||
CrlDistributionPointsNoDistributionPoint,
|
||||
|
||||
#[error("CRLDistributionPoints reasons field MUST be omitted (RFC 6487 §4.8.6)")]
|
||||
@@ -495,9 +489,7 @@ pub enum ResourceCertificateProfileError {
|
||||
)]
|
||||
AuthorityInfoAccessCriticality,
|
||||
|
||||
#[error(
|
||||
"authorityInfoAccess MUST be omitted in self-signed certificates (RFC 6487 §4.8.7)"
|
||||
)]
|
||||
#[error("authorityInfoAccess MUST be omitted in self-signed certificates (RFC 6487 §4.8.7)")]
|
||||
AuthorityInfoAccessSelfSignedMustOmit,
|
||||
|
||||
#[error(
|
||||
@@ -505,9 +497,7 @@ pub enum ResourceCertificateProfileError {
|
||||
)]
|
||||
AuthorityInfoAccessCaIssuersNotUri,
|
||||
|
||||
#[error(
|
||||
"authorityInfoAccess must include at least one id-ad-caIssuers URI (RFC 6487 §4.8.7)"
|
||||
)]
|
||||
#[error("authorityInfoAccess must include at least one id-ad-caIssuers URI (RFC 6487 §4.8.7)")]
|
||||
AuthorityInfoAccessMissingCaIssuers,
|
||||
|
||||
#[error("authorityInfoAccess must include at least one rsync:// URI (RFC 6487 §4.8.7)")]
|
||||
@@ -674,7 +664,8 @@ impl RcExtensionsParsed {
|
||||
}
|
||||
let keyid = aki.key_identifier.clone();
|
||||
if is_self_signed {
|
||||
if let (Some(keyid), Some(ski)) = (keyid.as_ref(), subject_key_identifier.as_ref())
|
||||
if let (Some(keyid), Some(ski)) =
|
||||
(keyid.as_ref(), subject_key_identifier.as_ref())
|
||||
{
|
||||
if keyid != ski {
|
||||
return Err(ResourceCertificateProfileError::AkiSelfSignedNotEqualSki);
|
||||
@@ -705,7 +696,9 @@ impl RcExtensionsParsed {
|
||||
return Err(ResourceCertificateProfileError::CrlDistributionPointsCriticality);
|
||||
}
|
||||
if is_self_signed {
|
||||
return Err(ResourceCertificateProfileError::CrlDistributionPointsSelfSignedMustOmit);
|
||||
return Err(
|
||||
ResourceCertificateProfileError::CrlDistributionPointsSelfSignedMustOmit,
|
||||
);
|
||||
}
|
||||
if crldp.distribution_points.len() != 1 {
|
||||
return Err(ResourceCertificateProfileError::CrlDistributionPointsNotSingle);
|
||||
@@ -718,13 +711,17 @@ impl RcExtensionsParsed {
|
||||
return Err(ResourceCertificateProfileError::CrlDistributionPointsHasCrlIssuer);
|
||||
}
|
||||
if !dp.distribution_point_present {
|
||||
return Err(ResourceCertificateProfileError::CrlDistributionPointsNoDistributionPoint);
|
||||
return Err(
|
||||
ResourceCertificateProfileError::CrlDistributionPointsNoDistributionPoint,
|
||||
);
|
||||
}
|
||||
if dp.name_relative_to_crl_issuer_present || !dp.full_name_present {
|
||||
return Err(ResourceCertificateProfileError::CrlDistributionPointsInvalidName);
|
||||
}
|
||||
if dp.full_name_not_uri {
|
||||
return Err(ResourceCertificateProfileError::CrlDistributionPointsFullNameNotUri);
|
||||
return Err(
|
||||
ResourceCertificateProfileError::CrlDistributionPointsFullNameNotUri,
|
||||
);
|
||||
}
|
||||
if !dp.full_name_uris.iter().any(|u| u.scheme() == "rsync") {
|
||||
return Err(ResourceCertificateProfileError::CrlDistributionPointsNoRsync);
|
||||
@@ -751,13 +748,19 @@ impl RcExtensionsParsed {
|
||||
return Err(ResourceCertificateProfileError::AuthorityInfoAccessCriticality);
|
||||
}
|
||||
if is_self_signed {
|
||||
return Err(ResourceCertificateProfileError::AuthorityInfoAccessSelfSignedMustOmit);
|
||||
return Err(
|
||||
ResourceCertificateProfileError::AuthorityInfoAccessSelfSignedMustOmit,
|
||||
);
|
||||
}
|
||||
if aia.ca_issuers_access_location_not_uri {
|
||||
return Err(ResourceCertificateProfileError::AuthorityInfoAccessCaIssuersNotUri);
|
||||
return Err(
|
||||
ResourceCertificateProfileError::AuthorityInfoAccessCaIssuersNotUri,
|
||||
);
|
||||
}
|
||||
if aia.ca_issuers_uris.is_empty() {
|
||||
return Err(ResourceCertificateProfileError::AuthorityInfoAccessMissingCaIssuers);
|
||||
return Err(
|
||||
ResourceCertificateProfileError::AuthorityInfoAccessMissingCaIssuers,
|
||||
);
|
||||
}
|
||||
if !aia.ca_issuers_uris.iter().any(|u| u.scheme() == "rsync") {
|
||||
return Err(ResourceCertificateProfileError::AuthorityInfoAccessNoRsync);
|
||||
|
||||
Reference in New Issue
Block a user