o
    =j�0 ã                   @  sÊ  d dl mZ d dlZd dlZd dlZd dlZd dl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 d dlmZ d d	lmZ d d
lmZmZ d dlmZ d dlmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% d dl&m'Z'm(Z( d dl)m*Z*m+Z+m,Z,m-Z- ej.dddd�Z/dŠdd„Z0d‹dd„Z1G dd„ de2ƒZ3G dd „ d e2ƒZ4G d!d„ dej5d"�Z6G d#d$„ d$ƒZ7G d%d&„ d&e6ƒZ8G d'd(„ d(e6ƒZ9G d)d*„ d*e6ƒZ:G d+d,„ d,e6ƒZ;G d-d.„ d.e6ƒZ<G d/d0„ d0ƒZ=G d1d2„ d2e6ƒZ>G d3d4„ d4e6ƒZ?G d5d6„ d6e6ƒZ@G d7d8„ d8e6ƒZAG d9d:„ d:ƒZBG d;d<„ d<ejCƒZDeDjEeDjFeDjGeDjHeDjIeDjJeDjKeDjLd=œZMeDjEd>eDjFd?eDjGd@eDjHdAeDjIdBeDjJdCeDjKdDeDjLdEiZNeDjOd eDjEd>eDjFd?eDjGd@eDjHdAeDjIdBeDjJdCeDjPdEeDjKdFeDjLdGi
ZQG dHdI„ dIe6ƒZRG dJdK„ dKe6ƒZSG dLdM„ dMƒZTG dNdO„ dOƒZUG dPdQ„ dQƒZVG dRdS„ dSe6ƒZWG dTdU„ dUe6ƒZXG dVdW„ dWe6ƒZYG dXdY„ dYe6ƒZZG dZd[„ d[ejCƒZ[d\d]„ e[D ƒZ\G d^d_„ d_e6ƒZ]G d`da„ dae6ƒZ^G dbdc„ dce6ƒZ_G ddde„ dee6ƒZ`G dfdg„ dgejae/ ƒZbG dhdi„ diƒZcG djdk„ dke6ƒZdG dldm„ dme6ƒZeG dndo„ doe6ƒZfG dpdq„ dqe6ƒZgG drds„ dse6ƒZhG dtdu„ due6ƒZiG dvdw„ dwe6ƒZjG dxdy„ dye6ƒZkG dzd{„ d{e6ƒZlG d|d}„ d}e6ƒZmG d~d„ de6ƒZnG d€d�„ d�ƒZoG d‚dƒ„ dƒƒZpG d„d…„ d…ƒZqG d†d‡„ d‡e6ƒZrG dˆd‰„ d‰e6ƒZsdS )Œé    )ÚannotationsN)ÚIterableÚIterator)Úutils)Úasn1)Úx509)Úconstant_timeÚserialization)ÚEllipticCurvePublicKey)ÚRSAPublicKey)ÚCertificateIssuerPublicKeyTypesÚCertificatePublicKeyTypes)ÚSignedCertificateTimestamp)	ÚDirectoryNameÚDNSNameÚGeneralNameÚ	IPAddressÚ	OtherNameÚRegisteredIDÚ
RFC822NameÚUniformResourceIdentifierÚ_IPAddressTypes)ÚNameÚRelativeDistinguishedName)ÚCRLEntryExtensionOIDÚExtensionOIDÚObjectIdentifierÚOCSPExtensionOIDÚExtensionTypeVarÚExtensionTypeT)ÚboundÚ	covariantÚ
public_keyr   ÚreturnÚbytesc                 C  sl   t | tƒr|  tjjtjj¡}nt | tƒr |  tjj	tjj
¡}n|  tjjtjj¡}t |¡}t |¡ ¡ S ©N)Ú
isinstancer   Úpublic_bytesr	   ÚEncodingZDERZPublicFormatZPKCS1r
   ZX962ZUncompressedPointZSubjectPublicKeyInfor   Zparse_spki_for_dataÚhashlibÚsha1Údigest)r"   ÚdataZ
serialized© r-   úfC:\Users\psant\Downloads\Anu Raj Backend\school\venv\Lib\site-packages\cryptography/x509/extensions.pyÚ_key_identifier_from_public_key3   s    
þ
þþ
r/   Ú
field_nameÚstrc                   s0   d	‡ fdd„}‡ fdd„}‡ fdd„}|||fS )
Nr#   Úintc                   ó   t t| ˆ ƒƒS r%   )ÚlenÚgetattr©Úself©r0   r-   r.   Ú
len_methodL   ó   z*_make_sequence_methods.<locals>.len_methodc                   r3   r%   )Úiterr5   r6   r8   r-   r.   Úiter_methodO   r:   z+_make_sequence_methods.<locals>.iter_methodc                   s   t | ˆ ƒ| S r%   )r5   )r7   Úidxr8   r-   r.   Úgetitem_methodR   r:   z._make_sequence_methods.<locals>.getitem_method©r#   r2   r-   )r0   r9   r<   r>   r-   r8   r.   Ú_make_sequence_methodsK   s   
r@   c                      ó   e Zd Zd	‡ fdd„Z‡  ZS )
ÚDuplicateExtensionÚmsgr1   Úoidr   r#   ÚNonec                   ó   t ƒ  |¡ || _d S r%   ©ÚsuperÚ__init__rD   ©r7   rC   rD   ©Ú	__class__r-   r.   rI   Y   ó   
zDuplicateExtension.__init__©rC   r1   rD   r   r#   rE   ©Ú__name__Ú
__module__Ú__qualname__rI   Ú__classcell__r-   r-   rK   r.   rB   X   ó    rB   c                      rA   )
ÚExtensionNotFoundrC   r1   rD   r   r#   rE   c                   rF   r%   rG   rJ   rK   r-   r.   rI   _   rM   zExtensionNotFound.__init__rN   rO   r-   r-   rK   r.   rU   ^   rT   rU   c                   @  s    e Zd ZU ded< ddd„ZdS )	r   z!typing.ClassVar[ObjectIdentifier]rD   r#   r$   c                 C  s   t d| ›�ƒ‚)z7
        Serializes the extension type to DER.
        z3public_bytes is not implemented for extension type N)ÚNotImplementedErrorr6   r-   r-   r.   r'   g   s   ÿzExtensionType.public_bytesN©r#   r$   )rP   rQ   rR   Ú__annotations__r'   r-   r-   r-   r.   r   d   s   
 )Ú	metaclassc                   @  sB   e Zd Zddd„Zdd
d„Zddd„Zedƒ\ZZZ	ddd„Z
dS )Ú
ExtensionsÚ
extensionsú"Iterable[Extension[ExtensionType]]r#   rE   c                 C  ó   t |ƒ| _d S r%   )ÚlistÚ_extensions)r7   r[   r-   r-   r.   rI   q   r:   zExtensions.__init__rD   r   úExtension[ExtensionType]c                 C  s.   | D ]}|j |kr|  S qtd|› d�|ƒ‚)NúNo ú extension was found)rD   rU   )r7   rD   Úextr-   r-   r.   Úget_extension_for_oidt   s
   
ÿz Extensions.get_extension_for_oidÚextclassútype[ExtensionTypeVar]úExtension[ExtensionTypeVar]c                 C  sB   |t u rtdƒ‚| D ]}t|j|ƒr|  S q
td|› d�|jƒ‚)Nz|UnrecognizedExtension can't be used with get_extension_for_class because more than one instance of the class may be present.ra   rb   )ÚUnrecognizedExtensionÚ	TypeErrorr&   ÚvaluerU   rD   )r7   re   rc   r-   r-   r.   Úget_extension_for_class}   s   ÿÿÿz"Extensions.get_extension_for_classr_   r1   c                 C  ó   d| j › d�S )Nz<Extensions(ú)>)r_   r6   r-   r-   r.   Ú__repr__‘   r:   zExtensions.__repr__N)r[   r\   r#   rE   )rD   r   r#   r`   )re   rf   r#   rg   ©r#   r1   )rP   rQ   rR   rI   rd   rk   r@   Ú__len__Ú__iter__Ú__getitem__rn   r-   r-   r-   r.   rZ   p   s    


	rZ   c                   @  sR   e Zd ZejZddd„Zdd
d„Zddd„Zddd„Z	e
ddd„ƒZddd„ZdS )Ú	CRLNumberÚ
crl_numberr2   r#   rE   c                 C  ó   t |tƒs	tdƒ‚|| _d S ©Nzcrl_number must be an integer©r&   r2   ri   Ú_crl_number©r7   rt   r-   r-   r.   rI   ˜   ó   

zCRLNumber.__init__ÚotherÚobjectÚboolc                 C  ó   t |tƒstS | j|jkS r%   )r&   rs   ÚNotImplementedrt   ©r7   r{   r-   r-   r.   Ú__eq__ž   ó   
zCRLNumber.__eq__c                 C  ó
   t | jƒS r%   ©Úhashrt   r6   r-   r-   r.   Ú__hash__¤   ó   
zCRLNumber.__hash__r1   c                 C  rl   )Nz<CRLNumber(rm   ©rt   r6   r-   r-   r.   rn   §   r:   zCRLNumber.__repr__c                 C  ó   | j S r%   ©rx   r6   r-   r-   r.   rt   ª   ó   zCRLNumber.crl_numberr$   c                 C  ó
   t  | ¡S r%   ©Ú	rust_x509Zencode_extension_valuer6   r-   r-   r.   r'   ®   r‡   zCRLNumber.public_bytesN©rt   r2   r#   rE   ©r{   r|   r#   r}   r?   ro   rW   )rP   rQ   rR   r   Z
CRL_NUMBERrD   rI   r�   r†   rn   Úpropertyrt   r'   r-   r-   r-   r.   rs   •   ó    



rs   c                   @  sŠ   e Zd ZejZd)d	d
„Zed*dd„ƒZed+dd„ƒZ	d,dd„Z
d-dd„Zd.dd„Zed/dd„ƒZed0d!d"„ƒZed1d#d$„ƒZd2d&d'„Zd(S )3ÚAuthorityKeyIdentifierÚkey_identifierúbytes | NoneÚauthority_cert_issuerúIterable[GeneralName] | NoneÚauthority_cert_serial_numberú
int | Noner#   rE   c                 C  sr   |d u |d u krt dƒ‚|d ur!t|ƒ}tdd„ |D ƒƒs!tdƒ‚|d ur.t|tƒ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)	Ú
ValueErrorr^   Úallri   r&   r2   Ú_key_identifierÚ_authority_cert_issuerÚ_authority_cert_serial_number)r7   r”   r–   r˜   r-   r-   r.   rI   µ   s*   ÿÿÿÿ
ÿ
zAuthorityKeyIdentifier.__init__r"   r   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_keyÚskiÚSubjectKeyIdentifierc                 C  s   | |j d d d�S r¦   ©r+   )r©   r«   r-   r-   r.   Ú"from_issuer_subject_key_identifieræ   s
   ýz9AuthorityKeyIdentifier.from_issuer_subject_key_identifierr1   c                 C  s   d| j ›d| j› d| j› d�S )Nz'<AuthorityKeyIdentifier(key_identifier=z, authority_cert_issuer=z, authority_cert_serial_number=rm   r§   r6   r-   r-   r.   rn   ð   ó   
ÿþÿzAuthorityKeyIdentifier.__repr__r{   r|   r}   c                 C  ó2   t |tƒstS | j|jko| j|jko| j|jkS r%   )r&   r“   r   r”   r–   r˜   r€   r-   r-   r.   r�   ø   s   

