o
     `                     @   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
Z
d dlmZ d dlmZmZmZ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&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0e.G dd de-Z1e0e.G dd de-Z2e0e.G dd de-Z3e0e.G dd  d e-Z4e0e.G d!d" d"e-Z5G d#d$ d$e-Z6e0e.G d%d& d&e-Z7e0e.G d'd( d(e-Z8e0e.G d)d* d*e-Z9e0e.G d+d, d,e-Z:G d-d. d.e-Z;G d/d0 d0e	Z<e0e.G d1d2 d2e-Z=e0e.G d3d4 d4e-Z>G d5d6 d6e-Z?G d7d8 d8e-Z@G d9d: d:e-ZAe0e.G d;d< d<e-ZBe0e.G d=d> d>e-ZCe0e.G d?d@ d@e-ZDe0e.G dAdB dBe-ZEG dCdD dDe	ZFdEdF eFD ZGe0e.G dGdH dHe-ZHe0e.G dIdJ dJe-ZIe0e.G dKdL dLe-ZJG dMdN dNe-ZKG dOdP dPe-ZLe0e.G dQdR dRe-ZMe0e.G dSdT dTe-ZNe0e.G dUdV dVe-ZOe0e.G dWdX dXe-ZPe0e.G dYdZ dZe-ZQe0e.G d[d\ d\e-ZRe0e.G d]d^ d^e-ZSe0e.G d_d` d`e-ZTe0e.G dadb dbe-ZUe0e.G dcdd dde-ZVdS )e    )absolute_importdivisionprint_functionN)Enum)utils)
BIT_STRING	DERReaderOBJECT_IDENTIFIERSEQUENCE)constant_timeserialization)EllipticCurvePublicKey)RSAPublicKey)SignedCertificateTimestamp)GeneralName	IPAddress	OtherName)RelativeDistinguishedName)CRLEntryExtensionOIDExtensionOIDOCSPExtensionOIDObjectIdentifierc                 C   s   t | tr| tjjtjj}nit | tr | tjj	tjj
}nY| tjjtjj}t|}|t}|t}|t} W d    n1 sHw   Y  | |t | s]|  W d    n1 sgw   Y  |  dkrvtd| j}t| S )Nr   zInvalid public key encoding)
isinstancer   Zpublic_bytesr   ZEncodingZDERZPublicFormatZPKCS1r   ZX962ZUncompressedPointZSubjectPublicKeyInfor   Zread_single_elementr
   Zread_elementr   r	   Zis_emptyZread_any_elementZ	read_byte
ValueErrordatahashlibZsha1digest)
public_keyr   Z
serializedreaderZpublic_key_info	algorithm r    rhome/ych/rk3568/buildroot/output/rockchip_rk3568/host/lib/python3.10/site-packages/cryptography/x509/extensions.py_key_identifier_from_public_key&   s:   



r"   c                    s.    fdd} fdd} fdd}|||fS )Nc                       t t|  S N)lengetattrself
field_namer    r!   
len_methodO      z*_make_sequence_methods.<locals>.len_methodc                    r#   r$   )iterr&   r'   r)   r    r!   iter_methodR   r,   z+_make_sequence_methods.<locals>.iter_methodc                    s   t |  | S r$   )r&   )r(   idxr)   r    r!   getitem_methodU   r,   z._make_sequence_methods.<locals>.getitem_methodr    )r*   r+   r.   r0   r    r)   r!   _make_sequence_methodsN   s   
r1   c                          e Zd Z fddZ  ZS )DuplicateExtensionc                       t t| | || _d S r$   )superr3   __init__oidr(   msgr7   	__class__r    r!   r6   \      
zDuplicateExtension.__init____name__
__module____qualname__r6   __classcell__r    r    r:   r!   r3   [       r3   c                       r2   )ExtensionNotFoundc                    r4   r$   )r5   rC   r6   r7   r8   r:   r    r!   r6   b   r<   zExtensionNotFound.__init__r=   r    r    r:   r!   rC   a   rB   rC   c                   @   s   e Zd Zejdd ZdS )ExtensionTypec                 C      dS )zK
        Returns the oid associated with the given extension type.
        Nr    r'   r    r    r!   r7   i   s    zExtensionType.oidN)r>   r?   r@   abcabstractpropertyr7   r    r    r    r!   rD   g   s    rD   c                   @   s:   e Zd Zdd Zdd Zdd Zed\ZZZ	dd	 Z
d
S )
Extensionsc                 C   
   || _ d S r$   )_extensions)r(   
extensionsr    r    r!   r6   q      
zExtensions.__init__c                 C   s,   | D ]}|j |kr|  S qtd||)NNo {} extension was found)r7   rC   format)r(   r7   extr    r    r!   get_extension_for_oidt   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.rM   )UnrecognizedExtension	TypeErrorr   valuerC   rN   r7   )r(   ZextclassrO   r    r    r!   get_extension_for_class{   s   z"Extensions.get_extension_for_classrJ   c                 C      d | jS )Nz<Extensions({})>)rN   rJ   r'   r    r    r!   __repr__      zExtensions.__repr__N)r>   r?   r@   r6   rP   rT   r1   __len____iter____getitem__rV   r    r    r    r!   rH   p   s    rH   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   sixinteger_typesrR   _crl_numberr(   
crl_numberr    r    r!   r6         
zCRLNumber.__init__c                 C      t |tstS | j|jkS r$   )r   r\   NotImplementedrd   r(   otherr    r    r!   __eq__      
zCRLNumber.__eq__c                 C   
   | |k S r$   r    rh   r    r    r!   __ne__   rL   zCRLNumber.__ne__c                 C   
   t | jS r$   hashrd   r'   r    r    r!   __hash__   rL   zCRLNumber.__hash__c                 C   rU   )Nz<CRLNumber({})>)rN   rd   r'   r    r    r!   rV      rW   zCRLNumber.__repr__rb   N)r>   r?   r@   r   Z
CRL_NUMBERr7   r6   rj   rm   rq   rV   r   read_only_propertyrd   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)
r   listallrR   r   r`   ra   _key_identifier_authority_cert_issuer_authority_cert_serial_number)r(   key_identifierauthority_cert_issuerauthority_cert_serial_numberr    r    r!   r6      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 d d dS r   )r   )r   Z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})>rN   r'   r    r    r!   rV      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   rt   rg   r   r   r   rh   r    r    r!   rj      s   

