HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //lib/python3/dist-packages/cryptography/x509/__pycache__/extensions.cpython-38.pyc
U

�e�]]��@s�ddlmZmZmZddlZddlZddlZddlZddlZddl	m
Z
ddlZddlm
Z
ddlmZmZmZmZddlmZmZddlmZddlmZdd	lmZdd
lmZmZmZddl m!Z!ddl"m#Z#m$Z$m%Z%m&Z&d
d�Z'dd�Z(Gdd�de)�Z*Gdd�de)�Z+e�,ej-�Gdd�de.��Z/Gdd�de.�Z0e
�1e/�Gdd�de.��Z2e
�1e/�Gdd�de.��Z3e
�1e/�Gdd�de.��Z4e
�1e/�Gdd �d e.��Z5Gd!d"�d"e.�Z6e
�1e/�Gd#d$�d$e.��Z7e
�1e/�Gd%d&�d&e.��Z8e
�1e/�Gd'd(�d(e.��Z9e
�1e/�Gd)d*�d*e.��Z:Gd+d,�d,e.�Z;Gd-d.�d.e
�Z<e
�1e/�Gd/d0�d0e.��Z=e
�1e/�Gd1d2�d2e.��Z>Gd3d4�d4e.�Z?Gd5d6�d6e.�Z@Gd7d8�d8e.�ZAe
�1e/�Gd9d:�d:e.��ZBe
�1e/�Gd;d<�d<e.��ZCe
�1e/�Gd=d>�d>e.��ZDe
�1e/�Gd?d@�d@e.��ZEGdAdB�dBe
�ZFeGdCdD�eFD��ZHe
�1e/�GdEdF�dFe.��ZIe
�1e/�GdGdH�dHe.��ZJe
�1e/�GdIdJ�dJe.��ZKGdKdL�dLe.�ZLGdMdN�dNe.�ZMe
�1e/�GdOdP�dPe.��ZNe
�1e/�GdQdR�dRe.��ZOe
�1e/�GdSdT�dTe.��ZPe
�1e/�GdUdV�dVe.��ZQe
�1e/�GdWdX�dXe.��ZRe
�1e/�GdYdZ�dZe.��ZSe
�1e/�Gd[d\�d\e.��ZTe
�1e/�Gd]d^�d^e.��ZUe
�1e/�Gd_d`�d`e.��ZVdS)a�)�absolute_import�division�print_functionN)�Enum)�utils)�
BIT_STRING�	DERReader�OBJECT_IDENTIFIER�SEQUENCE)�
constant_time�
serialization)�EllipticCurvePublicKey)�RSAPublicKey)�SignedCertificateTimestamp)�GeneralName�	IPAddress�	OtherName)�RelativeDistinguishedName)�CRLEntryExtensionOID�ExtensionOID�OCSPExtensionOID�ObjectIdentifierc	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)�
isinstancerZpublic_bytesrZEncodingZDERZPublicFormatZPKCS1r
ZX962ZUncompressedPointZSubjectPublicKeyInforZread_single_elementr
Zread_elementrr	Zis_emptyZread_any_elementZ	read_byte�
ValueError�data�hashlibZsha1�digest)�
public_keyrZ
serialized�readerZpublic_key_info�	algorithm�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_methodJsz*_make_sequence_methods.<locals>.len_methodcstt|���Sr#)�iterr%r&r(r r!�iter_methodMsz+_make_sequence_methods.<locals>.iter_methodcst|��|Sr#)r%)r'�idxr(r r!�getitem_methodPsz._make_sequence_methods.<locals>.getitem_methodr )r)r*r,r.r r(r!�_make_sequence_methodsIsr/cseZdZ�fdd�Z�ZS)�DuplicateExtensioncstt|��|�||_dSr#)�superr0�__init__�oid�r'�msgr3��	__class__r r!r2WszDuplicateExtension.__init__��__name__�
__module__�__qualname__r2�
__classcell__r r r6r!r0Vsr0cseZdZ�fdd�Z�ZS)�ExtensionNotFoundcstt|��|�||_dSr#)r1r=r2r3r4r6r r!r2]szExtensionNotFound.__init__r8r r r6r!r=\sr=c@seZdZejdd��ZdS)�
ExtensionTypecCsdS)zK
        Returns the oid associated with the given extension type.
        Nr r&r r r!r3dszExtensionType.oidN)r9r:r;�abc�abstractpropertyr3r r r r!r>bsr>c@s:eZdZdd�Zdd�Zdd�Zed�\ZZZ	dd	�Z
d
S)�
ExtensionscCs
||_dSr#)�_extensions)r'�
extensionsr r r!r2lszExtensions.__init__cCs0|D]}|j|kr|Sqtd�|�|��dS)N�No {} extension was found)r3r=�format)r'r3�extr r r!�get_extension_for_oidos