ÿÿýzAuthorityKeyIdentifier.__eq__r2   c                 C  s,   | j d u rd }nt| j ƒ}t| j|| jfƒS r%   )r–   Útupler…   r”   r˜   )r7   Zacir-   r-   r.   r†     s   

ÿzAuthorityKeyIdentifier.__hash__c                 C  r‰   r%   )r£   r6   r-   r-   r.   r”     r‹   z%AuthorityKeyIdentifier.key_identifierúlist[GeneralName] | Nonec                 C  r‰   r%   )r¤   r6   r-   r-   r.   r–     ó   z,AuthorityKeyIdentifier.authority_cert_issuerc                 C  r‰   r%   )r¥   r6   r-   r-   r.   r˜     r‹   z3AuthorityKeyIdentifier.authority_cert_serial_numberr$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'     r‡   z#AuthorityKeyIdentifier.public_bytesN)r”   r•   r–   r—   r˜   r™   r#   rE   )r"   r   r#   r“   )r«   r¬   r#   r“   ro   r�   r?   ©r#   r•   ©r#   r²   ©r#   r™   rW   )rP   rQ   rR   r   ZAUTHORITY_KEY_IDENTIFIERrD   rI   Úclassmethodrª   r®   rn   r�   r†   r‘   r”   r–   r˜   r'   r-   r-   r-   r.   r“   ²   s"    
&

	

	r“   c                   @  sn   e Zd ZejZddd„Zedd	d
„ƒZe	ddd„ƒZ
e	ddd„ƒZd dd„Zd!dd„Zd"dd„Zddd„ZdS )#r¬   r+   r$   r#   rE   c                 C  s
   || _ d S r%   ©Z_digest)r7   r+   r-   r-   r.   rI   !  r‡   zSubjectKeyIdentifier.__init__r"   r   c                 C  s   | t |ƒƒS r%   r¨   )r©   r"   r-   r-   r.   Úfrom_public_key$  s   z$SubjectKeyIdentifier.from_public_keyc                 C  r‰   r%   r¸   r6   r-   r-   r.   r+   *  r‹   zSubjectKeyIdentifier.digestc                 C  r‰   r%   r¸   r6   r-   r-   r.   r”   .  r‹   z#SubjectKeyIdentifier.key_identifierr1   c                 C  ó   d| j ›d�S )Nz<SubjectKeyIdentifier(digest=rm   r­   r6   r-   r-   r.   rn   2  r:   zSubjectKeyIdentifier.__repr__r{   r|   r}   c                 C  s   t |tƒstS t | j|j¡S r%   )r&   r¬   r   r   Zbytes_eqr+   r€   r-   r-   r.   r�   5  s   
zSubjectKeyIdentifier.__eq__r2   c                 C  rƒ   r%   )r…   r+   r6   r-   r-   r.   r†   ;  r‡   zSubjectKeyIdentifier.__hash__c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   >  r‡   z!SubjectKeyIdentifier.public_bytesN)r+   r$   r#   rE   )r"   r   r#   r¬   rW   ro   r�   r?   )rP   rQ   rR   r   ZSUBJECT_KEY_IDENTIFIERrD   rI   r·   r¹   r‘   r+   r”   rn   r�   r†   r'   r-   r-   r-   r.   r¬     s    



r¬   c                   @  óR   e Zd ZejZddd„Zedƒ\ZZ	Z
dd	d
„Zddd„Zddd„Zddd„ZdS )ÚAuthorityInformationAccessÚdescriptionsúIterable[AccessDescription]r#   rE   c                 C  ó,   t |ƒ}tdd„ |D ƒƒstdƒ‚|| _d S )Nc                 s  rš   r%   ©r&   ÚAccessDescriptionrœ   r-   r-   r.   rŸ   G  ó   € z6AuthorityInformationAccess.__init__.<locals>.<genexpr>ú@Every item in the descriptions list must be an AccessDescription©r^   r¢   ri   Ú_descriptions©r7   r½   r-   r-   r.   rI   E  ó   ÿ
z#AuthorityInformationAccess.__init__rÅ   r1   c                 C  rl   )Nz<AuthorityInformationAccess(rm   ©rÅ   r6   r-   r-   r.   rn   Q  r:   z#AuthorityInformationAccess.__repr__r{   r|   r}   c                 C  r~   r%   )r&   r¼   r   rÅ   r€   r-   r-   r.   r�   T  r‚   z!AuthorityInformationAccess.__eq__r2   c                 C  ó   t t| jƒƒS r%   ©r…   r±   rÅ   r6   r-   r-   r.   r†   Z  r:   z#AuthorityInformationAccess.__hash__r$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   ]  r‡   z'AuthorityInformationAccess.public_bytesN©r½   r¾   r#   rE   ro   r�   r?   rW   )rP   rQ   rR   r   ZAUTHORITY_INFORMATION_ACCESSrD   rI   r@   rp   rq   rr   rn   r�   r†   r'   r-   r-   r-   r.   r¼   B  ó    




r¼   c                   @  r»   )ÚSubjectInformationAccessr½   r¾   r#   rE   c                 C  r¿   )Nc                 s  rš   r%   rÀ   rœ   r-   r-   r.   rŸ   f  rÂ   z4SubjectInformationAccess.__init__.<locals>.<genexpr>rÃ   rÄ   rÆ   r-   r-   r.   rI   d  rÇ   z!SubjectInformationAccess.__init__rÅ   r1   c                 C  rl   )Nz<SubjectInformationAccess(rm   rÈ   r6   r-   r-   r.   rn   p  r:   z!SubjectInformationAccess.__repr__r{   r|   r}   c                 C  r~   r%   )r&   rÍ   r   rÅ   r€   r-   r-   r.   r�   s  r‚   zSubjectInformationAccess.__eq__r2   c                 C  rÉ   r%   rÊ   r6   r-   r-   r.   r†   y  r:   z!SubjectInformationAccess.__hash__r$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   |  r‡   z%SubjectInformationAccess.public_bytesNrË   ro   r�   r?   rW   )rP   rQ   rR   r   ZSUBJECT_INFORMATION_ACCESSrD   rI   r@   rp   rq   rr   rn   r�   r†   r'   r-   r-   r-   r.   rÍ   a  rÌ   rÍ   c                   @  óP   e Zd Zddd„Zdd
d„Zddd„Zddd„Zeddd„ƒZeddd„ƒZ	dS )rÁ   Úaccess_methodr   Úaccess_locationr   r#   rE   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   ri   r   Ú_access_methodÚ_access_location)r7   rÏ   rÐ   r-   r-   r.   rI   �  s   


zAccessDescription.__init__r1   c                 C  ó   d| j › d| j› d�S )Nz!<AccessDescription(access_method=z, access_location=rm   )rÏ   rÐ   r6   r-   r-   r.   rn   �  ó   
ÿÿzAccessDescription.__repr__r{   r|   r}   c                 C  ó&   t |tƒstS | j|jko| j|jkS r%   )r&   rÁ   r   rÏ   rÐ   r€   r-   r-   r.   r�   “  ó
   

