HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //proc/self/root/lib/python3/dist-packages/cryptography/x509/__pycache__/extensions.cpython-38.pyc
U

�>b���@s�ddlZddlZddlZddlZddlZddlmZddlmZm	Z	m
Z
mZddlm
Z
ddlmZmZddlmZddlmZddlmZdd	lmZmZmZdd
lmZddlmZmZm Z m!Z!e
e"d�d
d�Z#dd�Z$Gdd�de%�Z&Gdd�de%�Z'Gdd�dej(d�Z)Gdd�de*�Z+Gdd�de)�Z,Gdd�de)�Z-Gdd�de)�Z.Gd d!�d!e)�Z/Gd"d#�d#e)�Z0Gd$d%�d%e*�Z1Gd&d'�d'e)�Z2Gd(d)�d)e)�Z3Gd*d+�d+e)�Z4Gd,d-�d-e)�Z5Gd.d/�d/e*�Z6Gd0d1�d1ej7�Z8Gd2d3�d3e)�Z9Gd4d5�d5e)�Z:Gd6d7�d7e*�Z;Gd8d9�d9e*�Z<Gd:d;�d;e*�Z=Gd<d=�d=e)�Z>Gd>d?�d?e)�Z?Gd@dA�dAe)�Z@GdBdC�dCe)�ZAGdDdE�dEej7�ZBdFdG�eBD�ZCGdHdI�dIe)�ZDGdJdK�dKe)�ZEGdLdM�dMe)�ZFGdNdO�dOe*�ZGGdPdQ�dQe*�ZHGdRdS�dSe)�ZIGdTdU�dUe)�ZJGdVdW�dWe)�ZKGdXdY�dYe)�ZLGdZd[�d[e)�ZMGd\d]�d]e)�ZNGd^d_�d_e)�ZOGd`da�dae)�ZPGdbdc�dce)�ZQGddde�dee)�ZRdS)f�N)�utils)�
BIT_STRING�	DERReader�OBJECT_IDENTIFIER�SEQUENCE)�_PUBLIC_KEY_TYPES)�
constant_time�
serialization)�EllipticCurvePublicKey)�RSAPublicKey)�SignedCertificateTimestamp)�GeneralName�	IPAddress�	OtherName)�RelativeDistinguishedName)�CRLEntryExtensionOID�ExtensionOID�OCSPExtensionOID�ObjectIdentifier��
public_key�returnc	Cs�t|t�r |�tjjtjj�}n�t|t�r@|�tjj	tjj
�}n�|�tjjtjj�}t|�}|�
t��}|�t�}|�t�}W5QRX|� |�t�|��s�|��W5QRX|��dkr�td��|j}t�|���S)NrzInvalid public key encoding)�
isinstancer�public_bytesr	�Encoding�DER�PublicFormat�PKCS1r
�X962�UncompressedPoint�SubjectPublicKeyInfor�read_single_elementr�read_elementrr�is_empty�read_any_element�	read_byte�
ValueError�data�hashlib�sha1�digest)rr'Z
serialized�readerZpublic_key_info�	algorithmZpublic_key_data�r-�>/usr/lib/python3/dist-packages/cryptography/x509/extensions.py�_key_identifier_from_public_key$s4
�
��

