o
    ™¨ÊhM¯  ã                   @   sP  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Zd dlmZ d dlmZm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 d dlmZ d dlmZm Z m!Z!m"Z" dd„ Z#G dd„ de$ƒZ%G dd„ de$ƒZ&e 'ej(¡G dd„ de)ƒƒZ*G dd„ de)ƒZ+e ,e*¡G dd„ de)ƒƒZ-e ,e*¡G dd„ de)ƒƒZ.e ,e*¡G dd„ de)ƒƒZ/e ,e*¡G dd„ de)ƒƒZ0G dd „ d e)ƒZ1e ,e*¡G d!d"„ d"e)ƒƒZ2e ,e*¡G d#d$„ d$e)ƒƒZ3e ,e*¡G d%d&„ d&e)ƒƒZ4e ,e*¡G d'd(„ d(e)ƒƒZ5G d)d*„ d*e)ƒZ6G d+d,„ d,e	ƒZ7e ,e*¡G d-d.„ d.e)ƒƒZ8e ,e*¡G d/d0„ d0e)ƒƒZ9G d1d2„ d2e)ƒZ:G d3d4„ d4e)ƒZ;G d5d6„ d6e)ƒZ<e ,e*¡G d7d8„ d8e)ƒƒZ=e ,e*¡G d9d:„ d:e)ƒƒZ>e ,e*¡G d;d<„ d<e)ƒƒZ?e ,e*¡G d=d>„ d>e)ƒƒZ@G d?d@„ d@e	ƒZAeBdAdB„ eAD ƒƒZCe ,e*¡G dCdD„ dDe)ƒƒZDe ,e*¡G dEdF„ dFe)ƒƒZEe ,e*¡G dGdH„ dHe)ƒƒZFG dIdJ„ dJe)ƒZGG dKdL„ dLe)ƒZHe ,e*¡G dMdN„ dNe)ƒƒZIe ,e*¡G dOdP„ dPe)ƒƒZJe ,e*¡G dQdR„ dRe)ƒƒZKe ,e*¡G dSdT„ dTe)ƒƒZLe ,e*¡G dUdV„ dVe)ƒƒZMe ,e*¡G dWdX„ dXe)ƒƒZNe ,e*¡G dYdZ„ dZe)ƒƒZOe ,e*¡G d[d\„ d\e)ƒƒZPdS )]é    )Úabsolute_importÚdivisionÚprint_functionN)ÚEnum)ÚPublicKeyInfo)Úutils)Úconstant_timeÚserialization)ÚEllipticCurvePublicKey)ÚRSAPublicKey)ÚSignedCertificateTimestamp)ÚGeneralNameÚ	IPAddressÚ	OtherName)ÚRelativeDistinguishedName)ÚCRLEntryExtensionOIDÚExtensionOIDÚOCSPExtensionOIDÚObjectIdentifierc                 C   sn   t | tƒr|  tjjtjj¡}n t | tƒr|  	¡  
¡ }n|  tjjtjj¡}t t |¡d ¡}t |¡ ¡ S )NÚ
public_key)Ú
isinstancer   Úpublic_bytesr	   ÚEncodingÚDERÚPublicFormatÚPKCS1r
   Úpublic_numbersÚencode_pointÚSubjectPublicKeyInfoÚsixÚbinary_typer   ÚloadÚhashlibÚsha1Údigest)r   ÚdataÚ
serialized© r'   úN/var/www/html/env/lib/python3.10/site-packages/cryptography/x509/extensions.pyÚ_key_identifier_from_public_key   s   
þ
þr)   c                       ó   e Zd Z‡ fdd„Z‡  ZS )ÚDuplicateExtensionc                    ó   t t| ƒ |¡ || _d S ©N)Úsuperr+   Ú__init__Úoid©ÚselfÚmsgr0   ©Ú	__class__r'   r(   r/   4   ó   
zDuplicateExtension.__init__©Ú__name__Ú
__module__Ú__qualname__r/   Ú__classcell__r'   r'   r4   r(   r+   3   ó    r+   c                       r*   )ÚExtensionNotFoundc                    r,   r-   )r.   r=   r/   r0   r1   r4   r'   r(   r/   :   r6   zExtensionNotFound.__init__r7   r'   r'   r4   r(   r=   9   r<   r=   c                   @   s   e Zd Zejdd„ ƒZdS )ÚExtensionTypec                 C   s   dS )zK
        Returns the oid associated with the given extension type.
        Nr'   ©r2   r'   r'   r(   r0   A   s    zExtensionType.oidN)r8   r9   r:   ÚabcÚabstractpropertyr0   r'   r'   r'   r(   r>   ?   s    r>   c                   @   sD   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )Ú
Extensionsc                 C   ó
   || _ d S r-   ©Ú_extensions)r2   Ú