z Extensions.get_extension_for_oidcCsD|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.rD)�UnrecognizedExtension�	TypeErrorr�valuer=rEr3)r'ZextclassrFr r r!�get_extension_for_classvs�
�z"Extensions.get_extension_for_classrBcCsd�|j�S)Nz<Extensions({})>)rErBr&r r r!�__repr__�s
�zExtensions.__repr__N)r9r:r;r2rGrKr/�__len__�__iter__�__getitem__rLr r r r!rAks
rAc@sDeZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
e�d�Z
dS)
�	CRLNumbercCst|tj�std��||_dS�Nzcrl_number must be an integer�r�six�
integer_typesrI�_crl_number�r'�
crl_numberr r r!r2�szCRLNumber.__init__cCst|t�stS|j|jkSr#)rrP�NotImplementedrW�r'�otherr r r!�__eq__�s
zCRLNumber.__eq__cCs
||kSr#r rYr r r!�__ne__�szCRLNumber.__ne__cCs
t|j�Sr#��hashrWr&r r r!�__hash__�szCRLNumber.__hash__cCsd�|j�S)Nz<CRLNumber({})>)rErWr&r r r!rL�szCRLNumber.__repr__rUN)r9r:r;rZ
CRL_NUMBERr3r2r[r\r_rLr�read_only_propertyrWr r r r!rP�srPc@speZdZejZdd�Zedd��Zedd��Z	dd�Z
d	d
�Zdd�Zd
d�Z
e�d�Ze�d�Ze�d�ZdS)�AuthorityKeyIdentifiercCst|dk|dkkrtd��|dk	rBt|�}tdd�|D��sBtd��|dk	r^t|tj�s^td��||_||_||_	dS)NzXauthority_cert_issuer and authority_cert_serial_number must both be present or both Nonecss|]}t|t�VqdSr#�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�allrIrrSrT�_key_identifier�_authority_cert_issuer�_authority_cert_serial_number)r'�key_identifier�authority_cert_issuer�authority_cert_serial_numberr r r!r2�s0����
��zAuthorityKeyIdentifier.__init__cCst|�}||ddd�S)N�rlrmrn�r")�clsrrr r r!�from_issuer_public_key�s�z-AuthorityKeyIdentifier.from_issuer_public_keycCs:t|t�r|j}n|jj}tjdtjdd�||ddd�S)Nz�Extension objects are deprecated as arguments to from_issuer_subject_key_identifier and support will be removed soon. Please migrate to passing a SubjectKeyIdentifier directly.�)�
stacklevelro)r�SubjectKeyIdentifierrrJ�warnings�warnrZDeprecatedIn27)rqZskirr 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})>�rEr&r r r!rL�s��zAuthorityKeyIdentifier.__repr__cCs2t|t�stS|j|jko0|j|jko0|j|jkSr#)rrarXrlrmrnrYr r r!r[�s

���zAuthorityKeyIdentifier.__eq__cCs
||kSr#r rYr r r!r\�szAuthorityKeyIdentifier.__ne__cCs,|jdkrd}n
t|j�}t|j||jf�Sr#)rm�tupler^rlrn)r'Zacir r r!r_s

�zAuthorityKeyIdentifier.__hash__rirjrkN)r9r:r;rZAUTHORITY_KEY_IDENTIFIERr3r2�classmethodrrrxrLr[r\r_rr`rlrmrnr r r r!ra�s

	

�rac@sPeZdZejZdd�Zedd��Ze	�
d�Zdd�Zdd	�Z
d
d�Zdd
�ZdS)rucCs
||_dSr#)�_digest)r'rr r r!r2szSubjectKeyIdentifier.__init__cCs|t|��Sr#rp)rqrr r r!�from_public_keysz$SubjectKeyIdentifier.from_public_keyr|cCsd�|j�S)Nz$<SubjectKeyIdentifier(digest={0!r})>)rErr&r r r!rLszSubjectKeyIdentifier.__repr__cCst|t�stSt�|j|j�Sr#)rrurXrZbytes_eqrrYr r r!r[!s
zSubjectKeyIdentifier.__eq__cCs
||kSr#r rYr r r!r\'szSubjectKeyIdentifier.__ne__cCs
t|j�Sr#)r^rr&r r r!r_*szSubjectKeyIdentifier.__hash__N)r9r:r;rZSUBJECT_KEY_IDENTIFIERr3r2r{r}rr`rrLr[r\r_r r r r!rus

ruc@sHeZdZejZdd�Zed�\ZZ	Z
dd�Zdd�Zdd	�Z
d
d�ZdS)
�AuthorityInformationAccesscCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr#)r�AccessDescriptionrcr r r!rf4sz6AuthorityInformationAccess.__init__.<locals>.<genexpr>z@Every item in the descriptions list must be an AccessDescription)rgrhrI�
_descriptions)r'Zdescriptionsr r r!r22s�z#AuthorityInformationAccess.__init__r�cCsd�|j�S)Nz <AuthorityInformationAccess({})>)rEr�r&r r r!rL>sz#AuthorityInformationAccess.__repr__cCst|t�stS|j|jkSr#)rr~rXr�rYr r r!r[As
z!AuthorityInformationAccess.__eq__cCs
||kSr#r rYr r r!r\Gsz!AuthorityInformationAccess.__ne__cCstt|j��Sr#)r^rzr�r&r r r!r_Jsz#AuthorityInformationAccess.__hash__N)r9r:r;rZAUTHORITY_INFORMATION_ACCESSr3r2r/rMrNrOrLr[r\r_r r r r!r~.s
r~c@sHeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Ze�	d�Z
e�	d�Zd
S)rcCs4t|t�std��t|t�s$td��||_||_dS)Nz)access_method must be an ObjectIdentifierz%access_location must be a GeneralName)rrrIr�_access_method�_access_location)r'�
access_method�access_locationr r r!r2Os

zAccessDescription.__init__cCs
d�|�S)NzY<AccessDescription(access_method={0.access_method}, access_location={0.access_location})>ryr&r r r!rLYs��zAccessDescription.__repr__cCs&t|t�stS|j|jko$|j|jkSr#)rrrXr�r�rYr r r!r[_s


