Refresh all CRLs
This commit is contained in:
		@@ -46,6 +46,24 @@ impl CertData {
 | 
			
		||||
            crl: Some(AppConfig::get().root_ca_crl_path()),
 | 
			
		||||
        })
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Load web CA
 | 
			
		||||
    fn load_web_ca() -> anyhow::Result<Self> {
 | 
			
		||||
        Ok(Self {
 | 
			
		||||
            cert: load_certificate_from_file(AppConfig::get().web_ca_cert_path())?,
 | 
			
		||||
            key: load_priv_key_from_file(AppConfig::get().web_ca_priv_key_path())?,
 | 
			
		||||
            crl: Some(AppConfig::get().web_ca_crl_path()),
 | 
			
		||||
        })
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Load devices CA
 | 
			
		||||
    fn load_devices_ca() -> anyhow::Result<Self> {
 | 
			
		||||
        Ok(Self {
 | 
			
		||||
            cert: load_certificate_from_file(AppConfig::get().devices_ca_cert_path())?,
 | 
			
		||||
            key: load_priv_key_from_file(AppConfig::get().devices_ca_priv_key_path())?,
 | 
			
		||||
            crl: Some(AppConfig::get().devices_ca_crl_path()),
 | 
			
		||||
        })
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Generate private key
 | 
			
		||||
@@ -259,7 +277,7 @@ fn refresh_crl(d: &CertData) -> anyhow::Result<()> {
 | 
			
		||||
        if X509_CRL_set_version(crl, X509_CRL_VERSION_2) == 0 {
 | 
			
		||||
            return Err(PKIError::GenCRLError("X509_CRL_set_version").into());
 | 
			
		||||
        }
 | 
			
		||||
        if X509_CRL_set_issuer_name(crl, d.cert.issuer_name().as_ptr()) == 0 {
 | 
			
		||||
        if X509_CRL_set_issuer_name(crl, d.cert.subject_name().as_ptr()) == 0 {
 | 
			
		||||
            return Err(PKIError::GenCRLError("X509_CRL_set_issuer_name").into());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -296,7 +314,10 @@ fn refresh_crl(d: &CertData) -> anyhow::Result<()> {
 | 
			
		||||
    Ok(())
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Initialize or refresh Root CA CRL, if needed
 | 
			
		||||
pub fn initialize_root_ca_crl() -> anyhow::Result<()> {
 | 
			
		||||
    refresh_crl(&CertData::load_root_ca()?)
 | 
			
		||||
/// Refresh revocation lists
 | 
			
		||||
pub fn refresh_crls() -> anyhow::Result<()> {
 | 
			
		||||
    refresh_crl(&CertData::load_root_ca()?)?;
 | 
			
		||||
    refresh_crl(&CertData::load_web_ca()?)?;
 | 
			
		||||
    refresh_crl(&CertData::load_devices_ca()?)?;
 | 
			
		||||
    Ok(())
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -16,5 +16,5 @@ fn main() {
 | 
			
		||||
    pki::initialize_web_ca().expect("Failed to initialize web CA!");
 | 
			
		||||
    pki::initialize_devices_ca().expect("Failed to initialize devices CA!");
 | 
			
		||||
 | 
			
		||||
    pki::initialize_root_ca_crl().expect("Failed to initialize Root CA!");
 | 
			
		||||
    pki::refresh_crls().expect("Failed to initialize Root CA!");
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user