o
    ÖèFh) ã                   @  s0  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 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„Z-d~dd„Z.G dd„ de/ƒZ0G dd„ de/ƒZ1G d d„ dej2d!�Z3G d"d#„ d#ƒZ4G d$d%„ d%e3ƒZ5G d&d'„ d'e3ƒZ6G d(d)„ d)e3ƒZ7G d*d+„ d+e3ƒZ8G d,d-„ d-e3ƒZ9G d.d/„ d/ƒZ:G d0d1„ d1e3ƒZ;G d2d3„ d3e3ƒZ<G d4d5„ d5e3ƒZ=G d6d7„ d7e3ƒZ>G d8d9„ d9ƒZ?G d:d;„ d;ej@ƒZAeAjBeAjCeAjDeAjEeAjFeAjGeAjHeAjId<œZJeAjBd=eAjCd>eAjDd?eAjEd@eAjFdAeAjGdBeAjHdCeAjIdDiZKG dEdF„ dFe3ƒZLG dGdH„ dHe3ƒZMG dIdJ„ dJƒZNG dKdL„ dLƒZOG dMdN„ dNƒZPG dOdP„ dPe3ƒZQG dQdR„ dRe3ƒZRG dSdT„ dTe3ƒZSG dUdV„ dVe3ƒZTG dWdX„ dXej@ƒZUdYdZ„ eUD ƒZVG d[d\„ d\e3ƒZWG d]d^„ d^e3ƒZXG d_d`„ d`e3ƒZYG dadb„ dbejZe, ƒZ[G dcdd„ ddƒZ\G dedf„ dfe3ƒZ]G dgdh„ dhe3ƒZ^G didj„ dje3ƒZ_G dkdl„ dle3ƒZ`G dmdn„ dne3ƒZaG dodp„ dpe3ƒZbG dqdr„ dre3ƒZcG dsdt„ dte3ƒZdG dudv„ dve3ƒZeG dwdx„ dxe3ƒZfG dydz„ dze3ƒZgG d{d|„ d|e3ƒZhdS )é    )ÚannotationsN)Ú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   ÚEncodingÚDERÚPublicFormatÚPKCS1r   ÚX962ÚUncompressedPointÚSubjectPublicKeyInfor   Úparse_spki_for_dataÚhashlibÚsha1Údigest)r    ÚdataÚ
serialized© r3   úU/var/www/html/loop/nvenv/lib/python3.10/site-packages/cryptography/x509/extensions.pyÚ_key_identifier_from_public_key2   s    
þ
þþ
r5   Ú
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©r6   r3   r4   Ú
len_methodK   ó   z*_make_sequence_methods.<locals>.len_methodc                   r9   r#   )Úiterr;   r<   r>   r3   r4   Úiter_methodN   r@   z+_make_sequence_methods.<locals>.iter_methodc                   s   t | ˆ ƒ| S r#   )r;   )r=   Úidxr>   r3   r4   Úgetitem_methodQ   r@   z._make_sequence_methods.<locals>.getitem_method©r!   r8   r3   )r6   r?   rB   rD   r3   r>   r4   Ú_make_sequence_methodsJ   s   
rF   c                      ó   e Zd Zd	‡ fdd„Z‡  ZS )
ÚDuplicateExtensionÚmsgr7   Úoidr   r!   ÚNonec                   ó   t ƒ  |¡ || _d S r#   ©ÚsuperÚ__init__rJ   ©r=   rI   rJ   ©Ú	__class__r3   r4   rO   X   ó   
zDuplicateExtension.__init__©rI   r7   rJ   r   r!   rK   ©Ú__name__Ú
__module__Ú__qualname__rO   Ú__classcell__r3   r3   rQ   r4   rH   W   ó    rH   c                      rG   )
ÚExtensionNotFoundrI   r7   rJ   r   r!   rK   c                   rL   r#   rM   rP   rQ   r3   r4   rO   ^   rS   zExtensionNotFound.__init__rT   rU   r3   r3   rQ   r4   r[   ]   rZ   r[   c                   @  s    e Zd ZU ded< ddd„ZdS )	r   z!typing.ClassVar[ObjectIdentifier]rJ   r!   r"   c                 C  s   t d| ›�ƒ‚)z7
        Serializes the extension type to DER.
        z3public_bytes is not implemented for extension type )ÚNotImplementedErrorr<   r3   r3   r4   r%   f   s   ÿzExtensionType.public_bytesN©r!   r"   )rV   rW   rX   Ú__annotations__r%   r3   r3   r3   r4   r   c   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ú)typing.Iterable[Extension[ExtensionType]]r!   rK   c                 C  ó   t |ƒ| _d S r#   )ÚlistÚ_extensions)r=   ra   r3   r3   r4   rO   p   s   zExtensions.__init__rJ   r   úExtension[ExtensionType]c                 C  s.   | D ]}|j |kr|  S qtd|› d�|ƒ‚)NúNo ú extension was found)rJ   r[   )r=   rJ   Úextr3   r3   r4   Úget_extension_for_oidu   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.rg   rh   )ÚUnrecognizedExtensionÚ	TypeErrorr$   Úvaluer[   rJ   )r=   rk   ri   r3   r3   r4   Úget_extension_for_class~   s   ÿÿÿz"Extensions.get_extension_for_classre   r7   c                 C  ó   d| j › d�S )Nz<Extensions(ú)>)re   r<   r3   r3   r4   Ú__repr__’   r@   zExtensions.__repr__N)ra   rb   r!   rK   )rJ   r   r!   rf   )rk   rl   r!   rm   ©r!   r7   )rV   rW   rX   rO   rj   rq   rF   Ú__len__Ú__iter__Ú__getitem__rt   r3   r3   r3   r4   r`   o   s    


	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 )Ú	CRLNumberÚ
crl_numberr8   r!   rK   c                 C  ó   t |tƒs	tdƒ‚|| _d S ©Nzcrl_number must be an integer©r$   r8   ro   Ú_crl_number©r=   rz   r3   r3   r4   rO   ™   ó   

zCRLNumber.__init__ÚotherÚobjectÚboolc                 C  ó   t |tƒstS | j|jkS r#   )r$   ry   ÚNotImplementedrz   ©r=   r�   r3   r3   r4   Ú__eq__Ÿ   ó   
zCRLNumber.__eq__c                 C  ó
   t | jƒS r#   ©Úhashrz   r<   r3   r3   r4   Ú__hash__¥   ó   
zCRLNumber.__hash__r7   c                 C  rr   )Nz<CRLNumber(rs   ©rz   r<   r3   r3   r4   rt   ¨   r@   zCRLNumber.__repr__c                 C  ó   | j S r#   ©r~   r<   r3   r3   r4   rz   «   ó   zCRLNumber.crl_numberr"   c                 C  ó
   t  | ¡S r#   ©Ú	rust_x509Úencode_extension_valuer<   r3   r3   r4   r%   ¯   r�   zCRLNumber.public_bytesN©rz   r8   r!   rK   ©r�   r‚   r!   rƒ   rE   ru   r]   )rV   rW   rX   r   Ú
CRL_NUMBERrJ   rO   r‡   rŒ   rt   Úpropertyrz   r%   r3   r3   r3   r4   ry   –   ó    



ry   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ú#typing.Iterable[GeneralName] | NoneÚauthority_cert_serial_numberú
int | Noner!   rK   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Úxr3   r3   r4   Ú	<genexpr>Æ   ó   € 

ÿz2AuthorityKeyIdentifier.__init__.<locals>.<genexpr>z;authority_cert_issuer must be a list of GeneralName objectsz/authority_cert_serial_number must be an integer)	Ú
ValueErrorrd   Úallro   r$   r8   Ú_key_identifierÚ_authority_cert_issuerÚ_authority_cert_serial_number)r=   rœ   rž   r    r3   r3   r4   rO   ¶   s*   ÿÿÿÿ
ÿ
zAuthorityKeyIdentifier.__init__r    r
   c                 C  s   t |ƒ}| |d d d�S ©N©rœ   rž   r    ©r5   )Úclsr    r0   r3   r3   r4   Úfrom_issuer_public_keyÜ   s   ýz-AuthorityKeyIdentifier.from_issuer_public_keyÚskiÚSubjectKeyIdentifierc                 C  s   | |j d d d�S r®   ©r0   )r±   r³   r3   r3   r4   Ú"from_issuer_subject_key_identifierç   s
   ýz9AuthorityKeyIdentifier.from_issuer_subject_key_identifierr7   c                 C  s   d| j ›d| j› d| j› d�S )Nz'<AuthorityKeyIdentifier(key_identifier=z, authority_cert_issuer=z, authority_cert_serial_number=rs   r¯   r<   r3   r3   r4   rt   ñ   ó   
ÿþÿ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†   r3   r3   r4   r‡   ù   s   

ÿÿýzAuthorityKeyIdentifier.__eq__r8   c                 C  s,   | j d u rd }nt| j ƒ}t| j|| jfƒS r#   )rž   Útupler‹   rœ   r    )r=   Úacir3   r3   r4   rŒ     s   

ÿzAuthorityKeyIdentifier.__hash__c                 C  r�   r#   )r«   r<   r3   r3   r4   rœ     r‘   z%AuthorityKeyIdentifier.key_identifierúlist[GeneralName] | Nonec                 C  r�   r#   )r¬   r<   r3   r3   r4   rž     ó   z,AuthorityKeyIdentifier.authority_cert_issuerc                 C  r�   r#   )r­   r<   r3   r3   r4   r      r‘   z3AuthorityKeyIdentifier.authority_cert_serial_numberr"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%     r�   z#AuthorityKeyIdentifier.public_bytesN)rœ   r�   rž   rŸ   r    r¡   r!   rK   )r    r
   r!   r›   )r³   r´   r!   r›   ru   r—   rE   )r!   r�   ©r!   r»   ©r!   r¡   r]   )rV   rW   rX   r   ÚAUTHORITY_KEY_IDENTIFIERrJ   rO   Úclassmethodr²   r¶   rt   r‡   rŒ   r™   rœ   rž   r    r%   r3   r3   r3   r4   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´   r0   r"   r!   rK   c                 C  s
   || _ d S r#   ©Ú_digest)r=   r0   r3   r3   r4   rO   "  r�   zSubjectKeyIdentifier.__init__r    r   c                 C  s   | t |ƒƒS r#   r°   )r±   r    r3   r3   r4   Úfrom_public_key%  s   z$SubjectKeyIdentifier.from_public_keyc                 C  r�   r#   rÁ   r<   r3   r3   r4   r0   +  r‘   zSubjectKeyIdentifier.digestc                 C  r�   r#   rÁ   r<   r3   r3   r4   rœ   /  r‘   z#SubjectKeyIdentifier.key_identifierr7   c                 C  ó   d| j ›d�S )Nz<SubjectKeyIdentifier(digest=rs   rµ   r<   r3   r3   r4   rt   3  r@   zSubjectKeyIdentifier.__repr__r�   r‚   rƒ   c                 C  s   t |tƒstS t | j|j¡S r#   )r$   r´   r…   r   Úbytes_eqr0   r†   r3   r3   r4   r‡   6  s   
zSubjectKeyIdentifier.__eq__r8   c                 C  r‰   r#   )r‹   r0   r<   r3   r3   r4   rŒ   <  r�   zSubjectKeyIdentifier.__hash__c                 C  r’   r#   r“   r<   r3   r3   r4   r%   ?  r�   z!SubjectKeyIdentifier.public_bytesN)r0   r"   r!   rK   )r    r   r!   r´   r]   ru   r—   rE   )rV   rW   rX   r   ÚSUBJECT_KEY_IDENTIFIERrJ   rO   rÀ   rÃ   r™   r0   rœ   rt   r‡   rŒ   r%   r3   r3   r3   r4   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ú"typing.Iterable[AccessDescription]r!   rK   c                 C  ó,   t |ƒ}tdd„ |D ƒƒstdƒ‚|| _d S )Nc                 s  r¢   r#   ©r$   ÚAccessDescriptionr¤   r3   r3   r4   r§   J  ó   € z6AuthorityInformationAccess.__init__.<locals>.<genexpr>ú@Every item in the descriptions list must be an AccessDescription©rd   rª   ro   Ú_descriptions©r=   rÉ   r3   r3   r4   rO   F  ó   ÿ
z#AuthorityInformationAccess.__init__rÑ   r7   c                 C  rr   )Nz<AuthorityInformationAccess(rs   ©rÑ   r<   r3   r3   r4   rt   T  r@   z#AuthorityInformationAccess.__repr__r�   r‚   rƒ   c                 C  r„   r#   )r$   rÈ   r…   rÑ   r†   r3   r3   r4   r‡   W  rˆ   z!AuthorityInformationAccess.__eq__r8   c                 C  ó   t t| jƒƒS r#   ©r‹   r¹   rÑ   r<   r3   r3   r4   rŒ   ]  r@   z#AuthorityInformationAccess.__hash__r"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%   `  r�   z'AuthorityInformationAccess.public_bytesN©rÉ   rÊ   r!   rK   ru   r—   rE   r]   )rV   rW   rX   r   ÚAUTHORITY_INFORMATION_ACCESSrJ   rO   rF   rv   rw   rx   rt   r‡   rŒ   r%   r3   r3   r3   r4   rÈ   C  ó    