�zAccessDescription.__eq__cCs
||kSr#r rYr r r!r\hszAccessDescription.__ne__cCst|j|jf�Sr#)r^r�r�r&r r r!r_kszAccessDescription.__hash__r�r�N)r9r:r;r2rLr[r\r_rr`r�r�r r r r!rNs
	
rc@sNeZdZejZdd�Ze�d�Z	e�d�Z
dd�Zdd�Zd	d
�Z
dd�Zd
S)�BasicConstraintscCsZt|t�std��|dk	r&|s&td��|dk	rJt|tj�rB|dkrJtd��||_||_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�boolrIrrSrT�_ca�_path_length)r'�ca�path_lengthr r r!r2vs
�
���zBasicConstraints.__init__r�r�cCs
d�|�S)Nz:<BasicConstraints(ca={0.ca}, path_length={0.path_length})>ryr&r r r!rL�s�zBasicConstraints.__repr__cCs&t|t�stS|j|jko$|j|jkSr#)rr�rXr�r�rYr r r!r[�s
zBasicConstraints.__eq__cCs
||kSr#r rYr r r!r\�szBasicConstraints.__ne__cCst|j|jf�Sr#)r^r�r�r&r r r!r_�szBasicConstraints.__hash__N)r9r:r;rZBASIC_CONSTRAINTSr3r2rr`r�r�rLr[r\r_r r r r!r�rs

r�c@sDeZdZejZdd�Ze�d�Z	dd�Z
dd�Zdd	�Zd
d�Z
dS)
�DeltaCRLIndicatorcCst|tj�std��||_dSrQrRrVr r r!r2�szDeltaCRLIndicator.__init__rUcCst|t�stS|j|jkSr#)rr�rXrWrYr r r!r[�s
zDeltaCRLIndicator.__eq__cCs
||kSr#r rYr r r!r\�szDeltaCRLIndicator.__ne__cCs
t|j�Sr#r]r&r r r!r_�szDeltaCRLIndicator.__hash__cCs
d�|�S)Nz.<DeltaCRLIndicator(crl_number={0.crl_number})>ryr&r r r!rL�szDeltaCRLIndicator.__repr__N)r9r:r;rZDELTA_CRL_INDICATORr3r2rr`rWr[r\r_rLr r r r!r��s
r�c@sHeZdZejZdd�Zed�\ZZ	Z
dd�Zdd�Zdd	�Z
d
d�ZdS)
�CRLDistributionPointscCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr#�r�DistributionPointrcr r r!rf�sz1CRLDistributionPoints.__init__.<locals>.<genexpr>�?distribution_points must be a list of DistributionPoint objects�rgrhrI�_distribution_points�r'Zdistribution_pointsr r r!r2�s��zCRLDistributionPoints.__init__r�cCsd�|j�S)Nz<CRLDistributionPoints({})>�rEr�r&r r r!rL�szCRLDistributionPoints.__repr__cCst|t�stS|j|jkSr#)rr�rXr�rYr r r!r[�s
zCRLDistributionPoints.__eq__cCs
||kSr#r rYr r r!r\�szCRLDistributionPoints.__ne__cCstt|j��Sr#�r^rzr�r&r r r!r_�szCRLDistributionPoints.__hash__N)r9r:r;rZCRL_DISTRIBUTION_POINTSr3r2r/rMrNrOrLr[r\r_r r r r!r��s�
r�c@sHeZdZejZdd�Zed�\ZZ	Z
dd�Zdd�Zdd	�Z
d
d�ZdS)
�FreshestCRLcCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr#r�rcr r r!rf�sz'FreshestCRL.__init__.<locals>.<genexpr>r�r�r�r r r!r2�s��zFreshestCRL.__init__r�cCsd�|j�S)Nz<FreshestCRL({})>r�r&r r r!rL�szFreshestCRL.__repr__cCst|t�stS|j|jkSr#)rr�rXr�rYr r r!r[�s
zFreshestCRL.__eq__cCs
||kSr#r rYr r r!r\�szFreshestCRL.__ne__cCstt|j��Sr#r�r&r r r!r_�szFreshestCRL.__hash__N)r9r:r;rZFRESHEST_CRLr3r2r/rMrNrOrLr[r\r_r r r r!r��s�
r�c@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Ze�	d�Z
e�	d�Ze�	d
�Ze�	d�Z
dS)r�cCs�|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�VqdSr#rbrcr r r!rf
sz-DistributionPoint.__init__.<locals>.<genexpr>z/full_name must be a list of GeneralName objectsz1relative_name must be a RelativeDistinguishedNamecss|]}t|t�VqdSr#rbrcr r r!rfsz2crl_issuer must be None or a list of general namescss|]}t|t�VqdSr#�r�ReasonFlagsrcr r r!rfsz0reasons 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)rrgrhrIrr�	frozensetr��unspecified�remove_from_crl�
_full_name�_relative_name�_reasons�_crl_issuer)r'�	full_name�
relative_name�reasons�
crl_issuerr r r!r2sR��
�������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})>ryr&r r r!rL5s��zDistributionPoint.__repr__cCs>t|t�stS|j|jko<|j|jko<|j|jko<|j|jkSr#)rr�rXr�r�r�r�rYr r r!r[<s

�
�
�zDistributionPoint.__eq__cCs
||kSr#r rYr r r!r\GszDistributionPoint.__ne__cCsH|jdk	rt|j�}nd}|jdk	r0t|j�}nd}t||j|j|f�Sr#)r�rzr�r^r�r�)r'�fnr�r r r!r_Js

zDistributionPoint.__hash__r�r�r�r�N)r9r:r;r2rLr[r\r_rr`r�r�r�r�r r r r!r�s4


