Server : LiteSpeed
System : Linux server51.dnsbootclub.com 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
User : nandedex ( 1060)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /opt/cppython/lib/python3.8/site-packages/cryptography/x509/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : //opt/cppython/lib/python3.8/site-packages/cryptography/x509/__pycache__/extensions.cpython-38.pyc
U

O��g~)�@s�ddlmZddlZddlZddlZddlZddlZddlmZddl	m
Z
ddl	mZddl
mZmZddlmZddlmZdd	lmZmZdd
lmZddlmZmZmZmZmZmZm Z m!Z!m"Z"ddl#m$Z$m%Z%dd
l&m'Z'm(Z(m)Z)m*Z*ej+dddd�Z,ddd�dd�Z-dd�dd�Z.Gdd�de/�Z0Gdd�de/�Z1Gdd�dej2d �Z3Gd!d"�d"�Z4Gd#d$�d$e3�Z5Gd%d&�d&e3�Z6Gd'd(�d(e3�Z7Gd)d*�d*e3�Z8Gd+d,�d,e3�Z9Gd-d.�d.�Z:Gd/d0�d0e3�Z;Gd1d2�d2e3�Z<Gd3d4�d4e3�Z=Gd5d6�d6e3�Z>Gd7d8�d8�Z?Gd9d:�d:ej@�ZAeAjBeAjCeAjDeAjEeAjFeAjGeAjHeAjId;�ZJeAjBd<eAjCd=eAjDd>eAjEd?eAjFd@eAjGdAeAjHdBeAjIdCiZKeAjLdeAjBd<eAjCd=eAjDd>eAjEd?eAjFd@eAjGdAeAjMdCeAjHdDeAjIdEi
ZNGdFdG�dGe3�ZOGdHdI�dIe3�ZPGdJdK�dK�ZQGdLdM�dM�ZRGdNdO�dO�ZSGdPdQ�dQe3�ZTGdRdS�dSe3�ZUGdTdU�dUe3�ZVGdVdW�dWe3�ZWGdXdY�dYej@�ZXdZd[�eXD�ZYGd\d]�d]e3�ZZGd^d_�d_e3�Z[Gd`da�dae3�Z\Gdbdc�dcej]e,�Z^Gddde�de�Z_Gdfdg�dge3�Z`Gdhdi�die3�ZaGdjdk�dke3�ZbGdldm�dme3�ZcGdndo�doe3�ZdGdpdq�dqe3�ZeGdrds�dse3�ZfGdtdu�due3�ZgGdvdw�dwe3�ZhGdxdy�dye3�ZiGdzd{�d{e3�ZjGd|d}�d}�ZkGd~d�d�ZlGd�d��d��ZmGd�d��d�e3�ZnGd�d��d�e3�ZodS)��)�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�	covariantr�bytes��
public_key�returncCslt|t�r |�tjjtjj�}n>t|t�r@|�tjj	tjj
�}n|�tjjtjj�}t�
|�}t�|���S�N)�
isinstancer	�public_bytesrZEncodingZDERZPublicFormatZPKCS1rZX962ZUncompressedPointZSubjectPublicKeyInforZparse_spki_for_data�hashlib�sha1�digest)r"�dataZ
serialized�r+�I/opt/cppython/lib/python3.8/site-packages/cryptography/x509/extensions.py�_key_identifier_from_public_key2s 
�
��
r-�str��
field_namecs4dd��fdd�}�fdd�}�fdd�}|||fS)	N�int�r#cstt|���Sr$)�len�getattr��selfr/r+r,�
len_methodKsz*_make_sequence_methods.<locals>.len_methodcstt|���Sr$)�iterr4r5r/r+r,�iter_methodNsz+_make_sequence_methods.<locals>.iter_methodcst|��|Sr$)r4)r6�idxr/r+r,�getitem_methodQsz._make_sequence_methods.<locals>.getitem_methodr+)r0r7r9r;r+r/r,�_make_sequence_methodsJsr<cs&eZdZdddd��fdd�Z�ZS)�DuplicateExtensionr.r�None��msg�oidr#cst��|�||_dSr$��super�__init__rA�r6r@rA��	__class__r+r,rDXszDuplicateExtension.__init__��__name__�
__module__�__qualname__rD�
__classcell__r+r+rFr,r=Wsr=cs&eZdZdddd��fdd�Z�ZS)�ExtensionNotFoundr.rr>r?cst��|�||_dSr$rBrErFr+r,rD^szExtensionNotFound.__init__rHr+r+rFr,rM]srMc@s$eZdZUded<dd�dd�ZdS)rz!typing.ClassVar[ObjectIdentifier]rAr r2cCstd|����dS)z7
        Serializes the extension type to DER.
        z3public_bytes is not implemented for extension type N)�NotImplementedErrorr5r+r+r,r&fs�zExtensionType.public_bytesN)rIrJrK�__annotations__r&r+r+r+r,rcs
)�	metaclassc@sXeZdZddd�dd�Zddd�d	d
�Zddd
�dd�Zed�\ZZZ	dd�dd�Z
dS)�
Extensionsz)typing.Iterable[Extension[ExtensionType]]r>)�
extensionsr#cCst|�|_dSr$)�list�_extensions)r6rRr+r+r,rDpszExtensions.__init__rzExtension[ExtensionType])rAr#cCs2|D]}|j|kr|Sqtd|�d�|��dS)N�No � extension was found)rArM)r6rA�extr+r+r,�get_extension_for_oidus

z Extensions.get_extension_for_oidztype[ExtensionTypeVar]zExtension[ExtensionTypeVar])�extclassr#cCsF|tkrtd��|D]}t|j|�r|Sqtd|�d�|j��dS)Nz|UnrecognizedExtension can't be used with get_extension_for_class because more than one instance of the class may be present.rUrV)�UnrecognizedExtension�	TypeErrorr%�valuerMrA)r6rYrWr+r+r,�get_extension_for_class~s�

�z"Extensions.get_extension_for_classrTr.r2cCsd|j�d�S)Nz<Extensions(�)>)rTr5r+r+r,�__repr__�szExtensions.__repr__N)rIrJrKrDrXr]r<�__len__�__iter__�__getitem__r_r+r+r+r,rQos
	rQc@sneZdZejZddd�dd�Zddd�d	d
�Zdd�dd
�Zdd�dd�Z	e
dd�dd��Zdd�dd�ZdS)�	CRLNumberr1r>��
crl_numberr#cCst|t�std��||_dS�Nzcrl_number must be an integer�r%r1r[�_crl_number�r6rer+r+r,rD�s
zCRLNumber.__init__�object�bool��otherr#cCst|t�stS|j|jkSr$)r%rc�NotImplementedre�r6rmr+r+r,�__eq__�s
zCRLNumber.__eq__r2cCs
t|j�Sr$��hashrer5r+r+r,�__hash__�szCRLNumber.__hash__r.cCsd|j�d�S)Nz<CRLNumber(r^�rer5r+r+r,r_�szCRLNumber.__repr__cCs|jSr$�rhr5r+r+r,re�szCRLNumber.crl_numberr cCs
t�|�Sr$��	rust_x509Zencode_extension_valuer5r+r+r,r&�szCRLNumber.public_bytesN)
rIrJrKrZ
CRL_NUMBERrArDrprsr_�propertyrer&r+r+r+r,rc�srcc@s�eZdZejZddddd�dd�Zeddd	�d
d��Zeddd
�dd��Z	dd�dd�Z
ddd�dd�Zdd�dd�Ze
dd�dd��Ze
dd�dd ��Ze
dd�d!d"��Zd#d�d$d%�Zd&S)'�AuthorityKeyIdentifier�bytes | None�#typing.Iterable[GeneralName] | None�
int | Noner>)�key_identifier�authority_cert_issuer�authority_cert_serial_numberr#cCsr|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�VqdSr$�r%r��.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)	�
ValueErrorrS�allr[r%r1�_key_identifier�_authority_cert_issuer�_authority_cert_serial_number)r6r}r~rr+r+r,rD�s,����
�zAuthorityKeyIdentifier.__init__r
r!cCst|�}||ddd�S�N�r}r~r�r-)�clsr"r)r+r+r,�from_issuer_public_key�s�z-AuthorityKeyIdentifier.from_issuer_public_key�SubjectKeyIdentifier)�skir#cCs||jddd�Sr��r))r�r�r+r+r,�"from_issuer_subject_key_identifier�s
�z9AuthorityKeyIdentifier.from_issuer_subject_key_identifierr.r2cCsd|j�d|j�d|j�d�S)Nz'<AuthorityKeyIdentifier(key_identifier=z, authority_cert_issuer=z, authority_cert_serial_number=r^r�r5r+r+r,r_�s�zAuthorityKeyIdentifier.__repr__rjrkrlcCs2t|t�stS|j|jko0|j|jko0|j|jkSr$)r%ryrnr}r~rror+r+r,rp�s

