3
K^ۃ                 @   s8  d dl mZmZmZ d dlZd dlZd dlZd dlmZ d dl	m
Z
mZmZmZ d dlmZ d dlmZ d dlmZmZmZmZ dd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd ZG dd deZ dd Z!dd Z"dd Z#d d! Z$d"d# Z%d$d% Z&d&d' Z'd(d) Z(d*d+ Z)d,d- Z*d.d/ Z+d0d1 Z,d2d3 Z-d4d5 Z.d6d7 Z/d Z0d8Z1d9d: Z2ej3j4ej3j5ej3j6ej3j7ej3j8ej3j9ej3j:ej3j;d;Z<d<d= Z=d>d? Z>d@dA Z?dBdC Z@dDdE ZAdFdG ZBej3jCej3j4ej3j5ej3j6ej3j7ej3j8ej3j9ej3jDej3j:ej3j;dH
ZEej3jCd ej3j4d8ej3j5dIej3j6dJej3j7dKej3j8dLej3j9dMej3jDdNej3j:dOej3j;dPi
ZFdQdR ZGdSdT ZHdUdV ZIdWdX ZJdYdZ ZKd[d\ ZLd]d^ ZMd_d` ZNdadb ZOdcdd ZPdedf ZQdgdh ZRejSe#ejTe$ejUe'ejVe)ejWe/ejXe%ejYe&ejZe!ej[e?ej\e@ej]eej^eAej_e*ej`e+ejae.iZbebjc ZdeBedeje< ejfeGejgeHejheIiZiejjeejkeejXe%ej_e*ejYe&ejle-ej\e@iZmejneRiZoejneRiZpeijc Zqe didj dkdj ebdlZre dmdj dndj eddlZse dodj dpdj eddlZte dqdj drdj eidlZue dsdj dtdj emdlZve dudj dvdj eodlZwe dwdj dxdj epdlZxe dydj dzdj eqdlZydS ){    )absolute_importdivisionprint_functionN)x509)	DERReaderINTEGERNULLSEQUENCE)_TLS_FEATURE_TYPE_TO_ENUM)_ASN1_TYPE_TO_ENUM)CRLEntryExtensionOIDCertificatePoliciesOIDExtensionOIDOCSPExtensionOIDc             C   s   d}| j jd|}| jj|||d}||d krX|d }| j jd|}| jj|||d}| j|dk | j j||d d  j S )NP   zchar[]   r   )_ffinew_libZOBJ_obj2txtopenssl_assertbufferdecode)backendobjZbuf_lenbufres r   T/tmp/pip-unpacked-wheel-vvkwn1hz/cryptography/hazmat/backends/openssl/decode_asn1.py_obj2txt   s    	r   c             C   sn   | j j|}| j|| jjk | j j|}| j|| jjk t| |}t| |}t|j	 }t
jt
j|||S )N)r   ZX509_NAME_ENTRY_get_objectr   r   r   ZX509_NAME_ENTRY_get_data_asn1_string_to_utf8r   r   typer   ZNameAttributeObjectIdentifier)r   Zx509_name_entryr   datavalueoidr    r   r   r   _decode_x509_name_entry.   s    


