o
    ™¨Êhz|  ã                   @   s
  d dl mZmZmZ d dlZd dlZd dlZd dlZd dl	m
Z
 d dlmZ d dlmZ d dlmZmZmZmZ G dd„ dejjƒ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/d0„ Z+d1d2„ Z,d3d4„ Z-d5d6„ Z.d Z/d7Z0d8d9„ Z1e
j2j3e
j2j4e
j2j5e
j2j6e
j2j7e
j2j8e
j2j9e
j2j:d:œZ;d;d<„ Z<d=d>„ Z=d?d@„ Z>dAdB„ Z?dCdD„ Z@dEdF„ ZAe
j2jBe
j2j3e
j2j4e
j2j5e
j2j6e
j2j7e
j2j8e
j2jCe
j2j9e
j2j:dGœ
ZDe
j2jBd e
j2j3d7e
j2j4dHe
j2j5dIe
j2j6dJe
j2j7dKe
j2j8dLe
j2jCdMe
j2j9dNe
j2j:dOi
ZEdPdQ„ ZFdRdS„ ZGdTdU„ ZHdVdW„ ZIdXdY„ ZJdZd[„ ZKd\d]„ ZLd^d_„ ZMd`da„ ZNdbdc„ ZOddde„ ZPdfdg„ ZQejRe#e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^e*ej_e+ej`e-iZaea b¡ ZceAecejd< ejeeFejfeGejgeHiZhejieejjeejWe%ej^e*ejXe&iZkejleQiZmejleQiZne dhdi„ djdi„ eadk�Zoe dldi„ dmdi„ ecdk�Zpe dndi„ dodi„ ecdk�Zqe dpdi„ dqdi„ ehdk�Zre drdi„ dsdi„ ekdk�Zse dtdi„ dudi„ emdk�Zte dvdi„ dwdi„ endk�ZudS )xé    )Úabsolute_importÚdivisionÚprint_functionN)Úx509)Ú_TLS_FEATURE_TYPE_TO_ENUM)Ú_ASN1_TYPE_TO_ENUM)ÚCRLEntryExtensionOIDÚCertificatePoliciesOIDÚExtensionOIDÚOCSPExtensionOIDc                   @   s   e Zd ZejjZdS )Ú	_IntegersN)Ú__name__Ú
__module__Ú__qualname__Ú
asn1cryptoÚcoreÚIntegerÚ_child_spec© r   r   úb/var/www/html/env/lib/python3.10/site-packages/cryptography/hazmat/backends/openssl/decode_asn1.pyr      s    r   c                 C   s€   d}| j  d|¡}| j |||d¡}||d kr,|d }| j  d|¡}| j |||d¡}|  |dk¡ | j  ||¡d d …  ¡ S )NéP   zchar[]é   r   )Ú_ffiÚnewÚ_libÚOBJ_obj2txtÚopenssl_assertÚbufferÚdecode)ÚbackendÚobjÚbuf_lenÚbufÚresr   r   r   Ú_obj2txt   s   	r$   c                 C   sn   | j  |¡}|  || jjk¡ | j  |¡}|  || jjk¡ t| |ƒ}t| |ƒ}t|j	 }t
 t
 |¡||¡S ©N)r   ÚX509_NAME_ENTRY_get_objectr   r   ÚNULLÚX509_NAME_ENTRY_get_dataÚ_asn1_string_to_utf8r$   r   Útyper   ÚNameAttributeÚObjectIdentifier)r   Úx509_name_entryr    ÚdataÚvalueÚoidr*   r   r   r   Ú_decode_x509_name_entry3   s   