rÈ   c                   @  rÇ   )ÚSubjectInformationAccessrÉ   rÊ   r!   rK   c                 C  rË   )Nc                 s  r¢   r#   rÌ   r¤   r3   r3   r4   r§   k  rÎ   z4SubjectInformationAccess.__init__.<locals>.<genexpr>rÏ   rÐ   rÒ   r3   r3   r4   rO   g  rÓ   z!SubjectInformationAccess.__init__rÑ   r7   c                 C  rr   )Nz<SubjectInformationAccess(rs   rÔ   r<   r3   r3   r4   rt   u  r@   z!SubjectInformationAccess.__repr__r�   r‚   rƒ   c                 C  r„   r#   )r$   rÚ   r…   rÑ   r†   r3   r3   r4   r‡   x  rˆ   zSubjectInformationAccess.__eq__r8   c                 C  rÕ   r#   rÖ   r<   r3   r3   r4   rŒ   ~  r@   z!SubjectInformationAccess.__hash__r"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%   �  r�   z%SubjectInformationAccess.public_bytesNr×   ru   r—   rE   r]   )rV   rW   rX   r   ÚSUBJECT_INFORMATION_ACCESSrJ   rO   rF   rv   rw   rx   rt   r‡   rŒ   r%   r3   r3   r3   r4   rÚ   d  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!   rK   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   ro   r   Ú_access_methodÚ_access_location)r=   rÝ   rÞ   r3   r3   r4   rO   †  s   


zAccessDescription.__init__r7   c                 C  ó
   d  | ¡S )NzY<AccessDescription(access_method={0.access_method}, access_location={0.access_location})>©Úformatr<   r3   r3   r4   rt   ’  ó   þ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†   r3   r3   r4   r‡   ˜  ó
   

þzAccessDescription.__eq__r8   c                 C  ó   t | j| jfƒS r#   )r‹   rÝ   rÞ   r<   r3   r3   r4   rŒ   ¡  ó   zAccessDescription.__hash__c                 C  r�   r#   )rß   r<   r3   r3   r4   rÝ   ¤  r‘   zAccessDescription.access_methodc                 C  r�   r#   )rà   r<   r3   r3   r4   rÞ   ¨  r‘   z!AccessDescription.access_locationN)rÝ   r   rÞ   r   r!   rK   ru   r—   rE   ©r!   r   )r!   r   )
rV   rW   rX   rO   rt   r‡   rŒ   r™   rÝ   rÞ   r3   r3   r3   r4   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!   rK   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ƒ   ro   r©   r8   Ú_caÚ_path_length)r=   rì   rí   r3   r3   r4   rO   °  s   
ÿÿ
zBasicConstraints.__init__c                 C  r�   r#   )rî   r<   r3   r3   r4   rì   Á  r‘   zBasicConstraints.cac                 C  r�   r#   )rï   r<   r3   r3   r4   rí   Å  r‘   zBasicConstraints.path_lengthr7   c                 C  rá   )Nz:<BasicConstraints(ca={0.ca}, path_length={0.path_length})>râ   r<   r3   r3   r4   rt   É  rä   zBasicConstraints.__repr__r�   r‚   c                 C  rå   r#   )r$   rë   r…   rì   rí   r†   r3   r3   r4   r‡   Î  ó   
zBasicConstraints.__eq__r8   c                 C  rç   r#   )r‹   rì   rí   r<   r3   r3   r4   rŒ   Ô  rè   zBasicConstraints.__hash__r"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%   ×  r�   zBasicConstraints.public_bytesN)rì   rƒ   rí   r¡   r!   rK   ©r!   rƒ   r¾   ru   r—   rE   r]   )rV   rW   rX   r   ÚBASIC_CONSTRAINTSrJ   rO   r™   rì   rí   rt   r‡   rŒ   r%   r3   r3   r3   r4   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 )ÚDeltaCRLIndicatorrz   r8   r!   rK   c                 C  r{   r|   r}   r   r3   r3   r4   rO   Þ  r€   zDeltaCRLIndicator.__init__c                 C  r�   r#   r�   r<   r3   r3   r4   rz   ä  r‘   zDeltaCRLIndicator.crl_numberr�   r‚   rƒ   c                 C  r„   r#   )r$   ró   r…   rz   r†   r3   r3   r4   r‡   è  rˆ   zDeltaCRLIndicator.__eq__c                 C  r‰   r#   rŠ   r<   r3   r3   r4   rŒ   î  r�   zDeltaCRLIndicator.__hash__r7   c                 C  rr   )Nz<DeltaCRLIndicator(crl_number=rs   rŽ   r<   r3   r3   r4   rt   ñ  r@   zDeltaCRLIndicator.__repr__r"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%   ô  r�   zDeltaCRLIndicator.public_bytesNr–   rE   r—   ru   r]   )rV   rW   rX   r   ÚDELTA_CRL_INDICATORrJ   rO   r™   rz   r‡   rŒ   rt   r%   r3   r3   r3   r4   ró   Û  s    