r%   c       	      C   s   | j j|}g }d}x\t|D ]P}| j j||}t| |}| j j|}||kr\|j|h n|d j| |}qW tj	dd |D S )Nr   c             s   s   | ]}t j|V  qd S )N)r   RelativeDistinguishedName).0Zrdnr   r   r   	<genexpr>I   s    z$_decode_x509_name.<locals>.<genexpr>r)   )
r   ZX509_NAME_entry_countrangeZX509_NAME_get_entryr%   Z Cryptography_X509_NAME_ENTRY_setappendaddr   Name)	r   Z	x509_namecount
attributesZprev_set_idxentry	attributeZset_idr   r   r   _decode_x509_name:   s    
r3   c             C   sV   | j j|}g }x@t|D ]4}| j j||}| j|| jjk |jt| | qW |S )N)	r   Zsk_GENERAL_NAME_numr*   Zsk_GENERAL_NAME_valuer   r   r   r+   _decode_general_name)r   gnsnumnamesignr   r   r   _decode_general_namesL   s    r:   c             C   s  |j | jjkr.t| |jjjd}tjj	|S |j | jj
kr\t| |jjjd}tjj	|S |j | jjkrt| |jj}tjtj|S |j | jjkrbt| |jj}t|}|dks|dkrNtj|d |d  }tj||d d  }tt|dd  }|jd}|dkrt|}d||d  kr6tdtj|jd	j| }	n
tj|}	tj|	S |j | jjkrtj t!| |jj"S |j | jj#krt| |jj$jd}tj%j	|S |j | jj&krt| |jj'j(}
t)| |jj'j*}tj+tj|
|S tj,d
jtj-j.|j |j |j d S )Nutf8          0r   1zInvalid netmaskz/{}z{} is not a supported typer)   )/r    r   ZGEN_DNS_asn1_string_to_bytesdZdNSNamer   r   ZDNSNameZ_init_without_validationZGEN_URIZuniformResourceIdentifierZUniformResourceIdentifierZGEN_RIDr   ZregisteredIDZRegisteredIDr!   Z	GEN_IPADDZ	iPAddresslen	ipaddress
ip_addressbinintfind
ValueError
ip_networkexplodedformatZ	IPAddressZGEN_DIRNAMEZDirectoryNamer3   ZdirectoryNameZ	GEN_EMAILZ
rfc822NameZ
RFC822NameZGEN_OTHERNAMEZ	otherNametype_id_asn1_to_derr#   Z	OtherNameZUnsupportedGeneralNameTypeZ_GENERAL_NAMESget)r   r9   r"   r$   Zdata_lenbasenetmaskbitsprefixiprM   r#   r   r   r   r4   W   sP    



r4   c             C   s   t j S )N)r   ZOCSPNoCheck)r   extr   r   r   _decode_ocsp_no_check   s    rV   c             C   s0   | j jd|}| j j|| jj}tjt| |S )NzASN1_INTEGER *)r   castgcr   ASN1_INTEGER_freer   Z	CRLNumber_asn1_integer_to_int)r   rU   asn1_intr   r   r   _decode_crl_number   s    r\   c             C   s0   | j jd|}| j j|| jj}tjt| |S )NzASN1_INTEGER *)r   rW   rX   r   rY   r   ZDeltaCRLIndicatorrZ   )r   rU   r[   r   r   r   _decode_delta_crl_indicator   s    r]   c               @   s   e Zd Zdd Zdd ZdS )_X509ExtensionParserc             C   s   || _ || _|| _d S )N)	ext_countget_exthandlers)selfr_   r`   ra   r   r   r   __init__   s    z_X509ExtensionParser.__init__c             C   sR  g }t  }x:t| j||D ]$}| j|||}|j||jjk |jj|}|dk}t	j
t||jj|}	|	|krt	jdj|	|	|	tjkr|jj|}
t||
}t|jt}g }x |j s|j|jtj  qW t	jdd |D }|jt	j|	|| |j|	 qnX|	tjkrn|jj|}
tt||
}|jtj  |jt	j|	|t	j   |j|	 qy| j!|	 }W nn t"k
r   |jj|}
|j|
|jjk |jj#|
j$|
j%d d  }t	j&|	|}|jt	j|	|| Y nPX |jj'|}||jjkr|j(  t)dj|	|||}|jt	j|	|| |j|	 qW t	j*|S )Nr   zDuplicate {} extension foundc             S   s   g | ]}t | qS r   )r
   )r'   r0   r   r   r   
<listcomp>   s    z._X509ExtensionParser.parse.<locals>.<listcomp>z/The {} extension is invalid and can't be parsed)+setr*   r_   r`   r   r   r   r   ZX509_EXTENSION_get_criticalr   r!   r   ZX509_EXTENSION_get_objectZDuplicateExtensionrL   r   ZTLS_FEATUREZX509_EXTENSION_get_datarA   r   Zread_single_elementr	   Zis_emptyr+   Zread_elementr   Z
as_integerZ
TLSFeature	Extensionr,   ZPRECERT_POISONZcheck_emptyZPrecertPoisonra   KeyErrorr   r"   lengthZUnrecognizedExtensionZX509V3_EXT_d2iZ_consume_errorsrI   Z
Extensions)rb   r   Zx509_obj
extensionsZ	seen_oidsr8   rU   critcriticalr$   r"   Z
data_bytesfeaturesparsedr#   readerhandlerZderZunrecognizedZext_datar   r   r   parse   sf    