���zAuthorityKeyIdentifier.__eq__r1cCs,|jdkrd}n
t|j�}t|j||jf�Sr$)r~�tuplerrr}r)r6Zacir+r+r,rss

�zAuthorityKeyIdentifier.__hash__cCs|jSr$)r�r5r+r+r,r}
sz%AuthorityKeyIdentifier.key_identifier�list[GeneralName] | NonecCs|jSr$)r�r5r+r+r,r~sz,AuthorityKeyIdentifier.authority_cert_issuercCs|jSr$)r�r5r+r+r,rsz3AuthorityKeyIdentifier.authority_cert_serial_numberr cCs
t�|�Sr$rvr5r+r+r,r&sz#AuthorityKeyIdentifier.public_bytesN)rIrJrKrZAUTHORITY_KEY_IDENTIFIERrArD�classmethodr�r�r_rprsrxr}r~rr&r+r+r+r,ry�s &
		ryc@s�eZdZejZddd�dd�Zeddd�dd	��Ze	dd
�dd��Z
e	dd
�d
d��Zdd
�dd�Zddd�dd�Z
dd
�dd�Zdd
�dd�ZdS)r�r r>)r)r#cCs
||_dSr$�Z_digest)r6r)r+r+r,rD"szSubjectKeyIdentifier.__init__rr!cCs|t|��Sr$r�)r�r"r+r+r,�from_public_key%sz$SubjectKeyIdentifier.from_public_keyr2cCs|jSr$r�r5r+r+r,r)+szSubjectKeyIdentifier.digestcCs|jSr$r�r5r+r+r,r}/sz#SubjectKeyIdentifier.key_identifierr.cCsd|j�d�S)Nz<SubjectKeyIdentifier(digest=r^r�r5r+r+r,r_3szSubjectKeyIdentifier.__repr__rjrkrlcCst|t�stSt�|j|j�Sr$)r%r�rnrZbytes_eqr)ror+r+r,rp6s
zSubjectKeyIdentifier.__eq__r1cCs
t|j�Sr$)rrr)r5r+r+r,rs<szSubjectKeyIdentifier.__hash__cCs
t�|�Sr$rvr5r+r+r,r&?sz!SubjectKeyIdentifier.public_bytesN)rIrJrKrZSUBJECT_KEY_IDENTIFIERrArDr�r�rxr)r}r_rprsr&r+r+r+r,r�sr�c@sjeZdZejZddd�dd�Zed�\ZZ	Z
dd�d	d
�Zddd
�dd�Zdd�dd�Z
dd�dd�ZdS)�AuthorityInformationAccess�"typing.Iterable[AccessDescription]r>��descriptionsr#cCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr$�r%�AccessDescriptionr�r+r+r,r�Jsz6AuthorityInformationAccess.__init__.<locals>.<genexpr>�@Every item in the descriptions list must be an AccessDescription�rSr�r[�
_descriptions�r6r�r+r+r,rDFs�z#AuthorityInformationAccess.__init__r�r.r2cCsd|j�d�S)Nz<AuthorityInformationAccess(r^�r�r5r+r+r,r_Tsz#AuthorityInformationAccess.__repr__rjrkrlcCst|t�stS|j|jkSr$)r%r�rnr�ror+r+r,rpWs
z!AuthorityInformationAccess.__eq__r1cCstt|j��Sr$�rrr�r�r5r+r+r,rs]sz#AuthorityInformationAccess.__hash__r cCs
t�|�Sr$rvr5r+r+r,r&`sz'AuthorityInformationAccess.public_bytesN)rIrJrKrZAUTHORITY_INFORMATION_ACCESSrArDr<r`rarbr_rprsr&r+r+r+r,r�Csr�c@sjeZdZejZddd�dd�Zed�\ZZ	Z
dd�d	d
�Zddd
�dd�Zdd�dd�Z
dd�dd�ZdS)�SubjectInformationAccessr�r>r�cCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr$r�r�r+r+r,r�ksz4SubjectInformationAccess.__init__.<locals>.<genexpr>r�r�r�r+r+r,rDgs�z!SubjectInformationAccess.__init__r�r.r2cCsd|j�d�S)Nz<SubjectInformationAccess(r^r�r5r+r+r,r_usz!SubjectInformationAccess.__repr__rjrkrlcCst|t�stS|j|jkSr$)r%r�rnr�ror+r+r,rpxs
zSubjectInformationAccess.__eq__r1cCstt|j��Sr$r�r5r+r+r,rs~sz!SubjectInformationAccess.__hash__r cCs
t�|�Sr$rvr5r+r+r,r&�sz%SubjectInformationAccess.public_bytesN)rIrJrKrZSUBJECT_INFORMATION_ACCESSrArDr<r`rarbr_rprsr&r+r+r+r,r�dsr�c@sneZdZdddd�dd�Zdd�d	d
�Zddd
�dd�Zdd�dd�Zedd�dd��Zedd�dd��Z	dS)r�rrr>)�
access_method�access_locationr#cCs4t|t�std��t|t�s$td��||_||_dS)Nz)access_method must be an ObjectIdentifierz%access_location must be a GeneralName)r%rr[r�_access_method�_access_location)r6r�r�r+r+r,rD�s

zAccessDescription.__init__r.r2cCsd|j�d|j�d�S)Nz!<AccessDescription(access_method=z, access_location=r^)r�r�r5r+r+r,r_�s�zAccessDescription.__repr__rjrkrlcCs&t|t�stS|j|jko$|j|jkSr$)r%r�rnr�r�ror+r+r,rp�s


�zAccessDescription.__eq__r1cCst|j|jf�Sr$)rrr�r�r5r+r+r,rs�szAccessDescription.__hash__cCs|jSr$)r�r5r+r+r,r��szAccessDescription.access_methodcCs|jSr$)r�r5r+r+r,r��sz!AccessDescription.access_locationN)
rIrJrKrDr_rprsrxr�r�r+r+r+r,r��s	r�c@s�eZdZejZdddd�dd�Zedd�dd	��Zedd�d
d��Z	dd�d
d�Z
ddd�dd�Zdd�dd�Zdd�dd�Z
dS)�BasicConstraintsrkr|r>)�ca�path_lengthr#cCsXt|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%rkr[r�r1�_ca�_path_length)r6r�r�r+r+r,rD�s
���zBasicConstraints.__init__r2cCs|jSr$)r�r5r+r+r,r��szBasicConstraints.cacCs|jSr$)r�r5r+r+r,r��szBasicConstraints.path_lengthr.cCsd|j�d|j�d�S)Nz<BasicConstraints(ca=z, path_length=r^)r�r�r5r+r+r,r_�s�zBasicConstraints.__repr__rjrlcCs&t|t�stS|j|jko$|j|jkSr$)r%r�rnr�r�ror+r+r,rp�s
zBasicConstraints.__eq__r1cCst|j|jf�Sr$)rrr�r�r5r+r+r,rs�szBasicConstraints.__hash__r cCs
t�|�Sr$rvr5r+r+r,r&�szBasicConstraints.public_bytesN)rIrJrKrZBASIC_CONSTRAINTSrArDrxr�r�r_rprsr&r+r+r+r,r��sr�c@sneZdZejZddd�dd�Zedd�dd��Zd	d
d�dd
�Z	dd�dd�Z
dd�dd�Zdd�dd�ZdS)�DeltaCRLIndicatorr1r>rdcCst|t�std��||_dSrfrgrir+r+r,rD�s
zDeltaCRLIndicator.__init__r2cCs|jSr$rur5r+r+r,re�szDeltaCRLIndicator.crl_numberrjrkrlcCst|t�stS|j|jkSr$)r%r�rnreror+r+r,rp�s
zDeltaCRLIndicator.__eq__cCs
t|j�Sr$rqr5r+r+r,rs�szDeltaCRLIndicator.__hash__r.cCsd|j�d�S)Nz<DeltaCRLIndicator(crl_number=r^rtr5r+r+r,r_�szDeltaCRLIndicator.__repr__r cCs
t�|�Sr$rvr5r+r+r,r&�szDeltaCRLIndicator.public_bytesN)
rIrJrKrZDELTA_CRL_INDICATORrArDrxrerprsr_r&r+r+r+r,r��sr�c@sjeZdZejZddd�dd�Zed�\ZZ	Z
dd�d	d
�Zddd
�dd�Zdd�dd�Z
dd�dd�ZdS)�CRLDistributionPoints�"typing.Iterable[DistributionPoint]r>��distribution_pointsr#cCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr$�r%�DistributionPointr�r+r+r,r�sz1CRLDistributionPoints.__init__.<locals>.<genexpr>�?distribution_points must be a list of DistributionPoint objects�rSr�r[�_distribution_points�r6r�r+r+r,rD�s��zCRLDistributionPoints.__init__r�r.r2cCsd|j�d�S)Nz<CRLDistributionPoints(r^�r�r5r+r+r,r_szCRLDistributionPoints.__repr__rjrkrlcCst|t�stS|j|jkSr$)r%r�rnr�ror+r+r,rps
zCRLDistributionPoints.__eq__r1cCstt|j��Sr$�rrr�r�r5r+r+r,rsszCRLDistributionPoints.__hash__r cCs
t�|�Sr$rvr5r+r+r,r&sz"CRLDistributionPoints.public_bytesN)rIrJrKrZCRL_DISTRIBUTION_POINTSrArDr<r`rarbr_rprsr&r+r+r+r,r��s�
r�c@sjeZdZejZddd�dd�Zed�\ZZ	Z
dd�d	d
�Zddd
�dd�Zdd�dd�Z
dd�dd�ZdS)�FreshestCRLr�r>r�cCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr$r�r�r+r+r,r�%sz'FreshestCRL.__init__.<locals>.<genexpr>r�r�r�r+r+r,rD!s��zFreshestCRL.__init__r�r.r2cCsd|j�d�S)Nz
<FreshestCRL(r^r�r5r+r+r,r_3szFreshestCRL.__repr__rjrkrlcCst|t�stS|j|jkSr$)r%r�rnr�ror+r+r,rp6s
zFreshestCRL.__eq__r1cCstt|j��Sr$r�r5r+r+r,rs<szFreshestCRL.__hash__r cCs
t�|�Sr$rvr5r+r+r,r&?szFreshestCRL.public_bytesN)rIrJrKrZFRESHEST_CRLrArDr<r`rarbr_rprsr&r+r+r+r,r�s�
r�c@s�eZdZdddddd�dd�Zdd	�d
d�Zdd
d�dd�Zdd	�dd�Zedd	�dd��Zedd	�dd��Z	edd	�dd��Z
edd	�dd��ZdS)r�r{� RelativeDistinguishedName | None�frozenset[ReasonFlags] | Noner>)�	full_name�
relative_name�reasons�
crl_issuerr#cCs�|r|rtd��|s$|s$|s$td��|dk	rNt|�}tdd�|D��sNtd��|rdt|t�sdtd��|dk	r�t|�}tdd�|D��s�td��|r�t|t�r�td	d�|D��s�td
��|r�tj|ks�tj	|kr�td��||_
||_||_||_
dS)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.css|]}t|t�VqdSr$r�r�r+r+r,r�Xsz-DistributionPoint.__init__.<locals>.<genexpr>z/full_name must be a list of GeneralName objectsz1relative_name must be a RelativeDistinguishedNamecss|]}t|t�VqdSr$r�r�r+r+r,r�esz2crl_issuer must be None or a list of general namescss|]}t|t�VqdSr$�r%�ReasonFlagsr�r+r+r,r�lsz0reasons must be None or frozenset of ReasonFlagszLunspecified and remove_from_crl are not valid reasons in a DistributionPoint)r�rSr�r[r%r�	frozensetr��unspecified�remove_from_crl�
_full_name�_relative_name�_reasons�_crl_issuer)r6r�r�r�r�r+r+r,rDDsV���
�������zDistributionPoint.__init__r.r2cCs
d�|�S)Nz}<DistributionPoint(full_name={0.full_name}, relative_name={0.relative_name}, reasons={0.reasons}, crl_issuer={0.crl_issuer})>��formatr5r+r+r,r_~s��zDistributionPoint.__repr__rjrkrlcCs>t|t�stS|j|jko<|j|jko<|j|jko<|j|jkSr$)r%r�rnr�r�r�r�ror+r+r,rp�s

�
�
�zDistributionPoint.__eq__r1cCsH|jdk	rt|j�}nd}|jdk	r0t|j�}nd}t||j|j|f�Sr$)r�r�r�rrr�r�)r6�fnr�r+r+r,rs�s

zDistributionPoint.__hash__r�cCs|jSr$�r�r5r+r+r,r��szDistributionPoint.full_namecCs|jSr$�r�r5r+r+r,r��szDistributionPoint.relative_namecCs|jSr$)r�r5r+r+r,r��szDistributionPoint.reasonscCs|jSr$)r�r5r+r+r,r��szDistributionPoint.crl_issuerN)rIrJrKrDr_rprsrxr�r�r�r�r+r+r+r,r�Cs:
r�c@s4eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdS)r�r�Z
keyCompromiseZcACompromiseZaffiliationChanged�
supersededZcessationOfOperationZcertificateHoldZprivilegeWithdrawnZaACompromiseZ
removeFromCRLN)
rIrJrKr��key_compromise�
ca_compromise�affiliation_changedr��cessation_of_operation�certificate_hold�privilege_withdrawn�
aa_compromiser�r+r+r+r,r��sr�)��������r�r�r�r�r�r�r�r��	�
c@s�eZdZejZdddd�dd�Zdd�dd	�Zd
dd�d
d�Zdd�dd�Z	e
dd�dd��Ze
dd�dd��Zdd�dd�Z
dS)�PolicyConstraintsr|r>)�require_explicit_policy�inhibit_policy_mappingr#cCs\|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)r%r1r[r��_require_explicit_policy�_inhibit_policy_mapping)r6r�r�r+r+r,rD�s(
��
���zPolicyConstraints.__init__r.r2cCs
d�|�S)Nz{<PolicyConstraints(require_explicit_policy={0.require_explicit_policy}, inhibit_policy_mapping={0.inhibit_policy_mapping})>r�r5r+r+r,r_s��zPolicyConstraints.__repr__rjrkrlcCs&t|t�stS|j|jko$|j|jkSr$)r%r�rnr�r�ror+r+r,rps


�zPolicyConstraints.__eq__r1cCst|j|jf�Sr$)rrr�r�r5r+r+r,rs's
�zPolicyConstraints.__hash__cCs|jSr$)r�r5r+r+r,r�,sz)PolicyConstraints.require_explicit_policycCs|jSr$)r�r5r+r+r,r�0sz(PolicyConstraints.inhibit_policy_mappingr cCs
t�|�Sr$rvr5r+r+r,r&4szPolicyConstraints.public_bytesN)rIrJrKrZPOLICY_CONSTRAINTSrArDr_rprsrxr�r�r&r+r+r+r,r��s	r�c@sjeZdZejZddd�dd�Zed�\ZZ	Z
dd�d	d
�Zddd
�dd�Zdd�dd�Z
dd�dd�ZdS)�CertificatePoliciesz"typing.Iterable[PolicyInformation]r>)�policiesr#cCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr$)r%�PolicyInformationr�r+r+r,r�=sz/CertificatePolicies.__init__.<locals>.<genexpr>z;Every item in the policies list must be a PolicyInformation)rSr�r[�	_policies)r6r�r+r+r,rD;s�zCertificatePolicies.__init__r�r.r2cCsd|j�d�S)Nz<CertificatePolicies(r^)r�r5r+r+r,r_GszCertificatePolicies.__repr__rjrkrlcCst|t�stS|j|jkSr$)r%r�rnr�ror+r+r,rpJs
zCertificatePolicies.__eq__r1cCstt|j��Sr$)rrr�r�r5r+r+r,rsPszCertificatePolicies.__hash__r cCs
t�|�Sr$rvr5r+r+r,r&Ssz CertificatePolicies.public_bytesN)rIrJrKrZCERTIFICATE_POLICIESrArDr<r`rarbr_rprsr&r+r+r+r,r�8s
r�c@sneZdZdddd�dd�Zdd�d	d
�Zddd
�dd�Zdd�dd�Zedd�dd��Zedd�dd��Z	dS)r�rz(typing.Iterable[str | UserNotice] | Noner>)�policy_identifier�policy_qualifiersr#cCsLt|t�std��||_|dk	rBt|�}tdd�|D��sBtd��||_dS)Nz-policy_identifier must be an ObjectIdentifiercss|]}t|ttf�VqdSr$)r%r.�
UserNoticer�r+r+r,r�dsz-PolicyInformation.__init__.<locals>.<genexpr>zMpolicy_qualifiers must be a list of strings and/or UserNotice objects or None)r%rr[�_policy_identifierrSr��_policy_qualifiers)r6r�r�r+r+r,rDXs
��zPolicyInformation.__init__r.r2cCsd|j�d|j�d�S)Nz%<PolicyInformation(policy_identifier=z, policy_qualifiers=r^)r�r�r5r+r+r,r_ns�zPolicyInformation.__repr__rjrkrlcCs&t|t�stS|j|jko$|j|jkSr$)r%r�rnr�r�ror+r+r,rpts