r/cs.�fdd�}�fdd�}�fdd�}|||fS)Ncstt|���S�N)�len�getattr��self��
field_namer-r.�
len_methodMsz*_make_sequence_methods.<locals>.len_methodcstt|���Sr0)�iterr2r3r5r-r.�iter_methodPsz+_make_sequence_methods.<locals>.iter_methodcst|��|Sr0)r2)r4�idxr5r-r.�getitem_methodSsz._make_sequence_methods.<locals>.getitem_methodr-)r6r7r9r;r-r5r.�_make_sequence_methodsLsr<cs$eZdZeed��fdd�Z�ZS)�DuplicateExtension��msg�oidcstt|��|�||_dSr0)�superr=�__init__r@�r4r?r@��	__class__r-r.rBZszDuplicateExtension.__init__��__name__�
__module__�__qualname__�strrrB�
__classcell__r-r-rDr.r=Ysr=cs$eZdZeed��fdd�Z�ZS)�ExtensionNotFoundr>cstt|��|�||_dSr0)rArLrBr@rCrDr-r.rB`szExtensionNotFound.__init__rFr-r-rDr.rL_srLc@s eZdZejed�dd��ZdS)�
ExtensionType�rcCsdS)zK
        Returns the oid associated with the given extension type.
        Nr-r3r-r-r.r@fszExtensionType.oidN)rGrHrI�abc�abstractpropertyrr@r-r-r-r.rMesrM)�	metaclassc@sTeZdZejdd�dd�Zedd�dd�Zdd�d	d
�Ze	d�\Z
ZZdd
�Z
dS)�
Extensions�	Extension)�
extensionscCs
||_dSr0)�_extensions)r4rTr-r-r.rBnszExtensions.__init__)r@rcCs0|D]}|j|kr|Sqtd�|�|��dS)N�No {} extension was found)r@rL�format)r4r@�extr-r-r.�get_extension_for_oidqs

z Extensions.get_extension_for_oidrNcCsD|tkrtd��|D]}t|j|�r|Sqtd�|�|j��dS)Nz|UnrecognizedExtension can't be used with get_extension_for_class because more than one instance of the class may be present.rV)�UnrecognizedExtension�	TypeErrorr�valuerLrWr@)r4ZextclassrXr-r-r.�get_extension_for_classxs�
�z"Extensions.get_extension_for_classrUcCsd�|j�S)Nz<Extensions({})>)rWrUr3r-r-r.�__repr__�szExtensions.__repr__N)rGrHrI�typing�ListrBrrYr]r<�__len__�__iter__�__getitem__r^r-r-r-r.rRms
rRc@sJeZdZejZed�dd�Zdd�Zdd�Z	dd	�Z
d
d�Ze�
d�Zd
S)�	CRLNumber��
crl_numbercCst|t�std��||_dS�Nzcrl_number must be an integer�r�intr[�_crl_number�r4rfr-r-r.rB�s
zCRLNumber.__init__cCst|t�stS|j|jkSr0)rrd�NotImplementedrf�r4�otherr-r-r.�__eq__�s
zCRLNumber.__eq__cCs
||kSr0r-rmr-r-r.�__ne__�szCRLNumber.__ne__cCs
t|j�Sr0��hashrfr3r-r-r.�__hash__�szCRLNumber.__hash__cCsd�|j�S)Nz<CRLNumber({})>)rWrfr3r-r-r.r^�szCRLNumber.__repr__rjN)rGrHrIrZ
CRL_NUMBERr@rirBrorprsr^r�read_only_propertyrfr-r-r-r.rd�srdc@s�eZdZejZejeejej	e
ejed�dd�Ze
edd�dd��Ze
ddd�d	d
��Zdd�Zd
d�Zdd�Zdd�Ze�d�Ze�d�Ze�d�ZdS)�AuthorityKeyIdentifier��key_identifier�authority_cert_issuer�authority_cert_serial_numbercCsr|dk|dkkrtd��|dk	rBt|�}tdd�|D��sBtd��|dk	r\t|t�s\td��||_||_||_dS)NzXauthority_cert_issuer and authority_cert_serial_number must both be present or both Nonecss|]}t|t�VqdSr0�rr
��.0�xr-r-r.�	<genexpr>�sz2AuthorityKeyIdentifier.__init__.<locals>.<genexpr>z;authority_cert_issuer must be a list of GeneralName objectsz/authority_cert_serial_number must be an integer)	r&�list�allr[rri�_key_identifier�_authority_cert_issuer�_authority_cert_serial_number)r4rwrxryr-r-r.rB�s,����
�zAuthorityKeyIdentifier.__init__rcCst|�}||ddd�S�Nrv�r/)�clsrr*r-r-r.�from_issuer_public_key�s�z-AuthorityKeyIdentifier.from_issuer_public_key�SubjectKeyIdentifier)�skircCs||jddd�Sr��r*)r�r�r-r-r.�"from_issuer_subject_key_identifier�s
�z9AuthorityKeyIdentifier.from_issuer_subject_key_identifiercCs
d�|�S)Nz�<AuthorityKeyIdentifier(key_identifier={0.key_identifier!r}, authority_cert_issuer={0.authority_cert_issuer}, authority_cert_serial_number={0.authority_cert_serial_number})>�rWr3r-r-r.r^�s��zAuthorityKeyIdentifier.__repr__cCs2t|t�stS|j|jko0|j|jko0|j|jkSr0)rrurlrwrxryrmr-r-r.ro�s

���zAuthorityKeyIdentifier.__eq__cCs
||kSr0r-rmr-r-r.rp�szAuthorityKeyIdentifier.__ne__cCs,|jdkrd}n
t|j�}t|j||jf�Sr0)rx�tuplerrrwry)r4Zacir-r-r.rs�s

�zAuthorityKeyIdentifier.__hash__r�r�r�N)rGrHrIr�AUTHORITY_KEY_IDENTIFIERr@r_�Optional�bytes�Iterabler
rirB�classmethodrr�r�r^rorprsrrtrwrxryr-r-r-r.ru�s,�!�
�		

�ruc@s^eZdZejZed�dd�Zee	dd�dd��Z
e�d�Z
dd	�Zd
d�Zdd
�Zdd�ZdS)r�r�cCs
||_dSr0)�_digest)r4r*r-r-r.rBszSubjectKeyIdentifier.__init__rcCs|t|��Sr0r�)r�rr-r-r.�from_public_keysz$SubjectKeyIdentifier.from_public_keyr�cCsd�|j�S)Nz$<SubjectKeyIdentifier(digest={0!r})>)rWr*r3r-r-r.r^szSubjectKeyIdentifier.__repr__cCst|t�stSt�|j|j�Sr0)rr�rlrZbytes_eqr*rmr-r-r.ros
zSubjectKeyIdentifier.__eq__cCs
||kSr0r-rmr-r-r.rpszSubjectKeyIdentifier.__ne__cCs
t|j�Sr0)rrr*r3r-r-r.rs"szSubjectKeyIdentifier.__hash__N)rGrHrIr�SUBJECT_KEY_IDENTIFIERr@r�rBr�rr�rrtr*r^rorprsr-r-r-r.r�s�
r�c@sTeZdZejZejdd�dd�Ze	d�\Z
ZZdd�Z
dd	�Zd
d�Zdd
�ZdS)�AuthorityInformationAccess�AccessDescription��descriptionscCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr0�rr�r{r-r-r.r~+sz6AuthorityInformationAccess.__init__.<locals>.<genexpr>�@Every item in the descriptions list must be an AccessDescription�rr�r[�
_descriptions�r4r�r-r-r.rB)s�z#AuthorityInformationAccess.__init__r�cCsd�|j�S)Nz <AuthorityInformationAccess({})>�rWr�r3r-r-r.r^5sz#AuthorityInformationAccess.__repr__cCst|t�stS|j|jkSr0)rr�rlr�rmr-r-r.ro8s
z!AuthorityInformationAccess.__eq__cCs
||kSr0r-rmr-r-r.rp>sz!AuthorityInformationAccess.__ne__cCstt|j��Sr0�rrr�r�r3r-r-r.rsAsz#AuthorityInformationAccess.__hash__N)rGrHrIr�AUTHORITY_INFORMATION_ACCESSr@r_r�rBr<rarbrcr^rorprsr-r-r-r.r�&s
r�c@sTeZdZejZejdd�dd�Ze	d�\Z
ZZdd�Z
dd	�Zd
d�Zdd
�ZdS)�SubjectInformationAccessr�r�cCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr0r�r{r-r-r.r~Jsz4SubjectInformationAccess.__init__.<locals>.<genexpr>r�r�r�r-r-r.rBHs�z!SubjectInformationAccess.__init__r�cCsd�|j�S)Nz<SubjectInformationAccess({})>r�r3r-r-r.r^Tsz!SubjectInformationAccess.__repr__cCst|t�stS|j|jkSr0)rr�rlr�rmr-r-r.roWs
zSubjectInformationAccess.__eq__cCs
||kSr0r-rmr-r-r.rp]szSubjectInformationAccess.__ne__cCstt|j��Sr0r�r3r-r-r.rs`sz!SubjectInformationAccess.__hash__N)rGrHrIr�SUBJECT_INFORMATION_ACCESSr@r_r�rBr<rarbrcr^rorprsr-r-r-r.r�Es
r�c@sPeZdZeed�dd�Zdd�Zdd�Zdd	�Zd
d�Z	e
�d�Ze
�d
�Z
dS)r�)�
access_method�access_locationcCs4t|t�std��t|t�s$td��||_||_dS)Nz)access_method must be an ObjectIdentifierz%access_location must be a GeneralName)rrr[r
�_access_method�_access_location)r4r�r�r-r-r.rBes