z_X509ExtensionParser.parseN)__name__
__module____qualname__rc   rp   r   r   r   r   r^      s   r^   c             C   s@  | j jd|}| j j|| jj}| jj|}g }xt|D ]}d }| jj||}tj	t
| |j}|j| j jkr | jj|j}g }xt|D ]}	| jj|j|	}
tj	t
| |
j}|tjkr| j j|
jjj|
jjjd d  jd}|j| q|tjkstt| |
jj}|j| qW |jtj|| q<W tj|S )Nz"Cryptography_STACK_OF_POLICYINFO *ascii) r   rW   rX   r   ZCERTIFICATEPOLICIES_freeZsk_POLICYINFO_numr*   Zsk_POLICYINFO_valuer   r!   r   Zpolicyid
qualifiersr   Zsk_POLICYQUALINFO_numZsk_POLICYQUALINFO_valuepqualidr   ZCPS_QUALIFIERr   rB   cpsurir"   rh   r   r+   ZCPS_USER_NOTICEAssertionError_decode_user_noticeZ
usernoticeZPolicyInformationZCertificatePolicies)r   cpr6   Zcertificate_policiesr8   ru   pir$   ZqnumjZpqirv   rw   Zuser_noticer   r   r   _decode_certificate_policies  s8    

r}   c       
      C   s   d }d }|j | jjkr"t| |j }|j| jjkrt| |jj}| jj|jj}g }x6t	|D ]*}| jj
|jj|}t| |}	|j|	 q\W tj||}tj||S )N)Zexptextr   r   r   Z	noticereforganizationr   Zsk_ASN1_INTEGER_numZ	noticenosr*   Zsk_ASN1_INTEGER_valuerZ   r+   r   ZNoticeReferenceZ
UserNotice)
r   ZunZexplicit_textZnotice_referencer~   r6   Znotice_numbersr8   r[   Z
notice_numr   r   r   ry   +  s$    

ry   c             C   sB   | j jd|}| j j|| jj}|jdk}t| |j}tj	||S )NzBASIC_CONSTRAINTS *   )
r   rW   rX   r   ZBASIC_CONSTRAINTS_freeca_asn1_integer_to_int_or_nonepathlenr   ZBasicConstraints)r   Zbc_stZbasic_constraintsr   Zpath_lengthr   r   r   _decode_basic_constraintsI  s    

r   c             C   s@   | j jd|}| j j|| jj}tj| j j|j|j	d d  S )NzASN1_OCTET_STRING *)
r   rW   rX   r   ASN1_OCTET_STRING_freer   ZSubjectKeyIdentifierr   r"   rh   )r   asn1_stringr   r   r   _decode_subject_key_identifierY  s
    r   c             C   s   | j jd|}| j j|| jj}d }d }|j| j jkrT| j j|jj|jj	d d  }|j
| j jkrnt| |j
}t| |j}tj|||S )NzAUTHORITY_KEYID *)r   rW   rX   r   ZAUTHORITY_KEYID_freeZkeyidr   r   r"   rh   Zissuerr:   r   serialr   ZAuthorityKeyIdentifier)r   ZakidZkey_identifierZauthority_cert_issuerZauthority_cert_serial_numberr   r   r    _decode_authority_key_identifierc  s    