�zPolicyInformation.__eq__r1cCs(|jdk	rt|j�}nd}t|j|f�Sr$)r�r�rrr�)r6Zpqr+r+r,rs}s
zPolicyInformation.__hash__cCs|jSr$)r�r5r+r+r,r��sz#PolicyInformation.policy_identifierzlist[str | UserNotice] | NonecCs|jSr$)r�r5r+r+r,r��sz#PolicyInformation.policy_qualifiersN)
rIrJrKrDr_rprsrxr�r�r+r+r+r,r�Ws	r�c@sneZdZdddd�dd�Zdd�d	d
�Zddd
�dd�Zdd�dd�Zedd�dd��Zedd�dd��Z	dS)r�zNoticeReference | None�
str | Noner>)�notice_reference�
explicit_textr#cCs&|rt|t�std��||_||_dS)Nz2notice_reference must be None or a NoticeReference)r%�NoticeReferencer[�_notice_reference�_explicit_text)r6r�r�r+r+r,rD�s��zUserNotice.__init__r.r2cCsd|j�d|j�d�S)Nz<UserNotice(notice_reference=z, explicit_text=r^)r�r�r5r+r+r,r_�s�zUserNotice.__repr__rjrkrlcCs&t|t�stS|j|jko$|j|jkSr$)r%r�rnr�r�ror+r+r,rp�s