r1   c           	      C   s†   | j  |¡}g }d}t|ƒD ]*}| j  ||¡}t| |ƒ}| j  |¡}||kr/| t|gƒ¡ n|d  |¡ |}qt	 
dd„ |D ƒ¡S )Néÿÿÿÿc                 s   s   � | ]}t  |¡V  qd S r%   )r   ÚRelativeDistinguishedName)Ú.0Úrdnr   r   r   Ú	<genexpr>N   s   € z$_decode_x509_name.<locals>.<genexpr>)r   ÚX509_NAME_entry_countÚrangeÚX509_NAME_get_entryr1   Ú Cryptography_X509_NAME_ENTRY_setÚappendÚsetÚaddr   ÚName)	r   Ú	x509_nameÚcountÚ
attributesÚprev_set_idÚxÚentryÚ	attributeÚset_idr   r   r   Ú_decode_x509_name?   s   
rG   c                 C   sR   | j  |¡}g }t|ƒD ]}| j  ||¡}|  || jjk¡ | t| |ƒ¡ q|S r%   )	r   Úsk_GENERAL_NAME_numr8   Úsk_GENERAL_NAME_valuer   r   r'   r;   Ú_decode_general_name)r   ÚgnsÚnumÚnamesÚiÚgnr   r   r   Ú_decode_general_namesQ   s   rP   c                 C   s  |j | jjkrt| |jjƒ d¡}tj 	|¡S |j | jj
kr.t| |jjƒ d¡}tj 	|¡S |j | jjkrDt| |jjƒ}t t |¡¡S |j | jjkr­t| |jjƒ}t|ƒ}|dks^|dkr£t |d |d … ¡}t ||d d … ¡}tt|ƒƒdd … }| d¡}|dkr‹t|ƒ}d||d … v r—tdƒ‚t |jd	 |¡ ¡}	nt |¡}	t |	¡S |j | jjkr¾t  t!| |jj"ƒ¡S |j | jj#krÕt| |jj$ƒ d¡}tj% 	|¡S |j | jj&krõt| |jj'j(ƒ}
t)| |jj'j*ƒ}t +t |
¡|¡S t ,d
 tj- .|j |j ¡¡|j ¡‚)NÚutf8é   é    é   Ú0r2   Ú1zInvalid netmaskz/{0}z{0} is not a supported type)/r*   r   ÚGEN_DNSÚ_asn1_string_to_bytesÚdÚdNSNamer   r   ÚDNSNameÚ_init_without_validationÚGEN_URIÚuniformResourceIdentifierÚUniformResourceIdentifierÚGEN_RIDr$   ÚregisteredIDÚRegisteredIDr,   Ú	GEN_IPADDÚ	iPAddressÚlenÚ	ipaddressÚ
ip_addressÚbinÚintÚfindÚ
ValueErrorÚ
ip_networkÚexplodedÚformatÚ	IPAddressÚGEN_DIRNAMEÚDirectoryNamerG   ÚdirectoryNameÚ	GEN_EMAILÚ
rfc822NameÚ
RFC822NameÚGEN_OTHERNAMEÚ	otherNameÚtype_idÚ_asn1_to_derr/   Ú	OtherNameÚUnsupportedGeneralNameTypeÚ_GENERAL_NAMESÚget)r   rO   r.   r0   Údata_lenÚbaseÚnetmaskÚbitsÚprefixÚiprx   r/   r   r   r   rJ   \   sZ   ÿþ


ÿÿürJ   c                 C   s   t  ¡ S r%   )r   ÚOCSPNoCheck©r   Úextr   r   r   Ú_decode_ocsp_no_checkª   s   r‡   c                 C   ó0   | j  d|¡}| j  || jj¡}t t| |ƒ¡S ©NzASN1_INTEGER *)r   ÚcastÚgcr   ÚASN1_INTEGER_freer   Ú	CRLNumberÚ_asn1_integer_to_int©r   r†   Úasn1_intr   r   r   Ú_decode_crl_number®   ó   r‘   c                 C   rˆ   r‰   )r   rŠ   r‹   r   rŒ   r   ÚDeltaCRLIndicatorrŽ   r�   r   r   r   Ú_decode_delta_crl_indicator´   r’   r”   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú_X509ExtensionParserc                 C   s   || _ || _|| _d S r%   ©Ú	ext_countÚget_extÚhandlers)Úselfr—   r˜   r™   r   r   r   Ú__init__»   s   
z_X509ExtensionParser.__init__c                 C   s  g }t ƒ }t|  ||¡ƒD ]ú}|  |||¡}| ||jjk¡ |j |¡}|dk}t	 
t||j |¡ƒ¡}	|	|v rBt	 d |	¡|	¡‚|	tjkro|j |¡}
t t||
ƒ¡}t	 dd„ |D ƒ¡}| t	 |	||¡¡ | |	¡ q|	tjkrŸ|j |¡}
tjj t||
ƒ¡}|tj ¡ ks�J ‚| t	 |	|t	 ¡ ¡¡ | |	¡ qz| j|	 }W n5 tyÛ   |j |¡}
| |
|jjk¡ |j  |
j!|
j"¡d d … }t	 #|	|¡}| t	 |	||¡¡ Y n'w |j $|¡}||jjkró| %¡  t&d |	¡ƒ‚|||ƒ}| t	 |	||¡¡ | |	¡ qt	 '|¡S )Nr   zDuplicate {0} extension foundc                 S   s   g | ]}t |j ‘qS r   )r   Únative)r4   rC   r   r   r   Ú
<listcomp>×   s    z._X509ExtensionParser.parse.<locals>.<listcomp>z0The {0} extension is invalid and can't be parsed)(r<   r8   r—   r˜   r   r   r'   r   ÚX509_EXTENSION_get_criticalr   r,   r$   ÚX509_EXTENSION_get_objectÚDuplicateExtensionrn   r
   ÚTLS_FEATUREÚX509_EXTENSION_get_datar   ÚloadrX   Ú