r   c                s    j jd|} j j| fdd} jj|}g }xvt|D ]j} jj||} j|j j j	k t
jt |j} j|j j j	k t |j}|jt
j|| q>W t
j|S )Nz*Cryptography_STACK_OF_ACCESS_DESCRIPTION *c                s    j j|  jj j jdS )NZACCESS_DESCRIPTION_free)r   Zsk_ACCESS_DESCRIPTION_pop_freer   	addressofZ_original_lib)r0   )r   r   r   <lambda>  s   z6_decode_authority_information_access.<locals>.<lambda>)r   rW   rX   r   Zsk_ACCESS_DESCRIPTION_numr*   Zsk_ACCESS_DESCRIPTION_valuer   methodr   r   r!   r   locationr4   r+   ZAccessDescriptionZAuthorityInformationAccess)r   Zaiar6   Zaccess_descriptionsr8   adr$   r9   r   )r   r   $_decode_authority_information_access|  s    r   c          
   C   s   | j jd|}| j j|| jj}| jj}||ddk}||ddk}||ddk}||ddk}||ddk}||ddk}||ddk}	||d	dk}
||d
dk}tj|||||||	|
|	S )NzASN1_BIT_STRING *r   r   r>                  r<   )r   rW   rX   r   ZASN1_BIT_STRING_freeASN1_BIT_STRING_get_bitr   ZKeyUsage)r   Z
bit_stringZget_bitZdigital_signatureZcontent_commitmentZkey_enciphermentZdata_enciphermentZkey_agreementZkey_cert_signZcrl_signZencipher_onlyZdecipher_onlyr   r   r   _decode_key_usage  s,    r   c             C   s.   | j jd|}| j j|| jj}t| |}|S )NzGENERAL_NAMES *)r   rW   rX   r   GENERAL_NAMES_freer:   )r   r5   general_namesr   r   r   _decode_general_names_extension  s    
r   c             C   s   t jt| |S )N)r   ZSubjectAlternativeNamer   )r   rU   r   r   r   _decode_subject_alt_name  s    r   c             C   s   t jt| |S )N)r   ZIssuerAlternativeNamer   )r   rU   r   r   r   _decode_issuer_alt_name  s    r   c             C   sF   | j jd|}| j j|| jj}t| |j}t| |j}tj	||dS )NzNAME_CONSTRAINTS *)Zpermitted_subtreesZexcluded_subtrees)
r   rW   rX   r   ZNAME_CONSTRAINTS_free_decode_general_subtreesZpermittedSubtreesZexcludedSubtreesr   ZNameConstraints)r   ZncZ	permittedZexcludedr   r   r   _decode_name_constraints  s    r   c             C   sl   || j jkrd S | jj|}g }xFt|D ]:}| jj||}| j|| j jk t| |j}|j	| q*W |S )N)
r   r   r   Zsk_GENERAL_SUBTREE_numr*   Zsk_GENERAL_SUBTREE_valuer   r4   rP   r+   )r   Zstack_subtreesr6   Zsubtreesr8   r   namer   r   r   r     s    r   c       	      C   s   | j jd|}| j j|| jj}|j| j jkr@t| |j\}}nd }d }|jdk}|j	dk}|j
dk}|jdk}|j| j jkrt| |j}nd }tj|||||||S )NzISSUING_DIST_POINT *r   )r   rW   rX   r   ZISSUING_DIST_POINT_free	distpointr   _decode_distpointZonlyuserZonlyCAZindirectCRLZonlyattrZonlysomereasons_decode_reasonsr   ZIssuingDistributionPoint)	r   Zidp	full_namerelative_nameZ	only_userZonly_caZindirect_crlZ	only_attrZonly_some_reasonsr   r   r   _decode_issuing_dist_point  s     




r   c             C   sD   | j jd|}| j j|| jj}t| |j}t| |j}tj	||S )NzPOLICY_CONSTRAINTS *)
r   rW   rX   r   ZPOLICY_CONSTRAINTS_freer   ZrequireExplicitPolicyZinhibitPolicyMappingr   ZPolicyConstraints)r   ZpcZrequire_explicit_policyZinhibit_policy_mappingr   r   r   _decode_policy_constraints  s    

