def check_root_certificate(self):
        print_h1(
            "Diese Funktion überprüft das CA-Zertifikat und deckt die Anforderungen aus Kapitel 2.2 der Checkliste ab."
        )
        print_h2(
            "Drucke das subject des Zertifikats. Dies dient nur der Übersicht")
        self.print_subject()
        print_h2(
            "Überprüfe den öffentlichen Schlüssel des Zertifkats (Anforderung 2.2.1)"
        )
        self.check_certificate_key()

        print_h2("Überprüfe auf Wildcards (Anforderung 2.2.3)")
        self.check_for_wildcards()

        print_h2("Überprüfe auf BasicConstraint Extension (Anforderung 2.2.5)")
        self.check_basic_constraint()

        print_h2("Überprüfe keyUsageExtension (Anforderung 2.2.6)")
        self.check_cert_for_keyusage()
    def test_server_for_protocol(self):
        print_h1("Test die Anforderungen aus Kapitel 2.3")
        print_h2("Anforderung 2.3.1 Überpreufe die unterstuetzten Protokolle:")
        self.test_supported_protocols()

        print_h2(
            "Anforderung 2.3.2/2.3.3/2.3.4 Überpreufe die unterstuetzten Cipher-Suites:"
        )
        logger.info(
            "Im Folgenden werden die vom Server unterstützten Cipher-Suites gelistet."
        )
        logger.info(
            "Unerlaubte Cipher-Suites werden direkt markiert. Allerdings muss aktuelle manuell geprpft werden "
        )
        logger.info(
            "ob die verpflichtenden cipher-suites umgesetzt sind. Außerdem muss die Priorität der  "
        )
        logger.info("Cipher Suites aktuell manuell geprüft werden.")

        self.test_supported_cipher_suites()

        print_h1("Teste die Anforderungen aus Kapitel 2.4")
        print_h2("Anforderung 2.4.1 Überprüfe die ephemeralen Parameter")
        self.test_key_exchange()

        print_h1("Teste die Anforderungen aus Kapitel 2.5")
        print_h2("Anforderung 2.5.1 Überpruefe Session Renegotiation")
        self.test_session_renegotiation()

        print_h2("Anforderung 2.5.2 Überpruefe TLS Kompression")
        self.test_tls_compression()

        print_h2("Anforderung 2.5.3 Überpruefe auf Heartbeat-Extension")
        self.test_heartbeat_extension()

        print_h2("Anforderung 2.5.4 Überpruefe auf truncated_hmac-Extension")
        self.test_truncated_hmac_extension()
    def check_leaf_certificate(self):
        print_h1(
            "Diese Funktion überprüft das Server-Zertifikat und deckt die Anforderungen aus Kapitel 2.1 der Checkliste ab."
        )
        print_h2(
            "Drucke das subject des Zertifikats. Dies dient nur der Übersicht")
        self.print_subject()

        print_h2(
            "Überprüfe den öffentlichen Schlüssel des Zertifkats (Anforderung 2.1.1)"
        )
        self.check_certificate_key()

        print_h2("Überprüfe den Signaturalgorithmus (Anforderung 2.1.2)")
        self.check_signature_algorithm()

        print_h2("Überprüfe auf Wildcards (Anforderung 2.1.3)")
        self.check_for_wildcards()

        print_h2(
            "Überprüfe Rückrufinformationen und AuthorityInfoAccess (Anforderung 2.1.4)"
        )
        self.check_cert_for_crl()
        self.check_cert_for_aia()

        print_h2(
            "Überprüfe ob das Zertifikat gesperrt ist (Anforderung 2.1.5)")
        self.check_cert_for_revocation()

        print_h2("Überprüfe keyUsageExtension (Anforderung 2.1.6)")
        self.check_cert_for_keyusage()

        print_h2("Überprüfe extendedKeyUsageExtension (Anforderung 2.1.7)")
        self.check_cert_for_extended_keyusage()

        print_h2("Überprüfe Sub-Domain Namen (Anforderung 2.1.7)")
        self.list_alternative_names()
    def check_intermediate_certificate(self):
        print_h1(
            "Diese Funktion überprüft ein Intermediate-Zertifikat und deckt die Anforderungen aus Kapitel 2.2 der Checkliste ab."
        )
        print_h2(
            "Drucke das subject des Zertifikats. Dies dient nur der Übersicht")
        self.print_subject()
        print_h2(
            "Überprüfe den öffentlichen Schlüssel des Zertifkats (Anforderung 2.2.1)"
        )
        self.check_certificate_key()

        if self.is_cert_ca():
            print_h2("Überprüfe den Signaturalgorithmus (Anforderung 2.2.2)")
            self.check_signature_algorithm()

        if self.is_cert_ca():
            print_h2("Überprüfe auf Wildcards (Anforderung 2.2.3)")
            self.check_for_wildcards()

        if self.is_cert_ca():
            print_h2(
                "Überprüfe Rückrufinformationen und AuthorityInfoAccess (Anforderung 2.1.4)"
            )
            self.check_cert_for_crl()
            self.check_cert_for_aia()

        if self.is_cert_ca():
            print_h2(
                "Überprüfe auf BasicConstraint Extension (Anforderung 2.2.5)")
            self.check_basic_constraint()

        if self.is_cert_ca():
            print_h2("Überprüfe keyUsageExtension (Anforderung 2.2.6)")
            self.check_cert_for_keyusage()