�zUserNotice.__eq__r1cCst|j|jf�Sr$)rrr�r�r5r+r+r,rs�szUserNotice.__hash__cCs|jSr$)r�r5r+r+r,r��szUserNotice.notice_referencecCs|jSr$)r�r5r+r+r,r��szUserNotice.explicit_textN)
rIrJrKrDr_rprsrxr�r�r+r+r+r,r��s	r�c@sneZdZdddd�dd�Zdd�d	d
�Zddd
�dd�Zdd�dd�Zedd�dd��Zedd�dd��Z	dS)r�r�ztyping.Iterable[int]r>)�organization�notice_numbersr#cCs2||_t|�}tdd�|D��s(td��||_dS)Ncss|]}t|t�VqdSr$)r%r1r�r+r+r,r��sz+NoticeReference.__init__.<locals>.<genexpr>z)notice_numbers must be a list of integers)�
_organizationrSr�r[�_notice_numbers)r6r�r�r+r+r,rD�s
zNoticeReference.__init__r.r2cCsd|j�d|j�d�S)Nz<NoticeReference(organization=z, notice_numbers=r^)r�r�r5r+r+r,r_�s�zNoticeReference.__repr__rjrkrlcCs&t|t�stS|j|jko$|j|jkSr$)r%r�rnr�r�ror+r+r,rp�s


�zNoticeReference.__eq__r1cCst|jt|j�f�Sr$)rrr�r�r�r5r+r+r,rs�szNoticeReference.__hash__cCs|jSr$)r�r5r+r+r,r��szNoticeReference.organizationz	list[int]cCs|jSr$)r�r5r+r+r,r��szNoticeReference.notice_numbersN)
rIrJrKrDr_rprsrxr�r�r+r+r+r,r��s	r�c@sjeZdZejZddd�dd�Zed�\ZZ	Z
dd�d	d
�Zddd
�dd�Zdd�dd�Z
dd�dd�ZdS)�ExtendedKeyUsage�!typing.Iterable[ObjectIdentifier]r>)�usagesr#cCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr$�r%rr�r+r+r,r��sz,ExtendedKeyUsage.__init__.<locals>.<genexpr>z9Every item in the usages list must be an ObjectIdentifier)rSr�r[�_usages)r6r�r+r+r,rD�s�zExtendedKeyUsage.__init__r�r.r2cCsd|j�d�S)Nz<ExtendedKeyUsage(r^)r�r5r+r+r,r_�szExtendedKeyUsage.__repr__rjrkrlcCst|t�stS|j|jkSr$)r%r�rnr�ror+r+r,rp�s
zExtendedKeyUsage.__eq__r1cCstt|j��Sr$)rrr�r�r5r+r+r,rs�szExtendedKeyUsage.__hash__r cCs
t�|�Sr$rvr5r+r+r,r&�szExtendedKeyUsage.public_bytesN)rIrJrKrZEXTENDED_KEY_USAGErArDr<r`rarbr_rprsr&r+r+r+r,r��s	r�c@sLeZdZejZddd�dd�Zdd�dd	�Zd
d�dd�Zd
d�dd�Z	dS)�OCSPNoCheckrjrkrlcCst|t�stSdS�NT)r%r�rnror+r+r,rps
zOCSPNoCheck.__eq__r1r2cCstt�Sr$)rrr�r5r+r+r,rs
szOCSPNoCheck.__hash__r.cCsdS)Nz<OCSPNoCheck()>r+r5r+r+r,r_
szOCSPNoCheck.__repr__r cCs
t�|�Sr$rvr5r+r+r,r&szOCSPNoCheck.public_bytesN)
rIrJrKrZ
OCSP_NO_CHECKrArprsr_r&r+r+r+r,r�s
r�c@sLeZdZejZddd�dd�Zdd�dd	�Zd
d�dd�Zd
d�dd�Z	dS)�
PrecertPoisonrjrkrlcCst|t�stSdSr)r%rrnror+r+r,rps
zPrecertPoison.__eq__r1r2cCstt�Sr$)rrrr5r+r+r,rsszPrecertPoison.__hash__r.cCsdS)Nz<PrecertPoison()>r+r5r+r+r,r_ szPrecertPoison.__repr__r cCs
t�|�Sr$rvr5r+r+r,r&#szPrecertPoison.public_bytesN)
rIrJrKrZPRECERT_POISONrArprsr_r&r+r+r+r,rs
rc@sjeZdZejZddd�dd�Zed�\ZZ	Z
dd�d	d
�Zddd
�dd�Zdd�dd�Z
dd�dd�ZdS)�
TLSFeatureztyping.Iterable[TLSFeatureType]r>)�featuresr#cCs8t|�}tdd�|D��r&t|�dkr.td��||_dS)Ncss|]}t|t�VqdSr$)r%�TLSFeatureTyper�r+r+r,r�-sz&TLSFeature.__init__.<locals>.<genexpr>rz@features must be a list of elements from the TLSFeatureType enum)rSr�r3r[�	_features)r6rr+r+r,rD*s�
��zTLSFeature.__init__rr.r2cCsd|j�d�S)Nz<TLSFeature(features=r^)rr5r+r+r,r_9szTLSFeature.__repr__rjrkrlcCst|t�stS|j|jkSr$)r%rrnrror+r+r,rp<s
zTLSFeature.__eq__r1cCstt|j��Sr$)rrr�rr5r+r+r,rsBszTLSFeature.__hash__r cCs
t�|�Sr$rvr5r+r+r,r&EszTLSFeature.public_bytesN)rIrJrKrZTLS_FEATURErArDr<r`rarbr_rprsr&r+r+r+r,r's
rc@seZdZdZdZdS)rr��N)rIrJrKZstatus_requestZstatus_request_v2r+r+r+r,rIsrcCsi|]}|j|�qSr+�r\r�r+r+r,�
<dictcomp>Tsrc@sneZdZejZddd�dd�Zdd�dd	�Zd
dd�d
d�Zdd�dd�Z	e
dd�dd��Zdd�dd�ZdS)�InhibitAnyPolicyr1r>)�
skip_certsr#cCs,t|t�std��|dkr"td��||_dS)Nzskip_certs must be an integerrz)skip_certs must be a non-negative integer)r%r1r[r��_skip_certs)r6r
r+r+r,rDZs

zInhibitAnyPolicy.__init__r.r2cCsd|j�d�S)Nz<InhibitAnyPolicy(skip_certs=r^)r
r5r+r+r,r_cszInhibitAnyPolicy.__repr__rjrkrlcCst|t�stS|j|jkSr$)r%r	rnr
ror+r+r,rpfs
zInhibitAnyPolicy.__eq__cCs
t|j�Sr$)rrr
r5r+r+r,rslszInhibitAnyPolicy.__hash__cCs|jSr$)rr5r+r+r,r
oszInhibitAnyPolicy.skip_certsr cCs
t�|�Sr$rvr5r+r+r,r&sszInhibitAnyPolicy.public_bytesN)
rIrJrKrZINHIBIT_ANY_POLICYrArDr_rprsrxr
r&r+r+r+r,r	Ws	r	c@seZdZejZddddddddddd�
dd�Zedd�dd��Zedd�d	d
��Z	edd�dd��Z
edd�d
d��Zedd�dd��Zedd�dd��Z
edd�dd��Zedd�dd��Zedd�dd��Zdd�dd�Zddd�dd�Zd d�d!d"�Zd#d�d$d%�Zd&S)'�KeyUsagerkr>)
�digital_signature�content_commitment�key_encipherment�data_encipherment�
key_agreement�
key_cert_sign�crl_sign�
encipher_only�
decipher_onlyr#c

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)
r6r
rrrrrrrrr+r+r,rDzs�zKeyUsage.__init__r2cCs|jSr$)rr5r+r+r,r
�szKeyUsage.digital_signaturecCs|jSr$)rr5r+r+r,r�szKeyUsage.content_commitmentcCs|jSr$)rr5r+r+r,r�szKeyUsage.key_enciphermentcCs|jSr$)rr5r+r+r,r�szKeyUsage.data_enciphermentcCs|jSr$)rr5r+r+r,r�szKeyUsage.key_agreementcCs|jSr$)rr5r+r+r,r�szKeyUsage.key_cert_signcCs|jSr$)rr5r+r+r,r�szKeyUsage.crl_signcCs|jstd��n|jSdS)Nz7encipher_only is undefined unless key_agreement is true)rr�rr5r+r+r,r�s
�zKeyUsage.encipher_onlycCs|jstd��n|jSdS)Nz7decipher_only is undefined unless key_agreement is true)rr�rr5r+r+r,r�s
�zKeyUsage.decipher_onlyr.cCsxz|j}|j}Wntk
r,d}d}YnXd|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=r^)
rrr�r
rrrrrr)r6rrr+r+r,r_�s