extensionsr'   r'   r(   r/   I   ó   
zExtensions.__init__c                 C   s,   | D ]}|j |kr|  S qtd |¡|ƒ‚)NúNo {0} extension was found)r0   r=   Úformat)r2   r0   Úextr'   r'   r(   Úget_extension_for_oidL   s
   
ÿz Extensions.get_extension_for_oidc                 C   s@   |t u rtdƒ‚| D ]}t|j|ƒr|  S q
td |¡|jƒ‚)Nz|UnrecognizedExtension can't be used with get_extension_for_class because more than one instance of the class may be present.rH   )ÚUnrecognizedExtensionÚ	TypeErrorr   Úvaluer=   rI   r0   )r2   ÚextclassrJ   r'   r'   r(   Úget_extension_for_classS   s   ÿÿÿz"Extensions.get_extension_for_classc                 C   ó
   t | jƒS r-   )ÚiterrE   r?   r'   r'   r(   Ú__iter__c   rG   zExtensions.__iter__c                 C   rQ   r-   )ÚlenrE   r?   r'   r'   r(   Ú__len__f   rG   zExtensions.__len__c                 C   ó
   | j | S r-   rD   ©r2   Úidxr'   r'   r(   Ú__getitem__i   rG   zExtensions.__getitem__c                 C   ó   d  | j¡S )Nz<Extensions({0})>)rI   rE   r?   r'   r'   r(   Ú__repr__l   s   
ÿzExtensions.__repr__N)
r8   r9   r:   r/   rK   rP   rS   rU   rY   r[   r'   r'   r'   r(   rB   H   s    rB   c                   @   óD   e Zd ZejZdd„ Zdd„ Zdd„ Zdd„ Z	d	d
„ Z
e d¡ZdS )Ú	CRLNumberc                 C   ó   t |tjƒs
tdƒ‚|| _d S ©Nzcrl_number must be an integer©r   r   Úinteger_typesrM   Ú_crl_number©r2   Ú
crl_numberr'   r'   r(   r/   v   ó   
zCRLNumber.__init__c                 C   ó   t |tƒstS | j|jkS r-   )r   r]   ÚNotImplementedrd   ©r2   Úotherr'   r'   r(   Ú__eq__|   ó   
zCRLNumber.__eq__c                 C   ó
   | |k S r-   r'   rh   r'   r'   r(   Ú__ne__‚   rG   zCRLNumber.__ne__c                 C   rQ   r-   ©Úhashrd   r?   r'   r'   r(   Ú__hash__…   rG   zCRLNumber.__hash__c                 C   rZ   )Nz<CRLNumber({0})>)rI   rd   r?   r'   r'   r(   r[   ˆ   ó   zCRLNumber.__repr__rb   N)r8   r9   r:   r   Ú
CRL_NUMBERr0   r/   rj   rm   rp   r[   r   Úread_only_propertyrd   r'   r'   r'   r(   r]   r   ó    r]   c                   @   sp   e Zd ZejZdd„ Zedd„ ƒZedd„ ƒZ	dd„ Z
d	d
„ Zdd„ Zdd„ Ze d¡Ze d¡Ze d¡ZdS )ÚAuthorityKeyIdentifierc                 C   st   |d u |d u krt dƒ‚|d ur!t|ƒ}tdd„ |D ƒƒs!tdƒ‚|d ur/t|tjƒs/tdƒ‚|| _|| _|| _	d S )NzXauthority_cert_issuer and authority_cert_serial_number must both be present or both Nonec                 s   ó   � | ]}t |tƒV  qd S r-   ©r   r   ©Ú.0Úxr'   r'   r(   Ú	<genexpr>ž   ó   € 

ÿz2AuthorityKeyIdentifier.__init__.<locals>.<genexpr>z;authority_cert_issuer must be a list of GeneralName objectsz/authority_cert_serial_number must be an integer)
Ú
ValueErrorÚlistÚallrM   r   r   ra   Ú_key_identifierÚ_authority_cert_issuerÚ_authority_cert_serial_number)r2   Úkey_identifierÚauthority_cert_issuerÚauthority_cert_serial_numberr'   r'   r(   r/   ’   s.   ÿÿÿÿ
ÿÿ
zAuthorityKeyIdentifier.__init__c                 C   s   t |ƒ}| |d d d�S ©N)rƒ   r„   r…   ©r)   )Úclsr   r$   r'   r'   r(   Úfrom_issuer_public_key±   s   ýz-AuthorityKeyIdentifier.from_issuer_public_keyc                 C   s   | |j jd d d�S r†   )rN   r$   )rˆ   Úskir'   r'   r(   Ú"from_issuer_subject_key_identifierº   s
   ýz9AuthorityKeyIdentifier.from_issuer_subject_key_identifierc                 C   ó
   d  | ¡S )Nz­<AuthorityKeyIdentifier(key_identifier={0.key_identifier!r}, authority_cert_issuer={0.authority_cert_issuer}, authority_cert_serial_number={0.authority_cert_serial_number})>©rI   r?   r'   r'   r(   r[   Â   s   üzAuthorityKeyIdentifier.__repr__c                 C   ó2   t |tƒstS | j|jko| j|jko| j|jkS r-   )r   ru   rg   rƒ   r„   r…   rh   r'   r'   r(   rj   Ê   s   

ÿÿýzAuthorityKeyIdentifier.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   Õ   rG   zAuthorityKeyIdentifier.__ne__c                 C   s,   | j d u rd }nt| j ƒ}t| j|| jfƒS r-   )r„   Útuplero   rƒ   r…   )r2   Úacir'   r'   r(   rp   Ø   s   


ÿzAuthorityKeyIdentifier.__hash__r€   r�   r‚   N)r8   r9   r:   r   ÚAUTHORITY_KEY_IDENTIFIERr0   r/   Úclassmethodr‰   r‹   r[   rj   rm   rp   r   rs   rƒ   r„   r…   r'   r'   r'   r(   ru   Ž   s     


	
ÿru   c                   @   sP   e Zd ZejZdd„ Zedd„ ƒZe	 
d¡Zdd„ Zdd	„ Zd
d„ Zdd„ ZdS )ÚSubjectKeyIdentifierc                 C   rC   r-   )Ú_digest)r2   r$   r'   r'   r(   r/   ì   rG   zSubjectKeyIdentifier.__init__c                 C   s   | t |ƒƒS r-   r‡   )rˆ   r   r'   r'   r(   Úfrom_public_keyï   s   z$SubjectKeyIdentifier.from_public_keyr”   c                 C   rZ   )Nz$<SubjectKeyIdentifier(digest={0!r})>)rI   r$   r?   r'   r'   r(   r[   õ   rq   zSubjectKeyIdentifier.__repr__c                 C   s   t |tƒstS t | j|j¡S r-   )r   r“   rg   r   Úbytes_eqr$   rh   r'   r'   r(   rj   ø   s   
zSubjectKeyIdentifier.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   þ   rG   zSubjectKeyIdentifier.__ne__c                 C   rQ   r-   )ro   r$   r?   r'   r'   r(   rp     rG   zSubjectKeyIdentifier.__hash__N)r8   r9   r:   r   ÚSUBJECT_KEY_IDENTIFIERr0   r/   r’   r•   r   rs   r$   r[   rj   rm   rp   r'   r'   r'   r(   r“   è   s    

r“   c                   @   óR   e Zd Ze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dS )ÚAuthorityInformationAccessc                 C   ó,   t |ƒ}tdd„ |D ƒƒstdƒ‚|| _d S )Nc                 s   rv   r-   )r   ÚAccessDescriptionrx   r'   r'   r(   r{     ó   € z6AuthorityInformationAccess.__init__.<locals>.<genexpr>z@Every item in the descriptions list must be an AccessDescription)r~   r   rM   Ú_descriptions)r2   Údescriptionsr'   r'   r(   r/   	  ó   ÿ
z#AuthorityInformationAccess.__init__c                 C   rQ   r-   )rR   r�   r?   r'   r'   r(   rS     rG   z#AuthorityInformationAccess.__iter__c                 C   rQ   r-   )rT   r�   r?   r'   r'   r(   rU     rG   z"AuthorityInformationAccess.__len__c                 C   rZ   )Nz!<AuthorityInformationAccess({0})>)rI   r�   r?   r'   r'   r(   r[     rq   z#AuthorityInformationAccess.__repr__c                 C   rf   r-   )r   r™   rg   r�   rh   r'   r'   r(   rj     rk   z!AuthorityInformationAccess.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   "  rG   z!AuthorityInformationAccess.__ne__c                 C   rV   r-   )r�   rW   r'   r'   r(   rY   %  rG   z&AuthorityInformationAccess.__getitem__c                 C   ó   t t| jƒƒS r-   )ro   r�   r�   r?   r'   r'   r(   rp   (  ó   z#AuthorityInformationAccess.__hash__N)r8   r9   r:   r   ÚAUTHORITY_INFORMATION_ACCESSr0   r/   rS   rU   r[   rj   rm   rY   rp   r'   r'   r'   r(   r™     ó    
r™   c                   @   óH   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Ze 	d¡Z
e 	d¡ZdS )r›   c                 C   s4   t |tƒs	tdƒ‚t |tƒstdƒ‚|| _|| _d S )Nz)access_method must be an ObjectIdentifierz%access_location must be a GeneralName)r   r   rM   r   Ú_access_methodÚ_access_location)r2   Úaccess_methodÚaccess_locationr'   r'   r(   r/   -  s   


zAccessDescription.__init__c                 C   rŒ   )NzY<AccessDescription(access_method={0.access_method}, access_location={0.access_location})>r�   r?   r'   r'   r(   r[   7  ó   þzAccessDescription.__repr__c                 C   ó&   t |tƒstS | j|jko| j|jkS r-   )r   r›   rg   r§   r¨   rh   r'   r'   r(   rj   =  ó
   

þzAccessDescription.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   F  rG   zAccessDescription.__ne__c                 C   ó   t | j| jfƒS r-   )ro   r§   r¨   r?   r'   r'   r(   rp   I  ó   zAccessDescription.__hash__r¥   r¦   N)r8   r9   r:   r/   r[   rj   rm   rp   r   rs   r§   r¨   r'   r'   r'   r(   r›   ,  ó    
	
r›   c                   @   sN   e Zd ZejZdd„ Ze d¡Z	e d¡Z
dd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚBasicConstraintsc                 C   sZ   t |tƒs	tdƒ‚|d ur|stdƒ‚|d ur%t |tjƒr!|dk r%tdƒ‚|| _|| _d S )Nzca must be a boolean valuez)path_length must be None when ca is Falser   z2path_length must be a non-negative integer or None)r   ÚboolrM   r}   r   ra   Ú_caÚ_path_length)r2   ÚcaÚpath_lengthr'   r'   r(   r/   T  s   

ÿÿ
zBasicConstraints.__init__r±   r²   c                 C   rŒ   )Nz:<BasicConstraints(ca={0.ca}, path_length={0.path_length})>r�   r?   r'   r'   r(   r[   i  ó   ÿzBasicConstraints.__repr__c                 C   rª   r-   )r   r¯   rg   r³   r´   rh   r'   r'   r(   rj   m  ó   
zBasicConstraints.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   s  rG   zBasicConstraints.__ne__c                 C   r¬   r-   )ro   r³   r´   r?   r'   r'   r(   rp   v  r­   zBasicConstraints.__hash__N)r8   r9   r:   r   ÚBASIC_CONSTRAINTSr0   r/   r   rs   r³   r´   r[   rj   rm   rp   r'   r'   r'   r(   r¯   P  s    

r¯   c                   @   sD   e Zd ZejZdd„ Ze d¡Z	dd„ Z
dd„ Zdd	„ Zd
d„ ZdS )ÚDeltaCRLIndicatorc                 C   r^   r_   r`   rc   r'   r'   r(   r/   ~  re   zDeltaCRLIndicator.__init__rb   c                 C   rf   r-   )r   r¸   rg   rd   rh   r'   r'   r(   rj   †  rk   zDeltaCRLIndicator.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   Œ  rG   zDeltaCRLIndicator.__ne__c                 C   rQ   r-   rn   r?   r'   r'   r(   rp   �  rG   zDeltaCRLIndicator.__hash__c                 C   rŒ   )Nz.<DeltaCRLIndicator(crl_number={0.crl_number})>r�   r?   r'   r'   r(   r[   ’  rG   zDeltaCRLIndicator.__repr__N)r8   r9   r:   r   ÚDELTA_CRL_INDICATORr0   r/   r   rs   rd   rj   rm   rp   r[   r'   r'   r'   r(   r¸   z  s    
r¸   c                   @   r˜   )ÚCRLDistributionPointsc                 C   rš   )Nc                 s   rv   r-   ©r   ÚDistributionPointrx   r'   r'   r(   r{   œ  r|   z1CRLDistributionPoints.__init__.<locals>.<genexpr>ú?distribution_points must be a list of DistributionPoint objects©r~   r   rM   Ú_distribution_points©r2   Údistribution_pointsr'   r'   r(   r/   š  ó   ÿÿ
zCRLDistributionPoints.__init__c                 C   rQ   r-   ©rR   r¿   r?   r'   r'   r(   rS   ¦  rG   zCRLDistributionPoints.__iter__c                 C   rQ   r-   ©rT   r¿   r?   r'   r'   r(   rU   ©  rG   zCRLDistributionPoints.__len__c                 C   rZ   )Nz<CRLDistributionPoints({0})>©rI   r¿   r?   r'   r'   r(   r[   ¬  rq   zCRLDistributionPoints.__repr__c                 C   rf   r-   )r   rº   rg   r¿   rh   r'   r'   r(   rj   ¯  rk   zCRLDistributionPoints.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   µ  rG   zCRLDistributionPoints.__ne__c                 C   rV   r-   ©r¿   rW   r'   r'   r(   rY   ¸  rG   z!CRLDistributionPoints.__getitem__c                 C   r    r-   ©ro   r�   r¿   r?   r'   r'   r(   rp   »  r¡   zCRLDistributionPoints.__hash__N)r8   r9   r:   r   ÚCRL_DISTRIBUTION_POINTSr0   r/   rS   rU   r[   rj   rm   rY   rp   r'   r'   r'   r(   rº   –  ó    rº   c                   @   r˜   )ÚFreshestCRLc                 C   rš   )Nc                 s   rv   r-   r»   rx   r'   r'   r(   r{   Å  r|   z'FreshestCRL.__init__.<locals>.<genexpr>r½   r¾   rÀ   r'   r'   r(   r/   Ã  rÂ   zFreshestCRL.__init__c                 C   rQ   r-   rÃ   r?   r'   r'   r(   rS   Ï  rG   zFreshestCRL.__iter__c                 C   rQ   r-   rÄ   r?   r'   r'   r(   rU   Ò  rG   zFreshestCRL.__len__c                 C   rZ   )Nz<FreshestCRL({0})>rÅ   r?   r'   r'   r(   r[   Õ  rq   zFreshestCRL.__repr__c                 C   rf   r-   )r   rÊ   rg   r¿   rh   r'   r'   r(   rj   Ø  rk   zFreshestCRL.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   Þ  rG   zFreshestCRL.__ne__c                 C   rV   r-   rÆ   rW   r'   r'   r(   rY   á  rG   zFreshestCRL.__getitem__c                 C   r    r-   rÇ   r?   r'   r'   r(   rp   ä  r¡   zFreshestCRL.__hash__N)r8   r9   r:   r   ÚFRESHEST_CRLr0   r/   rS   rU   r[   rj   rm   rY   rp   r'   r'   r'   r(   rÊ   ¿  rÉ   rÊ   c                   @   s\   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Ze 	d¡Z
e 	d¡Ze 	d¡Ze 	d¡ZdS )r¼   c                 C   sî   |r|rt dƒ‚|rt|ƒ}tdd„ |D ƒƒstdƒ‚|r&t|tƒs&tdƒ‚|r9t|ƒ}tdd„ |D ƒƒs9tdƒ‚|rMt|tƒrItdd„ |D ƒƒsMtd	ƒ‚|r]tj|v sYtj	|v r]t d
ƒ‚|ri|si|si|sit dƒ‚|| _
|| _|| _|| _d S )NzOYou cannot provide both full_name and relative_name, at least one must be None.c                 s   rv   r-   rw   rx   r'   r'   r(   r{   ò  rœ   z-DistributionPoint.__init__.<locals>.<genexpr>z/full_name must be a list of GeneralName objectsz1relative_name must be a RelativeDistinguishedNamec                 s   rv   r-   rw   rx   r'   r'   r(   r{   ÿ  rœ   z2crl_issuer must be None or a list of general namesc                 s   rv   r-   )r   ÚReasonFlagsrx   r'   r'   r(   r{     r|   z0reasons must be None or frozenset of ReasonFlagszLunspecified and remove_from_crl are not valid reasons in a DistributionPointzPYou must supply crl_issuer, full_name, or relative_name when reasons is not None)r}   r~   r   rM   r   r   Ú	frozensetrÌ   ÚunspecifiedÚremove_from_crlÚ
_full_nameÚ_relative_nameÚ_reasonsÚ_crl_issuer)r2   Ú	full_nameÚrelative_nameÚreasonsÚ
crl_issuerr'   r'   r(   r/   é  sN   ÿÿ
ÿÿÿ

ÿÿ
zDistributionPoint.__init__c                 C   rŒ   )Nz}<DistributionPoint(full_name={0.full_name}, relative_name={0.relative_name}, reasons={0.reasons}, crl_issuer={0.crl_issuer})>r�   r?   r'   r'   r(   r[     ó   ýzDistributionPoint.__repr__c                 C   s>   t |tƒstS | j|jko| j|jko| j|jko| j|jkS r-   )r   r¼   rg   rÔ   rÕ   rÖ   r×   rh   r'   r'   r(   rj   $  s   

ÿ
þ
üzDistributionPoint.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   /  rG   zDistributionPoint.__ne__c                 C   sH   | j d urt| j ƒ}nd }| jd urt| jƒ}nd }t|| j| j|fƒS r-   )rÔ   r�   r×   ro   rÕ   rÖ   )r2   Úfnr×   r'   r'   r(   rp   2  s   

zDistributionPoint.__hash__rÐ   rÑ   rÒ   rÓ   N)r8   r9   r:   r/   r[   rj   rm   rp   r   rs   rÔ   rÕ   rÖ   r×   r'   r'   r'   r(   r¼   è  s    4


r¼   c                   @   s4   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdS )rÌ   rÎ   ÚkeyCompromiseÚcACompromiseÚaffiliationChangedÚ
supersededÚcessationOfOperationÚcertificateHoldÚprivilegeWithdrawnÚaACompromiseÚremoveFromCRLN)r8   r9   r:   rÎ   Úkey_compromiseÚca_compromiseÚaffiliation_changedrÝ   Úcessation_of_operationÚcertificate_holdÚprivilege_withdrawnÚaa_compromiserÏ   r'   r'   r'   r(   rÌ   E  s    rÌ   c                   @   sN   e Zd ZejZdd„ Zdd„ Zdd„ Zdd„ Z	d	d
„ Z
e d¡Ze d¡ZdS )ÚPolicyConstraintsc                 C   s`   |d urt |tjƒstdƒ‚|d urt |tjƒstdƒ‚|d u r(|d u r(tdƒ‚|| _|| _d S )Nz>require_explicit_policy must be a non-negative integer or Nonez=inhibit_policy_mapping must be a non-negative integer or NonezSAt least one of require_explicit_policy and inhibit_policy_mapping must not be None)r   r   ra   rM   r}   Ú_require_explicit_policyÚ_inhibit_policy_mapping)r2   Úrequire_explicit_policyÚinhibit_policy_mappingr'   r'   r(   r/   V  s$   
ÿÿ
ÿÿÿ
zPolicyConstraints.__init__c                 C   rŒ   )Nz{<PolicyConstraints(require_explicit_policy={0.require_explicit_policy}, inhibit_policy_mapping={0.inhibit_policy_mapping})>r�   r?   r'   r'   r(   r[   o  rØ   zPolicyConstraints.__repr__c                 C   rª   r-   )r   rê   rg   rí   rî   rh   r'   r'   r(   rj   v  r«   zPolicyConstraints.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm     rG   zPolicyConstraints.__ne__c                 C   r¬   r-   )ro   rí   rî   r?   r'   r'   r(   rp   ‚  s   
ÿzPolicyConstraints.__hash__rë   rì   N)r8   r9   r:   r   ÚPOLICY_CONSTRAINTSr0   r/   r[   rj   rm   rp   r   rs   rí   rî   r'   r'   r'   r(   rê   R  s    	ÿÿrê   c                   @   r˜   )ÚCertificatePoliciesc                 C   rš   )Nc                 s   rv   r-   )r   ÚPolicyInformationrx   r'   r'   r(   r{   •  rœ   z/CertificatePolicies.__init__.<locals>.<genexpr>z;Every item in the policies list must be a PolicyInformation)r~   r   rM   Ú	_policies)r2   Úpoliciesr'   r'   r(   r/   “  rŸ   zCertificatePolicies.__init__c                 C   rQ   r-   )rR   rò   r?   r'   r'   r(   rS   �  rG   zCertificatePolicies.__iter__c                 C   rQ   r-   )rT   rò   r?   r'   r'   r(   rU      rG   zCertificatePolicies.__len__c                 C   rZ   )Nz<CertificatePolicies({0})>)rI   rò   r?   r'   r'   r(   r[   £  rq   zCertificatePolicies.__repr__c                 C   rf   r-   )r   rð   rg   rò   rh   r'   r'   r(   rj   ¦  rk   zCertificatePolicies.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   ¬  rG   zCertificatePolicies.__ne__c                 C   rV   r-   )rò   rW   r'   r'   r(   rY   ¯  rG   zCertificatePolicies.__getitem__c                 C   r    r-   )ro   r�   rò   r?   r'   r'   r(   rp   ²  r¡   zCertificatePolicies.__hash__N)r8   r9   r:   r   ÚCERTIFICATE_POLICIESr0   r/   rS   rU   r[   rj   rm   rY   rp   r'   r'   r'   r(   rð   �  r£   rð   c                   @   r¤   )rñ   c                 C   sH   t |tƒs	tdƒ‚|| _|rt|ƒ}tdd„ |D ƒƒstdƒ‚|| _d S )Nz-policy_identifier must be an ObjectIdentifierc                 s   s    � | ]}t |tjtfƒV  qd S r-   )r   r   Ú	text_typeÚ
UserNoticerx   r'   r'   r(   r{   ¿  s
   € ÿ
ÿz-PolicyInformation.__init__.<locals>.<genexpr>zMpolicy_qualifiers must be a list of strings and/or UserNotice objects or None)r   r   rM   Ú_policy_identifierr~   r   Ú_policy_qualifiers)r2   Úpolicy_identifierÚpolicy_qualifiersr'   r'   r(   r/   ·  s   
þÿ
zPolicyInformation.__init__c                 C   rŒ   )Nze<PolicyInformation(policy_identifier={0.policy_identifier}, policy_qualifiers={0.policy_qualifiers})>r�   r?   r'   r'   r(   r[   Ê  r©   zPolicyInformation.__repr__c                 C   rª   r-   )r   rñ   rg   rù   rú   rh   r'   r'   r(   rj   Ð  r«   zPolicyInformation.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   Ù  rG   zPolicyInformation.__ne__c                 C   s(   | j d urt| j ƒ}nd }t| j|fƒS r-   )rú   r�   ro   rù   )r2   Úpqr'   r'   r(   rp   Ü  s   
zPolicyInformation.__hash__r÷   rø   N)r8   r9   r:   r/   r[   rj   rm   rp   r   rs   rù   rú   r'   r'   r'   r(   rñ   ¶  s    	
rñ   c                   @   r¤   )rö   c                 C   s&   |rt |tƒstdƒ‚|| _|| _d S )Nz2notice_reference must be None or a NoticeReference)r   ÚNoticeReferencerM   Ú_notice_referenceÚ_explicit_text)r2   Únotice_referenceÚexplicit_textr'   r'   r(   r/   é  s   ÿÿ
zUserNotice.__init__c                 C   rŒ   )NzV<UserNotice(notice_reference={0.notice_reference}, explicit_text={0.explicit_text!r})>r�   r?   r'   r'   r(   r[   ô  r©   zUserNotice.__repr__c                 C   rª   r-   )r   rö   rg   rÿ   r   rh   r'   r'   r(   rj   ú  r«   zUserNotice.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm     rG   zUserNotice.__ne__c                 C   r¬   r-   )ro   rÿ   r   r?   r'   r'   r(   rp     r­   zUserNotice.__hash__rý   rþ   N)r8   r9   r:   r/   r[   rj   rm   rp   r   rs   rÿ   r   r'   r'   r'   r(   rö   è  s    	
rö   c                   @   r¤   )rü   c                 C   s2   || _ t|ƒ}tdd„ |D ƒƒstdƒ‚|| _d S )Nc                 s   rv   r-   )r   Úintrx   r'   r'   r(   r{     rœ   z+NoticeReference.__init__.<locals>.<genexpr>z)notice_numbers must be a list of integers)Ú_organizationr~   r   rM   Ú_notice_numbers)r2   ÚorganizationÚnotice_numbersr'   r'   r(   r/     s   ÿ
zNoticeReference.__init__c                 C   rŒ   )NzU<NoticeReference(organization={0.organization!r}, notice_numbers={0.notice_numbers})>r�   r?   r'   r'   r(   r[     r©   zNoticeReference.__repr__c                 C   rª   r-   )r   rü   rg   r  r  rh   r'   r'   r(   rj     r«   zNoticeReference.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   '  rG   zNoticeReference.__ne__c                 C   s   t | jt| jƒfƒS r-   )ro   r  r�   r  r?   r'   r'   r(   rp   *  ó   zNoticeReference.__hash__r  r  N)r8   r9   r:   r/   r[   rj   rm   rp   r   rs   r  r  r'   r'   r'   r(   rü     r®   rü   c                   @   sJ   e Zd ZejZdd„ Zdd„ Zdd„ Zdd„ Z	d	d
„ Z
dd„ Zdd„ ZdS )ÚExtendedKeyUsagec                 C   rš   )Nc                 s   rv   r-   )r   r   rx   r'   r'   r(   r{   7  rœ   z,ExtendedKeyUsage.__init__.<locals>.<genexpr>z9Every item in the usages list must be an ObjectIdentifier)r~   r   rM   Ú_usages)r2   Úusagesr'   r'   r(   r/   5  s   ÿ
zExtendedKeyUsage.__init__c                 C   rQ   r-   )rR   r  r?   r'   r'   r(   rS   >  rG   zExtendedKeyUsage.__iter__c                 C   rQ   r-   )rT   r  r?   r'   r'   r(   rU   A  rG   zExtendedKeyUsage.__len__c                 C   rZ   )Nz<ExtendedKeyUsage({0})>)rI   r  r?   r'   r'   r(   r[   D  rq   zExtendedKeyUsage.__repr__c                 C   rf   r-   )r   r  rg   r  rh   r'   r'   r(   rj   G  rk   zExtendedKeyUsage.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   M  rG   zExtendedKeyUsage.__ne__c                 C   r    r-   )ro   r�   r  r?   r'   r'   r(   rp   P  r¡   zExtendedKeyUsage.__hash__N)r8   r9   r:   r   ÚEXTENDED_KEY_USAGEr0   r/   rS   rU   r[   rj   rm   rp   r'   r'   r'   r(   r  1  s    	r  c                   @   ó   e Zd ZejZdS )ÚOCSPNoCheckN)r8   r9   r:   r   ÚOCSP_NO_CHECKr0   r'   r'   r'   r(   r  T  ó    
r  c                   @   r  )ÚPrecertPoisonN)r8   r9   r:   r   ÚPRECERT_POISONr0   r'   r'   r'   r(   r  Y  r  r  c                   @   r˜   )Ú
TLSFeaturec                 C   s8   t |ƒ}tdd„ |D ƒƒrt|ƒdkrtdƒ‚|| _d S )Nc                 s   rv   r-   )r   ÚTLSFeatureTyperx   r'   r'   r(   r{   e  rœ   z&TLSFeature.__init__.<locals>.<genexpr>r   z@features must be a list of elements from the TLSFeatureType enum)r~   r   rT   rM   Ú	_features)r2   Úfeaturesr'   r'   r(   r/   b  s   ÿÿ
zTLSFeature.__init__c                 C   rQ   r-   )rR   r  r?   r'   r'   r(   rS   o  rG   zTLSFeature.__iter__c                 C   rQ   r-   )rT   r  r?   r'   r'   r(   rU   r  rG   zTLSFeature.__len__c                 C   rŒ   )Nz$<TLSFeature(features={0._features})>r�   r?   r'   r'   r(   r[   u  rG   zTLSFeature.__repr__c                 C   rf   r-   )r   r  rg   r  rh   r'   r'   r(   rj   x  rk   zTLSFeature.__eq__c                 C   rV   r-   )r  rW   r'   r'   r(   rY   ~  rG   zTLSFeature.__getitem__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   �  rG   zTLSFeature.__ne__c                 C   r    r-   )ro   r�   r  r?   r'   r'   r(   rp   „  r¡   zTLSFeature.__hash__N)r8   r9   r:   r   ÚTLS_FEATUREr0   r/   rS   rU   r[   rj   rY   rm   rp   r'   r'   r'   r(   r  ^  s    r  c                   @   s   e Zd ZdZdZdS )r  é   é   N)r8   r9   r:   Ústatus_requestÚstatus_request_v2r'   r'   r'   r(   r  ˆ  s    r  c                 c   s   � | ]}|j |fV  qd S r-   ©rN   rx   r'   r'   r(   r{   “  rœ   r{   c                   @   r\   )ÚInhibitAnyPolicyc                 C   s.   t |tjƒs
tdƒ‚|dk rtdƒ‚|| _d S )Nzskip_certs must be an integerr   z)skip_certs must be a non-negative integer)r   r   ra   rM   r}   Ú_skip_certs)r2   Ú
skip_certsr'   r'   r(   r/   š  s
   
zInhibitAnyPolicy.__init__c                 C   rŒ   )Nz-<InhibitAnyPolicy(skip_certs={0.skip_certs})>r�   r?   r'   r'   r(   r[   £  rG   zInhibitAnyPolicy.__repr__c                 C   rf   r-   )r   r  rg   r  rh   r'   r'   r(   rj   ¦  rk   zInhibitAnyPolicy.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   ¬  rG   zInhibitAnyPolicy.__ne__c                 C   rQ   r-   )ro   r  r?   r'   r'   r(   rp   ¯  rG   zInhibitAnyPolicy.__hash__r  N)r8   r9   r:   r   ÚINHIBIT_ANY_POLICYr0   r/   r[   rj   rm   rp   r   rs   r  r'   r'   r'   r(   r  –  s    	r  c                   @   s˜   e Zd ZejZdd„ Ze d¡Z	e d¡Z
e d¡Ze d¡Ze d¡Ze d¡Ze d	¡Zed
d„ ƒZedd„ ƒZdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚKeyUsagec
           
      C   sN   |s
|s|	r
t dƒ‚|| _|| _|| _|| _|| _|| _|| _|| _|	| _	d S )NzKencipher_only and decipher_only can only be true when key_agreement is true)
r}   Ú_digital_signatureÚ_content_commitmentÚ_key_enciphermentÚ_data_enciphermentÚ_key_agreementÚ_key_cert_signÚ	_crl_signÚ_encipher_onlyÚ_decipher_only)
r2   Údigital_signatureÚcontent_commitmentÚkey_enciphermentÚdata_enciphermentÚkey_agreementÚkey_cert_signÚcrl_signÚencipher_onlyÚdecipher_onlyr'   r'   r(   r/   ¹  s   ÿ
zKeyUsage.__init__r   r!  r"  r#  r$  r%  r&  c                 C   ó   | j stdƒ‚| jS )Nz7encipher_only is undefined unless key_agreement is true)r-  r}   r'  r?   r'   r'   r(   r0  Ô  ó
   ÿzKeyUsage.encipher_onlyc                 C   r2  )Nz7decipher_only is undefined unless key_agreement is true)r-  r}   r(  r?   r'   r'   r(   r1  Ý  r3  zKeyUsage.decipher_onlyc                 C   s:   z| j }| j}W n ty   d }d }Y nw d | ||¡S )Na-  <KeyUsage(digital_signature={0.digital_signature}, content_commitment={0.content_commitment}, key_encipherment={0.key_encipherment}, data_encipherment={0.data_encipherment}, key_agreement={0.key_agreement}, key_cert_sign={0.key_cert_sign}, crl_sign={0.crl_sign}, encipher_only={1}, decipher_only={2})>)r0  r1  r}   rI   )r2   r0  r1  r'   r'   r(   r[   æ  s   
þÿúzKeyUsage.__repr__c                 C   sz   t |tƒstS | j|jko<| j|jko<| j|jko<| j|jko<| j|jko<| j|jko<| j	|j	ko<| j
|j
ko<| j|jkS r-   )r   r  rg   r)  r*  r+  r,  r-  r.  r/  r'  r(  rh   r'   r'   r(   rj   ÷  s&   