zAuthorityKeyIdentifier.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm      rL   zAuthorityKeyIdentifier.__ne__c                 C   s,   | j d u rd }nt| j }t| j|| jfS r$   )r   tuplerp   r   r   )r(   Zacir    r    r!   rq      s   

zAuthorityKeyIdentifier.__hash__r~   r   r   N)r>   r?   r@   r   ZAUTHORITY_KEY_IDENTIFIERr7   r6   classmethodr   r   rV   rj   rm   rq   r   rr   r   r   r   r    r    r    r!   rt      s     !


	
rt   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   rI   r$   )_digest)r(   r   r    r    r!   r6     rL   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   rU   )Nz$<SubjectKeyIdentifier(digest={0!r})>)rN   r   r'   r    r    r!   rV     rW   zSubjectKeyIdentifier.__repr__c                 C   s   t |tstS t| j|jS r$   )r   r   rg   r   Zbytes_eqr   rh   r    r    r!   rj     s   
zSubjectKeyIdentifier.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm     rL   zSubjectKeyIdentifier.__ne__c                 C   rn   r$   )rp   r   r'   r    r    r!   rq   "  rL   zSubjectKeyIdentifier.__hash__N)r>   r?   r@   r   ZSUBJECT_KEY_IDENTIFIERr7   r6   r   r   r   rr   r   rV   rj   rm   rq   r    r    r    r!   r   	  s    

r   c                   @   H   e Zd ZejZdd Zed\ZZ	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   ru   r$   r   AccessDescriptionrw   r    r    r!   rz   ,      z6AuthorityInformationAccess.__init__.<locals>.<genexpr>@Every item in the descriptions list must be an AccessDescriptionr|   r}   rR   _descriptionsr(   Zdescriptionsr    r    r!   r6   *     
z#AuthorityInformationAccess.__init__r   c                 C   rU   )Nz <AuthorityInformationAccess({})>rN   r   r'   r    r    r!   rV   6  rW   z#AuthorityInformationAccess.__repr__c                 C   rf   r$   )r   r   rg   r   rh   r    r    r!   rj   9  rk   z!AuthorityInformationAccess.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm   ?  rL   z!AuthorityInformationAccess.__ne__c                 C      t t| jS r$   rp   r   r   r'   r    r    r!   rq   B  r,   z#AuthorityInformationAccess.__hash__N)r>   r?   r@   r   ZAUTHORITY_INFORMATION_ACCESSr7   r6   r1   rX   rY   rZ   rV   rj   rm   rq   r    r    r    r!   r   &      
r   c                   @   r   )SubjectInformationAccessc                 C   r   )Nc                 s   ru   r$   r   rw   r    r    r!   rz   L  r   z4SubjectInformationAccess.__init__.<locals>.<genexpr>r   r   r   r    r    r!   r6   J  r   z!SubjectInformationAccess.__init__r   c                 C   rU   )Nz<SubjectInformationAccess({})>r   r'   r    r    r!   rV   V  rW   z!SubjectInformationAccess.__repr__c                 C   rf   r$   )r   r   rg   r   rh   r    r    r!   rj   Y  rk   zSubjectInformationAccess.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm   _  rL   zSubjectInformationAccess.__ne__c                 C   r   r$   r   r'   r    r    r!   rq   b  r,   z!SubjectInformationAccess.__hash__N)r>   r?   r@   r   ZSUBJECT_INFORMATION_ACCESSr7   r6   r1   rX   rY   rZ   rV   rj   rm   rq   r    r    r    r!   r   F  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   rR   r   _access_method_access_location)r(   access_methodaccess_locationr    r    r!   r6   g  s   


zAccessDescription.__init__c                 C   r   )NzY<AccessDescription(access_method={0.access_method}, access_location={0.access_location})>r   r'   r    r    r!   rV   q     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   w  
   