þzAccessDescription.__eq__r2   c                 C  ó   t | j| jfƒS r%   )r…   rÏ   rÐ   r6   r-   r-   r.   r†   œ  ó   zAccessDescription.__hash__c                 C  r‰   r%   )rÑ   r6   r-   r-   r.   rÏ   Ÿ  r‹   zAccessDescription.access_methodc                 C  r‰   r%   )rÒ   r6   r-   r-   r.   rÐ   £  r‹   z!AccessDescription.access_locationN)rÏ   r   rÐ   r   r#   rE   ro   r�   r?   ©r#   r   )r#   r   )
rP   rQ   rR   rI   rn   r�   r†   r‘   rÏ   rÐ   r-   r-   r-   r.   rÁ   €  ó    



	rÁ   c                   @  s`   e Zd ZejZddd„Zedd	d
„ƒZeddd„ƒZ	ddd„Z
ddd„Zd dd„Zd!dd„ZdS )"ÚBasicConstraintsÚcar}   Úpath_lengthr™   r#   rE   c                 C  sX   t |tƒs	tdƒ‚|d ur|stdƒ‚|d ur$t |tƒ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&   r}   ri   r¡   r2   Ú_caÚ_path_length)r7   rÜ   rÝ   r-   r-   r.   rI   «  s   
ÿÿÿ
zBasicConstraints.__init__c                 C  r‰   r%   )rÞ   r6   r-   r-   r.   rÜ   ¼  r‹   zBasicConstraints.cac                 C  r‰   r%   )rß   r6   r-   r-   r.   rÝ   À  r‹   zBasicConstraints.path_lengthr1   c                 C  rÓ   )Nz<BasicConstraints(ca=z, path_length=rm   )rÜ   rÝ   r6   r-   r-   r.   rn   Ä  s   ÿzBasicConstraints.__repr__r{   r|   c                 C  rÕ   r%   )r&   rÛ   r   rÜ   rÝ   r€   r-   r-   r.   r�   É  ó   
zBasicConstraints.__eq__r2   c                 C  r×   r%   )r…   rÜ   rÝ   r6   r-   r-   r.   r†   Ï  rØ   zBasicConstraints.__hash__r$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   Ò  r‡   zBasicConstraints.public_bytesN)rÜ   r}   rÝ   r™   r#   rE   ©r#   r}   r¶   ro   r�   r?   rW   )rP   rQ   rR   r   ZBASIC_CONSTRAINTSrD   rI   r‘   rÜ   rÝ   rn   r�   r†   r'   r-   r-   r-   r.   rÛ   ¨  s    



rÛ   c                   @  sR   e Zd ZejZddd„Zeddd„ƒZddd„Z	ddd„Z
ddd„Zddd„ZdS )ÚDeltaCRLIndicatorrt   r2   r#   rE   c                 C  ru   rv   rw   ry   r-   r-   r.   rI   Ù  rz   zDeltaCRLIndicator.__init__c                 C  r‰   r%   rŠ   r6   r-   r-   r.   rt   ß  r‹   zDeltaCRLIndicator.crl_numberr{   r|   r}   c                 C  r~   r%   )r&   râ   r   rt   r€   r-   r-   r.   r�   ã  r‚   zDeltaCRLIndicator.__eq__c                 C  rƒ   r%   r„   r6   r-   r-   r.   r†   é  r‡   zDeltaCRLIndicator.__hash__r1   c                 C  rl   )Nz<DeltaCRLIndicator(crl_number=rm   rˆ   r6   r-   r-   r.   rn   ì  r:   zDeltaCRLIndicator.__repr__r$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   ï  r‡   zDeltaCRLIndicator.public_bytesNr�   r?   r�   ro   rW   )rP   rQ   rR   r   ZDELTA_CRL_INDICATORrD   rI   r‘   rt   r�   r†   rn   r'   r-   r-   r-   r.   râ   Ö  s    



râ   c                   @  r»   )ÚCRLDistributionPointsÚdistribution_pointsúIterable[DistributionPoint]r#   rE   c                 C  r¿   )Nc                 s  rš   r%   ©r&   ÚDistributionPointrœ   r-   r-   r.   rŸ   ú  r    z1CRLDistributionPoints.__init__.<locals>.<genexpr>ú?distribution_points must be a list of DistributionPoint objects©r^   r¢   ri   Ú_distribution_points©r7   rä   r-   r-   r.   rI   ö  ó   ÿÿ
zCRLDistributionPoints.__init__rê   r1   c                 C  rl   )Nz<CRLDistributionPoints(rm   ©rê   r6   r-   r-   r.   rn     r:   zCRLDistributionPoints.__repr__r{   r|   r}   c                 C  r~   r%   )r&   rã   r   rê   r€   r-   r-   r.   r�     r‚   zCRLDistributionPoints.__eq__r2   c                 C  rÉ   r%   ©r…   r±   rê   r6   r-   r-   r.   r†     r:   zCRLDistributionPoints.__hash__r$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'     r‡   z"CRLDistributionPoints.public_bytesN©rä   rå   r#   rE   ro   r�   r?   rW   )rP   rQ   rR   r   ZCRL_DISTRIBUTION_POINTSrD   rI   r@   rp   rq   rr   rn   r�   r†   r'   r-   r-   r-   r.   rã   ó  ó    

ÿ


rã   c                   @  r»   )ÚFreshestCRLrä   rå   r#   rE   c                 C  r¿   )Nc                 s  rš   r%   ræ   rœ   r-   r-   r.   rŸ     r    z'FreshestCRL.__init__.<locals>.<genexpr>rè   ré   rë   r-   r-   r.   rI     rì   zFreshestCRL.__init__rê   r1   c                 C  rl   )Nz<FreshestCRL(rm   rí   r6   r-   r-   r.   rn   -  r:   zFreshestCRL.__repr__r{   r|   r}   c                 C  r~   r%   )r&   rñ   r   rê   r€   r-   r-   r.   r�   0  r‚   zFreshestCRL.__eq__r2   c                 C  rÉ   r%   rî   r6   r-   r-   r.   r†   6  r:   zFreshestCRL.__hash__r$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   9  r‡   zFreshestCRL.public_bytesNrï   ro   r�   r?   rW   )rP   rQ   rR   r   ZFRESHEST_CRLrD   rI   r@   rp   rq   rr   rn   r�   r†   r'   r-   r-   r-   r.   rñ     rð   rñ   c                   @  sl   e Zd Zd!d
d„Zd"dd„Zd#dd„Zd$dd„Zed%dd„ƒZed&dd„ƒZ	ed'dd„ƒZ
ed%dd„ƒZd S )(rç   Ú	full_namer—   Úrelative_nameú RelativeDistinguishedName | NoneÚreasonsúfrozenset[ReasonFlags] | NoneÚ
crl_issuerr#   rE   c                 C  sò   |r|rt dƒ‚|s|s|st dƒ‚|d ur't|ƒ}tdd„ |D ƒƒs'tdƒ‚|r2t|tƒs2tdƒ‚|d urGt|ƒ}tdd„ |D ƒƒsGtdƒ‚|r[t|tƒrWtd	d„ |D ƒƒs[td
ƒ‚|rktj|v sgtj	|v rkt dƒ‚|| _
|| _|| _|| _d S )NzOYou cannot provide both full_name and relative_name, at least one must be None.z?Either full_name, relative_name or crl_issuer must be provided.c                 s  rš   r%   r›   rœ   r-   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  rš   r%   r›   rœ   r-   r-   r.   rŸ   _  rÂ   z2crl_issuer must be None or a list of general namesc                 s  rš   r%   ©r&   ÚReasonFlagsrœ   r-   r-   r.   rŸ   f  rÂ   z0reasons must be None or frozenset of ReasonFlagszLunspecified and remove_from_crl are not valid reasons in a DistributionPoint)r¡   r^   r¢   ri   r&   r   Ú	frozensetrù   ÚunspecifiedÚremove_from_crlÚ
_full_nameÚ_relative_nameÚ_reasonsÚ_crl_issuer)r7   rò   ró   rõ   r÷   r-   r-   r.   rI   >  sV   ÿÿÿ
ÿÿÿþÿþÿ
zDistributionPoint.__init__r1   c                 C  ó
   d  | ¡S )Nz}<DistributionPoint(full_name={0.full_name}, relative_name={0.relative_name}, reasons={0.reasons}, crl_issuer={0.crl_issuer})>©Úformatr6   r-   r-   r.   rn   x  ó   ýzDistributionPoint.__repr__r{   r|   r}   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ç   r   rò   ró   rõ   r÷   r€   r-   r-   r.   r�     s   

ÿ
þ
üzDistributionPoint.__eq__r2   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÷   r…   ró   rõ   )r7   Úfnr÷   r-   r-   r.   r†   Š  s   

zDistributionPoint.__hash__r²   c                 C  r‰   r%   ©rý   r6   r-   r-   r.   rò   —  r‹   zDistributionPoint.full_namec                 C  r‰   r%   ©rþ   r6   r-   r-   r.   ró   ›  r‹   zDistributionPoint.relative_namec                 C  r‰   r%   )rÿ   r6   r-   r-   r.   rõ   Ÿ  r‹   zDistributionPoint.reasonsc                 C  r‰   r%   )r   r6   r-   r-   r.   r÷   £  r‹   zDistributionPoint.crl_issuerN)
rò   r—   ró   rô   rõ   rö   r÷   r—   r#   rE   ro   r�   r?   rµ   ©r#   rô   ©r#   rö   )rP   rQ   rR   rI   rn   r�   r†   r‘   rò   ró   rõ   r÷   r-   r-   r-   r.   rç   =  s    

:

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)rP   rQ   rR   rû   Úkey_compromiseÚca_compromiseÚaffiliation_changedr
  Úcessation_of_operationÚcertificate_holdÚprivilege_withdrawnÚaa_compromiserü   r-   r-   r-   r.   rù   ¨  s    rù   )é   é   é   é   é   é   é   é   r  r  r  r  r  r  r  r  é	   é
   c                   @  s`   e Zd ZejZddd„Zdd	d
„Zddd„Zddd„Z	e
ddd„ƒZe
ddd„ƒZd dd„ZdS )!ÚPolicyConstraintsÚrequire_explicit_policyr™   Úinhibit_policy_mappingr#   rE   c                 C  s\   |d urt |tƒstdƒ‚|d urt |tƒ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&   r2   ri   r¡   Ú_require_explicit_policyÚ_inhibit_policy_mapping)r7   r  r  r-   r-   r.   rI   ô  s$   
ÿÿ
ÿÿÿ
zPolicyConstraints.__init__r1   c                 C  r  )Nz{<PolicyConstraints(require_explicit_policy={0.require_explicit_policy}, inhibit_policy_mapping={0.inhibit_policy_mapping})>r  r6   r-   r-   r.   rn     r  zPolicyConstraints.__repr__r{   r|   r}   c                 C  rÕ   r%   )r&   r  r   r  r  r€   r-   r-   r.   r�     rÖ   zPolicyConstraints.__eq__r2   c                 C  r×   r%   )r…   r  r  r6   r-   r-   r.   r†   !  s   
ÿzPolicyConstraints.__hash__c                 C  r‰   r%   )r  r6   r-   r-   r.   r  &  r‹   z)PolicyConstraints.require_explicit_policyc                 C  r‰   r%   )r   r6   r-   r-   r.   r  *  r‹   z(PolicyConstraints.inhibit_policy_mappingr$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   .  r‡   zPolicyConstraints.public_bytesN)r  r™   r  r™   r#   rE   ro   r�   r?   r¶   rW   )rP   rQ   rR   r   ZPOLICY_CONSTRAINTSrD   rI   rn   r�   r†   r‘   r  r  r'   r-   r-   r-   r.   r  ñ  s    



	r  c                   @  r»   )ÚCertificatePoliciesÚpoliciesúIterable[PolicyInformation]r#   rE   c                 C  r¿   )Nc                 s  rš   r%   )r&   ÚPolicyInformationrœ   r-   r-   r.   rŸ   7  rÂ   z/CertificatePolicies.__init__.<locals>.<genexpr>z;Every item in the policies list must be a PolicyInformation)r^   r¢   ri   Ú	_policies)r7   r"  r-   r-   r.   rI   5  ó   ÿ
zCertificatePolicies.__init__r%  r1   c                 C  rl   )Nz<CertificatePolicies(rm   )r%  r6   r-   r-   r.   rn   @  r:   zCertificatePolicies.__repr__r{   r|   r}   c                 C  r~   r%   )r&   r!  r   r%  r€   r-   r-   r.   r�   C  r‚   zCertificatePolicies.__eq__r2   c                 C  rÉ   r%   )r…   r±   r%  r6   r-   r-   r.   r†   I  r:   zCertificatePolicies.__hash__r$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   L  r‡   z CertificatePolicies.public_bytesN)r"  r#  r#   rE   ro   r�   r?   rW   )rP   rQ   rR   r   ZCERTIFICATE_POLICIESrD   rI   r@   rp   rq   rr   rn   r�   r†   r'   r-   r-   r-   r.   r!  2  ó    
	


r!  c                   @  óP   e Zd Zddd„Zdd
d„Zddd„Zddd„Zeddd„ƒZeddd„ƒZ	dS ) r$  Úpolicy_identifierr   Úpolicy_qualifiersú!Iterable[str | UserNotice] | Noner#   rE   c                 C  sL   t |tƒs	tdƒ‚|| _|d ur!t|ƒ}tdd„ |D ƒƒs!tdƒ‚|| _d S )Nz-policy_identifier must be an ObjectIdentifierc                 s  s   � | ]
}t |ttfƒV  qd S r%   )r&   r1   Ú
UserNoticerœ   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   ri   Ú_policy_identifierr^   r¢   Ú_policy_qualifiers)r7   r)  r*  r-   r-   r.   rI   Q  s   
ÿÿ
zPolicyInformation.__init__r1   c                 C  rÓ   )Nz%<PolicyInformation(policy_identifier=z, policy_qualifiers=rm   )r)  r*  r6   r-   r-   r.   rn   g  rÔ   zPolicyInformation.__repr__r{   r|   r}   c                 C  rÕ   r%   )r&   r$  r   r)  r*  r€   r-   r-   r.   r�   m  rÖ   zPolicyInformation.__eq__r2   c                 C  s(   | j d urt| j ƒ}nd }t| j|fƒS r%   )r*  r±   r…   r)  )r7   Zpqr-   r-   r.   r†   v  s   
zPolicyInformation.__hash__c                 C  r‰   r%   )r-  r6   r-   r-   r.   r)  ~  r‹   z#PolicyInformation.policy_identifierúlist[str | UserNotice] | Nonec                 C  r‰   r%   )r.  r6   r-   r-   r.   r*  ‚  r³   z#PolicyInformation.policy_qualifiersN)r)  r   r*  r+  r#   rE   ro   r�   r?   rÙ   )r#   r/  )
rP   rQ   rR   rI   rn   r�   r†   r‘   r)  r*  r-   r-   r-   r.   r$  P  s    



	r$  c                   @  rÎ   )r,  Únotice_referenceúNoticeReference | NoneÚexplicit_textú