zAccessDescription.__init__cCs
d�|�S)NzY<AccessDescription(access_method={0.access_method}, access_location={0.access_location})>r�r3r-r-r.r^qs��zAccessDescription.__repr__cCs&t|t�stS|j|jko$|j|jkSr0)rr�rlr�r�rmr-r-r.rows


�zAccessDescription.__eq__cCs
||kSr0r-rmr-r-r.rp�szAccessDescription.__ne__cCst|j|jf�Sr0)rrr�r�r3r-r-r.rs�szAccessDescription.__hash__r�r�N)rGrHrIrr
rBr^rorprsrrtr�r�r-r-r-r.r�ds�	
r�c@s\eZdZejZeeje	d�dd�Z
e�d�Z
e�d�Zdd�Zdd	�Zd
d�Zdd
�ZdS)�BasicConstraints)�ca�path_lengthcCsXt|t�std��|dk	r&|s&td��|dk	rHt|t�r@|dkrHtd��||_||_dS)Nzca must be a boolean valuez)path_length must be None when ca is Falserz2path_length must be a non-negative integer or None)r�boolr[r&ri�_ca�_path_length)r4r�r�r-r-r.rB�s
���zBasicConstraints.__init__r�r�cCs
d�|�S)Nz:<BasicConstraints(ca={0.ca}, path_length={0.path_length})>r�r3r-r-r.r^�s��zBasicConstraints.__repr__cCs&t|t�stS|j|jko$|j|jkSr0)rr�rlr�r�rmr-r-r.ro�s
zBasicConstraints.__eq__cCs
||kSr0r-rmr-r-r.rp�szBasicConstraints.__ne__cCst|j|jf�Sr0)rrr�r�r3r-r-r.rs�szBasicConstraints.__hash__N)rGrHrIr�BASIC_CONSTRAINTSr@r�r_r�rirBrrtr�r�r^rorprsr-r-r-r.r��s

r�c@sJeZdZejZed�dd�Ze�	d�Z
dd�Zdd�Zd	d
�Z
dd�Zd
S)�DeltaCRLIndicatorrecCst|t�std��||_dSrgrhrkr-r-r.rB�s
zDeltaCRLIndicator.__init__rjcCst|t�stS|j|jkSr0)rr�rlrfrmr-r-r.ro�s
zDeltaCRLIndicator.__eq__cCs
||kSr0r-rmr-r-r.rp�szDeltaCRLIndicator.__ne__cCs
t|j�Sr0rqr3r-r-r.rs�szDeltaCRLIndicator.__hash__cCs
d�|�S)Nz.<DeltaCRLIndicator(crl_number={0.crl_number})>r�r3r-r-r.r^�szDeltaCRLIndicator.__repr__N)rGrHrIrZDELTA_CRL_INDICATORr@rirBrrtrfrorprsr^r-r-r-r.r��s
r�c@sTeZdZejZejdd�dd�Ze	d�\Z
ZZdd�Z
dd	�Zd
d�Zdd
�ZdS)�CRLDistributionPoints�DistributionPoint��distribution_pointscCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr0�rr�r{r-r-r.r~�sz1CRLDistributionPoints.__init__.<locals>.<genexpr>�?distribution_points must be a list of DistributionPoint objects�rr�r[�_distribution_points�r4r�r-r-r.rB�s��zCRLDistributionPoints.__init__r�cCsd�|j�S)Nz<CRLDistributionPoints({})>�rWr�r3r-r-r.r^�szCRLDistributionPoints.__repr__cCst|t�stS|j|jkSr0)rr�rlr�rmr-r-r.ro�s
zCRLDistributionPoints.__eq__cCs
||kSr0r-rmr-r-r.rp�szCRLDistributionPoints.__ne__cCstt|j��Sr0�rrr�r�r3r-r-r.rs�szCRLDistributionPoints.__hash__N)rGrHrIr�CRL_DISTRIBUTION_POINTSr@r_r�rBr<rarbrcr^rorprsr-r-r-r.r��s��
r�c@sTeZdZejZejdd�dd�Ze	d�\Z
ZZdd�Z
dd	�Zd
d�Zdd
�ZdS)�FreshestCRLr�r�cCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr0r�r{r-r-r.r~�sz'FreshestCRL.__init__.<locals>.<genexpr>r�r�r�r-r-r.rB�s��zFreshestCRL.__init__r�cCsd�|j�S)Nz<FreshestCRL({})>r�r3r-r-r.r^szFreshestCRL.__repr__cCst|t�stS|j|jkSr0)rr�rlr�rmr-r-r.ros
zFreshestCRL.__eq__cCs
||kSr0r-rmr-r-r.rpszFreshestCRL.__ne__cCstt|j��Sr0r�r3r-r-r.rsszFreshestCRL.__hash__N)rGrHrIr�FRESHEST_CRLr@r_r�rBr<rarbrcr^rorprsr-r-r-r.r��s��
r�c@s�eZdZejejeejeejejdejejed�dd�Z	dd�Z
dd�Zd	d
�Zdd�Z
e�d
�Ze�d�Ze�d�Ze�d�ZdS)r��ReasonFlags)�	full_name�
relative_name�reasons�
crl_issuercCs�|r|rtd��|r6t|�}tdd�|D��s6td��|rLt|t�sLtd��|rrt|�}tdd�|D��srtd��|r�t|t�r�tdd�|D��s�td	��|r�tj|ks�tj	|kr�td
��|r�|s�|s�|s�td��||_
||_||_||_
dS)NzOYou cannot provide both full_name and relative_name, at least one must be None.css|]}t|t�VqdSr0rzr{r-r-r.r~(sz-DistributionPoint.__init__.<locals>.<genexpr>z/full_name must be a list of GeneralName objectsz1relative_name must be a RelativeDistinguishedNamecss|]}t|t�VqdSr0rzr{r-r-r.r~5sz2crl_issuer must be None or a list of general namescss|]}t|t�VqdSr0�rr�r{r-r-r.r~<sz0reasons must be None or frozenset of ReasonFlagszLunspecified and remove_from_crl are not valid reasons in a DistributionPointzPYou must supply crl_issuer, full_name, or relative_name when reasons is not None)r&rr�r[rr�	frozensetr��unspecified�remove_from_crl�
_full_name�_relative_name�_reasons�_crl_issuer)r4r�r�r�r�r-r-r.rBsV��
��������zDistributionPoint.__init__cCs
d�|�S)Nz}<DistributionPoint(full_name={0.full_name}, relative_name={0.relative_name}, reasons={0.reasons}, crl_issuer={0.crl_issuer})>r�r3r-r-r.r^Ts��zDistributionPoint.__repr__cCs>t|t�stS|j|jko<|j|jko<|j|jko<|j|jkSr0)rr�rlr�r�r�r�rmr-r-r.ro[s

�
�
�zDistributionPoint.__eq__cCs
||kSr0r-rmr-r-r.rpfszDistributionPoint.__ne__cCsH|jdk	rt|j�}nd}|jdk	r0t|j�}nd}t||j|j|f�Sr0)r�r�r�rrr�r�)r4�fnr�r-r-r.rsis

