<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _validate_signing_cert(ca_certificate, certificate, crl=None):
 """ Validate an X509 certificate using pyOpenSSL. .. note:: pyOpenSSL is a short-term solution to certificate validation. pyOpenSSL is basically in maintenance mode and there's a desire in upstream to move all the functionality into cryptography. Args: ca_certificate (str):
 A PEM-encoded Certificate Authority certificate to validate the ``certificate`` with. certificate (str):
 A PEM-encoded certificate that is in need of validation. crl (str):
 A PEM-encoded Certificate Revocation List which, if provided, will be taken into account when validating the certificate. Raises: X509StoreContextError: If the certificate failed validation. The exception contains the details of the error. """

    pyopenssl_cert = load_certificate(FILETYPE_PEM, certificate)
    pyopenssl_ca_cert = load_certificate(FILETYPE_PEM, ca_certificate)

    cert_store = X509Store()
    cert_store.add_cert(pyopenssl_ca_cert)
    if crl:
        pyopenssl_crl = load_crl(FILETYPE_PEM, crl)
        cert_store.add_crl(pyopenssl_crl)
        cert_store.set_flags(X509StoreFlags.CRL_CHECK | X509StoreFlags.CRL_CHECK_ALL)

    cert_store_context = X509StoreContext(cert_store, pyopenssl_cert)
    cert_store_context.verify_certificate()