str | Noner#   rE   c                 C  s&   |rt |tƒstdƒ‚|| _|| _d S )Nz2notice_reference must be None or a NoticeReference)r&   ÚNoticeReferenceri   Ú_notice_referenceÚ_explicit_text)r7   r0  r2  r-   r-   r.   rI   Š  s   ÿÿ
zUserNotice.__init__r1   c                 C  ó   d| j › d| j›d�S )Nz<UserNotice(notice_reference=z, explicit_text=rm   )r0  r2  r6   r-   r-   r.   rn   ™  rÔ   zUserNotice.__repr__r{   r|   r}   c                 C  rÕ   r%   )r&   r,  r   r0  r2  r€   r-   r-   r.   r�   Ÿ  rÖ   zUserNotice.__eq__r2   c                 C  r×   r%   )r…   r0  r2  r6   r-   r-   r.   r†   ¨  rØ   zUserNotice.__hash__c                 C  r‰   r%   )r5  r6   r-   r-   r.   r0  «  r‹   zUserNotice.notice_referencec                 C  r‰   r%   )r6  r6   r-   r-   r.   r2  ¯  r‹   zUserNotice.explicit_textN)r0  r1  r2  r3  r#   rE   ro   r�   r?   )r#   r1  ©r#   r3  )
rP   rQ   rR   rI   rn   r�   r†   r‘   r0  r2  r-   r-   r-   r.   r,  ‰  s    



	r,  c                   @  r(  ) r4  Úorganizationr3  Únotice_numbersúIterable[int]r#   rE   c                 C  s2   || _ t|ƒ}tdd„ |D ƒƒstdƒ‚|| _d S )Nc                 s  rš   r%   )r&   r2   rœ   r-   r-   r.   rŸ   ¼  rÂ   z+NoticeReference.__init__.<locals>.<genexpr>z)notice_numbers must be a list of integers)Ú_organizationr^   r¢   ri   Ú_notice_numbers)r7   r9  r:  r-   r-   r.   rI   µ  s
   
zNoticeReference.__init__r1   c                 C  s   d| j ›d| j› d�S )Nz<NoticeReference(organization=z, notice_numbers=rm   )r9  r:  r6   r-   r-   r.   rn   Á  rÔ   zNoticeReference.__repr__r{   r|   r}   c                 C  rÕ   r%   )r&   r4  r   r9  r:  r€   r-   r-   r.   r�   Ç  rÖ   zNoticeReference.__eq__r2   c                 C  ó   t | jt| jƒfƒS r%   )r…   r9  r±   r:  r6   r-   r-   r.   r†   Ð  ó   zNoticeReference.__hash__c                 C  r‰   r%   )r<  r6   r-   r-   r.   r9  Ó  r‹   zNoticeReference.organizationú	list[int]c                 C  r‰   r%   )r=  r6   r-   r-   r.   r:  ×  r‹   zNoticeReference.notice_numbersN)r9  r3  r:  r;  r#   rE   ro   r�   r?   r8  )r#   r@  )
rP   rQ   rR   rI   rn   r�   r†   r‘   r9  r:  r-   r-   r-   r.   r4  ´  rÚ   r4  c                   @  r»   )ÚExtendedKeyUsageÚusagesúIterable[ObjectIdentifier]r#   rE   c                 C  r¿   )Nc                 s  rš   r%   ©r&   r   rœ   r-   r-   r.   rŸ   á  rÂ   z,ExtendedKeyUsage.__init__.<locals>.<genexpr>z9Every item in the usages list must be an ObjectIdentifier)r^   r¢   ri   Ú_usages)r7   rB  r-   r-   r.   rI   ß  r&  zExtendedKeyUsage.__init__rE  r1   c                 C  rl   )Nz<ExtendedKeyUsage(rm   )rE  r6   r-   r-   r.   rn   ê  r:   zExtendedKeyUsage.__repr__r{   r|   r}   c                 C  r~   r%   )r&   rA  r   rE  r€   r-   r-   r.   r�   í  r‚   zExtendedKeyUsage.__eq__r2   c                 C  rÉ   r%   )r…   r±   rE  r6   r-   r-   r.   r†   ó  r:   zExtendedKeyUsage.__hash__r$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   ö  r‡   zExtendedKeyUsage.public_bytesN)rB  rC  r#   rE   ro   r�   r?   rW   )rP   rQ   rR   r   ZEXTENDED_KEY_USAGErD   rI   r@   rp   rq   rr   rn   r�   r†   r'   r-   r-   r-   r.   rA  Ü  r'  rA  c                   @  ó:   e Zd ZejZddd„Zddd	„Zddd„Zddd„Z	dS )ÚOCSPNoCheckr{   r|   r#   r}   c                 C  ó   t |tƒstS dS ©NT)r&   rG  r   r€   r-   r-   r.   r�   ý  ó   
zOCSPNoCheck.__eq__r2   c                 C  ó   t tƒS r%   )r…   rG  r6   r-   r-   r.   r†     ó   zOCSPNoCheck.__hash__r1   c                 C  ó   dS )Nz<OCSPNoCheck()>r-   r6   r-   r-   r.   rn     ó   zOCSPNoCheck.__repr__r$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   	  r‡   zOCSPNoCheck.public_bytesNr�   r?   ro   rW   )
rP   rQ   rR   r   ZOCSP_NO_CHECKrD   r�   r†   rn   r'   r-   r-   r-   r.   rG  ú  ó    


rG  c                   @  rF  )ÚPrecertPoisonr{   r|   r#   r}   c                 C  rH  rI  )r&   rP  r   r€   r-   r-   r.   r�     rJ  zPrecertPoison.__eq__r2   c                 C  rK  r%   )r…   rP  r6   r-   r-   r.   r†     rL  zPrecertPoison.__hash__r1   c                 C  rM  )Nz<PrecertPoison()>r-   r6   r-   r-   r.   rn     rN  zPrecertPoison.__repr__r$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'     r‡   zPrecertPoison.public_bytesNr�   r?   ro   rW   )
rP   rQ   rR   r   ZPRECERT_POISONrD   r�   r†   rn   r'   r-   r-   r-   r.   rP    rO  rP  c                   @  r»   )Ú
TLSFeatureÚfeaturesúIterable[TLSFeatureType]r#   rE   c                 C  s8   t |ƒ}tdd„ |D ƒƒrt|ƒdkrtdƒ‚|| _d S )Nc                 s  rš   r%   )r&   ÚTLSFeatureTyperœ   r-   r-   r.   rŸ   &  rÂ   z&TLSFeature.__init__.<locals>.<genexpr>r   z@features must be a list of elements from the TLSFeatureType enum)r^   r¢   r4   ri   Ú	_features)r7   rR  r-   r-   r.   rI   #  s   ÿ
þÿ
zTLSFeature.__init__rU  r1   c                 C  rl   )Nz<TLSFeature(features=rm   )rU  r6   r-   r-   r.   rn   2  r:   zTLSFeature.__repr__r{   r|   r}   c                 C  r~   r%   )r&   rQ  r   rU  r€   r-   r-   r.   r�   5  r‚   zTLSFeature.__eq__r2   c                 C  rÉ   r%   )r…   r±   rU  r6   r-   r-   r.   r†   ;  r:   zTLSFeature.__hash__r$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   >  r‡   zTLSFeature.public_bytesN)rR  rS  r#   rE   ro   r�   r?   rW   )rP   rQ   rR   r   ZTLS_FEATURErD   rI   r@   rp   rq   rr   rn   r�   r†   r'   r-   r-   r-   r.   rQ     s    



rQ  c                   @  s   e Zd ZdZdZdS )rT  r  é   N)rP   rQ   rR   Zstatus_requestZstatus_request_v2r-   r-   r-   r.   rT  B  s    rT  c                 C  s   i | ]}|j |“qS r-   ©rj   rœ   r-   r-   r.   Ú
<dictcomp>M  ó    rX  c                   @  sR   e Zd ZejZddd„Zddd	„Zddd„Zddd„Z	e
ddd„ƒZddd„ZdS )ÚInhibitAnyPolicyÚ
skip_certsr2   r#   rE   c                 C  s,   t |tƒ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&   r2   ri   r¡   Ú_skip_certs)r7   r[  r-   r-   r.   rI   S  s
   

zInhibitAnyPolicy.__init__r1   c                 C  rl   )Nz<InhibitAnyPolicy(skip_certs=rm   )r[  r6   r-   r-   r.   rn   \  r:   zInhibitAnyPolicy.__repr__r{   r|   r}   c                 C  r~   r%   )r&   rZ  r   r[  r€   r-   r-   r.   r�   _  r‚   zInhibitAnyPolicy.__eq__c                 C  rƒ   r%   )r…   r[  r6   r-   r-   r.   r†   e  r‡   zInhibitAnyPolicy.__hash__c                 C  r‰   r%   )r\  r6   r-   r-   r.   r[  h  r‹   zInhibitAnyPolicy.skip_certsr$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   l  r‡   zInhibitAnyPolicy.public_bytesN)r[  r2   r#   rE   ro   r�   r?   rW   )rP   rQ   rR   r   ZINHIBIT_ANY_POLICYrD   rI   rn   r�   r†   r‘   r[  r'   r-   r-   r-   r.   rZ  P  s    

	

rZ  c                   @  sÂ   e Zd ZejZd/dd„Zed0dd„ƒZed0dd„ƒZ	ed0dd„ƒZ
ed0dd„ƒZed0dd„ƒZed0dd„ƒZed0dd„ƒZed0dd„ƒZed0dd „ƒZd1d"d#„Zd2d&d'„Zd3d)d*„Zd4d,d-„Zd.S )5ÚKeyUsageÚdigital_signaturer}   Úcontent_commitmentÚkey_enciphermentÚdata_enciphermentÚkey_agreementÚkey_cert_signÚcrl_signÚencipher_onlyÚdecipher_onlyr#   rE   c
           
      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)
r7   r^  r_  r`  ra  rb  rc  rd  re  rf  r-   r-   r.   rI   s  s   ÿ
zKeyUsage.__init__c                 C  r‰   r%   )rg  r6   r-   r-   r.   r^  �  r‹   zKeyUsage.digital_signaturec                 C  r‰   r%   )rh  r6   r-   r-   r.   r_  “  r‹   zKeyUsage.content_commitmentc                 C  r‰   r%   )ri  r6   r-   r-   r.   r`  —  r‹   zKeyUsage.key_enciphermentc                 C  r‰   r%   )rj  r6   r-   r-   r.   ra  ›  r‹   zKeyUsage.data_enciphermentc                 C  r‰   r%   )rk  r6   r-   r-   r.   rb  Ÿ  r‹   zKeyUsage.key_agreementc                 C  r‰   r%   )rl  r6   r-   r-   r.   rc  £  r‹   zKeyUsage.key_cert_signc                 C  r‰   r%   )rm  r6   r-   r-   r.   rd  §  r‹   zKeyUsage.crl_signc                 C  ó   | j stdƒ‚| jS )Nz7encipher_only is undefined unless key_agreement is true)rb  r¡   rn  r6   r-   r-   r.   re  «  ó
   ÿzKeyUsage.encipher_onlyc                 C  rp  )Nz7decipher_only is undefined unless key_agreement is true)rb  r¡   ro  r6   r-   r-   r.   rf  ´  rq  zKeyUsage.decipher_onlyr1   c                 C  sv   z| j }| j}W n ty   d}d}Y nw d| j› d| j› d| j› d| j› d| j› d| j› d| j	› d	|› d
|› d�S )NFz<KeyUsage(digital_signature=z, content_commitment=z, key_encipherment=z, data_encipherment=z, key_agreement=z, key_cert_sign=z, crl_sign=z, encipher_only=z, decipher_only=rm   )
re  rf  r¡   r^  r_  r`  ra  rb  rc  rd  )r7   re  rf  r-   r-   r.   rn   ½  s2   
û
ÿþýüûûúúÿzKeyUsage.__repr__r{   r|   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]  r   r^  r_  r`  ra  rb  rc  rd  rn  ro  r€   r-   r-   r.   r�   Ò  s&   

ÿ
þ
ý
ü
û
ú
ù
÷zKeyUsage.__eq__r2   c              
   C  s,   t | j| j| j| j| j| j| j| j| j	f	ƒS r%   )