TLSFeaturer;   Ú	Extensionr=   ÚPRECERT_POISONr   r   ÚNullÚPrecertPoisonr™   ÚKeyErrorr   r.   ÚlengthÚUnrecognizedExtensionÚX509V3_EXT_d2iÚ_consume_errorsrk   Ú
Extensions)rš   r   Úx509_objÚ
extensionsÚ	seen_oidsrN   r†   ÚcritÚcriticalr0   r.   Úparsedr/   ÚhandlerÚderÚunrecognizedÚext_datar   r   r   ÚparseÀ   sp   ÿ
ÿ
ÿ

ÿ
ÿ
ÿú
þ

z_X509ExtensionParser.parseN)r   r   r   r›   r¹   r   r   r   r   r•   º   s    r•   c                 C   s2  | j  d|¡}| j  || jj¡}| j |¡}g }t|ƒD ]w}d }| j ||¡}t 	t
| |jƒ¡}|j| j jkrŠ| j |j¡}g }t|ƒD ]E}	| j |j|	¡}
t 	t
| |
jƒ¡}|tjkrv| j  |
jjj|
jjj¡d d …  d¡}| |¡ qD|tjks}J ‚t| |
jjƒ}| |¡ qD| t ||¡¡ qt |¡S )Nz"Cryptography_STACK_OF_POLICYINFO *Úascii)r   rŠ   r‹   r   ÚCERTIFICATEPOLICIES_freeÚsk_POLICYINFO_numr8   Úsk_POLICYINFO_valuer   r,   r$   ÚpolicyidÚ
qualifiersr'   Úsk_POLICYQUALINFO_numÚsk_POLICYQUALINFO_valueÚpqualidr	   ÚCPS_QUALIFIERr   rY   Úcpsurir.   rª   r   r;   ÚCPS_USER_NOTICEÚ_decode_user_noticeÚ
usernoticeÚPolicyInformationÚCertificatePolicies)r   ÚcprL   Úcertificate_policiesrN   r¿   Úpir0   ÚqnumÚjÚpqirÂ   rÄ   Úuser_noticer   r   r   Ú_decode_certificate_policies  sH   ÿ
ÿ
ÿþþÿ
ÿ
rÑ   c           
      C   sž   d }d }|j | jjkrt| |j ƒ}|j| jjkrIt| |jjƒ}| j |jj¡}g }t	|ƒD ]}| j 