r   c             C   s   | j jd|}| j j|| jj}| jj|}g }xJt|D ]>}| jj||}| j|| j j	k t
jt| |}|j| q:W t
j|S )Nz#Cryptography_STACK_OF_ASN1_OBJECT *)r   rW   rX   r   Zsk_ASN1_OBJECT_freeZsk_ASN1_OBJECT_numr*   Zsk_ASN1_OBJECT_valuer   r   r   r!   r   r+   ZExtendedKeyUsage)r   skr6   Zekusr8   r   r$   r   r   r   _decode_extended_key_usage  s    r   r   c       
      C   s   | j jd|}| j j|| jj}| jj|}g }xt|D ]}d }d }d }d }| jj||}	|	j| j j	krvt
| |	j}|	j| j j	krt| |	j}|	j| j j	krt| |	j\}}|jtj|||| q:W |S )Nz"Cryptography_STACK_OF_DIST_POINT *)r   rW   rX   r   ZCRL_DIST_POINTS_freeZsk_DIST_POINT_numr*   Zsk_DIST_POINT_valuereasonsr   r   Z	CRLissuerr:   r   r   r+   r   ZDistributionPoint)
r   cdpsr6   dist_pointsr8   r   r   Z
crl_issuerr   Zcdpr   r   r   _decode_dist_points  s*    r   )r   r>   r   r   r   r   r   r<   c             C   s<   g }x.t jtD ] \}}| jj||r|j| qW t|S )N)six	iteritems_REASON_BIT_MAPPINGr   r   r+   	frozenset)r   r   Zenum_reasonsZbit_positionreasonr   r   r   r   M  s
    r   c       	      C   s   |j tkr t| |jj}|d fS |jj}| jj|}t }x@t	|D ]4}| jj
||}| j|| jjk |jt| | qDW tj|}d |fS )N)r    _DISTPOINT_TYPE_FULLNAMEr:   r   fullnameZrelativenamer   Zsk_X509_NAME_ENTRY_numre   r*   Zsk_X509_NAME_ENTRY_valuer   r   r   r,   r%   r   r&   )	r   r   r   ZrnsZrnumr/   r8   Zrnr   r   r   r   r   W  s    
	
r   c             C   s   t | |}tj|S )N)r   r   ZCRLDistributionPoints)r   r   r   r   r   r   _decode_crl_distribution_pointst  s    
r   c             C   s   t | |}tj|S )N)r   r   ZFreshestCRL)r   r   r   r   r   r   _decode_freshest_crly  s    
r   c             C   s4   | j jd|}| j j|| jj}t| |}tj|S )NzASN1_INTEGER *)r   rW   rX   r   rY   rZ   r   ZInhibitAnyPolicy)r   r[   Z
skip_certsr   r   r   _decode_inhibit_any_policy~  s    
r   c             C   st   ddl m} | jjd|}| jj|| jj}g }x8t| jj|D ]$}| jj	||}|j
|| || qBW tj|S )Nr   )_SignedCertificateTimestampzCryptography_STACK_OF_SCT *)Z)cryptography.hazmat.backends.openssl.x509r   r   rW   rX   r   ZSCT_LIST_freer*   Z
sk_SCT_numZsk_SCT_valuer+   r   Z)PrecertificateSignedCertificateTimestamps)r   Z	asn1_sctsr   Zsctsr8   Zsctr   r   r   -_decode_precert_signed_certificate_timestamps  s    r   )
r   r   r>   r   r   r   r   r<   	   
   r>   r   r   r   r   r<   r   r   c             C   sb   | j jd|}| j j|| jj}| jj|}ytjt| S  t	k