r…   r^  r_  r`  ra  rb  rc  rd  rn  ro  r6   r-   r-   r.   r†   â  s   ÷ÿzKeyUsage.__hash__r$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   ñ  r‡   zKeyUsage.public_bytesN)r^  r}   r_  r}   r`  r}   ra  r}   rb  r}   rc  r}   rd  r}   re  r}   rf  r}   r#   rE   rá   ro   r�   r?   rW   )rP   rQ   rR   r   Z	KEY_USAGErD   rI   r‘   r^  r_  r`  ra  rb  rc  rd  re  rf  rn   r�   r†   r'   r-   r-   r-   r.   r]  p  s2    



r]  c                   @  s`   e Zd ZejZddd„Zeddd	„ƒZedd
d„ƒZ	ddd„Z
ddd„Zddd„Zd dd„ZdS )!ÚPrivateKeyUsagePeriodÚ
not_beforeúdatetime.datetime | NoneÚ	not_afterr#   rE   c                 C  s€   t |tjƒs|d urtdƒ‚t |tjƒs|d urtdƒ‚|d u r(|d u r(tdƒ‚|d ur8|d ur8||kr8tdƒ‚|| _|| _d S )Nz.not_before must be a datetime.datetime or Nonez-not_after must be a datetime.datetime or Nonez9At least one of not_before and not_after must not be Nonez#not_before must be before not_after)r&   Údatetimeri   r¡   Ú_not_beforeÚ
_not_after)r7   rs  ru  r-   r-   r.   rI   ø  s.   
ÿþ
ÿþÿÿþý
zPrivateKeyUsagePeriod.__init__c                 C  r‰   r%   )rw  r6   r-   r-   r.   rs    r‹   z PrivateKeyUsagePeriod.not_beforec                 C  r‰   r%   )rx  r6   r-   r-   r.   ru    r‹   zPrivateKeyUsagePeriod.not_afterr1   c                 C  rÓ   )Nz"<PrivateKeyUsagePeriod(not_before=z, not_after=rm   )rs  ru  r6   r-   r-   r.   rn      rÔ   zPrivateKeyUsagePeriod.__repr__r{   r|   r}   c                 C  rÕ   r%   )r&   rr  r   rs  ru  r€   r-   r-   r.   r�   &  rÖ   zPrivateKeyUsagePeriod.__eq__r2   c                 C  r×   r%   )r…   rs  ru  r6   r-   r-   r.   r†   /  rØ   zPrivateKeyUsagePeriod.__hash__r$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   2  r‡   z"PrivateKeyUsagePeriod.public_bytesN)rs  rt  ru  rt  r#   rE   )r#   rt  ro   r�   r?   rW   )rP   rQ   rR   r   ZPRIVATE_KEY_USAGE_PERIODrD   rI   r‘   rs  ru  rn   r�   r†   r'   r-   r-   r-   r.   rr  õ  s    
 


	rr  c                   @  s~   e Zd ZejZd$dd„Zd%dd„Zd&dd„Zd&dd„Z	d&dd„Z
d'dd„Zd(dd„Zed)dd„ƒZed)dd„ƒZd*d!d"„Zd#S )+ÚNameConstraintsÚpermitted_subtreesr—   Úexcluded_subtreesr#   rE   c                 C  s¨   |d ur t |ƒ}|stdƒ‚tdd„ |D ƒƒstdƒ‚|  |¡ |d ur@t |ƒ}|s.tdƒ‚tdd„ |D ƒƒs;tdƒ‚|  |¡ |d u rL|d u rLtdƒ‚|| _|| _d S )	Nz3permitted_subtrees must be a non-empty list or Nonec                 s  rš   r%   r›   rœ   r-   r-   r.   rŸ   D  rÂ   z+NameConstraints.__init__.<locals>.<genexpr>z@permitted_subtrees must be a list of GeneralName objects or Nonez2excluded_subtrees must be a non-empty list or Nonec                 s  rš   r%   r›   rœ   r-   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¡   r¢   ri   Ú_validate_treeÚ_permitted_subtreesÚ_excluded_subtrees)r7   rz  r{  r-   r-   r.   rI   9  s8   ÿÿ
ÿÿ
ÿ
zNameConstraints.__init__r{   r|   r}   c                 C  rÕ   r%   )r&   ry  r   r{  rz  r€   r-   r-   r.   r�   c  rÖ   zNameConstraints.__eq__ÚtreeúIterable[GeneralName]c                 C  s   |   |¡ |  |¡ d S r%   )Ú_validate_ip_nameÚ_validate_dns_name©r7   r  r-   r-   r.   r|  l  s   
zNameConstraints._validate_treec                 C  ó   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   rj   Ú	ipaddressÚIPv4NetworkÚIPv6Network©r�   Únamer-   r-   r.   rŸ   q  s   € 
üÿ
þz4NameConstraints._validate_ip_name.<locals>.<genexpr>zGIPAddress name constraints must be an IPv4Network or IPv6Network object)Úanyri   rƒ  r-   r-   r.   r�  p  s   ûÿùz!NameConstraints._validate_ip_namec                 C  r„  )Nc                 s  s$   � | ]}t |tƒod |jv V  qdS )Ú*N)r&   r   rj   rˆ  r-   r-   r.   rŸ   ~  s   € 
ÿz5NameConstraints._validate_dns_name.<locals>.<genexpr>zDDNSName name constraints must not contain the '*' wildcard character)rŠ  r¡   rƒ  r-   r-   r.   r‚  }  s   ÿÿýz"NameConstraints._validate_dns_namer1   c                 C  rÓ   )Nz$<NameConstraints(permitted_subtrees=z, excluded_subtrees=rm   )rz  r{  r6   r-   r-   r.   rn   †  rÔ   zNameConstraints.__repr__r2   c                 C  s@   | j d urt| j ƒ}nd }| jd urt| jƒ}nd }t||fƒS r%   )rz  r±   r{  r…   )r7   ZpsÚesr-   r-   r.   r†   Œ  s   

zNameConstraints.__hash__r²   c                 C  r‰   r%   )r}  r6   r-   r-   r.   rz  ™  r³   z"NameConstraints.permitted_subtreesc                 C  r‰   r%   )r~  r6   r-   r-   r.   r{  Ÿ  r³   z!NameConstraints.excluded_subtreesr$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   ¥  r‡   zNameConstraints.public_bytesN)rz  r—   r{  r—   r#   rE   r�   )r  r€  r#   rE   ro   r?   rµ   rW   )rP   rQ   rR   r   ZNAME_CONSTRAINTSrD   rI   r�   r|  r�  r‚  rn   r†   r‘   rz  r{  r'   r-   r-   r-   r.   ry  6  s    

*
	


	
ry  c                   @  s^   e Zd Zdd	d
„Zeddd„ƒZeddd„ƒZeddd„ƒZd dd„Zd!dd„Z	d"dd„Z
dS )#Ú	ExtensionrD   r   Úcriticalr}   rj   r   r#   rE   c                 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   ri   r}   Ú_oidÚ	_criticalÚ_value)r7   rD   rŽ  rj   r-   r-   r.   rI   ª  s   
ÿ

zExtension.__init__c                 C  r‰   r%   ©r�  r6   r-   r-   r.   rD   ¹  r‹   zExtension.oidc                 C  r‰   r%   )r�  r6   r-   r-   r.   rŽ  ½  r‹   zExtension.criticalc                 C  r‰   r%   ©r‘  r6   r-   r-   r.   rj   Á  r‹   zExtension.valuer1   c                 C  ó   d| j › d| j› d| j› d�S )Nz<Extension(oid=z, critical=ú, value=rm   )rD   rŽ  rj   r6   r-   r-   r.   rn   Å  s   ÿÿzExtension.__repr__r{   r|   c                 C  r°   r%   )r&   r�  r   rD   rŽ  rj   r€   r-   r-   r.   r�   Ë  ó   

ÿ
ýzExtension.__eq__r2   c                 C  ó   t | j| j| jfƒS r%   )r…   rD   rŽ  rj   r6   r-   r-   r.   r†   Õ  r?  zExtension.__hash__N)rD   r   rŽ  r}   rj   r   r#   rE   rÙ   rá   )r#   r   ro   r�   r?   )rP   rQ   rR   rI   r‘   rD   rŽ  rj   rn   r�   r†   r-   r-   r-   r.   r�  ©  s    



r�  c                   @  sœ   e Zd Zd(dd„Zedƒ\ZZZej	d)dd„ƒZ
ej	d*dd„ƒZ
ej	d+dd„ƒZ
ej	d,dd„ƒZ
ej	d-dd„ƒZ
d.dd„Z
d/dd„Zd0d"d#„Zd1d%d&„Zd'S )2ÚGeneralNamesÚgeneral_namesr€  r#   rE   c                 C  r¿   )Nc                 s  rš   r%   r›   rœ   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¢   ri   Ú_general_names©r7   r™  r-   r-   r.   rI   Ú  rÇ   zGeneralNames.__init__rš  ÚtypeúBtype[DNSName] | type[UniformResourceIdentifier] | type[RFC822Name]ú	list[str]c                 C  ó   d S r%   r-   ©r7   rœ  r-   r-   r.   Úget_values_for_typeæ  ó   z GeneralNames.get_values_for_typeútype[DirectoryName]ú
list[Name]c                 C  rŸ  r%   r-   r   r-   r-   r.   r¡  î  ó   útype[RegisteredID]úlist[ObjectIdentifier]c                 C  rŸ  r%   r-   r   r-   r-   r.   r¡  ô  r¥  útype[IPAddress]úlist[_IPAddressTypes]c                 C  rŸ  r%   r-   r   r-   r-   r.   r¡  ú  ó   útype[OtherName]úlist[OtherName]c                 C  rŸ  r%   r-   r   r-   r-   r.   r¡  ÿ  rª  ú‘type[DNSName] | type[DirectoryName] | type[IPAddress] | type[OtherName] | type[RFC822Name] | type[RegisteredID] | type[UniformResourceIdentifier]úYlist[_IPAddressTypes] | list[str] | list[OtherName] | list[Name] | list[ObjectIdentifier]c                   s0   ‡ fdd„| D ƒ}ˆ t krdd„ |D ƒS t|ƒS )Nc                 3  s   � | ]
}t |ˆ ƒr|V  qd S r%   )r&   ©r�   Úi©rœ  r-   r.   rŸ     s   € z3GeneralNames.get_values_for_type.<locals>.<genexpr>c                 S  s   g | ]}|j ‘qS r-   rW  r¯  r-   r-   r.   Ú
<listcomp>  s    z4GeneralNames.get_values_for_type.<locals>.<listcomp>)r   r^   )r7   rœ  Úobjsr-   r±  r.   r¡    s   r1   c                 C  rl   )Nz<GeneralNames(rm   ©rš  r6   r-   r-   r.   rn     r:   zGeneralNames.__repr__r{   r|   r}   c                 C  r~   r%   )r&   r˜  r   rš  r€   r-   r-   r.   r�     r‚   zGeneralNames.__eq__r2   c                 C  rÉ   r%   )r…   r±   rš  r6   r-   r-   r.   r†   %  r:   zGeneralNames.__hash__N©r™  r€  r#   rE   ©rœ  r�  r#   rž  ©rœ  r£  r#   r¤  ©rœ  r¦  r#   r§  ©rœ  r¨  r#   r©  ©rœ  r«  r#   r¬  ©rœ  r­  r#   r®  ro   r�   r?   )rP   rQ   rR   rI   r@   rp   rq   rr   ÚtypingÚoverloadr¡  rn   r�   r†   r-   r-   r-   r.   r˜  Ù  s"    




r˜  c                   @  ó¬   e Zd ZejZd+dd„Zedƒ\ZZ	Z
ejd,dd„ƒZejd-dd„ƒZejd.dd„ƒZejd/dd„ƒZejd0dd„ƒZd1dd„Zd2dd„Zd3d"d#„Zd4d%d&„Zd5d(d)„Zd*S )6ÚSubjectAlternativeNamer™  r€  r#   rE   c                 C  r]   r%   ©r˜  rš  r›  r-   r-   r.   rI   ,  r:   zSubjectAlternativeName.__init__rš  rœ  r�  rž  c                 C  rŸ  r%   r-   r   r-   r-   r.   r¡  1  r¢  z*SubjectAlternativeName.get_values_for_typer£  r¤  c                 C  rŸ  r%   r-   r   r-   r-   r.   r¡  9  r¥  r¦  r§  c                 C  rŸ  r%   r-   r   r-   r-   r.   r¡  ?  r¥  r¨  r©  c                 C  rŸ  r%   r-   r   r-   r-   r.   r¡  E  rª  r«  r¬  c                 C  rŸ  r%   r-   r   r-   r-   r.   r¡  J  rª  r­  r®  c                 C  ó   | j  |¡S r%   ©rš  r¡  r   r-   r-   r.   r¡  O  ó   r1   c                 C  rl   )Nz<SubjectAlternativeName(rm   r´  r6   r-   r-   r.   rn   a  r:   zSubjectAlternativeName.__repr__r{   r|   r}   c                 C  r~   r%   )r&   r¿  r   rš  r€   r-   r-   r.   r�   d  r‚   zSubjectAlternativeName.__eq__r2   c                 C  rƒ   r%   ©r…   rš  r6   r-   r-   r.   r†   j  r‡   zSubjectAlternativeName.__hash__r$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   m  r‡   z#SubjectAlternativeName.public_bytesNrµ  r¶  r·  r¸  r¹  rº  r»  ro   r�   r?   rW   )rP   rQ   rR   r   ZSUBJECT_ALTERNATIVE_NAMErD   rI   r@   rp   rq   rr   r¼  r½  r¡  rn   r�   r†   r'   r-   r-   r-   r.   r¿  )  ó&    




r¿  c                   @  r¾  )6ÚIssuerAlternativeNamer™  r€  r#   rE   c                 C  r]   r%   rÀ  r›  r-   r-   r.   rI   t  r:   zIssuerAlternativeName.__init__rš  rœ  r�  rž  c                 C  rŸ  r%   r-   r   r-   r-   r.   r¡  y  r¢  z)IssuerAlternativeName.get_values_for_typer£  r¤  c                 C  rŸ  r%   r-   r   r-   r-   r.   r¡  �  r¥  r¦  r§  c                 C  rŸ  r%   r-   r   r-   r-   r.   r¡  ‡  r¥  r¨  r©  c                 C  rŸ  r%   r-   r   r-   r-   r.   r¡  �  rª  r«  r¬  c                 C  rŸ  r%   r-   r   r-   r-   r.   r¡  ’  rª  r­  r®  c                 C  rÁ  r%   rÂ  r   r-   r-   r.   r¡  —  rÃ  r1   c                 C  rl   )Nz<IssuerAlternativeName(rm   r´  r6   r-   r-   r.   rn   ©  r:   zIssuerAlternativeName.__repr__r{   r|   r}   c                 C  r~   r%   )r&   rÆ  r   rš  r€   r-   r-   r.   r�   ¬  r‚   zIssuerAlternativeName.__eq__r2   c                 C  rƒ   r%   rÄ  r6   r-   r-   r.   r†   ²  r‡   zIssuerAlternativeName.__hash__r$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   µ  r‡   z"IssuerAlternativeName.public_bytesNrµ  r¶  r·  r¸  r¹  rº  r»  ro   r�   r?   rW   )rP   rQ   rR   r   ZISSUER_ALTERNATIVE_NAMErD   rI   r@   rp   rq   rr   r¼  r½  r¡  rn   r�   r†   r'   r-   r-   r-   r.   rÆ  q  rÅ  rÆ  c                   @  r¾  )6ÚCertificateIssuerr™  r€  r#   rE   c                 C  r]   r%   rÀ  r›  r-   r-   r.   rI   ¼  r:   zCertificateIssuer.__init__rš  rœ  r�  rž  c                 C  rŸ  r%   r-   r   r-   r-   r.   r¡  Á  r¢  z%CertificateIssuer.get_values_for_typer£  r¤  c                 C  rŸ  r%   r-   r   r-   r-   r.   r¡  É  r¥  r¦  r§  c                 C  rŸ  r%   r-   r   r-   r-   r.   r¡  Ï  r¥  r¨  r©  c                 C  rŸ  r%   r-   r   r-   r-   r.   r¡  Õ  rª  r«  r¬  c                 C  rŸ  r%   r-   r   r-   r-   r.   r¡  Ú  rª  r­  r®  c                 C  rÁ  r%   rÂ  r   r-   r-   r.   r¡  ß  rÃ  r1   c                 C  rl   )Nz<CertificateIssuer(rm   r´  r6   r-   r-   r.   rn   ñ  r:   zCertificateIssuer.__repr__r{   r|   r}   c                 C  r~   r%   )r&   rÇ  r   rš  r€   r-   r-   r.   r�   ô  r‚   zCertificateIssuer.__eq__r2   c                 C  rƒ   r%   rÄ  r6   r-   r-   r.   r†   ú  r‡   zCertificateIssuer.__hash__r$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   ý  r‡   zCertificateIssuer.public_bytesNrµ  r¶  r·  r¸  r¹  rº  r»  ro   r�   r?   rW   )rP   rQ   rR   r   ZCERTIFICATE_ISSUERrD   rI   r@   rp   rq   rr   r¼  r½  r¡  rn   r�   r†   r'   r-   r-   r-   r.   rÇ  ¹  rÅ  rÇ  c                   @  sR   e Zd ZejZddd„Zddd	„Zddd„Zddd„Z	e
ddd„ƒZddd„ZdS )Ú	CRLReasonÚreasonrù   r#   rE   c                 C  ru   )Nz*reason must be an element from ReasonFlags)r&   rù   ri   Ú_reason)r7   rÉ  r-   r-   r.   rI     rz   zCRLReason.__init__r1   c                 C  rl   )Nz<CRLReason(reason=rm   ©rÊ  r6   r-   r-   r.   rn   
  r:   zCRLReason.__repr__r{   r|   r}   c                 C  r~   r%   )r&   rÈ  r   rÉ  r€   r-   r-   r.   r�     r‚   zCRLReason.__eq__r2   c                 C  rƒ   r%   )r…   rÉ  r6   r-   r-   r.   r†     r‡   zCRLReason.__hash__c                 C  r‰   r%   rË  r6   r-   r-   r.   rÉ    r‹   zCRLReason.reasonr$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'     r‡   zCRLReason.public_bytesN)rÉ  rù   r#   rE   ro   r�   r?   )r#   rù   rW   )rP   rQ   rR   r   Z
CRL_REASONrD   rI   rn   r�   r†   r‘   rÉ  r'   r-   r-   r-   r.   rÈ    s    



rÈ  c                   @  s`   e Zd ZejZddd„Zddd	„Zddd„Zddd„Z	e
ddd„ƒZe
ddd„ƒZddd„ZdS ) ÚInvalidityDateÚinvalidity_dateúdatetime.datetimer#   rE   c                 C  s   t |tjƒs
tdƒ‚|| _d S )Nz+invalidity_date must be a datetime.datetime)r&   rv  ri   Ú_invalidity_date)r7   rÍ  r-   r-   r.   rI   !  s   
zInvalidityDate.__init__r1   c                 C  rl   )Nz <InvalidityDate(invalidity_date=rm   ©rÏ  r6   r-   r-   r.   rn   '  r:   zInvalidityDate.__repr__r{   r|   r}   c                 C  r~   r%   )r&   rÌ  r   rÍ  r€   r-   r-   r.   r�   *  r‚   zInvalidityDate.__eq__r2   c                 C  rƒ   r%   )r…   rÍ  r6   r-   r-   r.   r†   0  r‡   zInvalidityDate.__hash__c                 C  r‰   r%   rÐ  r6   r-   r-   r.   rÍ  3  r‹   zInvalidityDate.invalidity_datec                 C  s0   | j jd u r| j jtjjd�S | j jtjjd�S )N)Útzinfo)Útz)rÏ  rÑ  Úreplacerv  ÚtimezoneÚutcÚ
astimezoner6   r-   r-   r.   Úinvalidity_date_utc7  s   z"InvalidityDate.invalidity_date_utcr$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   >  r‡   zInvalidityDate.public_bytesN)rÍ  rÎ  r#   rE   ro   r�   r?   )r#   rÎ  rW   )rP   rQ   rR   r   ZINVALIDITY_DATErD   rI   rn   r�   r†   r‘   rÍ  r×  r'   r-   r-   r-   r.   rÌ    s    



rÌ  c                   @  óR   e Zd ZejZddd„Zedƒ\ZZ	Z
dd	d
„Zddd„Zddd„Zddd„ZdS )Ú)PrecertificateSignedCertificateTimestampsÚsigned_certificate_timestampsú$Iterable[SignedCertificateTimestamp]r#   rE   c                 C  r¿   )Nc                 s  rš   r%   ©r&   r   ©r�   Zsctr-   r-   r.   rŸ   J  ó
   € ÿ