r�c@s4eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdS)r�r�Z
keyCompromiseZcACompromiseZaffiliationChanged�
supersededZcessationOfOperationZcertificateHoldZprivilegeWithdrawnZaACompromiseZ
removeFromCRLN)
r9r:r;r�Zkey_compromiseZ
ca_compromiseZaffiliation_changedr�Zcessation_of_operationZcertificate_holdZprivilege_withdrawnZ
aa_compromiser�r r r r!r�]sr�c@sNeZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
e�d�Z
e�d�Zd
S)�PolicyConstraintscCs`|dk	rt|tj�std��|dk	r8t|tj�s8td��|dkrP|dkrPtd��||_||_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)rrSrTrIr�_require_explicit_policy�_inhibit_policy_mapping)r'�require_explicit_policy�inhibit_policy_mappingr r r!r2ns(
��
���zPolicyConstraints.__init__cCs
d�|�S)Nz{<PolicyConstraints(require_explicit_policy={0.require_explicit_policy}, inhibit_policy_mapping={0.inhibit_policy_mapping})>ryr&r r r!rL�s��zPolicyConstraints.__repr__cCs&t|t�stS|j|jko$|j|jkSr#)rr�rXr�r�rYr r r!r[�s


�zPolicyConstraints.__eq__cCs
||kSr#r rYr r r!r\�szPolicyConstraints.__ne__cCst|j|jf�Sr#)r^r�r�r&r r r!r_�s
�zPolicyConstraints.__hash__r�r�N)r9r:r;rZPOLICY_CONSTRAINTSr3r2rLr[r\r_rr`r�r�r r r r!r�js	��r�c@sHeZdZejZdd�Zed�\ZZ	Z
dd�Zdd�Zdd	�Z
d
d�ZdS)
�CertificatePoliciescCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr#)r�PolicyInformationrcr r r!rf�sz/CertificatePolicies.__init__.<locals>.<genexpr>z;Every item in the policies list must be a PolicyInformation)rgrhrI�	_policies)r'Zpoliciesr r r!r2�s�zCertificatePolicies.__init__r�cCsd�|j�S)Nz<CertificatePolicies({})>)rEr�r&r r r!rL�szCertificatePolicies.__repr__cCst|t�stS|j|jkSr#)rr�rXr�rYr r r!r[�s
zCertificatePolicies.__eq__cCs
||kSr#r rYr r r!r\�szCertificatePolicies.__ne__cCstt|j��Sr#)r^rzr�r&r r r!r_�szCertificatePolicies.__hash__N)r9r:r;rZCERTIFICATE_POLICIESr3r2r/rMrNrOrLr[r\r_r r r r!r��s
r�c@sHeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Ze�	d�Z
e�	d�Zd
S)r�cCsHt|t�std��||_|r>t|�}tdd�|D��s>td��||_dS)Nz-policy_identifier must be an ObjectIdentifiercss|]}t|tjtf�VqdSr#)rrSZ	text_type�
UserNoticercr r r!rf�s�z-PolicyInformation.__init__.<locals>.<genexpr>zMpolicy_qualifiers must be a list of strings and/or UserNotice objects or None)rrrI�_policy_identifierrgrh�_policy_qualifiers)r'�policy_identifier�policy_qualifiersr r r!r2�s
��zPolicyInformation.__init__cCs
d�|�S)Nze<PolicyInformation(policy_identifier={0.policy_identifier}, policy_qualifiers={0.policy_qualifiers})>ryr&r r r!rL�s��zPolicyInformation.__repr__cCs&t|t�stS|j|jko$|j|jkSr#)rr�rXr�r�rYr r r!r[�s


�zPolicyInformation.__eq__cCs
||kSr#r rYr r r!r\�szPolicyInformation.__ne__cCs(|jdk	rt|j�}nd}t|j|f�Sr#)r�rzr^r�)r'Zpqr r r!r_�s
zPolicyInformation.__hash__r�r�N)r9r:r;r2rLr[r\r_rr`r�r�r r r r!r��s	
r�c@sHeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Ze�	d�Z
e�	d�Zd
S)r�cCs&|rt|t�std��||_||_dS)Nz2notice_reference must be None or a NoticeReference)r�NoticeReferencerI�_notice_reference�_explicit_text)r'�notice_reference�
explicit_textr r r!r2�s��zUserNotice.__init__cCs
d�|�S)NzV<UserNotice(notice_reference={0.notice_reference}, explicit_text={0.explicit_text!r})>ryr&r r r!rLs��zUserNotice.__repr__cCs&t|t�stS|j|jko$|j|jkSr#)rr�rXr�r�rYr r r!r[s


�zUserNotice.__eq__cCs
||kSr#r rYr r r!r\szUserNotice.__ne__cCst|j|jf�Sr#)r^r�r�r&r r r!r_szUserNotice.__hash__r�r�N)r9r:r;r2rLr[r\r_rr`r�r�r r r r!r��s	
r�c@sHeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Ze�	d�Z
e�	d�Zd
S)r�cCs2||_t|�}tdd�|D��s(td��||_dS)Ncss|]}t|t�VqdSr#)r�intrcr r r!rf"sz+NoticeReference.__init__.<locals>.<genexpr>z)notice_numbers must be a list of integers)�
_organizationrgrhrI�_notice_numbers)r'�organization�notice_numbersr r r!r2s�zNoticeReference.__init__cCs
d�|�S)NzU<NoticeReference(organization={0.organization!r}, notice_numbers={0.notice_numbers})>ryr&r r r!rL)s��zNoticeReference.__repr__cCs&t|t�stS|j|jko$|j|jkSr#)rr�rXr�r�rYr r r!r[/s