H�zKeyUsage.__repr__rjrlcCszt|t�stS|j|jkox|j|jkox|j|jkox|j|jkox|j|jkox|j|jkox|j	|j	kox|j
|j
kox|j|jkSr$)r%rrnr
rrrrrrrrror+r+r,rp�s&

�
�
�
�
�
�
�
�zKeyUsage.__eq__r1c
Cs,t|j|j|j|j|j|j|j|j|j	f	�Sr$)
rrr
rrrrrrrrr5r+r+r,rs�s��zKeyUsage.__hash__r cCs
t�|�Sr$rvr5r+r+r,r&�szKeyUsage.public_bytesN)rIrJrKrZ	KEY_USAGErArDrxr
rrrrrrrrr_rprsr&r+r+r+r,rws0 rc@s�eZdZejZdddd�dd�Zddd�d	d
�Zddd�d
d�Zddd�dd�Z	ddd�dd�Z
dd�dd�Zdd�dd�Ze
dd�dd��Ze
dd�dd��Zdd�d d!�Zd"S)#�NameConstraintsr{r>)�permitted_subtrees�excluded_subtreesr#cCs�|dk	r@t|�}|std��tdd�|D��s6td��|�|�|dk	r�t|�}|s\td��tdd�|D��svtd��|�|�|dkr�|dkr�td��||_||_dS)	Nz3permitted_subtrees must be a non-empty list or Nonecss|]}t|t�VqdSr$r�r�r+r+r,r�
sz+NameConstraints.__init__.<locals>.<genexpr>z@permitted_subtrees must be a list of GeneralName objects or Nonez2excluded_subtrees must be a non-empty list or Nonecss|]}t|t�VqdSr$r�r�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)rSr�r�r[�_validate_tree�_permitted_subtrees�_excluded_subtrees)r6r r!r+r+r,rD�s8��
��
�zNameConstraints.__init__rjrkrlcCs&t|t�stS|j|jko$|j|jkSr$)r%rrnr!r ror+r+r,rp)s


�zNameConstraints.__eq__�typing.Iterable[GeneralName])�treer#cCs|�|�|�|�dSr$)�_validate_ip_name�_validate_dns_name�r6r&r+r+r,r"2s
zNameConstraints._validate_treecCstdd�|D��rtd��dS)Ncss.|]&}t|t�o$t|jtjtjf�VqdSr$)r%rr\�	ipaddress�IPv4Network�IPv6Network�r��namer+r+r,r�7s�

�z4NameConstraints._validate_ip_name.<locals>.<genexpr>zGIPAddress name constraints must be an IPv4Network or IPv6Network object)�anyr[r)r+r+r,r'6s��z!NameConstraints._validate_ip_namecCstdd�|D��rtd��dS)Ncss"|]}t|t�od|jkVqdS)�*N)r%rr\r-r+r+r,r�Dsz5NameConstraints._validate_dns_name.<locals>.<genexpr>zDDNSName name constraints must not contain the '*' wildcard character)r/r�r)r+r+r,r(Cs��z"NameConstraints._validate_dns_namer.r2cCsd|j�d|j�d�S)Nz$<NameConstraints(permitted_subtrees=z, excluded_subtrees=r^)r r!r5r+r+r,r_Ls�zNameConstraints.__repr__r1cCs@|jdk	rt|j�}nd}|jdk	r0t|j�}nd}t||f�Sr$)r r�r!rr)r6Zps�esr+r+r,rsRs

zNameConstraints.__hash__r�cCs|jSr$)r#r5r+r+r,r _sz"NameConstraints.permitted_subtreescCs|jSr$)r$r5r+r+r,r!esz!NameConstraints.excluded_subtreesr cCs
t�|�Sr$rvr5r+r+r,r&kszNameConstraints.public_bytesN)rIrJrKrZNAME_CONSTRAINTSrArDrpr"r'r(r_rsrxr r!r&r+r+r+r,r�s*	
	
rc@s�eZdZddddd�dd�Zedd�d	d
��Zedd�dd��Zedd�d
d��Zdd�dd�Zddd�dd�Z	dd�dd�Z
dS)�	Extensionrrkrr>)rA�criticalr\r#cCs:t|t�std��t|t�s$td��||_||_||_dS)Nz2oid argument must be an ObjectIdentifier instance.z critical must be a boolean value)r%rr[rk�_oid�	_critical�_value)r6rAr3r\r+r+r,rDps
�
zExtension.__init__r2cCs|jSr$�r4r5r+r+r,rAsz
Extension.oidcCs|jSr$)r5r5r+r+r,r3�szExtension.criticalcCs|jSr$�r6r5r+r+r,r\�szExtension.valuer.cCsd|j�d|j�d|j�d�S)Nz<Extension(oid=z, critical=�, value=r^)rAr3r\r5r+r+r,r_�s�zExtension.__repr__rjrlcCs2t|t�stS|j|jko0|j|jko0|j|jkSr$)r%r2rnrAr3r\ror+r+r,rp�s