|jj|¡}t| |ƒ}	| |	¡ q-t ||¡}t ||¡S r%   )Úexptextr   r'   r)   Ú	noticerefÚorganizationr   Úsk_ASN1_INTEGER_numÚ	noticenosr8   Úsk_ASN1_INTEGER_valuerŽ   r;   r   ÚNoticeReferenceÚ
UserNotice)
r   ÚunÚexplicit_textÚnotice_referencerÔ   rL   Únotice_numbersrN   r�   Ú
notice_numr   r   r   rÆ   +  s,   ÿÿÿ
ÿrÆ   c                 C   sB   | j  d|¡}| j  || jj¡}|jdk}t| |jƒ}t 	||¡S )NzBASIC_CONSTRAINTS *éÿ   )
r   rŠ   r‹   r   ÚBASIC_CONSTRAINTS_freeÚcaÚ_asn1_integer_to_int_or_noneÚpathlenr   ÚBasicConstraints)r   Úbc_stÚbasic_constraintsrá   Úpath_lengthr   r   r   Ú_decode_basic_constraintsI  s   ÿ
ÿrè   c                 C   s@   | j  d|¡}| j  || jj¡}t | j  |j|j	¡d d … ¡S ©NzASN1_OCTET_STRING *)
r   rŠ   r‹   r   ÚASN1_OCTET_STRING_freer   ÚSubjectKeyIdentifierr   r.   rª   ©r   Úasn1_stringr   r   r   Ú_decode_subject_key_identifierY  s   ÿÿrî   c                 C   sˆ   | j  d|¡}| j  || jj¡}d }d }|j| j jkr*| j  |jj|jj	¡d d … }|j
| j jkr7t| |j
ƒ}t| |jƒ}t |||¡S )NzAUTHORITY_KEYID *)r   rŠ   r‹   r   ÚAUTHORITY_KEYID_freeÚkeyidr'   r   r.   rª   ÚissuerrP   râ   Úserialr   ÚAuthorityKeyIdentifier)r   ÚakidÚkey_identifierÚauthority_cert_issuerÚauthority_cert_serial_numberr   r   r   Ú _decode_authority_key_identifierc  s(   ÿþÿÿÿrø   c                 C   s®   | j  d|¡}| j  || jj¡}| j |¡}g }t|ƒD ]5}| j ||¡}|  |j	| j j
k¡ t t| |j	ƒ¡}|  |j| j j
k¡ t| |jƒ}| t ||¡¡ qt |¡S )Nz*Cryptography_STACK_OF_ACCESS_DESCRIPTION *)r   rŠ   r‹   r   Úsk_ACCESS_DESCRIPTION_freeÚsk_ACCESS_DESCRIPTION_numr8   Úsk_ACCESS_DESCRIPTION_valuer   Úmethodr'   r   r,   r$   ÚlocationrJ   r;   ÚAccessDescriptionÚAuthorityInformationAccess)r   ÚaiarL   Úaccess_descriptionsrN   Úadr0   rO   r   r   r   Ú$_decode_authority_information_access|  s   
r  c                 C   sÀ   | j  d|¡}| 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 |||||||	|
|¡	S )NzASN1_BIT_STRING *r   r   rT   é   é   é   é   é   rR   )r   rŠ   r‹   r   ÚASN1_BIT_STRING_freeÚASN1_BIT_STRING_get_bitr   ÚKeyUsage)r   Ú
bit_stringÚget_bitÚdigital_signatureÚcontent_commitmentÚkey_enciphermentÚdata_enciphermentÚkey_agreementÚkey_cert_signÚcrl_signÚencipher_onlyÚdecipher_onlyr   r   r   Ú_decode_key_usageŒ  s.   ÷r  c                 C   s.   | j  d|¡}| j  || jj¡}t| |ƒ}|S ©NzGENERAL_NAMES *)r   rŠ   r‹   r   ÚGENERAL_NAMES_freerP   ©r   rK   Úgeneral_namesr   r   r   Ú_decode_general_names_extension¦  s   
r  c                 C   ó   t  t| |ƒ¡S r%   )r   ÚSubjectAlternativeNamer  r…   r   r   r   Ú_decode_subject_alt_name­  ó   ÿr  c                 C   r  r%   )r   ÚIssuerAlternativeNamer  r…   r   r   r   Ú_decode_issuer_alt_name³  r   r"  c                 C   sF   | j  d|¡}| j  || jj¡}t| |jƒ}t| |jƒ}tj	||d�S )NzNAME_CONSTRAINTS *)Úpermitted_subtreesÚexcluded_subtrees)
r   rŠ   r‹   r   ÚNAME_CONSTRAINTS_freeÚ_decode_general_subtreesÚpermittedSubtreesÚexcludedSubtreesr   ÚNameConstraints)r   ÚncÚ	permittedÚexcludedr   r   r   Ú_decode_name_constraints¹  s   ÿr-  c                 C   sh   || j jkrd S | j |¡}g }t|ƒD ]}| j ||¡}|  || j jk¡ t| |jƒ}| 	|¡ q|S r%   )
r   r'   r   Úsk_GENERAL_SUBTREE_numr8   Úsk_GENERAL_SUBTREE_valuer   rJ   r   r;   )r   Ústack_subtreesrL   ÚsubtreesrN   r    Únamer   r   r   r&  Ã  s   r&  c                 C   sD   | j  d|¡}| j  || jj¡}t| |jƒ}t| |jƒ}t 	||¡S )NzPOLICY_CONSTRAINTS *)
r   rŠ   r‹   r   ÚPOLICY_CONSTRAINTS_freerâ   ÚrequireExplicitPolicyÚinhibitPolicyMappingr   ÚPolicyConstraints)r   ÚpcÚrequire_explicit_policyÚinhibit_policy_mappingr   r   r   Ú_decode_policy_constraintsÓ  s   ÿÿÿr:  c                 C   s‚   | j  d|¡}| j  || jj¡}| j |¡}g }t|ƒD ]}| j ||¡}|  || j j	k¡ t
 t| |ƒ¡}| |¡ qt
 |¡S )Nz#Cryptography_STACK_OF_ASN1_OBJECT *)r   rŠ   r‹   r   Úsk_ASN1_OBJECT_freeÚsk_ASN1_OBJECT_numr8   Úsk_ASN1_OBJECT_valuer   r'   r   r,   r$   r;   ÚExtendedKeyUsage)r   ÚskrL   ÚekusrN   r    r0   r   r   r   Ú_decode_extended_key_usageã  s   