ÿzEPrecertificateSignedCertificateTimestamps.__init__.<locals>.<genexpr>úYEvery item in the signed_certificate_timestamps list must be a SignedCertificateTimestamp©r^   r¢   ri   Ú_signed_certificate_timestamps©r7   rÚ  r-   r-   r.   rI   E  ó   þÿ
z2PrecertificateSignedCertificateTimestamps.__init__rá  r1   c                 C  ó   dt | ƒ› d�S )Nz+<PrecertificateSignedCertificateTimestamps(rm   ©r^   r6   r-   r-   r.   rn   X  rØ   z2PrecertificateSignedCertificateTimestamps.__repr__r2   c                 C  rÉ   r%   ©r…   r±   rá  r6   r-   r-   r.   r†   [  r:   z2PrecertificateSignedCertificateTimestamps.__hash__r{   r|   r}   c                 C  r~   r%   )r&   rÙ  r   rá  r€   r-   r-   r.   r�   ^  ó   
ÿÿz0PrecertificateSignedCertificateTimestamps.__eq__r$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   g  r‡   z6PrecertificateSignedCertificateTimestamps.public_bytesN©rÚ  rÛ  r#   rE   ro   r?   r�   rW   )rP   rQ   rR   r   Z%PRECERT_SIGNED_CERTIFICATE_TIMESTAMPSrD   rI   r@   rp   rq   rr   rn   r†   r�   r'   r-   r-   r-   r.   rÙ  B  ó    

ÿ


	rÙ  c                   @  rØ  )ÚSignedCertificateTimestampsrÚ  rÛ  r#   rE   c                 C  r¿   )Nc                 s  rš   r%   rÜ  rÝ  r-   r-   r.   rŸ   s  rÞ  z7SignedCertificateTimestamps.__init__.<locals>.<genexpr>rß  rà  râ  r-   r-   r.   rI   n  rã  z$SignedCertificateTimestamps.__init__rá  r1   c                 C  rä  )Nz<SignedCertificateTimestamps(rm   rå  r6   r-   r-   r.   rn   �  rØ   z$SignedCertificateTimestamps.__repr__r2   c                 C  rÉ   r%   ræ  r6   r-   r-   r.   r†   „  r:   z$SignedCertificateTimestamps.__hash__r{   r|   r}   c                 C  r~   r%   )r&   rê  r   rá  r€   r-   r-   r.   r�   ‡  rç  z"SignedCertificateTimestamps.__eq__r$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   �  r‡   z(SignedCertificateTimestamps.public_bytesNrè  ro   r?   r�   rW   )rP   rQ   rR   r   ZSIGNED_CERTIFICATE_TIMESTAMPSrD   rI   r@   rp   rq   rr   rn   r†   r�   r'   r-   r-   r-   r.   rê  k  ré  rê  c                   @  sR   e Zd ZejZddd„Zdd