�zNoticeReference.__eq__cCs
||kSr#r rYr r r!r\8szNoticeReference.__ne__cCst|jt|j�f�Sr#)r^r�rzr�r&r r r!r_;szNoticeReference.__hash__r�r�N)r9r:r;r2rLr[r\r_rr`r�r�r r r r!r�s
	
r�c@sHeZdZejZdd�Zed�\ZZ	Z
dd�Zdd�Zdd	�Z
d
d�ZdS)
�ExtendedKeyUsagecCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr#)rrrcr r r!rfHsz,ExtendedKeyUsage.__init__.<locals>.<genexpr>z9Every item in the usages list must be an ObjectIdentifier)rgrhrI�_usages)r'Zusagesr r r!r2Fs�zExtendedKeyUsage.__init__r�cCsd�|j�S)Nz<ExtendedKeyUsage({})>)rEr�r&r r r!rLQszExtendedKeyUsage.__repr__cCst|t�stS|j|jkSr#)rr�rXr�rYr r r!r[Ts
zExtendedKeyUsage.__eq__cCs
||kSr#r rYr r r!r\ZszExtendedKeyUsage.__ne__cCstt|j��Sr#)r^rzr�r&r r r!r_]szExtendedKeyUsage.__hash__N)r9r:r;rZEXTENDED_KEY_USAGEr3r2r/rMrNrOrLr[r\r_r r r r!r�Bs	r�c@s2eZdZejZdd�Zdd�Zdd�Zdd�Z	d	S)
�OCSPNoCheckcCst|t�stSdS�NT)rr�rXrYr r r!r[es
zOCSPNoCheck.__eq__cCs
||kSr#r rYr r r!r\kszOCSPNoCheck.__ne__cCstt�Sr#)r^r�r&r r r!r_nszOCSPNoCheck.__hash__cCsdS)Nz<OCSPNoCheck()>r r&r r r!rLqszOCSPNoCheck.__repr__N)
r9r:r;rZ
OCSP_NO_CHECKr3r[r\r_rLr r r r!r�as
r�c@s2eZdZejZdd�Zdd�Zdd�Zdd�Z	d	S)
�
PrecertPoisoncCst|t�stSdSr�)rr�rXrYr r r!r[ys
zPrecertPoison.__eq__cCs
||kSr#r rYr r r!r\szPrecertPoison.__ne__cCstt�Sr#)r^r�r&r r r!r_�szPrecertPoison.__hash__cCsdS)Nz<PrecertPoison()>r r&r r r!rL�szPrecertPoison.__repr__N)
r9r:r;rZPRECERT_POISONr3r[r\r_rLr r r r!r�us
r�c@sHeZdZejZdd�Zed�\ZZ	Z
dd�Zdd�Zdd	�Z
d
d�ZdS)
�
TLSFeaturecCs8t|�}tdd�|D��r&t|�dkr.td��||_dS)Ncss|]}t|t�VqdSr#)r�TLSFeatureTypercr r r!rf�sz&TLSFeature.__init__.<locals>.<genexpr>rz@features must be a list of elements from the TLSFeatureType enum)rgrhr$rI�	_features)r'Zfeaturesr r r!r2�s�
��zTLSFeature.__init__r�cCs
d�|�S)Nz$<TLSFeature(features={0._features})>ryr&r r r!rL�szTLSFeature.__repr__cCst|t�stS|j|jkSr#)rr�rXr�rYr r r!r[�s
zTLSFeature.__eq__cCs
||kSr#r rYr r r!r\�szTLSFeature.__ne__cCstt|j��Sr#)r^rzr�r&r r r!r_�szTLSFeature.__hash__N)r9r:r;rZTLS_FEATUREr3r2r/rMrNrOrLr[r\r_r r r r!r��s
r�c@seZdZdZdZdS)r���N)r9r:r;Zstatus_requestZstatus_request_v2r r r r!r��sr�ccs|]}|j|fVqdSr#�rJrcr r r!rf�srfc@sDeZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
e�d�Z
dS)
�InhibitAnyPolicycCs.t|tj�std��|dkr$td��||_dS)Nzskip_certs must be an integerrz)skip_certs must be a non-negative integer)rrSrTrIr�_skip_certs)r'�
skip_certsr r r!r2�s
zInhibitAnyPolicy.__init__cCs
d�|�S)Nz-<InhibitAnyPolicy(skip_certs={0.skip_certs})>ryr&r r r!rL�szInhibitAnyPolicy.__repr__cCst|t�stS|j|jkSr#)rr�rXr�rYr r r!r[�s
zInhibitAnyPolicy.__eq__cCs
||kSr#r rYr r r!r\�szInhibitAnyPolicy.__ne__cCs
t|j�Sr#)r^r�r&r r r!r_�szInhibitAnyPolicy.__hash__r�N)r9r:r;rZINHIBIT_ANY_POLICYr3r2rLr[r\r_rr`r�r r r r!r��s	r�c@s�eZdZejZdd�Ze�d�Z	e�d�Z
e�d�Ze�d�Ze�d�Z
e�d�Ze�d	�Zed
d��Zedd
��Zdd�Zdd�Zdd�Zdd�ZdS)�KeyUsagec

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)
r'�digital_signature�content_commitment�key_encipherment�data_encipherment�
key_agreement�
key_cert_sign�crl_sign�
encipher_only�
decipher_onlyr r r!r2�s�zKeyUsage.__init__r�r�r�r�r�r�r�cCs|jstd��n|jSdS)Nz7encipher_only is undefined unless key_agreement is true)r�rr�r&r r r!r��s
�zKeyUsage.encipher_onlycCs|jstd��n|jSdS)Nz7decipher_only is undefined unless key_agreement is true)r�rr�r&r r r!r�s
�zKeyUsage.decipher_onlycCs<z|j}|j}Wntk
r,d}d}YnXd�|||�S)Na-<KeyUsage(digital_signature={0.digital_signature}, content_commitment={0.content_commitment}, key_encipherment={0.key_encipherment}, data_encipherment={0.data_encipherment}, key_agreement={0.key_agreement}, key_cert_sign={0.key_cert_sign}, crl_sign={0.crl_sign}, encipher_only={1}, decipher_only={2})>)r�r�rrE)r'r�r�r r r!rL
s