ró   c                   @  rÇ   )ÚCRLDistributionPointsÚdistribution_pointsú"typing.Iterable[DistributionPoint]r!   rK   c                 C  rË   )Nc                 s  r¢   r#   ©r$   ÚDistributionPointr¤   r3   r3   r4   r§   ÿ  r¨   z1CRLDistributionPoints.__init__.<locals>.<genexpr>ú?distribution_points must be a list of DistributionPoint objects©rd   rª   ro   Ú_distribution_points©r=   rö   r3   r3   r4   rO   û  ó   ÿÿ
zCRLDistributionPoints.__init__rü   r7   c                 C  rr   )Nz<CRLDistributionPoints(rs   ©rü   r<   r3   r3   r4   rt     r@   zCRLDistributionPoints.__repr__r�   r‚   rƒ   c                 C  r„   r#   )r$   rõ   r…   rü   r†   r3   r3   r4   r‡     rˆ   zCRLDistributionPoints.__eq__r8   c                 C  rÕ   r#   ©r‹   r¹   rü   r<   r3   r3   r4   rŒ     r@   zCRLDistributionPoints.__hash__r"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%     r�   z"CRLDistributionPoints.public_bytesN©rö   r÷   r!   rK   ru   r—   rE   r]   )rV   rW   rX   r   ÚCRL_DISTRIBUTION_POINTSrJ   rO   rF   rv   rw   rx   rt   r‡   rŒ   r%   r3   r3   r3   r4   rõ   ø  ó    

ÿ


rõ   c                   @  rÇ   )ÚFreshestCRLrö   r÷   r!   rK   c                 C  rË   )Nc                 s  r¢   r#   rø   r¤   r3   r3   r4   r§   $  r¨   z'FreshestCRL.__init__.<locals>.<genexpr>rú   rû   rý   r3   r3   r4   rO      rþ   zFreshestCRL.__init__rü   r7   c                 C  rr   )Nz<FreshestCRL(rs   rÿ   r<   r3   r3   r4   rt   2  r@   zFreshestCRL.__repr__r�   r‚   rƒ   c                 C  r„   r#   )r$   r  r…   rü   r†   r3   r3   r4   r‡   5  rˆ   zFreshestCRL.__eq__r8   c                 C  rÕ   r#   r   r<   r3   r3   r4   rŒ   ;  r@   zFreshestCRL.__hash__r"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%   >  r�   zFreshestCRL.public_bytesNr  ru   r—   rE   r]   )rV   rW   rX   r   ÚFRESHEST_CRLrJ   rO   rF   rv   rw   rx   rt   r‡   rŒ   r%   r3   r3   r3   r4   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!   rK   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¤   r3   r3   r4   r§   W  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¤   r3   r3   r4   r§   d  rÎ   z2crl_issuer must be None or a list of general namesc                 s  r¢   r#   ©r$   ÚReasonFlagsr¤   r3   r3   r4   r§   k  rÎ   z0reasons must be None or frozenset of ReasonFlagszLunspecified and remove_from_crl are not valid reasons in a DistributionPoint)r©   rd   rª   ro   r$   r   Ú	frozensetr  ÚunspecifiedÚremove_from_crlÚ
_full_nameÚ_relative_nameÚ_reasonsÚ_crl_issuer)r=   r  r  r	  r  r3   r3   r4   rO   C  sR   ÿÿÿ
ÿÿÿþ

ÿ
zDistributionPoint.__init__r7   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<   r3   r3   r4   rt   }  ó   ý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†   r3   r3   r4   r‡   „  s   

ÿ
þ
üzDistributionPoint.__eq__r8   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	  )r=   Úfnr  r3   r3   r4   rŒ   �  s   

zDistributionPoint.__hash__r»   c                 C  r�   r#   ©r  r<   r3   r3   r4   r  œ  r‘   zDistributionPoint.full_namec                 C  r�   r#   ©r  r<   r3   r3   r4   r     r‘   zDistributionPoint.relative_namec                 C  r�   r#   )r  r<   r3   r3   r4   r	  ¤  r‘   zDistributionPoint.reasonsc                 C  r�   r#   )r  r<   r3   r3   r4   r  ¨  r‘   zDistributionPoint.crl_issuerN)
r  rŸ   r  r  r	  r
  r  rŸ   r!   rK   ru   r—   rE   r½   ©r!   r  ©r!   r
  )rV   rW   rX   rO   rt   r‡   rŒ   r™   r  r  r	  r  r3   r3   r3   r4   rù   B  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  ÚkeyCompromiseÚcACompromiseÚaffiliationChangedÚ
supersededÚcessationOfOperationÚcertificateHoldÚprivilegeWithdrawnÚaACompromiseÚremoveFromCRLN)rV   rW   rX   r  Úkey_compromiseÚca_compromiseÚaffiliation_changedr  Úcessation_of_operationÚcertificate_holdÚprivilege_withdrawnÚaa_compromiser  r3   r3   r3   r4   r  ­  s    r  )é   é   é   é   é   é   é   é   r+  r,  r-  r.  r/  r0  r1  r2  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!   rK   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$   r8   ro   r©   Ú_require_explicit_policyÚ_inhibit_policy_mapping)r=   r4  r5  r3   r3   r4   rO   à  s$   
ÿÿ
ÿÿÿ
zPolicyConstraints.__init__r7   c                 C  rá   )Nz{<PolicyConstraints(require_explicit_policy={0.require_explicit_policy}, inhibit_policy_mapping={0.inhibit_policy_mapping})>râ   r<   r3   r3   r4   rt   ý  r  zPolicyConstraints.__repr__r�   r‚   rƒ   c                 C  rå   r#   )r$   r3  r…   r4  r5  r†   r3   r3   r4   r‡     ræ   zPolicyConstraints.__eq__r8   c                 C  rç   r#   )r‹   r4  r5  r<   r3   r3   r4   rŒ     s   
ÿzPolicyConstraints.__hash__c                 C  r�   r#   )r6  r<   r3   r3   r4   r4    r‘   z)PolicyConstraints.require_explicit_policyc                 C  r�   r#   )r7  r<   r3   r3   r4   r5    r‘   z(PolicyConstraints.inhibit_policy_mappingr"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%     r�   zPolicyConstraints.public_bytesN)r4  r¡   r5  r¡   r!   rK   ru   r—   rE   r¾   r]   )rV   rW   rX   r   ÚPOLICY_CONSTRAINTSrJ   rO   rt   r‡   rŒ   r™   r4  r5  r%   r3   r3   r3   r4   r3  Ý  s    



	r3  c                   @  rÇ   )ÚCertificatePoliciesÚpoliciesú"typing.Iterable[PolicyInformation]r!   rK   c                 C  rË   )Nc                 s  r¢   r#   )r$   ÚPolicyInformationr¤   r3   r3   r4   r§   #  rÎ   z/CertificatePolicies.__init__.<locals>.<genexpr>z;Every item in the policies list must be a PolicyInformation)rd   rª   ro   Ú	_policies)r=   r:  r3   r3   r4   rO   !  ó   ÿ