rA  r   c           
   	   C   sÈ   | j  d|¡}| j  || jj¡}| j |¡}g }t|ƒD ]E}d }d }d }d }| j ||¡}	|	j| j j	kr:t
| |	jƒ}|	j| j j	krGt| |	jƒ}|	j| j j	krVt| |	jƒ\}}| t ||||¡¡ q|S )Nz"Cryptography_STACK_OF_DIST_POINT *)r   rŠ   r‹   r   ÚCRL_DIST_POINTS_freeÚsk_DIST_POINT_numr8   Úsk_DIST_POINT_valueÚreasonsr'   Ú_decode_reasonsÚ	CRLissuerrP   Ú	distpointÚ_decode_distpointr;   r   ÚDistributionPoint)
r   ÚcdpsrL   Údist_pointsrN   Ú	full_nameÚrelative_nameÚ
crl_issuerrE  Úcdpr   r   r   Ú_decode_dist_pointsö  s0   ÿÿÿrQ  )r   rT   r  r  r  r  r  rR   c                 C   s8   g }t  t¡D ]\}}| j ||¡r| |¡ qt|ƒS r%   )ÚsixÚ	iteritemsÚ_REASON_BIT_MAPPINGr   r
  r;   Ú	frozenset)r   rE  Úenum_reasonsÚbit_positionÚreasonr   r   r   rF  .  s   
€rF  c           	      C   sŠ   |j tkrt| |jjƒ}|d fS |jj}| j |¡}tƒ }t	|ƒD ]}| j 
||¡}|  || jjk¡ | t| |ƒ¡ q!t |¡}d |fS r%   )r*   Ú_DISTPOINT_TYPE_FULLNAMErP   r2  ÚfullnameÚrelativenamer   Úsk_X509_NAME_ENTRY_numr<   r8   Úsk_X509_NAME_ENTRY_valuer   r   r'   r=   r1   r   r3   )	r   rH  rM  ÚrnsÚrnumrA   rN   ÚrnrN  r   r   r   rI  8  s    
	ÿÿ
rI  c                 C   ó   t | |ƒ}t |¡S r%   )rQ  r   ÚCRLDistributionPoints©r   rK  rL  r   r   r   Ú_decode_crl_distribution_pointsU  ó   

rd  c                 C   ra  r%   )rQ  r   ÚFreshestCRLrc  r   r   r   Ú_decode_freshest_crlZ  re  rg  c                 C   ó4   | j  d|¡}| j  || jj¡}t| |ƒ}t |¡S r‰   )r   rŠ   r‹   r   rŒ   rŽ   r   ÚInhibitAnyPolicy)r   r�   Ú
skip_certsr   r   r   Ú_decode_inhibit_any_policy_  ó   

rk  c                 C   sp   ddl m} | j d|¡}| j || jj¡}g }t| j |¡ƒD ]}| j 	||¡}| 
|| ||ƒ¡ q t |¡S )Nr   )Ú_SignedCertificateTimestampzCryptography_STACK_OF_SCT *)Ú)cryptography.hazmat.backends.openssl.x509rm  r   rŠ   r‹   r   ÚSCT_LIST_freer8   Ú
sk_SCT_numÚsk_SCT_valuer;   r   Ú)PrecertificateSignedCertificateTimestamps)r   Ú	asn1_sctsrm  ÚsctsrN   Úsctr   r   r   Ú-_decode_precert_signed_certificate_timestampsf  s   
rv  )
r   r   rT   r  r  r  r  rR   é	   é
   rT   r  r  r  r  rR   rw  rx  c                 C   sZ   | j  d|¡}| j  || jj¡}| j |¡}zt t| ¡W S  t	y,   t