zDistributionPoint.__hash__r�r�r�r�N)rGrHrIr_r�r�r
r�	FrozenSetrBr^rorprsrrtr�r�r�r�r-r-r-r.r�s�;


r�c@s4eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdS)r�r�Z
keyCompromiseZcACompromiseZaffiliationChanged�
supersededZcessationOfOperationZcertificateHoldZprivilegeWithdrawnZaACompromiseZ
removeFromCRLN)
rGrHrIr�Zkey_compromiseZ
ca_compromiseZaffiliation_changedr�Zcessation_of_operationZcertificate_holdZprivilege_withdrawnZ
aa_compromiser�r-r-r-r.r�|sr�c@sbeZdZejZejeejed�dd�Z	dd�Z
dd�Zdd	�Zd
d�Z
e�d�Ze�d
�ZdS)�PolicyConstraints)�require_explicit_policy�inhibit_policy_mappingcCs\|dk	rt|t�std��|dk	r4t|t�s4td��|dkrL|dkrLtd��||_||_dS)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)rrir[r&�_require_explicit_policy�_inhibit_policy_mapping)r4r�r�r-r-r.rB�s(
��
���zPolicyConstraints.__init__cCs
d�|�S)Nz{<PolicyConstraints(require_explicit_policy={0.require_explicit_policy}, inhibit_policy_mapping={0.inhibit_policy_mapping})>r�r3r-r-r.r^�s��zPolicyConstraints.__repr__cCs&t|t�stS|j|jko$|j|jkSr0)rr�rlr�r�rmr-r-r.ro�s


�zPolicyConstraints.__eq__cCs
||kSr0r-rmr-r-r.rp�szPolicyConstraints.__ne__cCst|j|jf�Sr0)rrr�r�r3r-r-r.rs�s
�zPolicyConstraints.__hash__r�r�N)rGrHrIr�POLICY_CONSTRAINTSr@r_r�rirBr^rorprsrrtr�r�r-r-r-r.r��s�	��r�c@sTeZdZejZejdd�dd�Ze	d�\Z
ZZdd�Z
dd	�Zd
d�Zdd
�ZdS)�CertificatePolicies�PolicyInformation)�policiescCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr0)rr�r{r-r-r.r~�sz/CertificatePolicies.__init__.<locals>.<genexpr>z;Every item in the policies list must be a PolicyInformation)rr�r[�	_policies)r4r�r-r-r.rB�s�zCertificatePolicies.__init__r�cCsd�|j�S)Nz<CertificatePolicies({})>)rWr�r3r-r-r.r^�szCertificatePolicies.__repr__cCst|t�stS|j|jkSr0)rr�rlr�rmr-r-r.ro�s
zCertificatePolicies.__eq__cCs
||kSr0r-rmr-r-r.rp�szCertificatePolicies.__ne__cCstt|j��Sr0)rrr�r�r3r-r-r.rs�szCertificatePolicies.__hash__N)rGrHrIr�CERTIFICATE_POLICIESr@r_r�rBr<rarbrcr^rorprsr-r-r-r.r��s
r�c@sfeZdZeejejejedfd�dd�Z	dd�Z
dd�Zd	d
�Zdd�Z
e�d
�Ze�d�ZdS)r��
UserNotice)�policy_identifier�policy_qualifierscCsHt|t�std��||_|r>t|�}tdd�|D��s>td��||_dS)Nz-policy_identifier must be an ObjectIdentifiercss|]}t|ttf�VqdSr0)rrJr�r{r-r-r.r~�sz-PolicyInformation.__init__.<locals>.<genexpr>zMpolicy_qualifiers must be a list of strings and/or UserNotice objects or None)rrr[�_policy_identifierrr��_policy_qualifiers)r4r�r�r-r-r.rB�s
��zPolicyInformation.__init__cCs
d�|�S)Nze<PolicyInformation(policy_identifier={0.policy_identifier}, policy_qualifiers={0.policy_qualifiers})>r�r3r-r-r.r^s��zPolicyInformation.__repr__cCs&t|t�stS|j|jko$|j|jkSr0)rr�rlr�r�rmr-r-r.ros


�zPolicyInformation.__eq__cCs
||kSr0r-rmr-r-r.rpszPolicyInformation.__ne__cCs(|jdk	rt|j�}nd}t|j|f�Sr0)r�r�rrr�)r4Zpqr-r-r.rss
zPolicyInformation.__hash__r�r�N)rGrHrIrr_r�r��UnionrJrBr^rorprsrrtr�r�r-r-r-r.r��s��	
r�c@s\eZdZejdejed�dd�Zdd�Zdd�Zd	d
�Z	dd�Z
e�d
�Z
e�d�ZdS)r��NoticeReference)�notice_reference�
explicit_textcCs&|rt|t�std��||_||_dS)Nz2notice_reference must be None or a NoticeReference)rr�r[�_notice_reference�_explicit_text)r4r�r�r-r-r.rB s��zUserNotice.__init__cCs
d�|�S)NzV<UserNotice(notice_reference={0.notice_reference}, explicit_text={0.explicit_text!r})>r�r3r-r-r.r^/s��zUserNotice.__repr__cCs&t|t�stS|j|jko$|j|jkSr0)rr�rlr�r�rmr-r-r.ro5s