r\   t
dj|Y nX d S )NzASN1_ENUMERATED *zUnsupported reason code: {})r   rW   rX   r   ZASN1_ENUMERATED_freeZASN1_ENUMERATED_getr   Z	CRLReason_CRL_ENTRY_REASON_CODE_TO_ENUMrg   rI   rL   )r   enumcoder   r   r   _decode_crl_reason  s    r   c             C   s0   | j jd|}| j j|| jj}tjt| |S )NzASN1_GENERALIZEDTIME *)r   rW   rX   r   ASN1_GENERALIZEDTIME_freer   ZInvalidityDate_parse_asn1_generalized_time)r   Zinv_dategeneralized_timer   r   r   _decode_invalidity_date  s    r   c             C   s4   | j jd|}| j j|| jj}t| |}tj|S )NzGENERAL_NAMES *)r   rW   rX   r   r   r:   r   ZCertificateIssuer)r   r5   r   r   r   r   _decode_cert_issuer  s    
r   c                sn    j jd} jj||} j|dk  j|d  j jk  j j| fdd} j j|d |d d  S )Nzunsigned char **r   c                s    j j| d S )Nr   )r   OPENSSL_free)r   )r   r   r   r     s    z_asn1_to_der.<locals>.<lambda>)r   r   r   Zi2d_ASN1_TYPEr   r   rX   r   )r   Z	asn1_typer   r   r   )r   r   rN     s    rN   c             C   s@   | j j|| jj}| j|| jjk | jj|| j j}| j|S )N)r   ZASN1_INTEGER_to_BNr   r   r   rX   ZBN_freeZ
_bn_to_int)r   r[   Zbnr   r   r   rZ     s    rZ   c             C   s   || j jkrd S t| |S d S )N)r   r   rZ   )r   r[   r   r   r   r     s    r   c             C   s   | j j|j|jd d  S )N)r   r   r"   rh   )r   r   r   r   r   rA     s    rA   c             C   s   t | |jdS )Nrt   )rA   r   )r   r   r   r   r   _asn1_string_to_ascii  s    r   c                s~    j jd} jj||}|dkr2tdj|j j|d  j jk  j j	| fdd} j j
|d |d d  jdS )	Nzunsigned char **r   z&Unsupported ASN1 string type. Type: {}r   c                s    j j| d S )Nr   )r   r   )r   )r   r   r   r     s    z&_asn1_string_to_utf8.<locals>.<lambda>r;   r)   )r   r   r   ZASN1_STRING_to_UTF8rI   rL   r    r   r   rX   r   r   )r   r   r   r   r   )r   r   r     s    r   c             C   s`   | j || jjk | jj|| jj}|| jjkrDtdjt| || jj|| jj	}t
| |S )Nz1Couldn't parse ASN.1 time as generalizedtime {!r})r   r   r   r   ZASN1_TIME_to_generalizedtimerI   rL   rA   rX   r   r   )r   Z	asn1_timer   r   r   r   _parse_asn1_time
  s    r   c             C   s"   t | | jjd|}tjj|dS )NzASN1_STRING *z%Y%m%d%H%M%SZ)r   r   rW   datetimestrptime)r   r   timer   r   r   r     s    r   c             C   s0   | j jd|}| j j|| jj}tjt| |S )NzASN1_OCTET_STRING *)r   rW   rX   r   r   r   Z	OCSPNoncerA   )r   noncer   r   r   _decode_nonce#  s    r   c             C   s   | j j|S )N)r   X509_get_ext_count)r   r0   r   r   r   r   a  s    r   c             C   s   | j j||S )N)r   X509_get_ext)r   r0   r8   r   r   r   r   b  s    )r_   r`   ra   c             C   s   | j j|S )N)r   r   )r   r0   r   r   r   r   g  s    c             C   s   | j j||S )N)r   r   )r   r0   r8   r   r   r   r   h  s    c             C   s   | j j|S )N)r   Zsk_X509_EXTENSION_num)r   r0   r   r   r   r   m  s    c             C   s   | j j||S )N)r   Zsk_X509_EXTENSION_value)r   r0   r8   r   r   r   r   n  s    c             C   s   | j j|S )N)r   ZX509_REVOKED_get_ext_count)r   r0   r   r   r   r   s  s    c             C   s   | j j||S )N)r   ZX509_REVOKED_get_ext)r   r0   r8   r   r   r   r   t  s    c             C   s   | j j|S )N)r   ZX509_CRL_get_ext_count)r   r0   r   r   r   r   y  s    c             C   s   | j j||S )N)r   ZX509_CRL_get_ext)r   r0   r8   r   r   r   r   z  s    c             C   s   | j j|S )N)r   ZOCSP_REQUEST_get_ext_count)r   r0   r   r   r   r     s    c             C   s   | j j||S )N)r   ZOCSP_REQUEST_get_ext)r   r0   r8   r   r   r   r     s    c             C   s   | j j|S )N)r   ZOCSP_BASICRESP_get_ext_count)r   r0   r   r   r   r     s    c             C   s   | j j||S )N)r   ZOCSP_BASICRESP_get_ext)r   r0   r8   r   r   r   r     s    c             C   s   | j j|S )N)r   ZOCSP_SINGLERESP_get_ext_count)r   r0   r   r   r   r     s    c             C   s   | j j||S )N)r   ZOCSP_SINGLERESP_get_ext)r   r0   r8   r   r   r   r     s    )z