�
�zExtension.__eq__r1cCst|j|j|jf�Sr$)rrrAr3r\r5r+r+r,rs�szExtension.__hash__N)rIrJrKrDrxrAr3r\r_rprsr+r+r+r,r2os
r2c@s�eZdZddd�dd�Zed�\ZZZej	ddd	�d
d��Z
ej	dd
d	�dd��Z
ej	ddd	�dd��Z
ej	ddd	�dd��Z
ej	ddd	�dd��Z
ddd	�dd�Z
dd�dd�Zdd d!�d"d#�Zd$d�d%d&�Z
d'S)(�GeneralNamesr%r>��
general_namesr#cCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr$r�r�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)rSr�r[�_general_names�r6r<r+r+r,rD�s�zGeneralNames.__init__r=�Btype[DNSName] | type[UniformResourceIdentifier] | type[RFC822Name]�	list[str]��typer#cCsdSr$r+�r6rBr+r+r,�get_values_for_type�sz GeneralNames.get_values_for_type�type[DirectoryName]�
list[Name]cCsdSr$r+rCr+r+r,rD�s�type[RegisteredID]�list[ObjectIdentifier]cCsdSr$r+rCr+r+r,rD�s�type[IPAddress]�list[_IPAddressTypes]cCsdSr$r+rCr+r+r,rD�s�type[OtherName]�list[OtherName]cCsdSr$r+rCr+r+r,rD�s��type[DNSName] | type[DirectoryName] | type[IPAddress] | type[OtherName] | type[RFC822Name] | type[RegisteredID] | type[UniformResourceIdentifier]�Ylist[_IPAddressTypes] | list[str] | list[OtherName] | list[Name] | list[ObjectIdentifier]cs0�fdd�|D�}�tkr(dd�|D�St|�S)Nc3s|]}t|��r|VqdSr$)r%�r��i�rBr+r,r��s
z3GeneralNames.get_values_for_type.<locals>.<genexpr>cSsg|]
}|j�qSr+rrOr+r+r,�
<listcomp>�sz4GeneralNames.get_values_for_type.<locals>.<listcomp>)rrS)r6rBZobjsr+rQr,rD�sr.r2cCsd|j�d�S)Nz<GeneralNames(r^�r=r5r+r+r,r_�szGeneralNames.__repr__rjrkrlcCst|t�stS|j|jkSr$)r%r:rnr=ror+r+r,rp�s
zGeneralNames.__eq__r1cCstt|j��Sr$)rrr�r=r5r+r+r,rs�szGeneralNames.__hash__N)rIrJrKrDr<r`rarb�typing�overloadrDr_rprsr+r+r+r,r:�s 
r:c@s�eZdZejZddd�dd�Zed�\ZZ	Z
ejddd	�d
d��Z
ejdd
d	�dd��Z
ejddd	�dd��Z
ejddd	�dd��Z
ejddd	�dd��Z
ddd	�dd�Z
dd�dd�Zdd d!�d"d#�Zd$d�d%d&�Zd'd�d(d)�Zd*S)+�SubjectAlternativeNamer%r>r;cCst|�|_dSr$�r:r=r>r+r+r,rD�szSubjectAlternativeName.__init__r=r?r@rAcCsdSr$r+rCr+r+r,rD�sz*SubjectAlternativeName.get_values_for_typerErFcCsdSr$r+rCr+r+r,rD�srGrHcCsdSr$r+rCr+r+r,rDsrIrJcCsdSr$r+rCr+r+r,rDsrKrLcCsdSr$r+rCr+r+r,rDsrMrNcCs|j�|�Sr$�r=rDrCr+r+r,rDsr.r2cCsd|j�d�S)Nz<SubjectAlternativeName(r^rSr5r+r+r,r_'szSubjectAlternativeName.__repr__rjrkrlcCst|t�stS|j|jkSr$)r%rVrnr=ror+r+r,rp*s
zSubjectAlternativeName.__eq__r1cCs
t|j�Sr$�rrr=r5r+r+r,rs0szSubjectAlternativeName.__hash__r cCs
t�|�Sr$rvr5r+r+r,r&3sz#SubjectAlternativeName.public_bytesN)rIrJrKrZSUBJECT_ALTERNATIVE_NAMErArDr<r`rarbrTrUrDr_rprsr&r+r+r+r,rV�s$rVc@s�eZdZejZddd�dd�Zed�\ZZ	Z
ejddd	�d
d��Z
ejdd
d	�dd��Z
ejddd	�dd��Z
ejddd	�dd��Z
ejddd	�dd��Z
ddd	�dd�Z
dd�dd�Zdd d!�d"d#�Zd$d�d%d&�Zd'd�d(d)�Zd*S)+�IssuerAlternativeNamer%r>r;cCst|�|_dSr$rWr>r+r+r,rD:szIssuerAlternativeName.__init__r=r?r@rAcCsdSr$r+rCr+r+r,rD?sz)IssuerAlternativeName.get_values_for_typerErFcCsdSr$r+rCr+r+r,rDGsrGrHcCsdSr$r+rCr+r+r,rDMsrIrJcCsdSr$r+rCr+r+r,rDSsrKrLcCsdSr$r+rCr+r+r,rDXsrMrNcCs|j�|�Sr$rXrCr+r+r,rD]sr.r2cCsd|j�d�S)Nz<IssuerAlternativeName(r^rSr5r+r+r,r_oszIssuerAlternativeName.__repr__rjrkrlcCst|t�stS|j|jkSr$)r%rZrnr=ror+r+r,rprs
zIssuerAlternativeName.__eq__r1cCs
t|j�Sr$rYr5r+r+r,rsxszIssuerAlternativeName.__hash__r cCs
t�|�Sr$rvr5r+r+r,r&{sz"IssuerAlternativeName.public_bytesN)rIrJrKrZISSUER_ALTERNATIVE_NAMErArDr<r`rarbrTrUrDr_rprsr&r+r+r+r,rZ7s$rZc@s�eZdZejZddd�dd�Zed�\ZZ	Z
ejddd	�d
d��Z
ejdd
d	�dd��Z
ejddd	�dd��Z
ejddd	�dd��Z
ejddd	�dd��Z
ddd	�dd�Z
dd�dd�Zdd d!�d"d#�Zd$d�d%d&�Zd'd�d(d)�Zd*S)+�CertificateIssuerr%r>r;cCst|�|_dSr$rWr>r+r+r,rD�szCertificateIssuer.__init__r=r?r@rAcCsdSr$r+rCr+r+r,rD�sz%CertificateIssuer.get_values_for_typerErFcCsdSr$r+rCr+r+r,rD�srGrHcCsdSr$r+rCr+r+r,rD�srIrJcCsdSr$r+rCr+r+r,rD�srKrLcCsdSr$r+rCr+r+r,rD�srMrNcCs|j�|�Sr$rXrCr+r+r,rD�sr.r2cCsd|j�d�S)Nz<CertificateIssuer(r^rSr5r+r+r,r_�szCertificateIssuer.__repr__rjrkrlcCst|t�stS|j|jkSr$)r%r[rnr=ror+r+r,rp�s
zCertificateIssuer.__eq__r1cCs
t|j�Sr$rYr5r+r+r,rs�szCertificateIssuer.__hash__r cCs
t�|�Sr$rvr5r+r+r,r&�szCertificateIssuer.public_bytesN)rIrJrKrZCERTIFICATE_ISSUERrArDr<r`rarbrTrUrDr_rprsr&r+r+r+r,r[s$r[c@sneZdZejZddd�dd�Zdd�dd	�Zd
dd�d
d�Zdd�dd�Z	e
dd�dd��Zdd�dd�ZdS)�	CRLReasonr�r>)�reasonr#cCst|t�std��||_dS)Nz*reason must be an element from ReasonFlags)r%r�r[�_reason)r6r]r+r+r,rD�s
zCRLReason.__init__r.r2cCsd|j�d�S)Nz<CRLReason(reason=r^�r^r5r+r+r,r_�szCRLReason.__repr__rjrkrlcCst|t�stS|j|jkSr$)r%r\rnr]ror+r+r,rp�s
zCRLReason.__eq__r1cCs
t|j�Sr$)rrr]r5r+r+r,rs�szCRLReason.__hash__cCs|jSr$r_r5r+r+r,r]�szCRLReason.reasonr cCs
t�|�Sr$rvr5r+r+r,r&�szCRLReason.public_bytesN)
rIrJrKrZ
CRL_REASONrArDr_rprsrxr]r&r+r+r+r,r\�sr\c@s�eZdZejZddd�dd�Zdd�dd	�Zd
dd�d
d�Zdd�dd�Z	e
dd�dd��Ze
dd�dd��Zdd�dd�Z
dS)�InvalidityDatezdatetime.datetimer>)�invalidity_dater#cCst|tj�std��||_dS)Nz+invalidity_date must be a datetime.datetime)r%�datetimer[�_invalidity_date)r6rar+r+r,rD�szInvalidityDate.__init__r.r2cCsd|j�d�S)Nz <InvalidityDate(invalidity_date=r^�rcr5r+r+r,r_�szInvalidityDate.__repr__rjrkrlcCst|t�stS|j|jkSr$)r%r`rnraror+r+r,rp�s
zInvalidityDate.__eq__r1cCs
t|j�Sr$)rrrar5r+r+r,rs�szInvalidityDate.__hash__cCs|jSr$rdr5r+r+r,ra�szInvalidityDate.invalidity_datecCs4|jjdkr|jjtjjd�S|jjtjjd�SdS)N)�tzinfo)�tz)rcre�replacerb�timezone�utc�
astimezoner5r+r+r,�invalidity_date_utc�sz"InvalidityDate.invalidity_date_utcr cCs
t�|�Sr$rvr5r+r+r,r&szInvalidityDate.public_bytesN)rIrJrKrZINVALIDITY_DATErArDr_rprsrxrarkr&r+r+r+r,r`�sr`c@sjeZdZejZddd�dd�Zed�\ZZ	Z
dd�d	d
�Zdd�dd
�Zddd�dd�Z
dd�dd�ZdS)�)PrecertificateSignedCertificateTimestamps�+typing.Iterable[SignedCertificateTimestamp]r>��signed_certificate_timestampsr#cCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr$�r%r�r�Zsctr+r+r,r�s�zEPrecertificateSignedCertificateTimestamps.__init__.<locals>.<genexpr>�YEvery item in the signed_certificate_timestamps list must be a SignedCertificateTimestamp�rSr�r[�_signed_certificate_timestamps�r6ror+r+r,rDs��z2PrecertificateSignedCertificateTimestamps.__init__rtr.r2cCsdt|��d�S)Nz+<PrecertificateSignedCertificateTimestamps(r^�rSr5r+r+r,r_ sz2PrecertificateSignedCertificateTimestamps.__repr__r1cCstt|j��Sr$�rrr�rtr5r+r+r,rs#sz2PrecertificateSignedCertificateTimestamps.__hash__rjrkrlcCst|t�stS|j|jkSr$)r%rlrnrtror+r+r,rp&s
��z0PrecertificateSignedCertificateTimestamps.__eq__r cCs
t�|�Sr$rvr5r+r+r,r&/sz6PrecertificateSignedCertificateTimestamps.public_bytesN)rIrJrKrZ%PRECERT_SIGNED_CERTIFICATE_TIMESTAMPSrArDr<r`rarbr_rsrpr&r+r+r+r,rls�
	rlc@sjeZdZejZddd�dd�Zed�\ZZ	Z
dd�d	d
�Zdd�dd
�Zddd�dd�Z
dd�dd�ZdS)�SignedCertificateTimestampsrmr>rncCs,t|�}tdd�|D��s"td��||_dS)Ncss|]}t|t�VqdSr$rprqr+r+r,r�=s�z7SignedCertificateTimestamps.__init__.<locals>.<genexpr>rrrsrur+r+r,rD6s��z$SignedCertificateTimestamps.__init__rtr.r2cCsdt|��d�S)Nz<SignedCertificateTimestamps(r^rvr5r+r+r,r_Ksz$SignedCertificateTimestamps.__repr__r1cCstt|j��Sr$rwr5r+r+r,rsNsz$SignedCertificateTimestamps.__hash__rjrkrlcCst|t�stS|j|jkSr$)r%rxrnrtror+r+r,rpQs
��z"SignedCertificateTimestamps.__eq__r cCs
t�|�Sr$rvr5r+r+r,r&Zsz(SignedCertificateTimestamps.public_bytesN)rIrJrKrZSIGNED_CERTIFICATE_TIMESTAMPSrArDr<r`rarbr_rsrpr&r+r+r+r,rx3s�
	rxc@sneZdZejZddd�dd�Zddd�d	d