zCertificatePolicies.__init__r=  r7   c                 C  rr   )Nz<CertificatePolicies(rs   )r=  r<   r3   r3   r4   rt   -  r@   zCertificatePolicies.__repr__r�   r‚   rƒ   c                 C  r„   r#   )r$   r9  r…   r=  r†   r3   r3   r4   r‡   0  rˆ   zCertificatePolicies.__eq__r8   c                 C  rÕ   r#   )r‹   r¹   r=  r<   r3   r3   r4   rŒ   6  r@   zCertificatePolicies.__hash__r"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%   9  r�   z CertificatePolicies.public_bytesN)r:  r;  r!   rK   ru   r—   rE   r]   )rV   rW   rX   r   ÚCERTIFICATE_POLICIESrJ   rO   rF   rv   rw   rx   rt   r‡   rŒ   r%   r3   r3   r3   r4   r9    s    




r9  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ú(typing.Iterable[str | UserNotice] | Noner!   rK   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$   r7   Ú
UserNoticer¤   r3   r3   r4   r§   J  s   € 
ÿz-PolicyInformation.__init__.<locals>.<genexpr>zMpolicy_qualifiers must be a list of strings and/or UserNotice objects or None)r$   r   ro   Ú_policy_identifierrd   rª   Ú_policy_qualifiers)r=   rA  rB  r3   r3   r4   rO   >  s   
ÿÿ
zPolicyInformation.__init__r7   c                 C  rá   )Nze<PolicyInformation(policy_identifier={0.policy_identifier}, policy_qualifiers={0.policy_qualifiers})>râ   r<   r3   r3   r4   rt   T  rä   zPolicyInformation.__repr__r�   r‚   rƒ   c                 C  rå   r#   )r$   r<  r…   rA  rB  r†   r3   r3   r4   r‡   Z  ræ   zPolicyInformation.__eq__r8   c                 C  s(   | j d urt| j ƒ}nd }t| j|fƒS r#   )rB  r¹   r‹   rA  )r=   Úpqr3   r3   r4   rŒ   c  s   
ÿzPolicyInformation.__hash__c                 C  r�   r#   )rE  r<   r3   r3   r4   rA  m  r‘   z#PolicyInformation.policy_identifierúlist[str | UserNotice] | Nonec                 C  r�   r#   )rF  r<   r3   r3   r4   rB  q  r¼   z#PolicyInformation.policy_qualifiersN)rA  r   rB  rC  r!   rK   ru   r—   rE   ré   )r!   rH  )
rV   rW   rX   rO   rt   r‡   rŒ   r™   rA  rB  r3   r3   r3   r4   r<  =  s    



	
r<  c                   @  rÜ   )rD  Únotice_referenceúNoticeReference | NoneÚexplicit_textú
str | Noner!   rK   c                 C  s&   |rt |tƒstdƒ‚|| _|| _d S )Nz2notice_reference must be None or a NoticeReference)r$   ÚNoticeReferencero   Ú_notice_referenceÚ_explicit_text)r=   rI  rK  r3   r3   r4   rO   y  s   ÿÿ
zUserNotice.__init__r7   c                 C  rá   )NzV<UserNotice(notice_reference={0.notice_reference}, explicit_text={0.explicit_text!r})>râ   r<   r3   r3   r4   rt   ˆ  rä   zUserNotice.__repr__r�   r‚   rƒ   c                 C  rå   r#   )r$   rD  r…   rI  rK  r†   r3   r3   r4   r‡   Ž  ræ   zUserNotice.__eq__r8   c                 C  rç   r#   )r‹   rI  rK  r<   r3   r3   r4   rŒ   —  rè   zUserNotice.__hash__c                 C  r�   r#   )rN  r<   r3   r3   r4   rI  š  r‘   zUserNotice.notice_referencec                 C  r�   r#   )rO  r<   r3   r3   r4   rK  ž  r‘   zUserNotice.explicit_textN)rI  rJ  rK  rL  r!   rK   ru   r—   rE   )r!   rJ  ©r!   rL  )
rV   rW   rX   rO   rt   r‡   rŒ   r™   rI  rK  r3   r3   r3   r4   rD  x  s    



	rD  c                   @  r@  ) rM  ÚorganizationrL  Únotice_numbersútyping.Iterable[int]r!   rK   c                 C  s2   || _ t|ƒ}tdd„ |D ƒƒstdƒ‚|| _d S )Nc                 s  r¢   r#   )r$   r8   r¤   r3   r3   r4   r§   «  rÎ   z+NoticeReference.__init__.<locals>.<genexpr>z)notice_numbers must be a list of integers)Ú_organizationrd   rª   ro   Ú_notice_numbers)r=   rQ  rR  r3   r3   r4   rO   ¤  s
   
zNoticeReference.__init__r7   c                 C  rá   )NzU<NoticeReference(organization={0.organization!r}, notice_numbers={0.notice_numbers})>râ   r<   r3   r3   r4   rt   °  rä   zNoticeReference.__repr__r�   r‚   rƒ   c                 C  rå   r#   )r$   rM  r…   rQ  rR  r†   r3   r3   r4   r‡   ¶  ræ   zNoticeReference.__eq__r8   c                 C  s   t | jt| jƒfƒS r#   )r‹   rQ  r¹   rR  r<   r3   r3   r4   rŒ   ¿  ó   zNoticeReference.__hash__c                 C  r�   r#   )rT  r<   r3   r3   r4   rQ  Â  r‘   zNoticeReference.organizationú	list[int]c                 C  r�   r#   )rU  r<   r3   r3   r4   rR  Æ  r‘   zNoticeReference.notice_numbersN)rQ  rL  rR  rS  r!   rK   ru   r—   rE   rP  )r!   rW  )
rV   rW   rX   rO   rt   r‡   rŒ   r™   rQ  rR  r3   r3   r3   r4   rM  £  rê   rM  c                   @  rÇ   )ÚExtendedKeyUsageÚusagesú!typing.Iterable[ObjectIdentifier]r!   rK   c                 C  rË   )Nc                 s  r¢   r#   ©r$   r   r¤   r3   r3   r4   r§   Ð  rÎ   z,ExtendedKeyUsage.__init__.<locals>.<genexpr>z9Every item in the usages list must be an ObjectIdentifier)rd   rª   ro   Ú_usages)r=   rY  r3   r3   r4   rO   Î  s   ÿ
zExtendedKeyUsage.__init__r\  r7   c                 C  rr   )Nz<ExtendedKeyUsage(rs   )r\  r<   r3   r3   r4   rt   Ù  r@   zExtendedKeyUsage.__repr__r�   r‚   rƒ   c                 C  r„   r#   )r$   rX  r…   r\  r†   r3   r3   r4   r‡   Ü  rˆ   zExtendedKeyUsage.__eq__r8   c                 C  rÕ   r#   )r‹   r¹   r\  r<   r3   r3   r4   rŒ   â  r@   zExtendedKeyUsage.__hash__r"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%   å  r�   zExtendedKeyUsage.public_bytesN)rY  rZ  r!   rK   ru   r—   rE   r]   )rV   rW   rX   r   ÚEXTENDED_KEY_USAGErJ   rO   rF   rv   rw   rx   rt   r‡   rŒ   r%   r3   r3   r3   r4   rX  Ë  s    
	


rX  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$   r_  r…   r†   r3   r3   r4   r‡   ì  ó   
zOCSPNoCheck.__eq__r8   c                 C  ó   t tƒS r#   )r‹   r_  r<   r3   r3   r4   rŒ   ò  ó   zOCSPNoCheck.__hash__r7   c                 C  ó   dS )Nz<OCSPNoCheck()>r3   r<   r3   r3   r4   rt   õ  ó   zOCSPNoCheck.__repr__r"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%   ø  r�   zOCSPNoCheck.public_bytesNr—   rE   ru   r]   )
rV   rW   rX   r   ÚOCSP_NO_CHECKrJ   r‡   rŒ   rt   r%   r3   r3   r3   r4   r_  é  ó    