ÿ
þ
ý
ü
û
ú
ù
÷zKeyUsage.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm     rG   zKeyUsage.__ne__c              
   C   s,   t | j| j| j| j| j| j| j| j| j	f	ƒS r-   )
ro   r)  r*  r+  r,  r-  r.  r/  r'  r(  r?   r'   r'   r(   rp   
  s   ûzKeyUsage.__hash__N)r8   r9   r:   r   Ú	KEY_USAGEr0   r/   r   rs   r)  r*  r+  r,  r-  r.  r/  Úpropertyr0  r1  r[   rj   rm   rp   r'   r'   r'   r(   r  µ  s$    








r  c                   @   sV   e Zd ZejZdd„ Zdd„ Zdd„ Zdd„ Z	d	d
„ Z
dd„ Ze d¡Ze d¡ZdS )ÚNameConstraintsc                 C   s�   |d urt |ƒ}tdd„ |D ƒƒstdƒ‚|  |¡ |d ur4t |ƒ}tdd„ |D ƒƒs/tdƒ‚|  |¡ |d u r@|d u r@tdƒ‚|| _|| _d S )Nc                 s   rv   r-   rw   rx   r'   r'   r(   r{     r|   z+NameConstraints.__init__.<locals>.<genexpr>z@permitted_subtrees must be a list of GeneralName objects or Nonec                 s   rv   r-   rw   rx   r'   r'   r(   r{   '  r|   z?excluded_subtrees must be a list of GeneralName objects or NonezIAt least one of permitted_subtrees and excluded_subtrees must not be None)r~   r   rM   Ú_validate_ip_namer}   Ú_permitted_subtreesÚ_excluded_subtrees)r2   Úpermitted_subtreesÚexcluded_subtreesr'   r'   r(   r/     s0   ÿÿ
ÿÿ
ÿ
zNameConstraints.__init__c                 C   rª   r-   )r   r6  rg   r;  r:  rh   r'   r'   r(   rj   :  r«   zNameConstraints.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   C  rG   zNameConstraints.__ne__c                 C   s   t dd„ |D ƒƒrtdƒ‚d S )Nc                 s   s0   � | ]}t |tƒot |jtjtjfƒ V  qd S r-   )r   r   rN   Ú	ipaddressÚIPv4NetworkÚIPv6Network)ry   Únamer'   r'   r(   r{   G  s   € þÿz4NameConstraints._validate_ip_name.<locals>.<genexpr>zGIPAddress name constraints must be an IPv4Network or IPv6Network object)ÚanyrM   )r2   Útreer'   r'   r(   r7  F  s   þÿýz!NameConstraints._validate_ip_namec                 C   rŒ   )Nze<NameConstraints(permitted_subtrees={0.permitted_subtrees}, excluded_subtrees={0.excluded_subtrees})>r�   r?   r'   r'   r(   r[   O  r©   zNameConstraints.__repr__c                 C   s@   | j d urt| j ƒ}nd }| jd urt| jƒ}nd }t||fƒS r-   )r:  r�   r;  ro   )r2   ÚpsÚesr'   r'   r(   rp   U  s   

zNameConstraints.__hash__r8  r9  N)r8   r9   r:   r   ÚNAME_CONSTRAINTSr0   r/   rj   rm   r7  r[   rp   r   rs   r:  r;  r'   r'   r'   r(   r6    s    "		
r6  c                   @   sR   e Zd Zdd„ Ze d¡Ze d¡Ze d¡Zdd„ Z	dd	„ Z
d
d„ Zdd„ ZdS )Ú	Extensionc                 C   s:   t |tƒs	tdƒ‚t |tƒstdƒ‚|| _|| _|| _d S )Nz2oid argument must be an ObjectIdentifier instance.z critical must be a boolean value)r   r   rM   r°   Ú_oidÚ	_criticalÚ_value)r2   r0   ÚcriticalrN   r'   r'   r(   r/   g  s   
ÿ

zExtension.__init__rF  rG  rH  c                 C   rŒ   )Nz@<Extension(oid={0.oid}, critical={0.critical}, value={0.value})>r�   r?   r'   r'   r(   r[   x  rµ   zExtension.__repr__c                 C   rŽ   r-   )r   rE  rg   r0   rI  rN   rh   r'   r'   r(   rj   |  s   

ÿ
ýzExtension.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   †  rG   zExtension.__ne__c                 C   s   t | j| j| jfƒS r-   )ro   r0   rI  rN   r?   r'   r'   r(   rp   ‰  r  zExtension.__hash__N)r8   r9   r:   r/   r   rs   r0   rI  rN   r[   rj   rm   rp   r'   r'   r'   r(   rE  f  s    



rE  c                   @   sT   e Z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S )ÚGeneralNamesc                 C   rš   )Nc                 s   rv   r-   rw   rx   r'   r'   r(   r{   �  rœ   z(GeneralNames.__init__.<locals>.<genexpr>z^Every item in the general_names list must be an object conforming to the GeneralName interface)r~   r   rM   Ú_general_names©r2   Úgeneral_namesr'   r'   r(   r/   Ž  rŸ   zGeneralNames.__init__c                 C   rQ   r-   ©rR   rK  r?   r'   r'   r(   rS   ˜  rG   zGeneralNames.__iter__c                 C   rQ   r-   ©rT   rK  r?   r'   r'   r(   rU   ›  rG   zGeneralNames.__len__c                    s0   ‡ fdd„| D ƒ}ˆ t krdd„ |D ƒ}t|ƒS )Nc                 3   s   � | ]
}t |ˆ ƒr|V  qd S r-   )r   ©ry   Úi©Útyper'   r(   r{   ¢  s   € z3GeneralNames.get_values_for_type.<locals>.<genexpr>c                 s   s   � | ]}|j V  qd S r-   r  rP  r'   r'   r(   r{   ¤  s   € )r   r~   )r2   rS  Úobjsr'   rR  r(   Úget_values_for_typež  s   z GeneralNames.get_values_for_typec                 C   rZ   )Nz<GeneralNames({0})>©rI   rK  r?   r'   r'   r(   r[   §  rq   zGeneralNames.__repr__c                 C   rf   r-   )r   rJ  rg   rK  rh   r'   r'   r(   rj   ª  rk   zGeneralNames.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   °  rG   zGeneralNames.__ne__c                 C   rV   r-   ©rK  rW   r'   r'   r(   rY   ³  rG   zGeneralNames.__getitem__c                 C   r    r-   )ro   r�   rK  r?   r'   r'   r(   rp   ¶  r¡   zGeneralNames.__hash__N)r8   r9   r:   r/   rS   rU   rU  r[   rj   rm   rY   rp   r'   r'   r'   r(   rJ  �  s    
	rJ  c                   @   óZ   e Zd Ze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dd„ ZdS )ÚSubjectAlternativeNamec                 C   ó   t |ƒ| _d S r-   ©rJ  rK  rL  r'   r'   r(   r/   ¾  r¡   zSubjectAlternativeName.__init__c                 C   rQ   r-   rN  r?   r'   r'   r(   rS   Á  rG   zSubjectAlternativeName.__iter__c                 C   rQ   r-   rO  r?   r'   r'   r(   rU   Ä  rG   zSubjectAlternativeName.__len__c                 C   ó   | j  |¡S r-   ©rK  rU  ©r2   rS  r'   r'   r(   rU  Ç  rq   z*SubjectAlternativeName.get_values_for_typec                 C   rZ   )Nz<SubjectAlternativeName({0})>rV  r?   r'   r'   r(   r[   Ê  rq   zSubjectAlternativeName.__repr__c                 C   rf   r-   )r   rY  rg   rK  rh   r'   r'   r(   rj   Í  rk   zSubjectAlternativeName.__eq__c                 C   rV   r-   rW  rW   r'   r'   r(   rY   Ó  rG   z"SubjectAlternativeName.__getitem__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   Ö  rG   zSubjectAlternativeName.__ne__c                 C   rQ   r-   ©ro   rK  r?   r'   r'   r(   rp   Ù  rG   zSubjectAlternativeName.__hash__N)r8   r9   r:   r   ÚSUBJECT_ALTERNATIVE_NAMEr0   r/   rS   rU   rU  r[   rj   rY   rm   rp   r'   r'   r'   r(   rY  º  ó    rY  c                   @   rX  )ÚIssuerAlternativeNamec                 C   rZ  r-   r[  rL  r'   r'   r(   r/   á  r¡   zIssuerAlternativeName.__init__c                 C   rQ   r-   rN  r?   r'   r'   r(   rS   ä  rG   zIssuerAlternativeName.__iter__c                 C   rQ   r-   rO  r?   r'   r'   r(   rU   ç  rG   zIssuerAlternativeName.__len__c                 C   r\  r-   r]  r^  r'   r'   r(   rU  ê  rq   z)IssuerAlternativeName.get_values_for_typec                 C   rZ   )Nz<IssuerAlternativeName({0})>rV  r?   r'   r'   r(   r[   í  rq   zIssuerAlternativeName.__repr__c                 C   rf   r-   )r   rb  rg   rK  rh   r'   r'   r(   rj   ð  rk   zIssuerAlternativeName.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   ö  rG   zIssuerAlternativeName.__ne__c                 C   rV   r-   rW  rW   r'   r'   r(   rY   ù  rG   z!IssuerAlternativeName.__getitem__c                 C   rQ   r-   r_  r?   r'   r'   r(   rp   ü  rG   zIssuerAlternativeName.__hash__N)r8   r9   r:   r   ÚISSUER_ALTERNATIVE_NAMEr0   r/   rS   rU   rU  r[   rj   rm   rY   rp   r'   r'   r'   r(   rb  Ý  ra  rb  c                   @   rX  )ÚCertificateIssuerc                 C   rZ  r-   r[  rL  r'   r'   r(   r/     r¡   zCertificateIssuer.__init__c                 C   rQ   r-   rN  r?   r'   r'   r(   rS     rG   zCertificateIssuer.__iter__c                 C   rQ   r-   rO  r?   r'   r'   r(   rU   
  rG   zCertificateIssuer.__len__c                 C   r\  r-   r]  r^  r'   r'   r(   rU    rq   z%CertificateIssuer.get_values_for_typec                 C   rZ   )Nz<CertificateIssuer({0})>rV  r?   r'   r'   r(   r[     rq   zCertificateIssuer.__repr__c                 C   rf   r-   )r   rd  rg   rK  rh   r'   r'   r(   rj     rk   zCertificateIssuer.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm     rG   zCertificateIssuer.__ne__c                 C   rV   r-   rW  rW   r'   r'   r(   rY     rG   zCertificateIssuer.__getitem__c                 C   rQ   r-   r_  r?   r'   r'   r(   rp     rG   zCertificateIssuer.__hash__N)r8   r9   r:   r   ÚCERTIFICATE_ISSUERr0   r/   rS   rU   rU  r[   rj   rm   rY   rp   r'   r'   r'   r(   rd     ra  rd  c                   @   r\   )Ú	CRLReasonc                 C   ó   t |tƒs	tdƒ‚|| _d S )Nz*reason must be an element from ReasonFlags)r   rÌ   rM   Ú_reason)r2   Úreasonr'   r'   r(   r/   '  ó   

zCRLReason.__init__c                 C   rZ   )Nz<CRLReason(reason={0})>)rI   rh  r?   r'   r'   r(   r[   -  rq   zCRLReason.__repr__c                 C   rf   r-   )r   rf  rg   ri  rh   r'   r'   r(   rj   0  rk   zCRLReason.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   6  rG   zCRLReason.__ne__c                 C   rQ   r-   )ro   ri  r?   r'   r'   r(   rp   9  rG   zCRLReason.__hash__rh  N)r8   r9   r:   r   Ú
CRL_REASONr0   r/   r[   rj   rm   rp   r   rs   ri  r'   r'   r'   r(   rf  #  s    rf  c                   @   r\   )ÚInvalidityDatec                 C   s   t |tjƒs
tdƒ‚|| _d S )Nz+invalidity_date must be a datetime.datetime)r   ÚdatetimerM   Ú_invalidity_date)r2   Úinvalidity_dater'   r'   r(   r/   C  re   zInvalidityDate.__init__c                 C   rZ   )Nz%<InvalidityDate(invalidity_date={0})>)rI   rn  r?   r'   r'   r(   r[   I  s   ÿzInvalidityDate.__repr__c                 C   rf   r-   )r   rl  rg   ro  rh   r'   r'   r(   rj   N  rk   zInvalidityDate.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   T  rG   zInvalidityDate.__ne__c                 C   rQ   r-   )ro   ro  r?   r'   r'   r(   rp   W  rG   zInvalidityDate.__hash__rn  N)r8   r9   r:   r   ÚINVALIDITY_DATEr0   r/   r[   rj   rm   rp   r   rs   ro  r'   r'   r'   r(   rl  ?  s    rl  c                   @   r˜   )Ú)PrecertificateSignedCertificateTimestampsc                 C   rš   )Nc                 s   rv   r-   )r   r   )ry   Úsctr'   r'   r(   r{   c  s
   € ÿ
ÿzEPrecertificateSignedCertificateTimestamps.__init__.<locals>.<genexpr>zYEvery item in the signed_certificate_timestamps list must be a SignedCertificateTimestamp)r~   r   rM   Ú_signed_certificate_timestamps)r2   Úsigned_certificate_timestampsr'   r'   r(   r/   a  s   þÿ
z2PrecertificateSignedCertificateTimestamps.__init__c                 C   rQ   r-   )rR   rs  r?   r'   r'   r(   rS   m  rG   z2PrecertificateSignedCertificateTimestamps.__iter__c                 C   rQ   r-   )rT   rs  r?   r'   r'   r(   rU   p  rG   z1PrecertificateSignedCertificateTimestamps.__len__c                 C   rV   r-   )rs  rW   r'   r'   r(   rY   s  rG   z5PrecertificateSignedCertificateTimestamps.__getitem__c                 C   s   d  t| ƒ¡S )Nz0<PrecertificateSignedCertificateTimestamps({0})>)rI   r~   r?   r'   r'   r(   r[   v  s   ÿÿz2PrecertificateSignedCertificateTimestamps.__repr__c                 C   r    r-   )ro   r�   rs  r?   r'   r'   r(   rp   }  r¡   z2PrecertificateSignedCertificateTimestamps.__hash__c                 C   rf   r-   )r   rq  rg   rs  rh   r'   r'   r(   rj   €  s   
ÿÿz0PrecertificateSignedCertificateTimestamps.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   ‰  rG   z0PrecertificateSignedCertificateTimestamps.__ne__N)r8   r9   r:   r   Ú%PRECERT_SIGNED_CERTIFICATE_TIMESTAMPSr0   r/   rS   rU   rY   r[   rp   rj   rm   r'   r'   r'   r(   rq  ]  s    	rq  c                   @   r\   )Ú	OCSPNoncec                 C   rg  )Nznonce must be bytes)r   ÚbytesrM   Ú_nonce)r2   Únoncer'   r'   r(   r/   ‘  rj  zOCSPNonce.__init__c                 C   rf   r-   )r   rv  rg   ry  rh   r'   r'   r(   rj   —  rk   zOCSPNonce.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   �  rG   zOCSPNonce.__ne__c                 C   rQ   r-   )ro   ry  r?   r'   r'   r(   rp      rG   zOCSPNonce.__hash__c                 C   rŒ   )Nz<OCSPNonce(nonce={0.nonce!r})>r�   r?   r'   r'   r(   r[   £  rG   zOCSPNonce.__repr__rx  N)r8   r9   r:   r   ÚNONCEr0   r/   rj   rm   rp   r[   r   rs   ry  r'   r'   r'   r(   rv  �  rt   rv  c                   @   sH   e Zd Zdd„ Ze d¡Ze d¡Zdd„ Zdd„ Z	d	d
„ Z
dd„ ZdS )rL   c                 C   s"   t |tƒs	tdƒ‚|| _|| _d S )Nzoid must be an ObjectIdentifier)r   r   rM   rF  rH  )r2   r0   rN   r'   r'   r(   r/   «  s   

zUnrecognizedExtension.__init__rF  rH  c                 C   rŒ   )Nz7<UnrecognizedExtension(oid={0.oid}, value={0.value!r})>r�   r?   r'   r'   r(   r[   ´  s   ÿÿzUnrecognizedExtension.__repr__c                 C   rª   r-   )r   rL   rg   r0   rN   rh   r'   r'   r(   rj   »  r¶   zUnrecognizedExtension.__eq__c                 C   rl   r-   r'   rh   r'   r'   r(   rm   Á  rG   zUnrecognizedExtension.__ne__c                 C   r¬   r-   )ro   r0   rN   r?   r'   r'   r(   rp   Ä  r­   zUnrecognizedExtension.__hash__N)r8   r9   r:   r/   r   rs   r0   rN   r[   rj   rm   rp   r'   r'   r'   r(   rL   ©  s    

rL   )QÚ
__future__r   r   r   r@   rm  r"   r<  Úenumr   Úasn1crypto.keysr   r   Úcryptographyr   Úcryptography.hazmat.primitivesr   r	   Ú,cryptography.hazmat.primitives.asymmetric.ecr
   Ú-cryptography.hazmat.primitives.asymmetric.rsar   Ú*cryptography.x509.certificate_transparencyr   Úcryptography.x509.general_namer   r   r   Úcryptography.x509.namer   Úcryptography.x509.oidr   r   r   r   r)   Ú	Exceptionr+   r=   Úadd_metaclassÚABCMetaÚobjectr>   rB   Úregister_interfacer]   ru   r“   r™   r›   r¯   r¸   rº   rÊ   r¼   rÌ   rê   rð   rñ   rö   rü   r  r  r  r  r  ÚdictÚ_TLS_FEATURE_TYPE_TO_ENUMr  r  r6  rE  rJ  rY  rb  rd  rf  rl  rq  rv  rL   r'   r'   r'   r(   Ú<module>   s¤   
*Y&$)((]<&2%$")^Q'-"""/