zAccessDescription.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm     rL   zAccessDescription.__ne__c                 C      t | j| jfS r$   )rp   r   r   r'   r    r    r!   rq        zAccessDescription.__hash__r   r   N)r>   r?   r@   r6   rV   rj   rm   rq   r   rr   r   r   r    r    r    r!   r   f  s    
	
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   boolrR   r   r`   ra   _ca_path_length)r(   capath_lengthr    r    r!   r6     s   


zBasicConstraints.__init__r   r   c                 C   r   )Nz:<BasicConstraints(ca={0.ca}, path_length={0.path_length})>r   r'   r    r    r!   rV     r   zBasicConstraints.__repr__c                 C   r   r$   )r   r   rg   r   r   rh   r    r    r!   rj        
zBasicConstraints.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm     rL   zBasicConstraints.__ne__c                 C   r   r$   )rp   r   r   r'   r    r    r!   rq     r   zBasicConstraints.__hash__N)r>   r?   r@   r   ZBASIC_CONSTRAINTSr7   r6   r   rr   r   r   rV   rj   rm   rq   r    r    r    r!   r     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!   r6     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     rL   zDeltaCRLIndicator.__ne__c                 C   rn   r$   ro   r'   r    r    r!   rq     rL   zDeltaCRLIndicator.__hash__c                 C   r   )Nz.<DeltaCRLIndicator(crl_number={0.crl_number})>r   r'   r    r    r!   rV     rL   zDeltaCRLIndicator.__repr__N)r>   r?   r@   r   ZDELTA_CRL_INDICATORr7   r6   r   rr   rd   rj   rm   rq   rV   r    r    r    r!   r     s    
r   c                   @   r   )CRLDistributionPointsc                 C   r   )Nc                 s   ru   r$   r   DistributionPointrw   r    r    r!   rz     r{   z1CRLDistributionPoints.__init__.<locals>.<genexpr>?distribution_points must be a list of DistributionPoint objectsr|   r}   rR   _distribution_pointsr(   Zdistribution_pointsr    r    r!   r6        
zCRLDistributionPoints.__init__r   c                 C   rU   )Nz<CRLDistributionPoints({})>rN   r   r'   r    r    r!   rV     rW   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     rL   zCRLDistributionPoints.__ne__c                 C   r   r$   rp   r   r   r'   r    r    r!   rq     r,   zCRLDistributionPoints.__hash__N)r>   r?   r@   r   ZCRL_DISTRIBUTION_POINTSr7   r6   r1   rX   rY   rZ   rV   rj   rm   rq   r    r    r    r!   r         
r   c                   @   r   )FreshestCRLc                 C   r   )Nc                 s   ru   r$   r   rw   r    r    r!   rz     r{   z'FreshestCRL.__init__.<locals>.<genexpr>r   r   r   r    r    r!   r6     r   zFreshestCRL.__init__r   c                 C   rU   )Nz<FreshestCRL({})>r   r'   r    r    r!   rV     rW   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     rL   zFreshestCRL.__ne__c                 C   r   r$   r   r'   r    r    r!   rq     r,   zFreshestCRL.__hash__N)r>   r?   r@   r   ZFRESHEST_CRLr7   r6   r1   rX   rY   rZ   rV   rj   rm   rq   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   ru   r$   rv   rw   r    r    r!   rz   "  r   z-DistributionPoint.__init__.<locals>.<genexpr>z/full_name must be a list of GeneralName objectsz1relative_name must be a RelativeDistinguishedNamec                 s   ru   r$   rv   rw   r    r    r!   rz   /  r   z2crl_issuer must be None or a list of general namesc                 s   ru   r$   r   ReasonFlagsrw   r    r    r!   rz   6  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}   rR   r   r   	frozensetr   unspecifiedremove_from_crl
_full_name_relative_name_reasons_crl_issuer)r(   	full_namerelative_namereasons
crl_issuerr    r    r!   r6     sV   

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!   rV   N     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   U  s   



zDistributionPoint.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm   `  rL   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   rp   r   r   )r(   fnr   r    r    r!   rq   c  s   

zDistributionPoint.__hash__r   r   r   r   N)r>   r?   r@   r6   rV   rj   rm   rq   r   rr   r   r   r   r   r    r    r    r!   r     s    5


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   ZkeyCompromiseZcACompromiseZaffiliationChanged
supersededZcessationOfOperationZcertificateHoldZprivilegeWithdrawnZaACompromiseZremoveFromCRLN)r>   r?   r@   r   Zkey_compromiseZca_compromiseZaffiliation_changedr   Zcessation_of_operationZcertificate_holdZprivilege_withdrawnZaa_compromiser   r    r    r    r!   r   v  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   rR   r   _require_explicit_policy_inhibit_policy_mapping)r(   require_explicit_policyinhibit_policy_mappingr    r    r!   r6     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!   rV     r   zPolicyConstraints.__repr__c                 C   r   r$   )r   r   rg   r   r   rh   r    r    r!   rj     r   zPolicyConstraints.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm     rL   zPolicyConstraints.__ne__c                 C   r   r$   )rp   r   r   r'   r    r    r!   rq     s   
zPolicyConstraints.__hash__r   r   N)r>   r?   r@   r   ZPOLICY_CONSTRAINTSr7   r6   rV   rj   rm   rq   r   rr   r   r   r    r    r    r!   r     s    	r   c                   @   r   )CertificatePoliciesc                 C   r   )Nc                 s   ru   r$   )r   PolicyInformationrw   r    r    r!   rz     r   z/CertificatePolicies.__init__.<locals>.<genexpr>z;Every item in the policies list must be a PolicyInformation)r|   r}   rR   	_policies)r(   Zpoliciesr    r    r!   r6     r   zCertificatePolicies.__init__r   c                 C   rU   )Nz<CertificatePolicies({})>)rN   r   r'   r    r    r!   rV     rW   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     rL   zCertificatePolicies.__ne__c                 C   r   r$   )rp   r   r   r'   r    r    r!   rq     r,   zCertificatePolicies.__hash__N)r>   r?   r@   r   ZCERTIFICATE_POLICIESr7   r6   r1   rX   rY   rZ   rV   rj   rm   rq   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`   Z	text_type
UserNoticerw   r    r    r!   rz     s
    
z-PolicyInformation.__init__.<locals>.<genexpr>zMpolicy_qualifiers must be a list of strings and/or UserNotice objects or None)r   r   rR   _policy_identifierr|   r}   _policy_qualifiers)r(   policy_identifierpolicy_qualifiersr    r    r!   r6     s   

zPolicyInformation.__init__c                 C   r   )Nze<PolicyInformation(policy_identifier={0.policy_identifier}, policy_qualifiers={0.policy_qualifiers})>r   r'   r    r    r!   rV     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     rL   zPolicyInformation.__ne__c                 C   s(   | j d urt| j }nd }t| j|fS r$   )r   r   rp   r   )r(   Zpqr    r    r!   rq     s   
zPolicyInformation.__hash__r   r   N)r>   r?   r@   r6   rV   rj   rm   rq   r   rr   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   NoticeReferencerR   _notice_reference_explicit_text)r(   notice_referenceexplicit_textr    r    r!   r6     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!   rV     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   -  rL   zUserNotice.__ne__c                 C   r   r$   )rp   r   r   r'   r    r    r!   rq   0  r   zUserNotice.__hash__r   r   N)r>   r?   r@   r6   rV   rj   rm   rq   r   rr   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   ru   r$   )r   intrw   r    r    r!   rz   ;  r   z+NoticeReference.__init__.<locals>.<genexpr>z)notice_numbers must be a list of integers)_organizationr|   r}   rR   _notice_numbers)r(   organizationnotice_numbersr    r    r!   r6   8  s
   
zNoticeReference.__init__c                 C   r   )NzU<NoticeReference(organization={0.organization!r}, notice_numbers={0.notice_numbers})>r   r'   r    r    r!   rV   @  r   zNoticeReference.__repr__c                 C   r   r$   )r   r   rg   r   r   rh   r    r    r!   rj   F  r   zNoticeReference.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm   O  rL   zNoticeReference.__ne__c                 C   s   t | jt| jfS r$   )rp   r   r   r   r'   r    r    r!   rq   R     zNoticeReference.__hash__r   r   N)r>   r?   r@   r6   rV   rj   rm   rq   r   rr   r   r   r    r    r    r!   r   7  s    	
r   c                   @   r   )ExtendedKeyUsagec                 C   r   )Nc                 s   ru   r$   )r   r   rw   r    r    r!   rz   _  r   z,ExtendedKeyUsage.__init__.<locals>.<genexpr>z9Every item in the usages list must be an ObjectIdentifier)r|   r}   rR   _usages)r(   Zusagesr    r    r!   r6   ]  s   
zExtendedKeyUsage.__init__r   c                 C   rU   )Nz<ExtendedKeyUsage({})>)rN   r   r'   r    r    r!   rV   h  rW   zExtendedKeyUsage.__repr__c                 C   rf   r$   )r   r   rg   r   rh   r    r    r!   rj   k  rk   zExtendedKeyUsage.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm   q  rL   zExtendedKeyUsage.__ne__c                 C   r   r$   )rp   r   r   r'   r    r    r!   rq   t  r,   zExtendedKeyUsage.__hash__N)r>   r?   r@   r   ZEXTENDED_KEY_USAGEr7   r6   r1   rX   rY   rZ   rV   rj   rm   rq   r    r    r    r!   r   Y  s    	r   c                   @   2   e Zd ZejZdd Zdd Zdd Zdd Z	d	S )
OCSPNoCheckc                 C      t |tstS dS NT)r   r   rg   rh   r    r    r!   rj   |     
zOCSPNoCheck.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm     rL   zOCSPNoCheck.__ne__c                 C      t tS r$   )rp   r   r'   r    r    r!   rq        zOCSPNoCheck.__hash__c                 C   rE   )Nz<OCSPNoCheck()>r    r'   r    r    r!   rV        zOCSPNoCheck.__repr__N)
r>   r?   r@   r   ZOCSP_NO_CHECKr7   rj   rm   rq   rV   r    r    r    r!   r   x      r   c                   @   r   )
PrecertPoisonc                 C   r   r   )r   r   rg   rh   r    r    r!   rj     r   zPrecertPoison.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm     rL   zPrecertPoison.__ne__c                 C   r   r$   )rp   r   r'   r    r    r!   rq     r   zPrecertPoison.__hash__c                 C   rE   )Nz<PrecertPoison()>r    r'   r    r    r!   rV     r   zPrecertPoison.__repr__N)
r>   r?   r@   r   ZPRECERT_POISONr7   rj   rm   rq   rV   r    r    r    r!   r     r   r   c                   @   r   )
TLSFeaturec                 C   s8   t |}tdd |D rt|dkrtd|| _d S )Nc                 s   ru   r$   )r   TLSFeatureTyperw   r    r    r!   rz     r   z&TLSFeature.__init__.<locals>.<genexpr>r   z@features must be a list of elements from the TLSFeatureType enum)r|   r}   r%   rR   	_features)r(   featuresr    r    r!   r6     s   

zTLSFeature.__init__r   c                 C   r   )Nz$<TLSFeature(features={0._features})>r   r'   r    r    r!   rV     rL   zTLSFeature.__repr__c                 C   rf   r$   )r   r   rg   r   rh   r    r    r!   rj     rk   zTLSFeature.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm     rL   zTLSFeature.__ne__c                 C   r   r$   )rp   r   r   r'   r    r    r!   rq     r,   zTLSFeature.__hash__N)r>   r?   r@   r   ZTLS_FEATUREr7   r6   r1   rX   rY   rZ   rV   rj   rm   rq   r    r    r    r!   r     s    r   c                   @   s   e Zd ZdZdZdS )r         N)r>   r?   r@   Zstatus_requestZstatus_request_v2r    r    r    r!   r     s    r   c                 C   s   i | ]}|j |qS r    rS   rw   r    r    r!   
<dictcomp>      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   rR   r   _skip_certs)r(   
skip_certsr    r    r!   r6     s
   
zInhibitAnyPolicy.__init__c                 C   r   )Nz-<InhibitAnyPolicy(skip_certs={0.skip_certs})>r   r'   r    r    r!   rV     rL   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     rL   zInhibitAnyPolicy.__ne__c                 C   rn   r$   )rp   r   r'   r    r    r!   rq     rL   zInhibitAnyPolicy.__hash__r   N)r>   r?   r@   r   ZINHIBIT_ANY_POLICYr7   r6   rV   rj   rm   rq   r   rr   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)
r(   digital_signaturecontent_commitmentkey_enciphermentdata_enciphermentkey_agreementkey_cert_signcrl_signencipher_onlydecipher_onlyr    r    r!   r6     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!   r    
   zKeyUsage.encipher_onlyc                 C   r  )Nz7decipher_only is undefined unless key_agreement is true)r  r   r  r'   r    r    r!   r  !  r  zKeyUsage.decipher_onlyc                 C   s:   z| j }| j}W n ty   d}d}Y nw d| ||S )NFa-  <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})>)r  r  r   rN   )r(   r  r  r    r    r!   rV   *  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   O  rL   zKeyUsage.__ne__c              
   C   s,   t | j| j| j| j| j| j| j| j| j	f	S r$   )
rp   r	  r
  r  r  r  r  r  r  r  r'   r    r    r!   rq   R  s   zKeyUsage.__hash__N)r>   r?   r@   r   Z	KEY_USAGEr7   r6   r   rr   r	  r
  r  r  r  r  r  propertyr  r  rV   rj   rm   rq   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   ru   r$   rv   rw   r    r    r!   rz   i  r   z+NameConstraints.__init__.<locals>.<genexpr>z@permitted_subtrees must be a list of GeneralName objects or Nonec                 s   ru   r$   rv   rw   r    r    r!   rz   s  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}   rR   _validate_ip_namer   _permitted_subtrees_excluded_subtrees)r(   permitted_subtreesexcluded_subtreesr    r    r!   r6   f  s(   


zNameConstraints.__init__c                 C   r   r$   )r   r  rg   r  r  rh   r    r    r!   rj     r   zNameConstraints.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm     rL   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   rS   	ipaddressZIPv4NetworkZIPv6Network)rx   namer    r    r!   rz     s    

z4NameConstraints._validate_ip_name.<locals>.<genexpr>zGIPAddress name constraints must be an IPv4Network or IPv6Network object)anyrR   )r(   treer    r    r!   r    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!   rV     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  rp   )r(   psesr    r    r!   rq     s   

zNameConstraints.__hash__r  r  N)r>   r?   r@   r   ZNAME_CONSTRAINTSr7   r6   rj   rm   r  rV   rq   r   rr   r  r  r    r    r    r!   r  b  s    	
r  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   rR   r   _oid	_critical_value)r(   r7   criticalrS   r    r    r!   r6     s   


zExtension.__init__r"  r#  r$  c                 C   r   )Nz@<Extension(oid={0.oid}, critical={0.critical}, value={0.value})>r   r'   r    r    r!   rV     r   zExtension.__repr__c                 C   r   r$   )r   r!  rg   r7   r%  rS   rh   r    r    r!   rj     s   


zExtension.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm     rL   zExtension.__ne__c                 C   s   t | j| j| jfS r$   )rp   r7   r%  rS   r'   r    r    r!   rq     r   zExtension.__hash__N)r>   r?   r@   r6   r   rr   r7   r%  rS   rV   rj   rm   rq   r    r    r    r!   r!    s    



r!  c                   @   sJ   e Zd Zdd Zed\ZZZdd Zdd Z	dd	 Z
d
d Zdd ZdS )GeneralNamesc                 C   r   )Nc                 s   ru   r$   rv   rw   r    r    r!   rz     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}   rR   _general_namesr(   Zgeneral_namesr    r    r!   r6     r   zGeneralNames.__init__r'  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   rx   ityper    r!   rz     s    z3GeneralNames.get_values_for_type.<locals>.<genexpr>c                 s   s    | ]}|j V  qd S r$   r   r)  r    r    r!   rz     s    )r   r|   )r(   r,  Zobjsr    r+  r!   get_values_for_type  s   z GeneralNames.get_values_for_typec                 C   rU   )Nz<GeneralNames({})>rN   r'  r'   r    r    r!   rV     rW   zGeneralNames.__repr__c                 C   rf   r$   )r   r&  rg   r'  rh   r    r    r!   rj     rk   zGeneralNames.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm     rL   zGeneralNames.__ne__c                 C   r   r$   )rp   r   r'  r'   r    r    r!   rq     r,   zGeneralNames.__hash__N)r>   r?   r@   r6   r1   rX   rY   rZ   r-  rV   rj   rm   rq   r    r    r    r!   r&    s    
	r&  c                   @   P   e Zd ZejZdd Zed\ZZ	Z
dd Zdd Zdd	 Zd
d Zdd ZdS )SubjectAlternativeNamec                 C      t || _d S r$   r&  r'  r(  r    r    r!   r6     r,   zSubjectAlternativeName.__init__r'  c                 C      | j |S r$   r'  r-  r(   r,  r    r    r!   r-    rW   z*SubjectAlternativeName.get_values_for_typec                 C   rU   )Nz<SubjectAlternativeName({})>r.  r'   r    r    r!   rV     rW   zSubjectAlternativeName.__repr__c                 C   rf   r$   )r   r0  rg   r'  rh   r    r    r!   rj     rk   zSubjectAlternativeName.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm     rL   zSubjectAlternativeName.__ne__c                 C   rn   r$   rp   r'  r'   r    r    r!   rq     rL   zSubjectAlternativeName.__hash__N)r>   r?   r@   r   ZSUBJECT_ALTERNATIVE_NAMEr7   r6   r1   rX   rY   rZ   r-  rV   rj   rm   rq   r    r    r    r!   r0        r0  c                   @   r/  )IssuerAlternativeNamec                 C   r1  r$   r2  r(  r    r    r!   r6   #  r,   zIssuerAlternativeName.__init__r'  c                 C   r3  r$   r4  r5  r    r    r!   r-  (  rW   z)IssuerAlternativeName.get_values_for_typec                 C   rU   )Nz<IssuerAlternativeName({})>r.  r'   r    r    r!   rV   +  rW   zIssuerAlternativeName.__repr__c                 C   rf   r$   )r   r8  rg   r'  rh   r    r    r!   rj   .  rk   zIssuerAlternativeName.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm   4  rL   zIssuerAlternativeName.__ne__c                 C   rn   r$   r6  r'   r    r    r!   rq   7  rL   zIssuerAlternativeName.__hash__N)r>   r?   r@   r   ZISSUER_ALTERNATIVE_NAMEr7   r6   r1   rX   rY   rZ   r-  rV   rj   rm   rq   r    r    r    r!   r8    r7  r8  c                   @   r/  )CertificateIssuerc                 C   r1  r$   r2  r(  r    r    r!   r6   ?  r,   zCertificateIssuer.__init__r'  c                 C   r3  r$   r4  r5  r    r    r!   r-  D  rW   z%CertificateIssuer.get_values_for_typec                 C   rU   )Nz<CertificateIssuer({})>r.  r'   r    r    r!   rV   G  rW   zCertificateIssuer.__repr__c                 C   rf   r$   )r   r9  rg   r'  rh   r    r    r!   rj   J  rk   zCertificateIssuer.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm   P  rL   zCertificateIssuer.__ne__c                 C   rn   r$   r6  r'   r    r    r!   rq   S  rL   zCertificateIssuer.__hash__N)r>   r?   r@   r   ZCERTIFICATE_ISSUERr7   r6   r1   rX   rY   rZ   r-  rV   rj   rm   rq   r    r    r    r!   r9  ;  r7  r9  c                   @   r[   )	CRLReasonc                 C      t |ts	td|| _d S )Nz*reason must be an element from ReasonFlags)r   r   rR   _reason)r(   reasonr    r    r!   r6   [     

zCRLReason.__init__c                 C   rU   )Nz<CRLReason(reason={})>)rN   r<  r'   r    r    r!   rV   a  rW   zCRLReason.__repr__c                 C   rf   r$   )r   r:  rg   r=  rh   r    r    r!   rj   d  rk   zCRLReason.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm   j  rL   zCRLReason.__ne__c                 C   rn   r$   )rp   r=  r'   r    r    r!   rq   m  rL   zCRLReason.__hash__r<  N)r>   r?   r@   r   Z
CRL_REASONr7   r6   rV   rj   rm   rq   r   rr   r=  r    r    r    r!   r:  W  s    r:  c                   @   r[   )InvalidityDatec                 C   s   t |tjs
td|| _d S )Nz+invalidity_date must be a datetime.datetime)r   datetimerR   _invalidity_date)r(   invalidity_dater    r    r!   r6   w  re   zInvalidityDate.__init__c                 C   rU   )Nz$<InvalidityDate(invalidity_date={})>)rN   rA  r'   r    r    r!   rV   }  s   zInvalidityDate.__repr__c                 C   rf   r$   )r   r?  rg   rB  rh   r    r    r!   rj     rk   zInvalidityDate.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm     rL   zInvalidityDate.__ne__c                 C   rn   r$   )rp   rB  r'   r    r    r!   rq     rL   zInvalidityDate.__hash__rA  N)r>   r?   r@   r   ZINVALIDITY_DATEr7   r6   rV   rj   rm   rq   r   rr   rB  r    r    r    r!   r?  s  s    r?  c                   @   r   ))PrecertificateSignedCertificateTimestampsc                 C   r   )Nc                 s   ru   r$   r   r   rx   Zsctr    r    r!   rz     
    
zEPrecertificateSignedCertificateTimestamps.__init__.<locals>.<genexpr>YEvery item in the signed_certificate_timestamps list must be a SignedCertificateTimestampr|   r}   rR   _signed_certificate_timestampsr(   Zsigned_certificate_timestampsr    r    r!   r6        
z2PrecertificateSignedCertificateTimestamps.__init__rI  c                 C      d t| S )Nz/<PrecertificateSignedCertificateTimestamps({})>rN   r|   r'   r    r    r!   rV     s   z2PrecertificateSignedCertificateTimestamps.__repr__c                 C   r   r$   rp   r   rI  r'   r    r    r!   rq     r,   z2PrecertificateSignedCertificateTimestamps.__hash__c                 C   rf   r$   )r   rC  rg   rI  rh   r    r    r!   rj        
z0PrecertificateSignedCertificateTimestamps.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm     rL   z0PrecertificateSignedCertificateTimestamps.__ne__N)r>   r?   r@   r   Z%PRECERT_SIGNED_CERTIFICATE_TIMESTAMPSr7   r6   r1   rX   rY   rZ   rV   rq   rj   rm   r    r    r    r!   rC    s    
	rC  c                   @   r   )SignedCertificateTimestampsc                 C   r   )Nc                 s   ru   r$   rD  rE  r    r    r!   rz     rF  z7SignedCertificateTimestamps.__init__.<locals>.<genexpr>rG  rH  rJ  r    r    r!   r6     rK  z$SignedCertificateTimestamps.__init__rI  c                 C   rL  )Nz!<SignedCertificateTimestamps({})>rM  r'   r    r    r!   rV     r,   z$SignedCertificateTimestamps.__repr__c                 C   r   r$   rN  r'   r    r    r!   rq     r,   z$SignedCertificateTimestamps.__hash__c                 C   rf   r$   )r   rP  rg   rI  rh   r    r    r!   rj     rO  z"SignedCertificateTimestamps.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm     rL   z"SignedCertificateTimestamps.__ne__N)r>   r?   r@   r   ZSIGNED_CERTIFICATE_TIMESTAMPSr7   r6   r1   rX   rY   rZ   rV   rq   rj   rm   r    r    r    r!   rP    s    
	rP  c                   @   r[   )	OCSPNoncec                 C   r;  )Nznonce must be bytes)r   bytesrR   _nonce)r(   noncer    r    r!   r6     r>  zOCSPNonce.__init__c                 C   rf   r$   )r   rQ  rg   rT  rh   r    r    r!   rj     rk   zOCSPNonce.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm     rL   zOCSPNonce.__ne__c                 C   rn   r$   )rp   rT  r'   r    r    r!   rq     rL   zOCSPNonce.__hash__c                 C   r   )Nz<OCSPNonce(nonce={0.nonce!r})>r   r'   r    r    r!   rV     rL   zOCSPNonce.__repr__rS  N)r>   r?   r@   r   ZNONCEr7   r6   rj   rm   rq   rV   r   rr   rT  r    r    r    r!   rQ    rs   rQ  c                   @   s   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edZedZedZedZedZdS )IssuingDistributionPointc           	      C   s   |rt |trtdd |D std|r$tj|v s tj|v r$tdt |tr8t |tr8t |tr8t |ts<td||||g}t	dd |D dkrQtd	t
|||||||gs`td
|| _|| _|| _|| _|| _|| _|| _d S )Nc                 s   ru   r$   r   rw   r    r    r!   rz     r   z4IssuingDistributionPoint.__init__.<locals>.<genexpr>z:only_some_reasons must be None or frozenset of ReasonFlagszTunspecified and remove_from_crl are not valid reasons in an IssuingDistributionPointzuonly_contains_user_certs, only_contains_ca_certs, indirect_crl and only_contains_attribute_certs must all be boolean.c                 S   s   g | ]}|r|qS r    r    rw   r    r    r!   
<listcomp>/  r   z5IssuingDistributionPoint.__init__.<locals>.<listcomp>   zOnly one of the following can be set to True: only_contains_user_certs, only_contains_ca_certs, indirect_crl, only_contains_attribute_certszCannot create empty extension: if only_contains_user_certs, only_contains_ca_certs, indirect_crl, and only_contains_attribute_certs are all False, then either full_name, relative_name, or only_some_reasons must have a value.)r   r   r}   rR   r   r   r   r   r   r%   r  _only_contains_user_certs_only_contains_ca_certs_indirect_crl_only_contains_attribute_certs_only_some_reasonsr   r   )	r(   r   r   only_contains_user_certsonly_contains_ca_certsonly_some_reasonsindirect_crlonly_contains_attribute_certsZcrl_constraintsr    r    r!   r6     sp   

z!IssuingDistributionPoint.__init__c                 C   r   )NaG  <IssuingDistributionPoint(full_name={0.full_name}, relative_name={0.relative_name}, only_contains_user_certs={0.only_contains_user_certs}, only_contains_ca_certs={0.only_contains_ca_certs}, only_some_reasons={0.only_some_reasons}, indirect_crl={0.indirect_crl}, only_contains_attribute_certs={0.only_contains_attribute_certs})>r   r'   r    r    r!   rV   Q  s   z!IssuingDistributionPoint.__repr__c                 C   sb   t |tstS | j|jko0| j|jko0| j|jko0| j|jko0| j|jko0| j|jko0| j	|j	kS r$   )
r   rU  rg   r   r   r]  r^  r_  r`  ra  rh   r    r    r!   rj   ]  s"   





zIssuingDistributionPoint.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm   l  rL   zIssuingDistributionPoint.__ne__c                 C   s$   t | j| j| j| j| j| j| jfS r$   )rp   r   r   r]  r^  r_  r`  ra  r'   r    r    r!   rq   o  s   z!IssuingDistributionPoint.__hash__r   r   rX  rY  r\  rZ  r[  N)r>   r?   r@   r   ZISSUING_DISTRIBUTION_POINTr7   r6   rV   rj   rm   rq   r   rr   r   r   r]  r^  r_  r`  ra  r    r    r    r!   rU    s(    P