�zUserNotice.__eq__cCs
||kSr0r-rmr-r-r.rp>szUserNotice.__ne__cCst|j|jf�Sr0)rrr�r�r3r-r-r.rsAszUserNotice.__hash__r�r�N)rGrHrIr_r�rJrBr^rorprsrrtr�r�r-r-r-r.r�s�	
r�c@s\eZdZejeejed�dd�Zdd�Z	dd�Z
dd	�Zd
d�Ze
�d�Ze
�d
�ZdS)r�)�organization�notice_numberscCs2||_t|�}tdd�|D��s(td��||_dS)Ncss|]}t|t�VqdSr0)rrir{r-r-r.r~Psz+NoticeReference.__init__.<locals>.<genexpr>z)notice_numbers must be a list of integers)�
_organizationrr�r[�_notice_numbers)r4r�r�r-r-r.rBIs
zNoticeReference.__init__cCs
d�|�S)NzU<NoticeReference(organization={0.organization!r}, notice_numbers={0.notice_numbers})>r�r3r-r-r.r^Us��zNoticeReference.__repr__cCs&t|t�stS|j|jko$|j|jkSr0)rr�rlr�r�rmr-r-r.ro[s


�zNoticeReference.__eq__cCs
||kSr0r-rmr-r-r.rpdszNoticeReference.__ne__cCst|jt|j�f�Sr0)rrr�r�r�r3r-r-r.rsgszNoticeReference.__hash__r�r�N)rGrHrIr_r�rJr�rirBr^rorprsrrtr�r�r-r-r-r.r�Hs�	
r�c@sTeZdZejZejed�dd�Z	e
d�\ZZZ
dd�Zdd�Zd	d
�Zdd�Zd
S)�ExtendedKeyUsage)�usagescCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr0)rrr{r-r-r.r~ssz,ExtendedKeyUsage.__init__.<locals>.<genexpr>z9Every item in the usages list must be an ObjectIdentifier)rr�r[�_usages)r4r�r-r-r.rBqs�zExtendedKeyUsage.__init__r�cCsd�|j�S)Nz<ExtendedKeyUsage({})>)rWr�r3r-r-r.r^|szExtendedKeyUsage.__repr__cCst|t�stS|j|jkSr0)rr�rlr�rmr-r-r.ros
zExtendedKeyUsage.__eq__cCs
||kSr0r-rmr-r-r.rp�szExtendedKeyUsage.__ne__cCstt|j��Sr0)rrr�r�r3r-r-r.rs�szExtendedKeyUsage.__hash__N)rGrHrIr�EXTENDED_KEY_USAGEr@r_r�rrBr<rarbrcr^rorprsr-r-r-r.r�ns	r�c@s2eZdZejZdd�Zdd�Zdd�Zdd�Z	d	S)
�OCSPNoCheckcCst|t�stSdS�NT)rr�rlrmr-r-r.ro�s
zOCSPNoCheck.__eq__cCs
||kSr0r-rmr-r-r.rp�szOCSPNoCheck.__ne__cCstt�Sr0)rrr�r3r-r-r.rs�szOCSPNoCheck.__hash__cCsdS)Nz<OCSPNoCheck()>r-r3r-r-r.r^�szOCSPNoCheck.__repr__N)
rGrHrIr�
OCSP_NO_CHECKr@rorprsr^r-r-r-r.r��s
r�c@s2eZdZejZdd�Zdd�Zdd�Zdd�Z	d	S)
�
PrecertPoisoncCst|t�stSdSr�)rr�rlrmr-r-r.ro�s
zPrecertPoison.__eq__cCs
||kSr0r-rmr-r-r.rp�szPrecertPoison.__ne__cCstt�Sr0)rrr�r3r-r-r.rs�szPrecertPoison.__hash__cCsdS)Nz<PrecertPoison()>r-r3r-r-r.r^�szPrecertPoison.__repr__N)
rGrHrIrZPRECERT_POISONr@rorprsr^r-r-r-r.r��s
r�c@sTeZdZejZejdd�dd�Ze	d�\Z
ZZdd�Z
dd	�Zd
d�Zdd
�ZdS)�
TLSFeature�TLSFeatureType)�featurescCs8t|�}tdd�|D��r&t|�dkr.td��||_dS)Ncss|]}t|t�VqdSr0)rr�r{r-r-r.r~�sz&TLSFeature.__init__.<locals>.<genexpr>rz@features must be a list of elements from the TLSFeatureType enum)rr�r1r[�	_features)r4r�r-r-r.rB�s�
��zTLSFeature.__init__r�cCs
d�|�S)Nz$<TLSFeature(features={0._features})>r�r3r-r-r.r^�szTLSFeature.__repr__cCst|t�stS|j|jkSr0)rr�rlr�rmr-r-r.ro�s
zTLSFeature.__eq__cCs
||kSr0r-rmr-r-r.rp�szTLSFeature.__ne__cCstt|j��Sr0)rrr�r�r3r-r-r.rs�szTLSFeature.__hash__N)rGrHrIrZTLS_FEATUREr@r_r�rBr<rarbrcr^rorprsr-r-r-r.r��s
r�c@seZdZdZdZdS)r���N)rGrHrIZstatus_requestZstatus_request_v2r-r-r-r.r��sr�cCsi|]}|j|�qSr-�r\r{r-r-r.�
<dictcomp>�sr�c@sJeZdZejZed�dd�Zdd�Zdd�Z	dd	�Z
d
d�Ze�
d�Zd
S)�InhibitAnyPolicy)�
skip_certscCs,t|t�std��|dkr"td��||_dS)Nzskip_certs must be an integerrz)skip_certs must be a non-negative integer)rrir[r&�_skip_certs)r4r�r-r-r.rB�s

zInhibitAnyPolicy.__init__cCs
d�|�S)Nz-<InhibitAnyPolicy(skip_certs={0.skip_certs})>r�r3r-r-r.r^�szInhibitAnyPolicy.__repr__cCst|t�stS|j|jkSr0)rr�rlr�rmr-r-r.ro�s
zInhibitAnyPolicy.__eq__cCs
||kSr0r-rmr-r-r.rp�szInhibitAnyPolicy.__ne__cCs
t|j�Sr0)rrr�r3r-r-r.rs�szInhibitAnyPolicy.__hash__r�N)rGrHrIr�INHIBIT_ANY_POLICYr@rirBr^rorprsrrtr�r-r-r-r.r��s	r�c
@s�eZdZejZeeeeeeeeed�	dd�Ze�	d�Z
e�	d�Ze�	d�Ze�	d�Z
e�	d�Ze�	d	�Ze�	d
�Zedd��Zed
d��Zdd�Zdd�Zdd�Zdd�ZdS)�KeyUsage)	�digital_signature�content_commitment�key_encipherment�data_encipherment�
key_agreement�
key_cert_sign�crl_sign�
encipher_only�
decipher_onlyc