__future__r   r   r   r   rD   r   Zcryptographyr   Zcryptography.hazmat._derr   r   r   r	   Zcryptography.x509.extensionsr
   Zcryptography.x509.namer   Zcryptography.x509.oidr   r   r   r   r   r%   r3   r:   r4   rV   r\   r]   objectr^   r}   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Z_DISTPOINT_TYPE_RELATIVENAMEr   ZReasonFlagsZkey_compromiseZca_compromiseZaffiliation_changedZ
supersededZcessation_of_operationZcertificate_holdZprivilege_withdrawnZaa_compromiser   r   r   r   r   r   r   ZunspecifiedZremove_from_crlr   Z_CRL_ENTRY_REASON_ENUM_TO_CODEr   r   r   rN   rZ   r   rA   r   r   r   r   r   ZBASIC_CONSTRAINTSZSUBJECT_KEY_IDENTIFIERZ	KEY_USAGEZSUBJECT_ALTERNATIVE_NAMEZEXTENDED_KEY_USAGEZAUTHORITY_KEY_IDENTIFIERZAUTHORITY_INFORMATION_ACCESSZCERTIFICATE_POLICIESZCRL_DISTRIBUTION_POINTSZFRESHEST_CRLZOCSP_NO_CHECKZINHIBIT_ANY_POLICYZISSUER_ALTERNATIVE_NAMEZNAME_CONSTRAINTSZPOLICY_CONSTRAINTSZ_EXTENSION_HANDLERS_NO_SCTcopyZ_EXTENSION_HANDLERSZ%PRECERT_SIGNED_CERTIFICATE_TIMESTAMPSZ
CRL_REASONZINVALIDITY_DATEZCERTIFICATE_ISSUERZ_REVOKED_EXTENSION_HANDLERSZ
CRL_NUMBERZDELTA_CRL_INDICATORZISSUING_DISTRIBUTION_POINTZ_CRL_EXTENSION_HANDLERSZNONCEZ_OCSP_REQ_EXTENSION_HANDLERSZ"_OCSP_BASICRESP_EXTENSION_HANDLERSZ#_OCSP_SINGLERESP_EXTENSION_HANDLERSZ$_CERTIFICATE_EXTENSION_PARSER_NO_SCTZ_CERTIFICATE_EXTENSION_PARSERZ_CSR_EXTENSION_PARSERZ%_REVOKED_CERTIFICATE_EXTENSION_PARSERZ_CRL_EXTENSION_PARSERZ_OCSP_REQ_EXT_PARSERZ_OCSP_BASICRESP_EXT_PARSERZ_OCSP_SINGLERESP_EXT_PARSERr   r   r   r   <module>   s"  NO'

-






