from __future__ import annotations

from pyvenafi.tpp.attributes._helper import (
    IterableMeta,
    Attribute,
)
from pyvenafi.tpp.attributes.driver_base import DriverBaseAttributes
from pyvenafi.tpp.attributes.monitoring_base import MonitoringBaseAttributes

class X509CertificateBaseAttributes(DriverBaseAttributes, MonitoringBaseAttributes, metaclass=IterableMeta):
    __config_class__ = "X509 Certificate Base"
    adaptable_ca_binary_data_vault_id = Attribute('Adaptable CA:Binary Data Vault ID')
    adaptable_ca_early_password_vault_id = Attribute('Adaptable CA:Early Password Vault ID')
    adaptable_ca_early_pkcs7_vault_id = Attribute('Adaptable CA:Early Pkcs7 Vault ID')
    adaptable_ca_early_private_key_vault_id = Attribute('Adaptable CA:Early Private Key Vault ID')
    adaptable_ca_linked_certificate = Attribute('Adaptable CA:Linked Certificate')
    adaptable_ca_linked_certificate_attribute_name = Attribute('Adaptable CA:Linked Certificate Attribute Name')
    adaptable_ca_linked_certificate_option_enabled = Attribute('Adaptable CA:Linked Certificate Option Enabled')
    adaptable_ca_script_hash_mismatch_error = Attribute('Adaptable CA:Script Hash Mismatch Error')
    adaptable_workflow_approvers = Attribute('Adaptable Workflow Approvers')
    adaptable_workflow_reference_id = Attribute('Adaptable Workflow Reference ID')
    adaptable_workflow_stage = Attribute('Adaptable Workflow Stage')
    address = Attribute('Address')
    algorithm_bits = Attribute('Algorithm Bits')
    algorithm_curve = Attribute('Algorithm Curve')
    algorithm_parameter_set = Attribute('Algorithm Parameter Set')
    algorithm_type = Attribute('Algorithm Type')
    allow_private_key_reuse = Attribute('Allow Private Key Reuse')
    amazon_ca_first_pickup_request = Attribute('Amazon CA:First Pickup Request')
    amazon_ca_timestamp = Attribute('Amazon CA:Timestamp')
    approved_issuer = Attribute('Approved Issuer')
    approver = Attribute('Approver')
    csr_thumbprint = Attribute('CSR Thumbprint')
    csr_vault_id = Attribute('CSR Vault Id')
    certificate_authority = Attribute('Certificate Authority')
    certificate_download_pbes2_algorithm = Attribute('Certificate Download: PBES2 Algorithm')
    certificate_process_validator = Attribute('Certificate Process Validator')
    certificate_vault_id = Attribute('Certificate Vault Id')
    city = Attribute('City')
    comodo_ca_dcv_email = Attribute('Comodo CA:DCV Email')
    comodo_ca_server_type_id = Attribute('Comodo CA:Server Type Id')
    comodo_ccm_ca_pass_phrase = Attribute('Comodo CCM CA:Pass Phrase')
    comodo_ccm_ca_server_type = Attribute('Comodo CCM CA:Server Type')
    consumers = Attribute('Consumers')
    country = Attribute('Country')
    created_by = Attribute('Created By')
    digicert_ca_address = Attribute('DigiCert CA:Address')
    digicert_ca_request_id = Attribute('DigiCert CA:Request Id')
    digicert_ca_server_type = Attribute('DigiCert CA:Server Type')
    digicert_ca_specific_end_date = Attribute('DigiCert CA:Specific End Date')
    digicert_ca_zip = Attribute('DigiCert CA:Zip')
    disable_automatic_renewal = Attribute('Disable Automatic Renewal')
    disable_password_complexity = Attribute('Disable Password Complexity')
    discovered_by_dn = Attribute('Discovered By DN')
    discovered_on = Attribute('Discovered On')
    domain_suffix_whitelist = Attribute('Domain Suffix Whitelist')
    esm_ca_override_default_key_update_policy = Attribute('ESM CA:Override Default Key Update Policy')
    est_reenrollment_in_progress = Attribute('EST ReEnrollment In Progress')
    elliptic_curve = Attribute('Elliptic Curve')
    encryption_driver = Attribute('Encryption Driver')
    enforce_unique_subject = Attribute('Enforce Unique Subject')
    entrust_pki_gateway_early_private_key_vault_id = Attribute('Entrust PKI Gateway:Early Private Key Vault ID')
    entrust_pki_gateway_early_x509_vault_id = Attribute('Entrust PKI Gateway:Early X509 Vault ID')
    entrustnet_ca_additional_emails = Attribute('EntrustNET CA:Additional Emails')
    entrustnet_ca_additional_field_value = Attribute('EntrustNET CA:Additional Field Value')
    entrustnet_ca_email_address = Attribute('EntrustNET CA:Email Address')
    entrustnet_ca_first_name = Attribute('EntrustNET CA:First Name')
    entrustnet_ca_first_pickup_request = Attribute('EntrustNET CA:First Pickup Request')
    entrustnet_ca_last_name = Attribute('EntrustNET CA:Last Name')
    entrustnet_ca_specific_end_date = Attribute('EntrustNET CA:Specific End Date')
    entrustnet_ca_timestamp = Attribute('EntrustNET CA:Timestamp')
    escalation_notice_interval = Attribute('Escalation Notice Interval')
    escalation_notice_start = Attribute('Escalation Notice Start')
    expiration_notice_interval = Attribute('Expiration Notice Interval')
    expiration_notice_start = Attribute('Expiration Notice Start')
    fields = Attribute('Fields')
    generate_keypair_on_application = Attribute('Generate Keypair On Application')
    given_name = Attribute('Given Name')
    globalsign_mssl_ca_email = Attribute('GlobalSign MSSL CA:Email')
    globalsign_mssl_ca_first_name = Attribute('GlobalSign MSSL CA:First Name')
    globalsign_mssl_ca_last_name = Attribute('GlobalSign MSSL CA:Last Name')
    globalsign_mssl_ca_phone = Attribute('GlobalSign MSSL CA:Phone')
    google_cloud_ca_early_x509_chain_vault_id = Attribute('Google Cloud CA:Early X509 Chain Vault ID')
    google_cloud_ca_early_x509_vault_id = Attribute('Google Cloud CA:Early X509 Vault ID')
    grouping_id = Attribute('Grouping Id')
    in_error = Attribute('In Error')
    in_process = Attribute('In Process')
    internet_email_address = Attribute('Internet EMail Address')
    issued_to = Attribute('Issued To')
    jss_certificate_id = Attribute('JSS Certificate ID')
    jss_namespace_dn = Attribute('JSS Namespace DN')
    key_algorithm = Attribute('Key Algorithm')
    key_bit_strength = Attribute('Key Bit Strength')
    key_storage_location = Attribute('Key Storage Location')
    keynectis_sequoia_ca_fields = Attribute('Keynectis Sequoia CA:Fields')
    last_evaluated_on = Attribute('Last Evaluated On')
    last_notification = Attribute('Last Notification')
    last_renewed_by = Attribute('Last Renewed By')
    last_renewed_on = Attribute('Last Renewed On')
    last_validation_state_update = Attribute('Last Validation State Update')
    license_count = Attribute('License Count')
    management_type = Attribute('Management Type')
    manual_approval = Attribute('Manual Approval')
    manual_csr = Attribute('Manual Csr')
    microsoft_ca_request_approved = Attribute('Microsoft CA:Request Approved')
    microsoft_ca_specific_end_date = Attribute('Microsoft CA:Specific End Date')
    network_validation_disabled = Attribute('Network Validation Disabled')
    not_yet_installed_notified_on = Attribute('Not Yet Installed Notified On')
    notified_on = Attribute('Notified On')
    opentrust_pki_ca_fields = Attribute('OpenTrust PKI CA:Fields')
    opentrust_pki_ca_first_pickup_request = Attribute('OpenTrust PKI CA:First Pickup Request')
    opentrust_pki_ca_requester_email = Attribute('OpenTrust PKI CA:Requester Email')
    options = Attribute('Options')
    organization = Attribute('Organization')
    organizational_unit = Attribute('Organizational Unit')
    origin = Attribute('Origin')
    pkcs10_hash_algorithm = Attribute('PKCS10 Hash Algorithm')
    parameter_set = Attribute('Parameter Set')
    placement_id = Attribute('Placement Id')
    postal_code = Attribute('Postal Code')
    private_key_vault_id = Attribute('Private Key Vault Id')
    prohibit_wildcard = Attribute('Prohibit Wildcard')
    prohibited_subject_attributes = Attribute('Prohibited Subject Attributes')
    protection_key = Attribute('Protection Key')
    public_key_vault_id = Attribute('Public Key Vault Id')
    renewal_window = Attribute('Renewal Window')
    reverse_dc_order = Attribute('Reverse DC Order')
    revocation_check_disabled = Attribute('Revocation Check Disabled')
    revocation_check_in_error = Attribute('Revocation Check In Error')
    revocation_check_last_checked = Attribute('Revocation Check Last Checked')
    revocation_check_now = Attribute('Revocation Check Now')
    revocation_check_status = Attribute('Revocation Check Status')
    revocation_original_request = Attribute('Revocation Original Request')
    revocation_request = Attribute('Revocation Request')
    revoke_after = Attribute('Revoke After')
    revoke_prevention_period = Attribute('Revoke Prevention Period')
    scep_transaction_id = Attribute('Scep Transaction Id')
    server_type = Attribute('Server Type')
    signing_request_subject = Attribute('Signing Request Subject')
    specific_end_date = Attribute('Specific End Date')
    stage = Attribute('Stage')
    state = Attribute('State')
    status = Attribute('Status')
    surname = Attribute('Surname')
    telephone = Attribute('Telephone')
    thawte_ca_emails = Attribute('Thawte CA:Emails')
    thawte_ca_enrollment_mode = Attribute('Thawte CA:Enrollment Mode')
    thawte_ca_first_pickup_request = Attribute('Thawte CA:First Pickup Request')
    thawte_ca_timestamp = Attribute('Thawte CA:Timestamp')
    transaction_id = Attribute('Transaction Id')
    trusted_status = Attribute('Trusted Status')
    trustwave_ca_enrollment_mode = Attribute('Trustwave CA:Enrollment Mode')
    trustwave_ca_first_pickup_request = Attribute('Trustwave CA:First Pickup Request')
    trustwave_ca_timestamp = Attribute('Trustwave CA:Timestamp')
    validation_state = Attribute('Validation State')
    validity_period = Attribute('Validity Period')
    want_renewal = Attribute('Want Renewal')
    x509_d = Attribute('X509 D')
    x509_dc = Attribute('X509 DC')
    x509_dnq = Attribute('X509 DNQ')
    x509_e = Attribute('X509 E')
    x509_extension_fields = Attribute('X509 Extension Fields')
    x509_gn = Attribute('X509 GN')
    x509_gq = Attribute('X509 GQ')
    x509_i = Attribute('X509 I')
    x509_p = Attribute('X509 P')
    x509_pa = Attribute('X509 PA')
    x509_pc = Attribute('X509 PC')
    x509_sa = Attribute('X509 SA')
    x509_sn = Attribute('X509 SN')
    x509_sno = Attribute('X509 SNO')
    x509_subject = Attribute('X509 Subject')
    x509_subjectaltname = Attribute('X509 SubjectAltName')
    x509_subjectaltname_dns = Attribute('X509 SubjectAltName DNS')
    x509_subjectaltname_ipaddress = Attribute('X509 SubjectAltName IPAddress')
    x509_subjectaltname_othername_custom = Attribute('X509 SubjectAltName OtherName Custom')
    x509_subjectaltname_othername_upn = Attribute('X509 SubjectAltName OtherName UPN')
    x509_subjectaltname_rfc822 = Attribute('X509 SubjectAltName RFC822')
    x509_subjectaltname_uri = Attribute('X509 SubjectAltName URI')
    x509_t = Attribute('X509 T')
    x509_tn = Attribute('X509 TN')
    x509_ua = Attribute('X509 UA')
    x509_uid = Attribute('X509 UID')
    x509_un = Attribute('X509 UN')