CsN|s|s|	rtd��||_||_||_||_||_||_||_||_|	|_	dS)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)
r4r�r�r�rrrrrrr-r-r.rBs�zKeyUsage.__init__rrrr	r
rrcCs|jstd��n|jSdS)Nz7encipher_only is undefined unless key_agreement is true)rr&r
r3r-r-r.r's
�zKeyUsage.encipher_onlycCs|jstd��n|jSdS)Nz7decipher_only is undefined unless key_agreement is true)rr&rr3r-r-r.r0s
�zKeyUsage.decipher_onlycCs<z|j}|j}Wntk
r,d}d}YnXd�|||�S)NFa-<KeyUsage(digital_signature={0.digital_signature}, content_commitment={0.content_commitment}, key_encipherment={0.key_encipherment}, data_encipherment={0.data_encipherment}, key_agreement={0.key_agreement}, key_cert_sign={0.key_cert_sign}, crl_sign={0.crl_sign}, encipher_only={1}, decipher_only={2})>)rrr&rW)r4rrr-r-r.r^9s

��zKeyUsage.__repr__cCszt|t�stS|j|jkox|j|jkox|j|jkox|j|jkox|j|jkox|j|jkox|j	|j	kox|j
|j
kox|j|jkSr0)rr�rlr�r�r�rrrrr
rrmr-r-r.roNs&

�
�
�
�
�
�
�
�zKeyUsage.__eq__cCs
||kSr0r-rmr-r-r.rp^szKeyUsage.__ne__c
Cs,t|j|j|j|j|j|j|j|j|j	f	�Sr0)
rrr�r�r�rrrrr
rr3r-r-r.rsas��zKeyUsage.__hash__N)rGrHrIr�	KEY_USAGEr@r�rBrrtr�r�r�rrrr�propertyrrr^rorprsr-r-r-r.r�s4�








r�c@sveZdZejZejeje	ejeje	d�dd�Z
dd�Zdd�Zdd	�Z
d
d�Zdd
�Ze�d�Ze�d�ZdS)�NameConstraints)�permitted_subtrees�excluded_subtreescCs�|dk	r4t|�}tdd�|D��s*td��|�|�|dk	rht|�}tdd�|D��s^td��|�|�|dkr�|dkr�td��||_||_dS)Ncss|]}t|t�VqdSr0rzr{r-r-r.r~{sz+NameConstraints.__init__.<locals>.<genexpr>z@permitted_subtrees must be a list of GeneralName objects or Nonecss|]}t|t�VqdSr0rzr{r-r-r.r~�sz?excluded_subtrees must be a list of GeneralName objects or NonezIAt least one of permitted_subtrees and excluded_subtrees must not be None)rr�r[�_validate_ip_namer&�_permitted_subtrees�_excluded_subtrees)r4rrr-r-r.rBts(�
�
�zNameConstraints.__init__cCs&t|t�stS|j|jko$|j|jkSr0)rrrlrrrmr-r-r.ro�s


�zNameConstraints.__eq__cCs
||kSr0r-rmr-r-r.rp�szNameConstraints.__ne__cCstdd�|D��rtd��dS)Ncss.|]&}t|t�o$t|jtjtjf�VqdSr0)rrr\�	ipaddressZIPv4NetworkZIPv6Network)r|�namer-r-r.r~�s�

�z4NameConstraints._validate_ip_name.<locals>.<genexpr>zGIPAddress name constraints must be an IPv4Network or IPv6Network object)�anyr[)r4Ztreer-r-r.r�s��z!NameConstraints._validate_ip_namecCs
d�|�S)Nze<NameConstraints(permitted_subtrees={0.permitted_subtrees}, excluded_subtrees={0.excluded_subtrees})>r�r3r-r-r.r^�s��zNameConstraints.__repr__cCs@|jdk	rt|j�}nd}|jdk	r0t|j�}nd}t||f�Sr0)rr�rrr)r4Zps�esr-r-r.rs�s

zNameConstraints.__hash__rrN)rGrHrIr�NAME_CONSTRAINTSr@r_r�r�r
rBrorprr^rsrrtrrr-r-r-r.rqs�"	

rc@s\eZdZeeed�dd�Ze�d�Z	e�d�Z
e�d�Zdd�Zd	d
�Z
dd�Zd
d�ZdS)rS)r@�criticalr\cCs:t|t�std��t|t�s$td��||_||_||_dS)Nz2oid argument must be an ObjectIdentifier instance.z critical must be a boolean value)rrr[r��_oid�	_critical�_value)r4r@rr\r-r-r.rB�s
�
zExtension.__init__rrrcCs
d�|�S)Nz@<Extension(oid={0.oid}, critical={0.critical}, value={0.value})>r�r3r-r-r.r^�s��zExtension.__repr__cCs2t|t�stS|j|jko0|j|jko0|j|jkSr0)rrSrlr@rr\rmr-r-r.ro�s

�
�zExtension.__eq__cCs
||kSr0r-rmr-r-r.rp�szExtension.__ne__cCst|j|j|jf�Sr0)rrr@rr\r3r-r-r.rs�szExtension.__hash__N)rGrHrIrr�rMrBrrtr@rr\r^rorprsr-r-r-r.rS�s�



rSc@sbeZdZejed�dd�Zed�\ZZ	Z
ejed�dd�Zdd	�Z
d
d�Zdd
�Zdd�ZdS)�GeneralNames��
general_namescCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr0rzr{r-r-r.r~�sz(GeneralNames.__init__.<locals>.<genexpr>z^Every item in the general_names list must be an object conforming to the GeneralName interface)rr�r[�_general_names�r4r"r-r-r.rB�s�zGeneralNames.__init__r#��typecs0�fdd�|D�}�tkr(dd�|D�}t|�S)Nc3s|]}t|��r|VqdSr0)r�r|�ir%r-r.r~s
z3GeneralNames.get_values_for_type.<locals>.<genexpr>css|]}|jVqdSr0r�r'r-r-r.r~s)rr)r4r&Zobjsr-r%r.�get_values_for_type�sz GeneralNames.get_values_for_typecCsd�|j�S)Nz<GeneralNames({})>�rWr#r3r-r-r.r^szGeneralNames.__repr__cCst|t�stS|j|jkSr0)rr rlr#rmr-r-r.ro
s
zGeneralNames.__eq__cCs
||kSr0r-rmr-r-r.rpszGeneralNames.__ne__cCstt|j��Sr0)rrr�r#r3r-r-r.rsszGeneralNames.__hash__N)rGrHrIr_r�r
rBr<rarbrc�Typer)r^rorprsr-r-r-r.r �s
	r c@s\eZdZejZejed�dd�Z	e