�Zdd�d
d�Zdd�dd�Z	e
dd�dd��Zdd�dd�ZdS)�	OCSPNoncer r>)�noncer#cCst|t�std��||_dS)Nznonce must be bytes)r%r r[�_nonce)r6rzr+r+r,rDas
zOCSPNonce.__init__rjrkrlcCst|t�stS|j|jkSr$)r%ryrnrzror+r+r,rpgs
zOCSPNonce.__eq__r1r2cCs
t|j�Sr$)rrrzr5r+r+r,rsmszOCSPNonce.__hash__r.cCsd|j�d�S)Nz<OCSPNonce(nonce=r^)rzr5r+r+r,r_pszOCSPNonce.__repr__cCs|jSr$)r{r5r+r+r,rzsszOCSPNonce.noncecCs
t�|�Sr$rvr5r+r+r,r&wszOCSPNonce.public_bytesN)
rIrJrKrZNONCErArDrprsr_rxrzr&r+r+r+r,ry^sryc@sjeZdZejZddd�dd�Zddd�d	d
�Zdd�d
d�Zdd�dd�Z	dd�dd�Z
dd�dd�ZdS)�OCSPAcceptableResponsesr�r>)�	responsesr#cCs,t|�}tdd�|D��r"td��||_dS)Ncss|]}t|t�VqdSr$r�)r��rr+r+r,r��sz3OCSPAcceptableResponses.__init__.<locals>.<genexpr>z'All responses must be ObjectIdentifiers)rSr/r[�
_responses)r6r}r+r+r,rD~sz OCSPAcceptableResponses.__init__rjrkrlcCst|t�stS|j|jkSr$)r%r|rnrror+r+r,rp�s
zOCSPAcceptableResponses.__eq__r1r2cCstt|j��Sr$)rrr�rr5r+r+r,rs�sz OCSPAcceptableResponses.__hash__r.cCsd|j�d�S)Nz#<OCSPAcceptableResponses(responses=r^)rr5r+r+r,r_�sz OCSPAcceptableResponses.__repr__z!typing.Iterator[ObjectIdentifier]cCs
t|j�Sr$)r8rr5r+r+r,ra�sz OCSPAcceptableResponses.__iter__r cCs
t�|�Sr$rvr5r+r+r,r&�sz$OCSPAcceptableResponses.public_bytesN)rIrJrKrZACCEPTABLE_RESPONSESrArDrprsr_rar&r+r+r+r,r|{sr|c	@s�eZdZejZddddddddd�dd�Zd	d
�dd�Zd
dd�dd�Zdd
�dd�Z	e
dd
�dd��Ze
dd
�dd��Ze
dd
�dd��Z
e
dd
�dd��Ze
dd
�dd��Ze
dd
�dd ��Ze
dd
�d!d"��Zd#d
�d$d%�Zd&S)'�IssuingDistributionPointr{r�rkr�r>)r�r��only_contains_user_certs�only_contains_ca_certs�only_some_reasons�indirect_crl�only_contains_attribute_certsr#c	Cs�|dk	rt|�}|r8t|t�r0tdd�|D��s8td��|rXtj|ksPtj|krXtd��t|t	�r�t|t	�r�t|t	�r�t|t	�s�td��|||g}t
dd�|D��dkr�td	��t|||||||g�s�td
��||_||_
||_||_||_||_||_dS)Ncss|]}t|t�VqdSr$r�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,rR�sz5IssuingDistributionPoint.__init__.<locals>.<listcomp>r�z}Only one of the following can be set to True: only_contains_user_certs, only_contains_ca_certs, only_contains_attribute_certsz�Cannot create empty extension: if only_contains_user_certs, only_contains_ca_certs, indirect_crl, and only_contains_attribute_certs are all False, then either full_name, relative_name, or only_some_reasons must have a value.)rSr%r�r�r[r�r�r�r�rkr3r/�_only_contains_user_certs�_only_contains_ca_certs�
_indirect_crl�_only_contains_attribute_certs�_only_some_reasonsr�r�)	r6r�r�r�r�r�r�r�Zcrl_constraintsr+r+r,rD�sr
�����������
�����z!IssuingDistributionPoint.__init__r.r2cCs>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=r^)r�r�r�r�r�r�r�r5r+r+r,r_�s<�z!IssuingDistributionPoint.__repr__rjrlcCsbt|t�stS|j|jko`|j|jko`|j|jko`|j|jko`|j|jko`|j|jko`|j	|j	kSr$)
r%r�rnr�r�r�r�r�r�r�ror+r+r,rp�s"

�
�
�
�
���zIssuingDistributionPoint.__eq__r1cCs$t|j|j|j|j|j|j|jf�Sr$)rrr�r�r�r�r�r�r�r5r+r+r,rss��z!IssuingDistributionPoint.__hash__r�cCs|jSr$r�r5r+r+r,r�sz"IssuingDistributionPoint.full_namecCs|jSr$r�r5r+r+r,r�sz&IssuingDistributionPoint.relative_namecCs|jSr$)r�r5r+r+r,r� sz1IssuingDistributionPoint.only_contains_user_certscCs|jSr$)r�r5r+r+r,r�$sz/IssuingDistributionPoint.only_contains_ca_certscCs|jSr$)r�r5r+r+r,r�(sz*IssuingDistributionPoint.only_some_reasonscCs|jSr$)r�r5r+r+r,r�.sz%IssuingDistributionPoint.indirect_crlcCs|jSr$)r�r5r+r+r,r�2sz6IssuingDistributionPoint.only_contains_attribute_certsr cCs
t�|�Sr$rvr5r+r+r,r&6sz%IssuingDistributionPoint.public_bytesN)rIrJrKrZISSUING_DISTRIBUTION_POINTrArDr_rprsrxr�r�r�r�r�r�r�r&r+r+r+r,r��s(U
r�c@s�eZdZejZddddd�dd�Zedd�dd	��Zedd�d
d��Z	edd�dd
��Z
dd�dd�Zddd�dd�Zdd�dd�Z
dd�dd�ZdS)�MSCertificateTemplaterr|r>)�template_id�
major_version�
minor_versionr#cCsTt|t�std��||_|dk	r*t|t�r<|dk	rDt|t�sDtd��||_||_dS)N�oid must be an ObjectIdentifierz8major_version and minor_version must be integers or None)r%rr[�_template_idr1�_major_version�_minor_version)r6r�r�r�r+r+r,rD=s 
�����zMSCertificateTemplate.__init__r2cCs|jSr$)r�r5r+r+r,r�Qsz!MSCertificateTemplate.template_idcCs|jSr$)r�r5r+r+r,r�Usz#MSCertificateTemplate.major_versioncCs|jSr$)r�r5r+r+r,r�Ysz#MSCertificateTemplate.minor_versionr.cCsd|j�d|j�d|j�d�S)Nz#<MSCertificateTemplate(template_id=z, major_version=z, minor_version=r^)r�r�r�r5r+r+r,r_]s�zMSCertificateTemplate.__repr__rjrkrlcCs2t|t�stS|j|jko0|j|jko0|j|jkSr$)r%r�rnr�r�r�ror+r+r,rpds

�
�zMSCertificateTemplate.__eq__r1cCst|j|j|jf�Sr$)rrr�r�r�r5r+r+r,rsnszMSCertificateTemplate.__hash__r cCs
t�|�Sr$rvr5r+r+r,r&qsz"MSCertificateTemplate.public_bytesN)rIrJrKrZMS_CERTIFICATE_TEMPLATErArDrxr�r�r�r_rprsr&r+r+r+r,r�:s
r�c@s�eZdZddddd�dd�Zedd�dd	��Zedd�d
d��Zedd�dd
��Zdd�dd�Zddd�dd�Z	dd�dd�Z
dS)�NamingAuthorityzObjectIdentifier | Noner�r>)�id�url�textr#cCsd|dk	rt|t�std��|dk	r4t|t�s4td��|dk	rNt|t�sNtd��||_||_||_dS)Nzid must be an ObjectIdentifierzurl must be a strztext must be a str)r%rr[r.�_id�_url�_text)r6r�r�r�r+r+r,rDvszNamingAuthority.__init__r2cCs|jSr$)r�r5r+r+r,r��szNamingAuthority.idcCs|jSr$)r�r5r+r+r,r��szNamingAuthority.urlcCs|jSr$)r�r5r+r+r,r��szNamingAuthority.textr.cCsd|j�d|j�d|j�d�S)Nz<NamingAuthority(id=z, url=z, text=r^)r�r�r�r5r+r+r,r_�s�zNamingAuthority.__repr__rjrkrlcCs2t|t�stS|j|jko0|j|jko0|j|jkSr$)r%r�rnr�r�r�ror+r+r,rp�s