d |¡ƒ‚w )NzASN1_ENUMERATED *zUnsupported reason code: {0})r   rŠ   r‹   r   ÚASN1_ENUMERATED_freeÚASN1_ENUMERATED_getr   Ú	CRLReasonÚ_CRL_ENTRY_REASON_CODE_TO_ENUMr©   rk   rn   )r   ÚenumÚcoder   r   r   Ú_decode_crl_reason�  s   ÿr  c                 C   rˆ   )NzASN1_GENERALIZEDTIME *)r   rŠ   r‹   r   ÚASN1_GENERALIZEDTIME_freer   ÚInvalidityDateÚ_parse_asn1_generalized_time)r   Úinv_dateÚgeneralized_timer   r   r   Ú_decode_invalidity_date¨  s   ÿÿÿr…  c                 C   rh  r  )r   rŠ   r‹   r   r  rP   r   ÚCertificateIssuerr  r   r   r   Ú_decode_cert_issuer´  rl  r‡  c                    sn   ˆ j  d¡}ˆ j ||¡}ˆ  |dk¡ ˆ  |d ˆ j jk¡ ˆ j  |‡ fdd„¡}ˆ j  |d |¡d d … S )Núunsigned char **r   c                    ó   ˆ j  | d ¡S ©Nr   ©r   ÚOPENSSL_free©r   ©r   r   r   Ú<lambda>Á  ó    z_asn1_to_der.<locals>.<lambda>)r   r   r   Úi2d_ASN1_TYPEr   r'   r‹   r   )r   Ú	asn1_typer"   r#   r   rŽ  r   ry   »  s   ÿry   c                 C   s@   | j  || jj¡}|  || jjk¡ | j || j j¡}|  |¡S r%   )r   ÚASN1_INTEGER_to_BNr   r'   r   r‹   ÚBN_freeÚ
_bn_to_int)r   r�   Úbnr   r   r   rŽ   Æ  s   
rŽ   c                 C   s   || j jkrd S t| |ƒS r%   )r   r'   rŽ   )r   r�   r   r   r   râ   Í  s   
râ   c                 C   s   | j  |j|j¡d d … S r%   )r   r   r.   rª   rì   r   r   r   rX   Ô  s   rX   c                 C   s   t | |ƒ d¡S )Nrº   )rX   r   rì   r   r   r   Ú_asn1_string_to_asciiØ  s   r—  c                    s~   ˆ j  d¡}ˆ j ||¡}|dkrtd |j¡ƒ‚ˆ  |d ˆ j jk¡ ˆ j  	|‡ fdd„¡}ˆ j  
|d |¡d d …  d¡S )Nrˆ  r2   z'Unsupported ASN1 string type. Type: {0}r   c                    r‰  rŠ  r‹  r�  rŽ  r   r   r�  æ  r�  z&_asn1_string_to_utf8.<locals>.<lambda>rQ   )r   r   r   ÚASN1_STRING_to_UTF8rk   rn   r*   r   r'   r‹   r   r   )r   rí   r"   r#   r   rŽ  r   r)   Ü  s   
ÿÿ r)   c                 C   s`   |   || jjk¡ | j || jj¡}|| jjkr"td t| |ƒ¡ƒ‚| j || jj	¡}t
| |ƒS )Nz1Couldn't parse ASN.1 time as generalizedtime {!r})r   r   r'   r   ÚASN1_TIME_to_generalizedtimerk   rn   rX   r‹   r€  r‚  )r   Ú	asn1_timer„  r   r   r   Ú_parse_asn1_timeë  s   ÿÿÿÿ
r›  c                 C   s"   t | | j d|¡ƒ}tj |d¡S )NzASN1_STRING *z%Y%m%d%H%M%SZ)r—  r   rŠ   ÚdatetimeÚstrptime)r   r„  Útimer   r   r   r‚  ý  s   ÿr‚  c                 C   s0   | j  d|¡}| j  || jj¡}t t| |ƒ¡S ré   )r   rŠ   r‹   r   rê   r   Ú	OCSPNoncerX   )r   Únoncer   r   r   Ú_decode_nonce  r’   r¡  c                 C   ó   | j  |¡S r%   ©r   ÚX509_get_ext_count©r   rC   r   r   r   r�  <  ó    r�  c                 C   ó   | j  ||¡S r%   ©r   ÚX509_get_ext©r   rC   rN   r   r   r   r�  =  ó    r–   c                 C   r¢  r%   r£  r¥  r   r   r   r�  B  r¦  c                 C   r§  r%   r¨  rª  r   r   r   r�  C  r«  c                 C   r¢  r%   )r   Úsk_X509_EXTENSION_numr¥  r   r   r   r�  H  r¦  c                 C   r§  r%   )r   Úsk_X509_EXTENSION_valuerª  r   r   r   r�  I  r«  c                 C   r¢  r%   )r   ÚX509_REVOKED_get_ext_countr¥  r   r   r   r�  N  r¦  c                 C   r§  r%   )r   ÚX509_REVOKED_get_extrª  r   r   r   r�  O  r«  c                 C   r¢  r%   )r   ÚX509_CRL_get_ext_countr¥  r   r   r   r�  T  r¦  c                 C   r§  r%   )r   ÚX509_CRL_get_extrª  r   r   r   r�  U  r«  c                 C   r¢  r%   )r   ÚOCSP_REQUEST_get_ext_countr¥  r   r   r   r�  Z  r¦  c                 C   r§  r%   )r   ÚOCSP_REQUEST_get_extrª  r   r   r   r�  [  r«  c                 C   r¢  r%   )r   ÚOCSP_BASICRESP_get_ext_countr¥  r   r   r   r�  `  r¦  c                 C   r§  r%   )r   ÚOCSP_BASICRESP_get_extrª  r   r   r   r�  a  r«  )vÚ
__future__r   r   r   rœ  rf   Úasn1crypto.corer   rR  Úcryptographyr   Úcryptography.x509.extensionsr   Úcryptography.x509.namer   Úcryptography.x509.oidr   r	   r
   r   r   Ú