r_  c                   @  r^  )ÚPrecertPoisonr�   r‚   r!   rƒ   c                 C  r`  ra  )r$   ri  r…   r†   r3   r3   r4   r‡   ÿ  rb  zPrecertPoison.__eq__r8   c                 C  rc  r#   )r‹   ri  r<   r3   r3   r4   rŒ     rd  zPrecertPoison.__hash__r7   c                 C  re  )Nz<PrecertPoison()>r3   r<   r3   r3   r4   rt     rf  zPrecertPoison.__repr__r"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%     r�   zPrecertPoison.public_bytesNr—   rE   ru   r]   )
rV   rW   rX   r   ÚPRECERT_POISONrJ   r‡   rŒ   rt   r%   r3   r3   r3   r4   ri  ü  rh  ri  c                   @  rÇ   )Ú
TLSFeatureÚfeaturesútyping.Iterable[TLSFeatureType]r!   rK   c                 C  s8   t |ƒ}tdd„ |D ƒƒrt|ƒdkrtdƒ‚|| _d S )Nc                 s  r¢   r#   )r$   ÚTLSFeatureTyper¤   r3   r3   r4   r§     rÎ   z&TLSFeature.__init__.<locals>.<genexpr>r   z@features must be a list of elements from the TLSFeatureType enum)rd   rª   r:   ro   Ú	_features)r=   rl  r3   r3   r4   rO     s   ÿÿ
zTLSFeature.__init__ro  r7   c                 C  rr   )Nz<TLSFeature(features=rs   )ro  r<   r3   r3   r4   rt   !  r@   zTLSFeature.__repr__r�   r‚   rƒ   c                 C  r„   r#   )r$   rk  r…   ro  r†   r3   r3   r4   r‡   $  rˆ   zTLSFeature.__eq__r8   c                 C  rÕ   r#   )r‹   r¹   ro  r<   r3   r3   r4   rŒ   *  r@   zTLSFeature.__hash__r"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%   -  r�   zTLSFeature.public_bytesN)rl  rm  r!   rK   ru   r—   rE   r]   )rV   rW   rX   r   ÚTLS_FEATURErJ   rO   rF   rv   rw   rx   rt   r‡   rŒ   r%   r3   r3   r3   r4   rk    s    



rk  c                   @  s   e Zd ZdZdZdS )rn  r/  é   N)rV   rW   rX   Ústatus_requestÚstatus_request_v2r3   r3   r3   r4   rn  1  s    rn  c                 C  s   i | ]}|j |“qS r3   ©rp   r¤   r3   r3   r4   Ú
<dictcomp><  ó    ru  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_certsr8   r!   rK   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$   r8   ro   r©   Ú_skip_certs)r=   rx  r3   r3   r4   rO   B  s
   

zInhibitAnyPolicy.__init__r7   c                 C  rr   )Nz<InhibitAnyPolicy(skip_certs=rs   )rx  r<   r3   r3   r4   rt   K  r@   zInhibitAnyPolicy.__repr__r�   r‚   rƒ   c                 C  r„   r#   )r$   rw  r…   rx  r†   r3   r3   r4   r‡   N  rˆ   zInhibitAnyPolicy.__eq__c                 C  r‰   r#   )r‹   rx  r<   r3   r3   r4   rŒ   T  r�   zInhibitAnyPolicy.__hash__c                 C  r�   r#   )ry  r<   r3   r3   r4   rx  W  r‘   zInhibitAnyPolicy.skip_certsr"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%   [  r�   zInhibitAnyPolicy.public_bytesN)rx  r8   r!   rK   ru   r—   rE   r]   )rV   rW   rX   r   ÚINHIBIT_ANY_POLICYrJ   rO   rt   r‡   rŒ   r™   rx  r%   r3   r3   r3   r4   rw  ?  s    

	

rw  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!   rK   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)
r=   r|  r}  r~  r  r€  r�  r‚  rƒ  r„  r3   r3   r4   rO   b  s   ÿ
zKeyUsage.__init__c                 C  r�   r#   )r…  r<   r3   r3   r4   r|  ~  r‘   zKeyUsage.digital_signaturec                 C  r�   r#   )r†  r<   r3   r3   r4   r}  ‚  r‘   zKeyUsage.content_commitmentc                 C  r�   r#   )r‡  r<   r3   r3   r4   r~  †  r‘   zKeyUsage.key_enciphermentc                 C  r�   r#   )rˆ  r<   r3   r3   r4   r  Š  r‘   zKeyUsage.data_enciphermentc                 C  r�   r#   )r‰  r<   r3   r3   r4   r€  Ž  r‘   zKeyUsage.key_agreementc                 C  r�   r#   )rŠ  r<   r3   r3   r4   r�  ’  r‘   zKeyUsage.key_cert_signc                 C  r�   r#   )r‹  r<   r3   r3   r4   r‚  –  r‘   zKeyUsage.crl_signc                 C  ó   | j stdƒ‚| jS )Nz7encipher_only is undefined unless key_agreement is true)r€  r©   rŒ  r<   r3   r3   r4   rƒ  š  ó
   ÿzKeyUsage.encipher_onlyc                 C  rŽ  )Nz7decipher_only is undefined unless key_agreement is true)r€  r©   r�  r<   r3   r3   r4   r„  £  r�  zKeyUsage.decipher_onlyr7   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=rs   )
rƒ  r„  r©   r|  r}  r~  r  r€  r�  r‚  )r=   rƒ  r„  r3   r3   r4   rt   ¬  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~  r  r€  r�  r‚  rŒ  r�  r†   r3   r3   r4   r‡   Á  s&   

ÿ
þ
ý
ü
û
ú
ù
÷zKeyUsage.__eq__r8   c              
   C  s,   t | j| j| j| j| j| j| j| j| j	f	ƒS r#   )
r‹   r|  r}  r~  r  r€  r�  r‚  rŒ  r�  r<   r3   r3   r4   rŒ   Ñ  s   ÷ÿzKeyUsage.__hash__r"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%   à  r�   zKeyUsage.public_bytesN)r|  rƒ   r}  rƒ   r~  rƒ   r  rƒ   r€  rƒ   r�  rƒ   r‚  rƒ   rƒ  rƒ   r„  rƒ   r!   rK   rñ   ru   r—   rE   r]   )rV   rW   rX   r   Ú	KEY_USAGErJ   rO   r™   r|  r}  r~  r  r€  r�  r‚  rƒ  r„  rt   r‡   rŒ   r%   r3   r3   r3   r4   r{  _  s2    



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	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!   rK   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¤   r3   r3   r4   r§   ò  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¤   r3   r3   r4   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)rd   r©   rª   ro   Ú_validate_treeÚ_permitted_subtreesÚ_excluded_subtrees)r=   r’  r“  r3   r3   r4   rO   ç  s8   ÿÿ
ÿÿ
ÿ
zNameConstraints.__init__r�   r‚   rƒ   c                 C  rå   r#   )r$   r‘  r…   r“  r’  r†   r3   r3   r4   r‡     ræ   zNameConstraints.__eq__Útreeútyping.Iterable[GeneralName]c                 C  s   |   |¡ |  |¡ d S r#   )Ú_validate_ip_nameÚ_validate_dns_name©r=   r—  r3   r3   r4   r”    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   rp   Ú	ipaddressÚIPv4NetworkÚIPv6Network©r¥   Únamer3   r3   r4   r§     s   € 
üÿ
þz4NameConstraints._validate_ip_name.<locals>.<genexpr>zGIPAddress name constraints must be an IPv4Network or IPv6Network object)Úanyro   r›  r3   r3   r4   r™    s   ûÿùz!NameConstraints._validate_ip_namec                 C  rœ  )Nc                 s  s$   � | ]}t |tƒod |jv V  qdS )Ú*N)r$   r   rp   r   r3   r3   r4   r§   ,  s   € 
ÿz5NameConstraints._validate_dns_name.<locals>.<genexpr>zDDNSName name constraints must not contain the '*' wildcard character)r¢  r©   r›  r3   r3   r4   rš  +  s   ÿÿýz"NameConstraints._validate_dns_namer7   c                 C  s   d| j › d| j› d�S )Nz$<NameConstraints(permitted_subtrees=z, excluded_subtrees=rs   )r’  r“  r<   r3   r3   r4   rt   4  ó   
ÿÿzNameConstraints.__repr__r8   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“  r‹   )r=   ÚpsÚesr3   r3   r4   rŒ   :  s   

zNameConstraints.__hash__r»   c                 C  r�   r#   )r•  r<   r3   r3   r4   r’  G  r¼   z"NameConstraints.permitted_subtreesc                 C  r�   r#   )r–  r<   r3   r3   r4   r“  M  r¼   z!NameConstraints.excluded_subtreesr"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%   S  r�   zNameConstraints.public_bytesN)r’  rŸ   r“  rŸ   r!   rK   r—   )r—  r˜  r!   rK   ru   rE   r½   r]   )rV   rW   rX   r   ÚNAME_CONSTRAINTSrJ   rO   r‡   r”  r™  rš  rt   rŒ   r™   r’  r“  r%   r3   r3   r3   r4   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 )#Ú	ExtensionrJ   r   Úcriticalrƒ   rp   r   r!   rK   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   ro   rƒ   Ú_oidÚ	_criticalÚ_value)r=   rJ   r©  rp   r3   r3   r4   rO   X  s   
ÿ

zExtension.__init__c                 C  r�   r#   ©rª  r<   r3   r3   r4   rJ   g  r‘   zExtension.oidc                 C  r�   r#   )r«  r<   r3   r3   r4   r©  k  r‘   zExtension.criticalc                 C  r�   r#   ©r¬  r<   r3   r3   r4   rp   o  r‘   zExtension.valuer7   c                 C  ó   d| j › d| j› d| j› d�S )Nz<Extension(oid=z, critical=ú, value=rs   )rJ   r©  rp   r<   r3   r3   r4   rt   s  s   ÿÿzExtension.__repr__r�   r‚   c                 C  r¸   r#   )r$   r¨  r…   rJ   r©  rp   r†   r3   r3   r4   r‡   y  ó   

ÿ
ýzExtension.__eq__r8   c                 C  ó   t | j| j| jfƒS r#   )r‹   rJ   r©  rp   r<   r3   r3   r4   rŒ   ƒ  rV  zExtension.__hash__N)rJ   r   r©  rƒ   rp   r   r!   rK   ré   rñ   )r!   r   ru   r—   rE   )rV   rW   rX   rO   r™   rJ   r©  rp   rt   r‡   rŒ   r3   r3   r3   r4   r¨  W  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!   rK   c                 C  rË   )Nc                 s  r¢   r#   r£   r¤   r3   r3   r4   r§   Š  rÎ   z(GeneralNames.__init__.<locals>.<genexpr>z^Every item in the general_names list must be an object conforming to the GeneralName interface)rd   rª   ro   Ú_general_names©r=   r´  r3   r3   r4   rO   ˆ  r>  zGeneralNames.__init__rµ  ÚtypeúBtype[DNSName] | type[UniformResourceIdentifier] | type[RFC822Name]ú	list[str]c                 C  ó   d S r#   r3   ©r=   r·  r3   r3   r4   Úget_values_for_type”  ó   z GeneralNames.get_values_for_typeútype[DirectoryName]ú
list[Name]c                 C  rº  r#   r3   r»  r3   r3   r4   r¼  �  ó   útype[RegisteredID]úlist[ObjectIdentifier]c                 C  rº  r#   r3   r»  r3   r3   r4   r¼  ¤  rÀ  útype[IPAddress]úlist[_IPAddressTypes]c                 C  rº  r#   r3   r»  r3   r3   r4   r¼  «  ó   útype[OtherName]úlist[OtherName]c                 C  rº  r#   r3   r»  r3   r3   r4   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·  r3   r4   r§   È  s   € z3GeneralNames.get_values_for_type.<locals>.<genexpr>c                 S  s   g | ]}|j ‘qS r3   rt  rË  r3   r3   r4   Ú
<listcomp>Ê  s    z4GeneralNames.get_values_for_type.<locals>.<listcomp>)r   rd   )r=   r·  Úobjsr3   rÍ  r4   r¼  µ  s   r7   c                 C  rr   )Nz<GeneralNames(rs   ©rµ  r<   r3   r3   r4   rt   Í  r@   zGeneralNames.__repr__r�   r‚   rƒ   c                 C  r„   r#   )r$   r³  r…   rµ  r†   r3   r3   r4   r‡   Ð  rˆ   zGeneralNames.__eq__r8   c                 C  rÕ   r#   )r‹   r¹   rµ  r<   r3   r3   r4   rŒ   Ö  r@   zGeneralNames.__hash__N©r´  r˜  r!   rK   ©r·  r¸  r!   r¹  ©r·  r¾  r!   r¿  ©r·  rÁ  r!   rÂ  ©r·  rÃ  r!   rÄ  ©r·  rÆ  r!   rÇ  ©r·  rÉ  r!   rÊ  ru   r—   rE   )rV   rW   rX   rO   rF   rv   rw   rx   ÚtypingÚoverloadr¼  rt   r‡   rŒ   r3   r3   r3   r4   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!   rK   c                 C  rc   r#   ©r³  rµ  r¶  r3   r3   r4   rO   Ý  r@   zSubjectAlternativeName.__init__rµ  r·  r¸  r¹  c                 C  rº  r#   r3   r»  r3   r3   r4   r¼  â  r½  z*SubjectAlternativeName.get_values_for_typer¾  r¿  c                 C  rº  r#   r3   r»  r3   r3   r4   r¼  ë  rÀ  rÁ  rÂ  c                 C  rº  r#   r3   r»  r3   r3   r4   r¼  ò  rÀ  rÃ  rÄ  c                 C  rº  r#   r3   r»  r3   r3   r4   r¼  ù  rÅ  rÆ  rÇ  c                 C  rº  r#   r3   r»  r3   r3   r4   r¼  ÿ  rÈ  rÉ  rÊ  c                 C  ó   | j  |¡S r#   ©rµ  r¼  r»  r3   r3   r4   r¼    ó   r7   c                 C  rr   )Nz<SubjectAlternativeName(rs   rÐ  r<   r3   r3   r4   rt     r@   zSubjectAlternativeName.__repr__r�   r‚   rƒ   c                 C  r„   r#   )r$   rÛ  r…   rµ  r†   r3   r3   r4   r‡     rˆ   zSubjectAlternativeName.__eq__r8   c                 C  r‰   r#   ©r‹   rµ  r<   r3   r3   r4   rŒ     r�   zSubjectAlternativeName.__hash__r"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%   !  r�   z#SubjectAlternativeName.public_bytesNrÑ  rÒ  rÓ  rÔ  rÕ  rÖ  r×  ru   r—   rE   r]   )rV   rW   rX   r   ÚSUBJECT_ALTERNATIVE_NAMErJ   rO   rF   rv   rw   rx   rØ  rÙ  r¼  rt   r‡   rŒ   r%   r3   r3   r3   r4   rÛ  Ú  ó&    




rÛ  c                   @  rÚ  )6ÚIssuerAlternativeNamer´  r˜  r!   rK   c                 C  rc   r#   rÜ  r¶  r3   r3   r4   rO   (  r@   zIssuerAlternativeName.__init__rµ  r·  r¸  r¹  c                 C  rº  r#   r3   r»  r3   r3   r4   r¼  -  r½  z)IssuerAlternativeName.get_values_for_typer¾  r¿  c                 C  rº  r#   r3   r»  r3   r3   r4   r¼  6  rÀ  rÁ  rÂ  c                 C  rº  r#   r3   r»  r3   r3   r4   r¼  =  rÀ  rÃ  rÄ  c                 C  rº  r#   r3   r»  r3   r3   r4   r¼  D  rÅ  rÆ  rÇ  c                 C  rº  r#   r3   r»  r3   r3   r4   r¼  J  rÈ  rÉ  rÊ  c                 C  rÝ  r#   rÞ  r»  r3   r3   r4   r¼  N  rß  r7   c                 C  rr   )Nz<IssuerAlternativeName(rs   rÐ  r<   r3   r3   r4   rt   `  r@   zIssuerAlternativeName.__repr__r�   r‚   rƒ   c                 C  r„   r#   )r$   rã  r…   rµ  r†   r3   r3   r4   r‡   c  rˆ   zIssuerAlternativeName.__eq__r8   c                 C  r‰   r#   rà  r<   r3   r3   r4   rŒ   i  r�   zIssuerAlternativeName.__hash__r"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%   l  r�   z"IssuerAlternativeName.public_bytesNrÑ  rÒ  rÓ  rÔ  rÕ  rÖ  r×  ru   r—   rE   r]   )rV   rW   rX   r   ÚISSUER_ALTERNATIVE_NAMErJ   rO   rF   rv   rw   rx   rØ  rÙ  r¼  rt   r‡   rŒ   r%   r3   r3   r3   r4   rã  %  râ  rã  c                   @  rÚ  )6ÚCertificateIssuerr´  r˜  r!   rK   c                 C  rc   r#   rÜ  r¶  r3   r3   r4   rO   s  r@   zCertificateIssuer.__init__rµ  r·  r¸  r¹  c                 C  rº  r#   r3   r»  r3   r3   r4   r¼  x  r½  z%CertificateIssuer.get_values_for_typer¾  r¿  c                 C  rº  r#   r3   r»  r3   r3   r4   r¼  �  rÀ  rÁ  rÂ  c                 C  rº  r#   r3   r»  r3   r3   r4   r¼  ˆ  rÀ  rÃ  rÄ  c                 C  rº  r#   r3   r»  r3   r3   r4   r¼  �  rÅ  rÆ  rÇ  c                 C  rº  r#   r3   r»  r3   r3   r4   r¼  •  rÈ  rÉ  rÊ  c                 C  rÝ  r#   rÞ  r»  r3   r3   r4   r¼  ™  rß  r7   c                 C  rr   )Nz<CertificateIssuer(rs   rÐ  r<   r3   r3   r4   rt   «  r@   zCertificateIssuer.__repr__r�   r‚   rƒ   c                 C  r„   r#   )r$   rå  r…   rµ  r†   r3   r3   r4   r‡   ®  rˆ   zCertificateIssuer.__eq__r8   c                 C  r‰   r#   rà  r<   r3   r3   r4   rŒ   ´  r�   zCertificateIssuer.__hash__r"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%   ·  r�   zCertificateIssuer.public_bytesNrÑ  rÒ  rÓ  rÔ  rÕ  rÖ  r×  ru   r—   rE   r]   )rV   rW   rX   r   ÚCERTIFICATE_ISSUERrJ   rO   rF   rv   rw   rx   rØ  rÙ  r¼  rt   r‡   rŒ   r%   r3   r3   r3   r4   rå  p  râ  rå  c                   @  óR   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!   rK   c                 C  r{   )Nz*reason must be an element from ReasonFlags)r$   r  ro   Ú_reason)r=   ré  r3   r3   r4   rO   ¾  r€   zCRLReason.__init__r7   c                 C  rr   )Nz<CRLReason(reason=rs   ©rê  r<   r3   r3   r4   rt   Ä  r@   zCRLReason.__repr__r�   r‚   rƒ   c                 C  r„   r#   )r$   rè  r…   ré  r†   r3   r3   r4   r‡   Ç  rˆ   zCRLReason.__eq__r8   c                 C  r‰   r#   )r‹   ré  r<   r3   r3   r4   rŒ   Í  r�   zCRLReason.__hash__c                 C  r�   r#   rë  r<   r3   r3   r4   ré  Ð  r‘   zCRLReason.reasonr"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%   Ô  r�   zCRLReason.public_bytesN)ré  r  r!   rK   ru   r—   rE   )r!   r  r]   )rV   rW   rX   r   Ú
CRL_REASONrJ   rO   rt   r‡   rŒ   r™   ré  r%   r3   r3   r3   r4   rè  »  ó    