d�\ZZZ
dd�Zdd�Zd	d
�Zdd�Zd
d�ZdS)�SubjectAlternativeNamer!cCst|�|_dSr0�r r#r$r-r-r.rBszSubjectAlternativeName.__init__r#cCs|j�|�Sr0�r#r)�r4r&r-r-r.r)sz*SubjectAlternativeName.get_values_for_typecCsd�|j�S)Nz<SubjectAlternativeName({})>r*r3r-r-r.r^"szSubjectAlternativeName.__repr__cCst|t�stS|j|jkSr0)rr,rlr#rmr-r-r.ro%s
zSubjectAlternativeName.__eq__cCs
||kSr0r-rmr-r-r.rp+szSubjectAlternativeName.__ne__cCs
t|j�Sr0�rrr#r3r-r-r.rs.szSubjectAlternativeName.__hash__N)rGrHrIr�SUBJECT_ALTERNATIVE_NAMEr@r_r�r
rBr<rarbrcr)r^rorprsr-r-r-r.r,sr,c@s\eZdZejZejed�dd�Z	e
d�\ZZZ
dd�Zdd�Zd	d
�Zdd�Zd
d�ZdS)�IssuerAlternativeNamer!cCst|�|_dSr0r-r$r-r-r.rB5szIssuerAlternativeName.__init__r#cCs|j�|�Sr0r.r/r-r-r.r):sz)IssuerAlternativeName.get_values_for_typecCsd�|j�S)Nz<IssuerAlternativeName({})>r*r3r-r-r.r^=szIssuerAlternativeName.__repr__cCst|t�stS|j|jkSr0)rr2rlr#rmr-r-r.ro@s
zIssuerAlternativeName.__eq__cCs
||kSr0r-rmr-r-r.rpFszIssuerAlternativeName.__ne__cCs
t|j�Sr0r0r3r-r-r.rsIszIssuerAlternativeName.__hash__N)rGrHrIr�ISSUER_ALTERNATIVE_NAMEr@r_r�r
rBr<rarbrcr)r^rorprsr-r-r-r.r22sr2c@s\eZdZejZejed�dd�Z	e
d�\ZZZ
dd�Zdd�Zd	d
�Zdd�Zd
d�ZdS)�CertificateIssuerr!cCst|�|_dSr0r-r$r-r-r.rBPszCertificateIssuer.__init__r#cCs|j�|�Sr0r.r/r-r-r.r)Usz%CertificateIssuer.get_values_for_typecCsd�|j�S)Nz<CertificateIssuer({})>r*r3r-r-r.r^XszCertificateIssuer.__repr__cCst|t�stS|j|jkSr0)rr4rlr#rmr-r-r.ro[s
zCertificateIssuer.__eq__cCs
||kSr0r-rmr-r-r.rpaszCertificateIssuer.__ne__cCs
t|j�Sr0r0r3r-r-r.rsdszCertificateIssuer.__hash__N)rGrHrIr�CERTIFICATE_ISSUERr@r_r�r
rBr<rarbrcr)r^rorprsr-r-r-r.r4Msr4c@sJeZdZejZed�dd�Zdd�Zdd�Z	dd	�Z
d
d�Ze�
d�Zd
S)�	CRLReason)�reasoncCst|t�std��||_dS)Nz*reason must be an element from ReasonFlags)rr�r[�_reason)r4r7r-r-r.rBks
zCRLReason.__init__cCsd�|j�S)Nz<CRLReason(reason={})>)rWr8r3r-r-r.r^qszCRLReason.__repr__cCst|t�stS|j|jkSr0)rr6rlr7rmr-r-r.rots
zCRLReason.__eq__cCs
||kSr0r-rmr-r-r.rpzszCRLReason.__ne__cCs
t|j�Sr0)rrr7r3r-r-r.rs}szCRLReason.__hash__r8N)rGrHrIr�
CRL_REASONr@r�rBr^rorprsrrtr7r-r-r-r.r6hsr6c@sLeZdZejZejd�dd�Zdd�Zdd�Z	dd	�Z
d
d�Ze�
d�Zd
S)�InvalidityDate)�invalidity_datecCst|tj�std��||_dS)Nz+invalidity_date must be a datetime.datetime)r�datetimer[�_invalidity_date)r4r;r-r-r.rB�szInvalidityDate.__init__cCsd�|j�S)Nz$<InvalidityDate(invalidity_date={})>)rWr=r3r-r-r.r^�s�zInvalidityDate.__repr__cCst|t�stS|j|jkSr0)rr:rlr;rmr-r-r.ro�s
zInvalidityDate.__eq__cCs
||kSr0r-rmr-r-r.rp�szInvalidityDate.__ne__cCs
t|j�Sr0)rrr;r3r-r-r.rs�szInvalidityDate.__hash__r=N)rGrHrIr�INVALIDITY_DATEr@r<rBr^rorprsrrtr;r-r-r-r.r:�sr:c@sTeZdZejZejed�dd�Z	e
d�\ZZZ
dd�Zdd�Zd	d
�Zdd�Zd
S)�)PrecertificateSignedCertificateTimestamps��signed_certificate_timestampscCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr0�rr�r|Zsctr-r-r.r~�s�zEPrecertificateSignedCertificateTimestamps.__init__.<locals>.<genexpr>�YEvery item in the signed_certificate_timestamps list must be a SignedCertificateTimestamp�rr�r[�_signed_certificate_timestamps�r4rAr-r-r.rB�s��z2PrecertificateSignedCertificateTimestamps.__init__rFcCsd�t|��S)Nz/<PrecertificateSignedCertificateTimestamps({})>�rWrr3r-r-r.r^�s�z2PrecertificateSignedCertificateTimestamps.__repr__cCstt|j��Sr0�rrr�rFr3r-r-r.rs�sz2PrecertificateSignedCertificateTimestamps.__hash__cCst|t�stS|j|jkSr0)rr?rlrFrmr-r-r.ro�s
��z0PrecertificateSignedCertificateTimestamps.__eq__cCs
||kSr0r-rmr-r-r.rp�sz0PrecertificateSignedCertificateTimestamps.__ne__N)rGrHrIrZ%PRECERT_SIGNED_CERTIFICATE_TIMESTAMPSr@r_r�rrBr<rarbrcr^rsrorpr-r-r-r.r?�s���
	r?c@sTeZdZejZejed�dd�Z	e