rU  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 )rQ   c                 C   s"   t |ts	td|| _|| _d S )Nzoid must be an ObjectIdentifier)r   r   rR   r"  r$  )r(   r7   rS   r    r    r!   r6     s   

zUnrecognizedExtension.__init__r"  r$  c                 C   r   )Nz7<UnrecognizedExtension(oid={0.oid}, value={0.value!r})>r   r'   r    r    r!   rV     r   zUnrecognizedExtension.__repr__c                 C   r   r$   )r   rQ   rg   r7   rS   rh   r    r    r!   rj     r   zUnrecognizedExtension.__eq__c                 C   rl   r$   r    rh   r    r    r!   rm     rL   zUnrecognizedExtension.__ne__c                 C   r   r$   )rp   r7   rS   r'   r    r    r!   rq     r   zUnrecognizedExtension.__hash__N)r>   r?   r@   r6   r   rr   r7   rS   rV   rj   rm   rq   r    r    r    r!   rQ     s    

rQ   )W
__future__r   r   r   rF   r@  r   r  enumr   r`   cryptographyr   Zcryptography.hazmat._derr   r   r	   r
   Zcryptography.hazmat.primitivesr   r   Z,cryptography.hazmat.primitives.asymmetric.ecr   Z-cryptography.hazmat.primitives.asymmetric.rsar   Z*cryptography.x509.certificate_transparencyr   Zcryptography.x509.general_namer   r   r   Zcryptography.x509.namer   Zcryptography.x509.oidr   r   r   r   r"   r1   	Exceptionr3   rC   Zadd_metaclassABCMetaobjectrD   rH   Zregister_interfacer\   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Z_TLS_FEATURE_TYPE_TO_ENUMr   r   r  r!  r&  r0  r8  r9  r:  r?  rC  rP  rQ  rU  rQ   r    r    r    r!   <module>   s   (
![$)##^<2%""qQ)&(& 