rè  c                   @  rç  )ÚInvalidityDateÚinvalidity_dateúdatetime.datetimer!   rK   c                 C  s   t |tjƒs
tdƒ‚|| _d S )Nz+invalidity_date must be a datetime.datetime)r$   Údatetimero   Ú_invalidity_date)r=   rï  r3   r3   r4   rO   Û  s   
zInvalidityDate.__init__r7   c                 C  rr   )Nz <InvalidityDate(invalidity_date=rs   ©rò  r<   r3   r3   r4   rt   á  r@   zInvalidityDate.__repr__r�   r‚   rƒ   c                 C  r„   r#   )r$   rî  r…   rï  r†   r3   r3   r4   r‡   ä  rˆ   zInvalidityDate.__eq__r8   c                 C  r‰   r#   )r‹   rï  r<   r3   r3   r4   rŒ   ê  r�   zInvalidityDate.__hash__c                 C  r�   r#   ró  r<   r3   r3   r4   rï  í  r‘   zInvalidityDate.invalidity_dater"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%   ñ  r�   zInvalidityDate.public_bytesN)rï  rð  r!   rK   ru   r—   rE   )r!   rð  r]   )rV   rW   rX   r   ÚINVALIDITY_DATErJ   rO   rt   r‡   rŒ   r™   rï  r%   r3   r3   r3   r4   rî  Ø  rí  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ú+typing.Iterable[SignedCertificateTimestamp]r!   rK   c                 C  rË   )Nc                 s  r¢   r#   ©r$   r   ©r¥   Úsctr3   r3   r4   r§   ÿ  ó
   € ÿ
ÿzEPrecertificateSignedCertificateTimestamps.__init__.<locals>.<genexpr>úYEvery item in the signed_certificate_timestamps list must be a SignedCertificateTimestamp©rd   rª   ro   Ú_signed_certificate_timestamps©r=   r÷  r3   r3   r4   rO   ø  ó   þÿ
z2PrecertificateSignedCertificateTimestamps.__init__rÿ  r7   c                 C  ó   dt | ƒ› d�S )Nz+<PrecertificateSignedCertificateTimestamps(rs   ©rd   r<   r3   r3   r4   rt     rè   z2PrecertificateSignedCertificateTimestamps.__repr__r8   c                 C  rÕ   r#   ©r‹   r¹   rÿ  r<   r3   r3   r4   rŒ     r@   z2PrecertificateSignedCertificateTimestamps.__hash__r�   r‚   rƒ   c                 C  r„   r#   )r$   rö  r…   rÿ  r†   r3   r3   r4   r‡     ó   
ÿÿz0PrecertificateSignedCertificateTimestamps.__eq__r"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%     r�   z6PrecertificateSignedCertificateTimestamps.public_bytesN©r÷  rø  r!   rK   ru   rE   r—   r]   )rV   rW   rX   r   Ú%PRECERT_SIGNED_CERTIFICATE_TIMESTAMPSrJ   rO   rF   rv   rw   rx   rt   rŒ   r‡   r%   r3   r3   r3   r4   rö  õ  ó    

ÿ


	rö  c                   @  rõ  )ÚSignedCertificateTimestampsr÷  rø  r!   rK   c                 C  rË   )Nc                 s  r¢   r#   rù  rú  r3   r3   r4   r§   *  rü  z7SignedCertificateTimestamps.__init__.<locals>.<genexpr>rý  rþ  r   r3   r3   r4   rO   #  r  z$SignedCertificateTimestamps.__init__rÿ  r7   c                 C  r  )Nz<SignedCertificateTimestamps(rs   r  r<   r3   r3   r4   rt   8  rè   z$SignedCertificateTimestamps.__repr__r8   c                 C  rÕ   r#   r  r<   r3   r3   r4   rŒ   ;  r@   z$SignedCertificateTimestamps.__hash__r�   r‚   rƒ   c                 C  r„   r#   )r$   r	  r…   rÿ  r†   r3   r3   r4   r‡   >  r  z"SignedCertificateTimestamps.__eq__r"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%   G  r�   z(SignedCertificateTimestamps.public_bytesNr  ru   rE   r—   r]   )rV   rW   rX   r   ÚSIGNED_CERTIFICATE_TIMESTAMPSrJ   rO   rF   rv   rw   rx   rt   rŒ   r‡   r%   r3   r3   r3   r4   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 )Ú	OCSPNonceÚnoncer"   r!   rK   c                 C  r{   )Nznonce must be bytes)r$   r"   ro   Ú_nonce)r=   r  r3   r3   r4   rO   N  r€   zOCSPNonce.__init__r�   r‚   rƒ   c                 C  r„   r#   )r$   r  r…   r  r†   r3   r3   r4   r‡   T  rˆ   zOCSPNonce.__eq__r8   c                 C  r‰   r#   )r‹   r  r<   r3   r3   r4   rŒ   Z  r�   zOCSPNonce.__hash__r7   c                 C  rÄ   )Nz<OCSPNonce(nonce=rs   )r  r<   r3   r3   r4   rt   ]  r@   zOCSPNonce.__repr__c                 C  r�   r#   )r  r<   r3   r3   r4   r  `  r‘   zOCSPNonce.noncec                 C  r’   r#   r“   r<   r3   r3   r4   r%   d  r�   zOCSPNonce.public_bytesN)r  r"   r!   rK   r—   rE   ru   r]   )rV   rW   rX   r   ÚNONCErJ   rO   r‡   rŒ   rt   r™   r  r%   r3   r3   r3   r4   r  K  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Ú	responsesrZ  r!   rK   c                 C  s,   t |ƒ}tdd„ |D ƒƒrtdƒ‚|| _d S )Nc                 s  s   � | ]	}t |tƒ V  qd S r#   r[  )r¥   Úrr3   r3   r4   r§   m  s   € z3OCSPAcceptableResponses.__init__.<locals>.<genexpr>z'All responses must be ObjectIdentifiers)rd   r¢  ro   Ú