�zKeyUsage.__repr__cCszt|t�stS|j|jkox|j|jkox|j|jkox|j|jkox|j|jkox|j|jkox|j	|j	kox|j
|j
kox|j|jkSr#)rr�rXr�r�r�r�r�r�r�r�r�rYr r r!r[s&

�
�
�
�
�
�
�
�zKeyUsage.__eq__cCs
||kSr#r rYr r r!r\+szKeyUsage.__ne__c
Cs,t|j|j|j|j|j|j|j|j|j	f	�Sr#)
r^r�r�r�r�r�r�r�r�r�r&r r r!r_.s�zKeyUsage.__hash__N)r9r:r;rZ	KEY_USAGEr3r2rr`r�r�r�r�r�r�r��propertyr�r�rLr[r\r_r r r r!r��s"








r�c@sVeZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
dd�Ze�
d
�Ze�
d�ZdS)�NameConstraintscCs�|dk	r4t|�}tdd�|D��s*td��|�|�|dk	rht|�}tdd�|D��s^td��|�|�|dkr�|dkr�td��||_||_dS)Ncss|]}t|t�VqdSr#rbrcr r r!rf?sz+NameConstraints.__init__.<locals>.<genexpr>z@permitted_subtrees must be a list of GeneralName objects or Nonecss|]}t|t�VqdSr#rbrcr r r!rfKsz?excluded_subtrees must be a list of GeneralName objects or NonezIAt least one of permitted_subtrees and excluded_subtrees must not be None)rgrhrI�_validate_ip_namer�_permitted_subtrees�_excluded_subtrees)r'�permitted_subtrees�excluded_subtreesr r r!r2<s0��
��
�zNameConstraints.__init__cCs&t|t�stS|j|jko$|j|jkSr#)rr�rXr�r�rYr r r!r[^s


�zNameConstraints.__eq__cCs
||kSr#r rYr r r!r\gszNameConstraints.__ne__cCstdd�|D��rtd��dS)Ncss.|]&}t|t�o$t|jtjtjf�VqdSr#)rrrJ�	ipaddressZIPv4NetworkZIPv6Network)rd�namer r r!rfks
�
�z4NameConstraints._validate_ip_name.<locals>.<genexpr>zGIPAddress name constraints must be an IPv4Network or IPv6Network object)�anyrI)r'Ztreer r r!r�js��z!NameConstraints._validate_ip_namecCs
d�|�S)Nze<NameConstraints(permitted_subtrees={0.permitted_subtrees}, excluded_subtrees={0.excluded_subtrees})>ryr&r r r!rLss��zNameConstraints.__repr__cCs@|jdk	rt|j�}nd}|jdk	r0t|j�}nd}t||f�Sr#)r�rzr�r^)r'ZpsZesr r r!r_ys

zNameConstraints.__hash__r�r�N)r9r:r;rZNAME_CONSTRAINTSr3r2r[r\r�rLr_rr`r�r�r r r r!r�8s"		
r�c@sReZdZdd�Ze�d�Ze�d�Ze�d�Zdd�Z	dd	�Z
d
d�Zdd
�ZdS)�	ExtensioncCs:t|t�std��t|t�s$td��||_||_||_dS)Nz2oid argument must be an ObjectIdentifier instance.z critical must be a boolean value)rrrIr��_oid�	_critical�_value)r'r3�criticalrJr r r!r2�s
�
zExtension.__init__r�r�r�cCs
d�|�S)Nz@<Extension(oid={0.oid}, critical={0.critical}, value={0.value})>ryr&r r r!rL�s�zExtension.__repr__cCs2t|t�stS|j|jko0|j|jko0|j|jkSr#)rr�rXr3r�rJrYr r r!r[�s

