Tidy up CRL handling by checking for critical extensions when it is
[openssl.git] / crypto / asn1 / asn1_locl.h
index 099690203a07499dd76fae9c451dd8970b5fc5e1..318e27eeb4f3dc6227e52e2df94029c0fe3b4da6 100644 (file)
@@ -113,3 +113,18 @@ struct evp_pkey_asn1_method_st
        int (*old_priv_encode)(const EVP_PKEY *pkey, unsigned char **pder);
 
        } /* EVP_PKEY_ASN1_METHOD */;
        int (*old_priv_encode)(const EVP_PKEY *pkey, unsigned char **pder);
 
        } /* EVP_PKEY_ASN1_METHOD */;
+
+/* Method to handle CRL access.
+ * In general a CRL could be very large (several Mb) and can consume large
+ * amounts of resources if stored in memory by multiple processes.
+ * This method allows general CRL operations to be redirected to more
+ * efficient callbacks: for example a CRL entry database.
+ */
+
+struct x509_crl_method_st
+       {
+       int (*crl_init)(X509_CRL *crl);
+       int (*crl_free)(X509_CRL *crl);
+       int (*crl_lookup)(X509_CRL *crl, X509_REVOKED **ret, ASN1_INTEGER *ser);
+       int (*crl_verify)(X509_CRL *crl, EVP_PKEY *pk);
+       };