SequenceOfr   r$   r1   rG   rP   rJ   r‡   r‘   r”   Úobjectr•   rÑ   rÆ   rè   rî   rø   r  r  r  r  r"  r-  r&  r:  rA  rY  Ú_DISTPOINT_TYPE_RELATIVENAMErQ  ÚReasonFlagsÚkey_compromiseÚca_compromiseÚaffiliation_changedÚ
supersededÚcessation_of_operationÚcertificate_holdÚprivilege_withdrawnÚaa_compromiserT  rF  rI  rd  rg  rk  rv  ÚunspecifiedÚremove_from_crlr|  Ú_CRL_ENTRY_REASON_ENUM_TO_CODEr  r…  r‡  ry   rŽ   râ   rX   r—  r)   r›  r‚  r¡  ÚBASIC_CONSTRAINTSÚSUBJECT_KEY_IDENTIFIERÚ	KEY_USAGEÚSUBJECT_ALTERNATIVE_NAMEÚEXTENDED_KEY_USAGEÚAUTHORITY_KEY_IDENTIFIERÚAUTHORITY_INFORMATION_ACCESSÚCERTIFICATE_POLICIESÚCRL_DISTRIBUTION_POINTSÚFRESHEST_CRLÚOCSP_NO_CHECKÚINHIBIT_ANY_POLICYÚISSUER_ALTERNATIVE_NAMEÚNAME_CONSTRAINTSÚPOLICY_CONSTRAINTSÚ_EXTENSION_HANDLERS_NO_SCTÚcopyÚ_EXTENSION_HANDLERSÚ%PRECERT_SIGNED_CERTIFICATE_TIMESTAMPSÚ
CRL_REASONÚINVALIDITY_DATEÚCERTIFICATE_ISSUERÚ_REVOKED_EXTENSION_HANDLERSÚ
CRL_NUMBERÚDELTA_CRL_INDICATORÚ_CRL_EXTENSION_HANDLERSÚNONCEÚ_OCSP_REQ_EXTENSION_HANDLERSÚ"_OCSP_BASICRESP_EXTENSION_HANDLERSÚ$_CERTIFICATE_EXTENSION_PARSER_NO_SCTÚ_CERTIFICATE_EXTENSION_PARSERÚ_CSR_EXTENSION_PARSERÚ%_REVOKED_CERTIFICATE_EXTENSION_PARSERÚ_CRL_EXTENSION_PARSERÚ_OCSP_REQ_EXT_PARSERÚ_OCSP_BASICRESP_EXT_PARSERr   r   r   r   Ú<module>   s:  NJ'

-ø
ööïþÿýúÿÿýýýýýý
ý