d„Zddd„Zddd„Z	e
ddd„ƒZddd„ZdS )Ú	OCSPNonceÚnoncer$   r#   rE   c                 C  ru   )Nznonce must be bytes)r&   r$   ri   Ú_nonce)r7   rì  r-   r-   r.   rI   —  rz   zOCSPNonce.__init__r{   r|   r}   c                 C  r~   r%   )r&   rë  r   rì  r€   r-   r-   r.   r�   �  r‚   zOCSPNonce.__eq__r2   c                 C  rƒ   r%   )r…   rì  r6   r-   r-   r.   r†   £  r‡   zOCSPNonce.__hash__r1   c                 C  rº   )Nz<OCSPNonce(nonce=rm   )rì  r6   r-   r-   r.   rn   ¦  r:   zOCSPNonce.__repr__c                 C  r‰   r%   )rí  r6   r-   r-   r.   rì  ©  r‹   zOCSPNonce.noncec                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   ­  r‡   zOCSPNonce.public_bytesN)rì  r$   r#   rE   r�   r?   ro   rW   )rP   rQ   rR   r   ZNONCErD   rI   r�   r†   rn   r‘   rì  r'   r-   r-   r-   r.   rë  ”  r’   rë  c                   @  sN   e Zd ZejZddd„Zdd
d„Zddd„Zddd„Z	ddd„Z
ddd„ZdS )ÚOCSPAcceptableResponsesÚ	responsesrC  r#   rE   c                 C  s,   t |ƒ}tdd„ |D ƒƒrtdƒ‚|| _d S )Nc                 s  s   � | ]	}t |tƒ V  qd S r%   rD  )r�   Úrr-   r-   r.   rŸ   ¶  s   € z3OCSPAcceptableResponses.__init__.<locals>.<genexpr>z'All responses must be ObjectIdentifiers)r^   rŠ  ri   Ú
_responses)r7   rï  r-   r-   r.   rI   ´  s   
z OCSPAcceptableResponses.__init__r{   r|   r}   c                 C  r~   r%   )r&   rî  r   rñ  r€   r-   r-   r.   r�   »  r‚   zOCSPAcceptableResponses.__eq__r2   c                 C  rÉ   r%   )r…   r±   rñ  r6   r-   r-   r.   r†   Á  r:   z OCSPAcceptableResponses.__hash__r1   c                 C  rl   )Nz#<OCSPAcceptableResponses(responses=rm   )rñ  r6   r-   r-   r.   rn   Ä  r:   z OCSPAcceptableResponses.__repr__úIterator[ObjectIdentifier]c                 C  rƒ   r%   )r;   rñ  r6   r-   r-   r.   rq   Ç  r‡   z OCSPAcceptableResponses.__iter__r$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   Ê  r‡   z$OCSPAcceptableResponses.public_bytesN)rï  rC  r#   rE   r�   r?   ro   )r#   rò  rW   )rP   rQ   rR   r   ZACCEPTABLE_RESPONSESrD   rI   r�   r†   rn   rq   r'   r-   r-   r-   r.   rî  ±  s    




rî  c                   @  s¦   e Zd ZejZd-dd„Zd.dd„Zd/dd„Zd0dd„Z	e
d1dd„ƒZe
d2dd„ƒZe
d3dd „ƒZe
d3d!d"„ƒZe
d4d#d$„ƒZe
d3d%d&„ƒZe
d3d'd(„ƒZd5d*d+„Zd,S )6ÚIssuingDistributionPointrò   r—   ró   rô   Úonly_contains_user_certsr}   Úonly_contains_ca_certsÚonly_some_reasonsrö   Úindirect_crlÚonly_contains_attribute_certsr#   rE   c           	      C  sü   |d urt |ƒ}|rt|tƒrtdd„ |D ƒƒstdƒ‚|r,tj|v s(tj|v r,tdƒ‚t|t	ƒr@t|t	ƒr@t|t	ƒr@t|t	ƒsDtdƒ‚|||g}t
dd„ |D ƒƒdkrXtd	ƒ‚t|||||||gƒsgtd
ƒ‚|| _|| _|| _|| _|| _|| _|| _d S )Nc                 s  rš   r%   rø   rœ   r-   r-   r.   rŸ   à  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-   rœ   r-   r-   r.   r²    rY  z5IssuingDistributionPoint.__init__.<locals>.<listcomp>r  z}Only one of the following can be set to True: only_contains_user_certs, only_contains_ca_certs, only_contains_attribute_certszàCannot 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ú   r¢   ri   rù   rû   rü   r¡   r}   r4   rŠ  Ú_only_contains_user_certsÚ_only_contains_ca_certsÚ_indirect_crlÚ_only_contains_attribute_certsÚ_only_some_reasonsrý   rþ   )	r7   rò   ró   rô  rõ  rö  r÷  rø  Zcrl_constraintsr-   r-   r.   rI   Ñ  sr   
ÿþÿÿþÿÿþýüÿ
ýÿùÿÿ
z!IssuingDistributionPoint.__init__r1   c                 C  s>   d| j › d| j› d| j› d| j› d| j› d| j› d| j› d�S )	Nz$<IssuingDistributionPoint(full_name=z, relative_name=z, only_contains_user_certs=z, only_contains_ca_certs=z, only_some_reasons=z, indirect_crl=z , only_contains_attribute_certs=rm   )rò   ró   rô  rõ  rö  r÷  rø  r6   r-   r-   r.   rn   &  s   
ÿþýüûùÿz!IssuingDistributionPoint.__repr__r{   r|   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&   ró  r   rò   ró   rô  rõ  rö  r÷  rø  r€   r-   r-   r.   r�   2  s"   

ÿ
þ
ý
ü
ûÿùzIssuingDistributionPoint.__eq__r2   c                 C  s<   | j d urt| j ƒ}nd }t|| j| j| j| j| j| jfƒS r%   )	rò   r±   r…   ró   rô  rõ  rö  r÷  rø  )r7   rò   r-   r-   r.   r†   A  s   
ùÿz!IssuingDistributionPoint.__hash__r²   c                 C  r‰   r%   r  r6   r-   r-   r.   rò   S  r‹   z"IssuingDistributionPoint.full_namec                 C  r‰   r%   r  r6   r-   r-   r.   ró   W  r‹   z&IssuingDistributionPoint.relative_namec                 C  r‰   r%   )rù  r6   r-   r-   r.   rô  [  r‹   z1IssuingDistributionPoint.only_contains_user_certsc                 C  r‰   r%   )rú  r6   r-   r-   r.   rõ  _  r‹   z/IssuingDistributionPoint.only_contains_ca_certsc                 C  r‰   r%   )rý  r6   r-   r-   r.   rö  c  r³   z*IssuingDistributionPoint.only_some_reasonsc                 C  r‰   r%   )rû  r6   r-   r-   r.   r÷  i  r‹   z%IssuingDistributionPoint.indirect_crlc                 C  r‰   r%   )rü  r6   r-   r-   r.   rø  m  r‹   z6IssuingDistributionPoint.only_contains_attribute_certsr$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   q  r‡   z%IssuingDistributionPoint.public_bytesN)rò   r—   ró   rô   rô  r}   rõ  r}   rö  rö   r÷  r}   rø  r}   r#   rE   ro   r�   r?   rµ   r  rá   r	  rW   )rP   rQ   rR   r   ZISSUING_DISTRIBUTION_POINTrD   rI   rn   r�   r†   r‘   rò   ró   rô  rõ  rö  r÷  rø  r'   r-   r-   r-   r.   ró  Î  s*    

U

ró  c                   @  sn   e Zd ZejZddd	„Zed d
d„ƒZed!dd„ƒZ	ed!dd„ƒZ
d"dd„Zd#dd„Zd$dd„Zd%dd„ZdS )&ÚMSCertificateTemplateÚtemplate_idr   Úmajor_versionr™   Úminor_versionr#   rE   c                 C  sT   t |tƒs	tdƒ‚|| _|d urt |tƒr|d ur"t |tƒs"tdƒ‚|| _|| _d S )Núoid must be an ObjectIdentifierz8major_version and minor_version must be integers or None)r&   r   ri   Ú_template_idr2   Ú_major_versionÚ_minor_version)r7   rÿ  r   r  r-   r-   r.   rI   x  s    
ÿÿýýÿ
zMSCertificateTemplate.__init__c                 C  r‰   r%   )r  r6   r-   r-   r.   rÿ  Œ  r‹   z!MSCertificateTemplate.template_idc                 C  r‰   r%   )r  r6   r-   r-   r.   r   �  r‹   z#MSCertificateTemplate.major_versionc                 C  r‰   r%   )r  r6   r-   r-   r.   r  ”  r‹   z#MSCertificateTemplate.minor_versionr1   c                 C  r”  )Nz#<MSCertificateTemplate(template_id=z, major_version=z, minor_version=rm   )rÿ  r   r  r6   r-   r-   r.   rn   ˜  r¯   zMSCertificateTemplate.__repr__r{   r|   r}   c                 C  r°   r%   )r&   rþ  r   rÿ  r   r  r€   r-   r-   r.   r�   Ÿ  r–  zMSCertificateTemplate.__eq__r2   c                 C  r—  r%   )r…   rÿ  r   r  r6   r-   r-   r.   r†   ©  r?  zMSCertificateTemplate.__hash__r$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   ¬  r‡   z"MSCertificateTemplate.public_bytesN)rÿ  r   r   r™   r  r™   r#   rE   rÙ   r¶   ro   r�   r?   rW   )rP   rQ   rR   r   ZMS_CERTIFICATE_TEMPLATErD   rI   r‘   rÿ  r   r  rn   r�   r†   r'   r-   r-   r-   r.   rþ  u  s    




rþ  c                   @  s^   e Zd Zddd	„Zedd
d„ƒZeddd„ƒZeddd„ƒZddd„Zd dd„Z	d!dd„Z
dS )"ÚNamingAuthorityÚidúObjectIdentifier | NoneÚurlr3  Útextr#   rE   c                 C  sd   |d urt |tƒstdƒ‚|d urt |tƒstdƒ‚|d ur't |tƒs'tdƒ‚|| _|| _|| _d S )Nzid must be an ObjectIdentifierzurl must be a strztext must be a str)r&   r   ri   r1   Ú_idÚ_urlÚ_text)r7   r  r	  r
  r-   r-   r.   rI   ±  s   
zNamingAuthority.__init__c                 C  r‰   r%   )r  r6   r-   r-   r.   r  Ä  r‹   zNamingAuthority.idc                 C  r‰   r%   )r  r6   r-   r-   r.   r	  È  r‹   zNamingAuthority.urlc                 C  r‰   r%   )r  r6   r-   r-   r.   r
  Ì  r‹   zNamingAuthority.textr1   c                 C  r”  )Nz<NamingAuthority(id=z, url=z, text=rm   )r  r	  r
  r6   r-   r-   r.   rn   Ð  s   ÿÿÿÿzNamingAuthority.__repr__r{   r|   r}   c                 C  r°   r%   )r&   r  r   r  r	  r
  r€   r-   r-   r.   r�   Ö  r–  zNamingAuthority.__eq__r2   c                 C  r—  r%   )r…   r  r	  r
  r6   r-   r-   r.   r†   à  s   ýÿzNamingAuthority.__hash__N)r  r  r	  r3  r
  r3  r#   rE   )r#   r  r8  ro   r�   r?   )rP   rQ   rR   rI   r‘   r  r	  r
  rn   r�   r†   r-   r-   r-   r.   r  °  s    