d�\ZZZ
dd�Zdd�Zd	d
�Zdd�Zd
S)�SignedCertificateTimestampsr@cCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr0rBrCr-r-r.r~�s�z7SignedCertificateTimestamps.__init__.<locals>.<genexpr>rDrErGr-r-r.rB�s��z$SignedCertificateTimestamps.__init__rFcCsd�t|��S)Nz!<SignedCertificateTimestamps({})>rHr3r-r-r.r^�sz$SignedCertificateTimestamps.__repr__cCstt|j��Sr0rIr3r-r-r.rs�sz$SignedCertificateTimestamps.__hash__cCst|t�stS|j|jkSr0)rrJrlrFrmr-r-r.ro�s
��z"SignedCertificateTimestamps.__eq__cCs
||kSr0r-rmr-r-r.rp�sz"SignedCertificateTimestamps.__ne__N)rGrHrIrZSIGNED_CERTIFICATE_TIMESTAMPSr@r_r�rrBr<rarbrcr^rsrorpr-r-r-r.rJ�s���
	rJc@sJeZdZejZed�dd�Zdd�Zdd�Z	dd	�Z
d
d�Ze�
d�Zd
S)�	OCSPNonce)�noncecCst|t�std��||_dS)Nznonce must be bytes)rr�r[�_nonce)r4rLr-r-r.rB�s
zOCSPNonce.__init__cCst|t�stS|j|jkSr0)rrKrlrLrmr-r-r.ros
zOCSPNonce.__eq__cCs
||kSr0r-rmr-r-r.rpszOCSPNonce.__ne__cCs
t|j�Sr0)rrrLr3r-r-r.rs
szOCSPNonce.__hash__cCs
d�|�S)Nz<OCSPNonce(nonce={0.nonce!r})>r�r3r-r-r.r^
szOCSPNonce.__repr__rMN)rGrHrIrZNONCEr@r�rBrorprsr^rrtrLr-r-r-r.rK�srKc@s�eZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
e�d�Z
e�d�Ze�d
�Ze�d�Ze�d�Ze�d�Ze�d�ZdS)�IssuingDistributionPointc	Cs�|r(t|t�r tdd�|D��s(td��|rHtj|ks@tj|krHtd��t|t�rpt|t�rpt|t�rpt|t�sxtd��||||g}t	dd�|D��dkr�td	��t
|||||||g�s�td
��||_||_||_
||_||_||_||_dS)Ncss|]}t|t�VqdSr0r�r{r-r-r.r~"sz4IssuingDistributionPoint.__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.cSsg|]}|r|�qSr-r-r{r-r-r.�
<listcomp>Dsz5IssuingDistributionPoint.__init__.<locals>.<listcomp>�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.)rr�r�r[r�r�r�r&r�r1r�_only_contains_user_certs�_only_contains_ca_certs�
_indirect_crl�_only_contains_attribute_certs�_only_some_reasonsr�r�)	r4r�r��only_contains_user_certs�only_contains_ca_certs�only_some_reasons�indirect_crl�only_contains_attribute_certsZcrl_constraintsr-r-r.rBsp
����������������z!IssuingDistributionPoint.__init__cCs
d�|�S)NaG<IssuingDistributionPoint(full_name={0.full_name}, relative_name={0.relative_name}, only_contains_user_certs={0.only_contains_user_certs}, only_contains_ca_certs={0.only_contains_ca_certs}, only_some_reasons={0.only_some_reasons}, indirect_crl={0.indirect_crl}, only_contains_attribute_certs={0.only_contains_attribute_certs})>r�r3r-r-r.r^fs��z!IssuingDistributionPoint.__repr__cCsbt|t�stS|j|jko`|j|jko`|j|jko`|j|jko`|j|jko`|j|jko`|j	|j	kSr0)
rrNrlr�r�rVrWrXrYrZrmr-r-r.rors"

�
�
�
�
���zIssuingDistributionPoint.__eq__cCs
||kSr0r-rmr-r-r.rp�szIssuingDistributionPoint.__ne__cCs$t|j|j|j|j|j|j|jf�Sr0)rrr�r�rVrWrXrYrZr3r-r-r.rs�s��z!IssuingDistributionPoint.__hash__r�r�rQrRrUrSrTN)rGrHrIrZISSUING_DISTRIBUTION_POINTr@rBr^rorprsrrtr�r�rVrWrXrYrZr-r-r-r.rNs&P

��

�rNc@sPeZdZeed�dd�Ze�d�Ze�d�Z	dd�Z
dd	�Zd
d�Zdd
�Z
dS)rZ)r@r\cCs"t|t�std��||_||_dS)Nzoid must be an ObjectIdentifier)rrr[rr)r4r@r\r-r-r.rB�s
zUnrecognizedExtension.__init__rrcCs
d�|�S)Nz7<UnrecognizedExtension(oid={0.oid}, value={0.value!r})>r�r3r-r-r.r^�s��zUnrecognizedExtension.__repr__cCs&t|t�stS|j|jko$|j|jkSr0)rrZrlr@r\rmr-r-r.ro�s
zUnrecognizedExtension.__eq__cCs
||kSr0r-rmr-r-r.rp�szUnrecognizedExtension.__ne__cCst|j|jf�Sr0)rrr@r\r3r-r-r.rs�szUnrecognizedExtension.__hash__N)rGrHrIrr�rBrrtr@r\r^rorprsr-r-r-r.rZ�s

rZ)SrOr<r(rr_�cryptographyr�cryptography.hazmat._derrrrr�cryptography.hazmat._typesr�cryptography.hazmat.primitivesrr	Z,cryptography.hazmat.primitives.asymmetric.ecr
Z-cryptography.hazmat.primitives.asymmetric.rsarZ*cryptography.x509.certificate_transparencyr�cryptography.x509.general_namer
rr�cryptography.x509.namer�cryptography.x509.oidrrrrr�r/r<�	Exceptionr=rL�ABCMetarM�objectrRrdrur�r�r�r�r�r�r�r�r��Enumr�r�r�r�r�r�r�r�r�r�r�Z_TLS_FEATURE_TYPE_TO_ENUMr�r�rrSr r,r2r4r6r:r?rJrKrNrZr-r-r-r.�<module>sv(
!_&)%%d
@7)&"qU+&-+