�
�zExtension.__eq__cCs
||kSr#r rYr r r!r\�szExtension.__ne__cCst|j|j|jf�Sr#)r^r3r�rJr&r r r!r_�szExtension.__hash__N)
r9r:r;r2rr`r3r�rJrLr[r\r_r r r r!r��s



r�c@sJeZdZdd�Zed�\ZZZdd�Zdd�Z	dd	�Z
d
d�Zdd
�ZdS)�GeneralNamescCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr#rbrcr r r!rf�sz(GeneralNames.__init__.<locals>.<genexpr>z^Every item in the general_names list must be an object conforming to the GeneralName interface)rgrhrI�_general_names�r'Z
general_namesr r r!r2�s�zGeneralNames.__init__r�cs0�fdd�|D�}�tkr(dd�|D�}t|�S)Nc3s|]}t|��r|VqdSr#)r�rd�i��typer r!rf�s
z3GeneralNames.get_values_for_type.<locals>.<genexpr>css|]}|jVqdSr#r�r�r r r!rf�s)rrg)r'r�Zobjsr r�r!�get_values_for_type�sz GeneralNames.get_values_for_typecCsd�|j�S)Nz<GeneralNames({})>�rEr�r&r r r!rL�szGeneralNames.__repr__cCst|t�stS|j|jkSr#)rr�rXr�rYr r r!r[�s
zGeneralNames.__eq__cCs
||kSr#r rYr r r!r\�szGeneralNames.__ne__cCstt|j��Sr#)r^rzr�r&r r r!r_�szGeneralNames.__hash__N)
r9r:r;r2r/rMrNrOr�rLr[r\r_r r r r!r��s		r�c@sPeZdZejZdd�Zed�\ZZ	Z
dd�Zdd�Zdd	�Z
d
d�Zdd
�ZdS)�SubjectAlternativeNamecCst|�|_dSr#�r�r�r�r r r!r2�szSubjectAlternativeName.__init__r�cCs|j�|�Sr#�r�r��r'r�r r r!r��sz*SubjectAlternativeName.get_values_for_typecCsd�|j�S)Nz<SubjectAlternativeName({})>r�r&r r r!rL�szSubjectAlternativeName.__repr__cCst|t�stS|j|jkSr#)rr�rXr�rYr r r!r[�s
zSubjectAlternativeName.__eq__cCs
||kSr#r rYr r r!r\�szSubjectAlternativeName.__ne__cCs
t|j�Sr#�r^r�r&r r r!r_�szSubjectAlternativeName.__hash__N)r9r:r;rZSUBJECT_ALTERNATIVE_NAMEr3r2r/rMrNrOr�rLr[r\r_r r r r!r��sr�c@sPeZdZejZdd�Zed�\ZZ	Z
dd�Zdd�Zdd	�Z
d
d�Zdd
�ZdS)�IssuerAlternativeNamecCst|�|_dSr#r�r�r r r!r2�szIssuerAlternativeName.__init__r�cCs|j�|�Sr#r�r�r r r!r��sz)IssuerAlternativeName.get_values_for_typecCsd�|j�S)Nz<IssuerAlternativeName({})>r�r&r r r!rL�szIssuerAlternativeName.__repr__cCst|t�stS|j|jkSr#)rr�rXr�rYr r r!r[s
zIssuerAlternativeName.__eq__cCs
||kSr#r rYr r r!r\szIssuerAlternativeName.__ne__cCs
t|j�Sr#r�r&r r r!r_
szIssuerAlternativeName.__hash__N)r9r:r;rZISSUER_ALTERNATIVE_NAMEr3r2r/rMrNrOr�rLr[r\r_r r r r!r��sr�c@sPeZdZejZdd�Zed�\ZZ	Z
dd�Zdd�Zdd	�Z
d
d�Zdd
�ZdS)�CertificateIssuercCst|�|_dSr#r�r�r r r!r2szCertificateIssuer.__init__r�cCs|j�|�Sr#r�r�r r r!r�sz%CertificateIssuer.get_values_for_typecCsd�|j�S)Nz<CertificateIssuer({})>r�r&r r r!rLszCertificateIssuer.__repr__cCst|t�stS|j|jkSr#)rr�rXr�rYr r r!r[s
zCertificateIssuer.__eq__cCs
||kSr#r rYr r r!r\#szCertificateIssuer.__ne__cCs
t|j�Sr#r�r&r r r!r_&szCertificateIssuer.__hash__N)r9r:r;rZCERTIFICATE_ISSUERr3r2r/rMrNrOr�rLr[r\r_r r r r!r�sr�c@sDeZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
e�d�Z
dS)
�	CRLReasoncCst|t�std��||_dS)Nz*reason must be an element from ReasonFlags)rr�rI�_reason)r'�reasonr r r!r2.s
zCRLReason.__init__cCsd�|j�S)Nz<CRLReason(reason={})>)rEr�r&r r r!rL4szCRLReason.__repr__cCst|t�stS|j|jkSr#)rr�rXr�rYr r r!r[7s
zCRLReason.__eq__cCs
||kSr#r rYr r r!r\=szCRLReason.__ne__cCs
t|j�Sr#)r^r�r&r r r!r_@szCRLReason.__hash__r�N)r9r:r;rZ
CRL_REASONr3r2rLr[r\r_rr`r�r r r r!r�*sr�c@sDeZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
e�d�Z
dS)
�InvalidityDatecCst|tj�std��||_dS)Nz+invalidity_date must be a datetime.datetime)r�datetimerI�_invalidity_date)r'�invalidity_dater r r!r2JszInvalidityDate.__init__cCsd�|j�S)Nz$<InvalidityDate(invalidity_date={})>)rErr&r r r!rLPs�zInvalidityDate.__repr__cCst|t�stS|j|jkSr#)rr�rXrrYr r r!r[Us
zInvalidityDate.__eq__cCs
||kSr#r rYr r r!r\[szInvalidityDate.__ne__cCs
t|j�Sr#)r^rr&r r r!r_^szInvalidityDate.__hash__rN)r9r:r;rZINVALIDITY_DATEr3r2rLr[r\r_rr`rr r r r!r�Fsr�c@sHeZdZejZdd�Zed�\ZZ	Z
dd�Zdd�Zdd	�Z
d
d�ZdS)
�)PrecertificateSignedCertificateTimestampscCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr#)rr)rdZsctr r r!rfjs�zEPrecertificateSignedCertificateTimestamps.__init__.<locals>.<genexpr>zYEvery item in the signed_certificate_timestamps list must be a SignedCertificateTimestamp)rgrhrI�_signed_certificate_timestamps)r'Zsigned_certificate_timestampsr r r!r2hs��z2PrecertificateSignedCertificateTimestamps.__init__rcCsd�t|��S)Nz/<PrecertificateSignedCertificateTimestamps({})>)rErgr&r r r!rLxs��z2PrecertificateSignedCertificateTimestamps.__repr__cCstt|j��Sr#)r^rzrr&r r r!r_sz2PrecertificateSignedCertificateTimestamps.__hash__cCst|t�stS|j|jkSr#)rrrXrrYr r r!r[�s
��z0PrecertificateSignedCertificateTimestamps.__eq__cCs
||kSr#r rYr r r!r\�sz0PrecertificateSignedCertificateTimestamps.__ne__N)r9r:r;rZ%PRECERT_SIGNED_CERTIFICATE_TIMESTAMPSr3r2r/rMrNrOrLr_r[r\r r r r!rds�
	rc@sDeZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