r  c                   @  sz   e Zd Zd'dd„Zed(dd„ƒZed)dd„ƒZed*dd„ƒZed+dd„ƒZed,dd„ƒZ	d-dd„Z
d.d!d"„Zd/d$d%„Zd&S )0ÚProfessionInfoÚnaming_authorityúNamingAuthority | NoneÚprofession_itemsúIterable[str]Úprofession_oidsú!Iterable[ObjectIdentifier] | NoneÚregistration_numberr3  Úadd_profession_infor•   r#   rE   c                 C  s¼   |d urt |tƒstdƒ‚t|ƒ}tdd„ |D ƒƒstdƒ‚|d ur3t|ƒ}tdd„ |D ƒƒs3tdƒ‚|d ur@t |tƒs@tdƒ‚|d urMt |tƒsMtdƒ‚|| _|| _|| _	|| _
|| _d S )	Nú*naming_authority must be a NamingAuthorityc                 s  rš   r%   )r&   r1   )r�   Úitemr-   r-   r.   rŸ   ù  rÂ   z*ProfessionInfo.__init__.<locals>.<genexpr>z5Every item in the profession_items list must be a strc                 s  rš   r%   rD  )r�   rD   r-   r-   r.   rŸ    	  r    zBEvery item in the profession_oids list must be an ObjectIdentifierz!registration_number must be a strz!add_profession_info must be bytes)r&   r  ri   r^   r¢   r1   r$   Ú_naming_authorityÚ_profession_itemsÚ_profession_oidsÚ_registration_numberÚ_add_profession_info)r7   r  r  r  r  r  r-   r-   r.   rI   ë  s<   
ÿÿÿÿ
ÿ
ÿ
zProfessionInfo.__init__c                 C  r‰   r%   ©r  r6   r-   r-   r.   r  	  r‹   zProfessionInfo.naming_authorityrž  c                 C  r‰   r%   )r  r6   r-   r-   r.   r  	  r‹   zProfessionInfo.profession_itemsúlist[ObjectIdentifier] | Nonec                 C  r‰   r%   )r  r6   r-   r-   r.   r   	  r‹   zProfessionInfo.profession_oidsc                 C  r‰   r%   )r  r6   r-   r-   r.   r  $	  r‹   z"ProfessionInfo.registration_numberc                 C  r‰   r%   )r  r6   r-   r-   r.   r  (	  r‹   z"ProfessionInfo.add_profession_infor1   c                 C  s.   d| j › d| j› d| j› d| j› d| j›d�S )Nz!<ProfessionInfo(naming_authority=z, profession_items=z, profession_oids=z, registration_number=z, add_profession_info=rm   )r  r  r  r  r  r6   r-   r-   r.   rn   ,	  s   
ÿþýüÿzProfessionInfo.__repr__r{   r|   r}   c                 C  sJ   t |tƒstS | j|jko$| j|jko$| j|jko$| j|jko$| j|jkS r%   )r&   r  r   r  r  r  r  r  r€   r-   r-   r.   r�   5	  s   

ÿ
þ
ý
ûzProfessionInfo.__eq__r2   c                 C  s8   | j d urt| j ƒ}nd }t| jt| jƒ|| j| jfƒS r%   )r  r±   r…   r  r  r  r  )r7   r  r-   r-   r.   r†   A	  s   
ûÿzProfessionInfo.__hash__N)r  r  r  r  r  r  r  r3  r  r•   r#   rE   ©r#   r  )r#   rž  )r#   r  r8  r´   ro   r�   r?   )rP   rQ   rR   rI   r‘   r  r  r  r  r  rn   r�   r†   r-   r-   r-   r.   r  ê  s    
-

	r  c                   @  s^   e Zd Zdd	d
„Zeddd„ƒZed dd„ƒZed!dd„ƒZd"dd„Zd#dd„Z	d$dd„Z
dS )%Ú	AdmissionÚadmission_authorityúGeneralName | Noner  r  Úprofession_infosúIterable[ProfessionInfo]r#   rE   c                 C  sl   |d urt |tƒstdƒ‚|d urt |tƒstdƒ‚t|ƒ}tdd„ |D ƒƒs+tdƒ‚|| _|| _|| _d S )Nz)admission_authority must be a GeneralNamer  c                 s  rš   r%   )r&   r  )r�   Úinfor-   r-   r.   rŸ   c	  r    z%Admission.__init__.<locals>.<genexpr>z@Every item in the profession_infos list must be a ProfessionInfo)	r&   r   ri   r  r^   r¢   Ú_admission_authorityr  Ú_profession_infos)r7   r"  r  r$  r-   r-   r.   rI   R	  s$   
ÿ
ÿÿÿ
zAdmission.__init__c                 C  r‰   r%   )r'  r6   r-   r-   r.   r"  o	  r‹   zAdmission.admission_authorityc                 C  r‰   r%   r  r6   r-   r-   r.   r  s	  r‹   zAdmission.naming_authorityúlist[ProfessionInfo]c                 C  r‰   r%   )r(  r6   r-   r-   r.   r$  w	  r‹   zAdmission.profession_infosr1   c                 C  r”  )Nz<Admission(admission_authority=z, naming_authority=z, profession_infos=rm   )r"  r  r$  r6   r-   r-   r.   rn   {	  r¯   zAdmission.__repr__r{   r|   r}   c                 C  r°   r%   )r&   r!  r   r"  r  r$  r€   r-   r-   r.   r�   ‚	  r–  zAdmission.__eq__r2   c                 C  s   t | j| jt| jƒfƒS r%   )r…   r"  r  r±   r$  r6   r-   r-   r.   r†   Œ	  s   ýÿzAdmission.__hash__N)r"  r#  r  r  r$  r%  r#   rE   ©r#   r#  r   )r#   r)  ro   r�   r?   )rP   rQ   rR   rI   r‘   r"  r  r$  rn   r�   r†   r-   r-   r-   r.   r!  Q	  s    



r!  c                   @  s`   e Zd ZejZddd„Zed	ƒ\ZZ	Z
edd
d„ƒZddd„Zddd„Zddd„Zd dd„ZdS )!Ú
AdmissionsÚ	authorityr#  Ú
admissionsúIterable[Admission]r#   rE   c                 C  sL   |d urt |tƒstdƒ‚t|ƒ}tdd„ |D ƒƒstdƒ‚|| _|| _d S )Nzauthority must be a GeneralNamec                 s  rš   r%   )r&   r!  )r�   Z	admissionr-   r-   r.   rŸ   ¢	  r    z&Admissions.__init__.<locals>.<genexpr>zBEvery item in the contents_of_admissions list must be an Admission)r&   r   ri   r^   r¢   Ú
_authorityÚ_admissions)r7   r,  r-  r-   r-   r.   rI   ™	  s   ÿÿ
zAdmissions.__init__r0  c                 C  r‰   r%   )r/  r6   r-   r-   r.   r,  ¯	  r‹   zAdmissions.authorityr1   c                 C  rÓ   )Nz<Admissions(authority=z, admissions=rm   )r/  r0  r6   r-   r-   r.   rn   ³	  rÔ   zAdmissions.__repr__r{   r|   r}   c                 C  rÕ   r%   )r&   r+  r   r,  r0  r€   r-   r-   r.   r�   ¹	  rÖ   zAdmissions.__eq__r2   c                 C  r>  r%   )r…   r,  r±   r0  r6   r-   r-   r.   r†   Â	  r?  zAdmissions.__hash__r$   c                 C  rŒ   r%   r�   r6   r-   r-   r.   r'   Å	  r‡   zAdmissions.public_bytesN)r,  r#  r-  r.  r#   rE   r*  ro   r�   r?   rW   )rP   rQ   rR   r   Z
ADMISSIONSrD   rI   r@   rp   rq   rr   r‘   r,  rn   r�   r†   r'   r-   r-   r-   r.   r+  –	  s    



	r+  c                   @  sZ   e Zd Zddd„Zedd	d
„ƒZeddd„ƒZddd„Zddd„Zd dd„Z	ddd„Z
dS )!rh   rD   r   rj   r$   r#   rE   c                 C  s"   t |tƒs	tdƒ‚|| _|| _d S )Nr  )r&   r   ri   r�  r‘  )r7   rD   rj   r-   r-   r.   rI   Ê	  s   

zUnrecognizedExtension.__init__c                 C  r‰   r%   r’  r6   r-   r-   r.   rD   Ð	  r‹   zUnrecognizedExtension.oidc                 C  r‰   r%   r“  r6   r-   r-   r.   rj   Ô	  r‹   zUnrecognizedExtension.valuer1   c                 C  r7  )Nz<UnrecognizedExtension(oid=r•  rm   )rD   rj   r6   r-   r-   r.   rn   Ø	  s   zUnrecognizedExtension.__repr__r{   r|   r}   c                 C  rÕ   r%   )r&   rh   r   rD   rj   r€   r-   r-   r.   r�   Û	  rà   zUnrecognizedExtension.__eq__r2   c                 C  r×   r%   )r…   rD   rj   r6   r-   r-   r.   r†   á	  rØ   zUnrecognizedExtension.__hash__c                 C  r‰   r%   rW  r6   r-   r-   r.   r'   ä	  s   z"UnrecognizedExtension.public_bytesN)rD   r   rj   r$   r#   rE   rÙ   rW   ro   r�   r?   )rP   rQ   rR   rI   r‘   rD   rj   rn   r�   r†   r'   r-   r-   r-   r.   rh   É	  s    



rh   )r"   r   r#   r$   )r0   r1   )tÚ
__future__r   Úabcrv  r)   r…  r¼  Úcollections.abcr   r   Zcryptographyr   Z"cryptography.hazmat.bindings._rustr   r   rŽ   Zcryptography.hazmat.primitivesr   r	   Z,cryptography.hazmat.primitives.asymmetric.ecr
   Z-cryptography.hazmat.primitives.asymmetric.rsar   Z/cryptography.hazmat.primitives.asymmetric.typesr   r   Z*cryptography.x509.certificate_transparencyr   Zcryptography.x509.general_namer   r   r   r   r   r   r   r   r   Zcryptography.x509.namer   r   Zcryptography.x509.oidr   r   r   r   ÚTypeVarr   r/   r@   Ú	ExceptionrB   rU   ÚABCMetar   rZ   rs   r“   r¬   r¼   rÍ   rÁ   rÛ   râ   rã   rñ   rç   ÚEnumrù   r  r  r  r
  r  r  r  r  Z_REASON_BIT_MAPPINGZ_CRLREASONFLAGSrû   rü   Z_CRL_ENTRY_REASON_ENUM_TO_CODEr  r!  r$  r,  r4  rA  rG  rP  rQ  rT  Z_TLS_FEATURE_TYPE_TO_ENUMrZ  r]  rr  ry  ÚGenericr�  r˜  r¿  rÆ  rÇ  rÈ  rÌ  rÙ  rê  rë  rî  ró  rþ  r  r  r!  r+  rh   r-   r-   r-   r.   Ú<module>   sÎ   ,ÿ

%l$(.%%køøöA9+("  As0PHHH$)) (;:gE3