�
�zNamingAuthority.__eq__r1cCst|j|j|jf�Sr$)rrr�r�r�r5r+r+r,rs�s��zNamingAuthority.__hash__N)rIrJrKrDrxr�r�r�r_rprsr+r+r+r,r�us
r�c@s�eZdZddddddd�dd	�Zedd
�dd��Zed
d
�dd��Zedd
�dd��Zedd
�dd��Zedd
�dd��Z	dd
�dd�Z
ddd�dd�Zdd
�d d!�Zd"S)#�ProfessionInfo�NamingAuthority | Noneztyping.Iterable[str]z(typing.Iterable[ObjectIdentifier] | Noner�rzr>)�naming_authority�profession_items�profession_oids�registration_number�add_profession_infor#cCs�|dk	rt|t�std��t|�}tdd�|D��s<td��|dk	rft|�}tdd�|D��sftd��|dk	r�t|t�s�td��|dk	r�t|t�s�td��||_||_||_	||_
||_dS)	N�*naming_authority must be a NamingAuthoritycss|]}t|t�VqdSr$)r%r.)r��itemr+r+r,r��sz*ProfessionInfo.__init__.<locals>.<genexpr>z5Every item in the profession_items list must be a strcss|]}t|t�VqdSr$r�)r�rAr+r+r,r��szBEvery item in the profession_oids list must be an ObjectIdentifierz!registration_number must be a strz!add_profession_info must be bytes)r%r�r[rSr�r.r �_naming_authority�_profession_items�_profession_oids�_registration_number�_add_profession_info)r6r�r�r�r�r�r+r+r,rD�sB
����
�
�zProfessionInfo.__init__r2cCs|jSr$�r�r5r+r+r,r��szProfessionInfo.naming_authorityr@cCs|jSr$)r�r5r+r+r,r��szProfessionInfo.profession_itemszlist[ObjectIdentifier] | NonecCs|jSr$)r�r5r+r+r,r��szProfessionInfo.profession_oidscCs|jSr$)r�r5r+r+r,r��sz"ProfessionInfo.registration_numbercCs|jSr$)r�r5r+r+r,r��sz"ProfessionInfo.add_profession_infor.cCs.d|j�d|j�d|j�d|j�d|j�d�S)Nz!<ProfessionInfo(naming_authority=z, profession_items=z, profession_oids=z, registration_number=z, add_profession_info=r^)r�r�r�r�r�r5r+r+r,r_�s,�zProfessionInfo.__repr__rjrkrlcCsJt|t�stS|j|jkoH|j|jkoH|j|jkoH|j|jkoH|j|jkSr$)r%r�rnr�r�r�r�r�ror+r+r,rp�s

�
�
�
�zProfessionInfo.__eq__r1cCs8|jdk	rt|j�}nd}t|jt|j�||j|jf�Sr$)r�r�rrr�r�r�r�)r6r�r+r+r,rs	s
��zProfessionInfo.__hash__N)
rIrJrKrDrxr�r�r�r�r�r_rprsr+r+r+r,r��s-	r�c@s�eZdZddddd�dd�Zedd�d	d
��Zedd�dd��Zed
d�dd��Zdd�dd�Zddd�dd�Z	dd�dd�Z
dS)�	Admission�GeneralName | Noner�ztyping.Iterable[ProfessionInfo]r>)�admission_authorityr��profession_infosr#cCsl|dk	rt|t�std��|dk	r4t|t�s4td��t|�}tdd�|D��sVtd��||_||_||_dS)Nz)admission_authority must be a GeneralNamer�css|]}t|t�VqdSr$)r%r�)r��infor+r+r,r�(	sz%Admission.__init__.<locals>.<genexpr>z@Every item in the profession_infos list must be a ProfessionInfo)	r%rr[r�rSr��_admission_authorityr��_profession_infos)r6r�r�r�r+r+r,rD	s(
�
���zAdmission.__init__r2cCs|jSr$)r�r5r+r+r,r�4	szAdmission.admission_authoritycCs|jSr$r�r5r+r+r,r�8	szAdmission.naming_authorityzlist[ProfessionInfo]cCs|jSr$)r�r5r+r+r,r�<	szAdmission.profession_infosr.cCsd|j�d|j�d|j�d�S)Nz<Admission(admission_authority=z, naming_authority=z, profession_infos=r^)r�r�r�r5r+r+r,r_@	s�zAdmission.__repr__rjrkrlcCs2t|t�stS|j|jko0|j|jko0|j|jkSr$)r%r�rnr�r�r�ror+r+r,rpG	s

�
�zAdmission.__eq__r1cCst|j|jt|j�f�Sr$)rrr�r�r�r�r5r+r+r,rsQ	s��zAdmission.__hash__N)rIrJrKrDrxr�r�r�r_rprsr+r+r+r,r�	s
r�c@s~eZdZejZdddd�dd�Zed�\ZZ	Z
edd�d	d
��Zdd�dd
�Z
ddd�dd�Zdd�dd�Zdd�dd�ZdS)�
Admissionsr�ztyping.Iterable[Admission]r>)�	authority�
admissionsr#cCsL|dk	rt|t�std��t|�}tdd�|D��s<td��||_||_dS)Nzauthority must be a GeneralNamecss|]}t|t�VqdSr$)r%r�)r�Z	admissionr+r+r,r�g	sz&Admissions.__init__.<locals>.<genexpr>zBEvery item in the contents_of_admissions list must be an Admission)r%rr[rSr��
_authority�_admissions)r6r�r�r+r+r,rD^	s��zAdmissions.__init__r�r2cCs|jSr$)r�r5r+r+r,r�t	szAdmissions.authorityr.cCsd|j�d|j�d�S)Nz<Admissions(authority=z
, admissions=r^)r�r�r5r+r+r,r_x	s�zAdmissions.__repr__rjrkrlcCs&t|t�stS|j|jko$|j|jkSr$)r%r�rnr�r�ror+r+r,rp~	s


�zAdmissions.__eq__r1cCst|jt|j�f�Sr$)rrr�r�r�r5r+r+r,rs�	szAdmissions.__hash__r cCs
t�|�Sr$rvr5r+r+r,r&�	szAdmissions.public_bytesN)rIrJrKrZ
ADMISSIONSrArDr<r`rarbrxr�r_rprsr&r+r+r+r,r�[	s	r�c@s|eZdZdddd�dd�Zedd�dd	��Zedd�d
d��Zdd�d
d�Zddd�dd�Zdd�dd�Z	dd�dd�Z
dS)rZrr r>)rAr\r#cCs"t|t�std��||_||_dS)Nr�)r%rr[r4r6)r6rAr\r+r+r,rD�	s
zUnrecognizedExtension.__init__r2cCs|jSr$r7r5r+r+r,rA�	szUnrecognizedExtension.oidcCs|jSr$r8r5r+r+r,r\�	szUnrecognizedExtension.valuer.cCsd|j�d|j�d�S)Nz<UnrecognizedExtension(oid=r9r^)rAr\r5r+r+r,r_�	s�zUnrecognizedExtension.__repr__rjrkrlcCs&t|t�stS|j|jko$|j|jkSr$)r%rZrnrAr\ror+r+r,rp�	s
zUnrecognizedExtension.__eq__r1cCst|j|jf�Sr$)rrrAr\r5r+r+r,rs�	szUnrecognizedExtension.__hash__cCs|jSr$rr5r+r+r,r&�	sz"UnrecognizedExtension.public_bytesN)rIrJrKrDrxrAr\r_rprsr&r+r+r+r,rZ�	srZ)p�
__future__r�abcrbr'r*rTZcryptographyrZ"cryptography.hazmat.bindings._rustrrrwZcryptography.hazmat.primitivesrrZ,cryptography.hazmat.primitives.asymmetric.ecrZ-cryptography.hazmat.primitives.asymmetric.rsar	Z/cryptography.hazmat.primitives.asymmetric.typesr
rZ*cryptography.x509.certificate_transparencyrZcryptography.x509.general_namer
rrrrrrrrZcryptography.x509.namerrZcryptography.x509.oidrrrr�TypeVarrr-r<�	Exceptionr=rM�ABCMetarrQrcryr�r�r�r�r�r�r�r�r��Enumr�r�r�r�r�r�r�r�r�Z_REASON_BIT_MAPPINGZ_CRLREASONFLAGSr�r�Z_CRL_ENTRY_REASON_ENUM_TO_CODEr�r�r�r�r�r�r�rrrZ_TLS_FEATURE_TYPE_TO_ENUMr	rr�Genericr2r:rVrZr[r\r`rlrxryr|r�r�r�r�r�r�rZr+r+r+r,�<module>s�,�
'l$!!(/%%k���A9+(" s0PHHH$++#;:gE3

F1le Man4ger