e�d�Z
dS)
�	OCSPNoncecCst|t�std��||_dS)Nznonce must be bytes)r�bytesrI�_nonce)r'�noncer r r!r2�s
zOCSPNonce.__init__cCst|t�stS|j|jkSr#)rrrXrrYr r r!r[�s
zOCSPNonce.__eq__cCs
||kSr#r rYr r r!r\�szOCSPNonce.__ne__cCs
t|j�Sr#)r^rr&r r r!r_�szOCSPNonce.__hash__cCs
d�|�S)Nz<OCSPNonce(nonce={0.nonce!r})>ryr&r r r!rL�szOCSPNonce.__repr__rN)r9r:r;rZNONCEr3r2r[r\r_rLrr`rr r r r!r�src@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�VqdSr#r�rcr r r!rf�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 rcr r r!�
<listcomp>�sz5IssuingDistributionPoint.__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�rhrIr�r�r�rr�r$r��_only_contains_user_certs�_only_contains_ca_certs�
_indirect_crl�_only_contains_attribute_certs�_only_some_reasonsr�r�)	r'r�r��only_contains_user_certs�only_contains_ca_certs�only_some_reasons�indirect_crl�only_contains_attribute_certsZcrl_constraintsr r r!r2�sv������������������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})>ryr&r r r!rL�s��z!IssuingDistributionPoint.__repr__cCsbt|t�stS|j|jko`|j|jko`|j|jko`|j|jko`|j|jko`|j|jko`|j	|j	kSr#)
rr	rXr�r�rrrrrrYr r r!r[s"

�
�
�
�
���zIssuingDistributionPoint.__eq__cCs
||kSr#r rYr r r!r\szIssuingDistributionPoint.__ne__cCs$t|j|j|j|j|j|j|jf�Sr#)r^r�r�rrrrrr&r r r!r_s�z!IssuingDistributionPoint.__hash__r�r�rr
rrrN)r9r:r;rZISSUING_DISTRIBUTION_POINTr3r2rLr[r\r_rr`r�r�rrrrrr r r r!r	�s&F

��

�r	c@sHeZdZdd�Ze�d�Ze�d�Zdd�Zdd�Z	d	d
�Z
dd�Zd
S)rHcCs"t|t�std��||_||_dS)Nzoid must be an ObjectIdentifier)rrrIr�r�)r'r3rJr r r!r2/s
zUnrecognizedExtension.__init__r�r�cCs
d�|�S)Nz7<UnrecognizedExtension(oid={0.oid}, value={0.value!r})>ryr&r r r!rL8s��zUnrecognizedExtension.__repr__cCs&t|t�stS|j|jko$|j|jkSr#)rrHrXr3rJrYr r r!r[?s
zUnrecognizedExtension.__eq__cCs
||kSr#r rYr r r!r\EszUnrecognizedExtension.__ne__cCst|j|jf�Sr#)r^r3rJr&r r r!r_HszUnrecognizedExtension.__hash__N)r9r:r;r2rr`r3rJrLr[r\r_r r r r!rH-s

rH)WZ
__future__rrrr?rrr�rv�enumrrSZcryptographyrZcryptography.hazmat._derrrr	r
Zcryptography.hazmat.primitivesrrZ,cryptography.hazmat.primitives.asymmetric.ecr
Z-cryptography.hazmat.primitives.asymmetric.rsarZ*cryptography.x509.certificate_transparencyrZcryptography.x509.general_namerrrZcryptography.x509.namerZcryptography.x509.oidrrrrr"r/�	Exceptionr0r=Z
add_metaclass�ABCMeta�objectr>rAZregister_interfacerPrarur~rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��dictZ_TLS_FEATURE_TYPE_TO_ENUMr�r�r�r�r�r�r�r�r�r�rrr	rHr r r r!�<module>s�(

#f$)##]
<2%$"^Q'%*