_responses)r=   r  r3   r3   r4   rO   k  s   
z OCSPAcceptableResponses.__init__r�   r‚   rƒ   c                 C  r„   r#   )r$   r  r…   r  r†   r3   r3   r4   r‡   r  rˆ   zOCSPAcceptableResponses.__eq__r8   c                 C  rÕ   r#   )r‹   r¹   r  r<   r3   r3   r4   rŒ   x  r@   z OCSPAcceptableResponses.__hash__r7   c                 C  rr   )Nz#<OCSPAcceptableResponses(responses=rs   )r  r<   r3   r3   r4   rt   {  r@   z OCSPAcceptableResponses.__repr__ú!typing.Iterator[ObjectIdentifier]c                 C  r‰   r#   )rA   r  r<   r3   r3   r4   rw   ~  r�   z OCSPAcceptableResponses.__iter__r"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%   �  r�   z$OCSPAcceptableResponses.public_bytesN)r  rZ  r!   rK   r—   rE   ru   )r!   r  r]   )rV   rW   rX   r   ÚACCEPTABLE_RESPONSESrJ   rO   r‡   rŒ   rt   rw   r%   r3   r3   r3   r4   r  h  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!   rK   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rYtd	ƒ‚t|||||||gƒshtd
ƒ‚|| _|| _|| _|| _|| _|| _|| _d S )Nc                 s  r¢   r#   r  r¤   r3   r3   r4   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 r3   r3   r¤   r3   r3   r4   rÎ  ¹  rv  z5IssuingDistributionPoint.__init__.<locals>.<listcomp>r+  z‹Only one of the following can be set to True: only_contains_user_certs, only_contains_ca_certs, indirect_crl, 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.)rd   r$   r  rª   ro   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  r  r  r  r  r  Úcrl_constraintsr3   r3   r4   rO   ˆ  sp   
ÿþÿ

ÿÿþýüÿüÿùÿÿ
z!IssuingDistributionPoint.__init__r7   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=rs   )r  r  r  r  r  r  r  r<   r3   r3   r4   rt   Û  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†   r3   r3   r4   r‡   ç  s"   

ÿ
þ
ý
ü
ûÿùzIssuingDistributionPoint.__eq__r8   c                 C  s$   t | j| j| j| j| j| j| jfƒS r#   )r‹   r  r  r  r  r  r  r  r<   r3   r3   r4   rŒ   ö  s   ùÿz!IssuingDistributionPoint.__hash__r»   c                 C  r�   r#   r  r<   r3   r3   r4   r    r‘   z"IssuingDistributionPoint.full_namec                 C  r�   r#   r  r<   r3   r3   r4   r    r‘   z&IssuingDistributionPoint.relative_namec                 C  r�   r#   )r  r<   r3   r3   r4   r    r‘   z1IssuingDistributionPoint.only_contains_user_certsc                 C  r�   r#   )r  r<   r3   r3   r4   r    r‘   z/IssuingDistributionPoint.only_contains_ca_certsc                 C  r�   r#   )r  r<   r3   r3   r4   r    r¼   z*IssuingDistributionPoint.only_some_reasonsc                 C  r�   r#   )r  r<   r3   r3   r4   r    r‘   z%IssuingDistributionPoint.indirect_crlc                 C  r�   r#   )r  r<   r3   r3   r4   r    r‘   z6IssuingDistributionPoint.only_contains_attribute_certsr"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%   !  r�   z%IssuingDistributionPoint.public_bytesN)r  rŸ   r  r  r  rƒ   r  rƒ   r  r
  r  rƒ   r  rƒ   r!   rK   ru   r—   rE   r½   r  rñ   r  r]   )rV   rW   rX   r   ÚISSUING_DISTRIBUTION_POINTrJ   rO   rt   r‡   rŒ   r™   r  r  r  r  r  r  r  r%   r3   r3   r3   r4   r  …  s*    

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 )&ÚMSCertificateTemplateÚtemplate_idr   Úmajor_versionr¡   Úminor_versionr!   rK   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   ro   Ú_template_idr8   Ú_major_versionÚ_minor_version)r=   r#  r$  r%  r3   r3   r4   rO   (  s   
ÿ
zMSCertificateTemplate.__init__c                 C  r�   r#   )r'  r<   r3   r3   r4   r#  <  r‘   z!MSCertificateTemplate.template_idc                 C  r�   r#   )r(  r<   r3   r3   r4   r$  @  r‘   z#MSCertificateTemplate.major_versionc                 C  r�   r#   )r)  r<   r3   r3   r4   r%  D  r‘   z#MSCertificateTemplate.minor_versionr7   c                 C  r¯  )Nz#<MSCertificateTemplate(template_id=z, major_version=z, minor_version=rs   )r#  r$  r%  r<   r3   r3   r4   rt   H  r·   zMSCertificateTemplate.__repr__r�   r‚   rƒ   c                 C  r¸   r#   )r$   r"  r…   r#  r$  r%  r†   r3   r3   r4   r‡   O  r±  zMSCertificateTemplate.__eq__r8   c                 C  r²  r#   )r‹   r#  r$  r%  r<   r3   r3   r4   rŒ   Y  rV  zMSCertificateTemplate.__hash__r"   c                 C  r’   r#   r“   r<   r3   r3   r4   r%   \  r�   z"MSCertificateTemplate.public_bytesN)r#  r   r$  r¡   r%  r¡   r!   rK   ré   r¾   ru   r—   rE   r]   )rV   rW   rX   r   ÚMS_CERTIFICATE_TEMPLATErJ   rO   r™   r#  r$  r%  rt   r‡   rŒ   r%   r3   r3   r3   r4   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 )!rn   rJ   r   rp   r"   r!   rK   c                 C  s"   t |tƒs	tdƒ‚|| _|| _d S )Nr&  )r$   r   ro   rª  r¬  )r=   rJ   rp   r3   r3   r4   rO   a  s   

zUnrecognizedExtension.__init__c                 C  r�   r#   r­  r<   r3   r3   r4   rJ   g  r‘   zUnrecognizedExtension.oidc                 C  r�   r#   r®  r<   r3   r3   r4   rp   k  r‘   zUnrecognizedExtension.valuer7   c                 C  s   d| j › d| j›d�S )Nz<UnrecognizedExtension(oid=r°  rs   )rJ   rp   r<   r3   r3   r4   rt   o  r¤  zUnrecognizedExtension.__repr__r�   r‚   rƒ   c                 C  rå   r#   )r$   rn   r…   rJ   rp   r†   r3   r3   r4   r‡   u  rð   zUnrecognizedExtension.__eq__r8   c                 C  rç   r#   )r‹   rJ   rp   r<   r3   r3   r4   rŒ   {  rè   zUnrecognizedExtension.__hash__c                 C  r�   r#   rt  r<   r3   r3   r4   r%   ~  s   z"UnrecognizedExtension.public_bytesN)rJ   r   rp   r"   r!   rK   ré   r]   ru   r—   rE   )rV   rW   rX   rO   r™   rJ   rp   rt   r‡   rŒ   r%   r3   r3   r3   r4   rn   `  s    



rn   )r    r   r!   r"   )r6   r7   )iÚ
__future__r   Úabcrñ  r.   r�  rØ  Úcryptographyr   Ú"cryptography.hazmat.bindings._rustr   r   r”   Úcryptography.hazmat.primitivesr   r   Ú,cryptography.hazmat.primitives.asymmetric.ecr   Ú-cryptography.hazmat.primitives.asymmetric.rsar	   Ú/cryptography.hazmat.primitives.asymmetric.typesr
   r   Ú*cryptography.x509.certificate_transparencyr   Úcryptography.x509.general_namer   r   r   r   r   r   r   r   r   Úcryptography.x509.namer   r   Úcryptography.x509.oidr   r   r   r   ÚTypeVarr   r5   rF   Ú	ExceptionrH   r[   ÚABCMetar   r`   ry   r›   r´   rÈ   rÚ   rÍ   rë   ró   rõ   r  rù   ÚEnumr  r$  r%  r&  r  r'  r(  r)  r*  Ú_REASON_BIT_MAPPINGÚ_CRLREASONFLAGSr3  r9  r<  rD  rM  rX  r_  ri  rk  rn  Ú_TLS_FEATURE_TYPE_TO_ENUMrw  r{  r‘  ÚGenericr¨  r³  rÛ  rã  rå  rè  rî  rö  r	  r  r  r  r"  rn   r3   r3   r3   r4   Ú<module>   s¬   ,ÿ

'l$!!(.%%køøA;+("  s0SKKK++ !;