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: //lib/python3/dist-packages/cryptography/x509/__pycache__/base.cpython-38.pyc
U

�>b0n�@s8ddlZddlZddlZddlZddlmZddlmZmZddl	m
Z
ddlmZm
Z
ddlmZmZmZmZmZddlmZmZmZddlmZdd	lmZe�d
dd�ZGdd
�d
e�Zeejed�dd�Z eejej!ee"fd�dd�Z#ejejd�dd�Z$Gdd�dej%�Z&Gdd�de�Z'Gdd�dej(d�Z)Gdd�dej(d�Z*Gd d!�d!ej(d�Z+Gd"d#�d#ej(d�Z,d<e"e)d$�d%d&�Z-d=e"e)d$�d'd(�Z.d>e"e,d$�d)d*�Z/d?e"e,d$�d+d,�Z0d@e"e+d$�d-d.�Z1dAe"e+d$�d/d0�Z2Gd1d2�d2e3�Z4Gd3d4�d4e3�Z5Gd5d6�d6e3�Z6Gd7d8�d8e3�Z7e8d9�d:d;�Z9dS)B�N)�utils)�_PRIVATE_KEY_TYPES�_PUBLIC_KEY_TYPES)�_get_backend)�hashes�
serialization)�dsa�ec�ed25519�ed448�rsa)�	Extension�
ExtensionType�
Extensions)�Name)�ObjectIdentifieri��cseZdZ�fdd�Z�ZS)�AttributeNotFoundcstt|��|�||_dS�N)�superr�__init__�oid)�self�msgr��	__class__��8/usr/lib/python3/dist-packages/cryptography/x509/base.pyrszAttributeNotFound.__init__��__name__�
__module__�__qualname__r�
__classcell__rrrrrsr)�	extension�
extensionscCs"|D]}|j|jkrtd��qdS)Nz$This extension has already been set.)r�
ValueError)r#r$�errr�_reject_duplicate_extension$sr')r�
attributescCs"|D]\}}||krtd��qdS)Nz$This attribute has already been set.)r%)rr(Zattr_oid�_rrr�_reject_duplicate_attribute-sr*)�time�returncCs:|jdk	r2|��}|r|nt��}|jdd�|S|SdS)z�Normalizes a datetime to a naive datetime in UTC.

    time -- datetime to normalize. Assumed to be in UTC if not timezone
            aware.
    N)�tzinfo)r-�	utcoffset�datetime�	timedelta�replace)r+�offsetrrr�_convert_to_naive_utc_time7s

r3c@seZdZdZdZdS)�Versionr�N)rr r!�v1�v3rrrrr4Esr4cseZdZ�fdd�Z�ZS)�InvalidVersioncstt|��|�||_dSr)rr8r�parsed_version)rrr9rrrrKszInvalidVersion.__init__rrrrrr8Jsr8c@sxeZdZejejed�dd��Zej	e
d�dd��Zej	ed�dd��Z
ejed�d	d
��Zej	ejd�dd��Zej	ejd�d
d��Zej	ed�dd��Zej	ed�dd��Zej	ejejd�dd��Zej	ed�dd��Zej	ed�dd��Zej	ed�dd��Zej	ed�dd��Zejee d�dd��Z!ejee d�d d!��Z"eje
d�d"d#��Z#eje$j%ed$�d%d&��Z&d'S)(�Certificate��	algorithmr,cCsdS�z4
        Returns bytes using digest passed.
        Nr�rr<rrr�fingerprintQszCertificate.fingerprint�r,cCsdS)z3
        Returns certificate serial number
        Nr�rrrr�
serial_numberWszCertificate.serial_numbercCsdS)z1
        Returns the certificate version
        NrrArrr�version]szCertificate.versioncCsdS�z(
        Returns the public key
        NrrArrr�
public_keycszCertificate.public_keycCsdS)z?
        Not before time (represented as UTC datetime)
        NrrArrr�not_valid_beforeiszCertificate.not_valid_beforecCsdS)z>
        Not after time (represented as UTC datetime)
        NrrArrr�not_valid_afteroszCertificate.not_valid_aftercCsdS)z1
        Returns the issuer name object.
        NrrArrr�issueruszCertificate.issuercCsdS�z2
        Returns the subject name object.
        NrrArrr�subject{szCertificate.subjectcCsdS�zt
        Returns a HashAlgorithm corresponding to the type of the digest signed
        in the certificate.
        NrrArrr�signature_hash_algorithm�sz$Certificate.signature_hash_algorithmcCsdS�zJ
        Returns the ObjectIdentifier of the signature algorithm.
        NrrArrr�signature_algorithm_oid�sz#Certificate.signature_algorithm_oidcCsdS)z/
        Returns an Extensions object.
        NrrArrrr$�szCertificate.extensionscCsdS�z.
        Returns the signature bytes.
        NrrArrr�	signature�szCertificate.signaturecCsdS)zR
        Returns the tbsCertificate payload bytes as defined in RFC 5280.
        NrrArrr�tbs_certificate_bytes�sz!Certificate.tbs_certificate_bytes��otherr,cCsdS�z"
        Checks equality.
        Nr�rrSrrr�__eq__�szCertificate.__eq__cCsdS�z#
        Checks not equal.
        NrrUrrr�__ne__�szCertificate.__ne__cCsdS�z"
        Computes a hash.
        NrrArrr�__hash__�szCertificate.__hash__��encodingr,cCsdS)zB
        Serializes the certificate to PEM or DER format.
        Nr�rr\rrr�public_bytes�szCertificate.public_bytesN)'rr r!�abc�abstractmethodr�
HashAlgorithm�bytesr?�abstractproperty�intrBr4rCrrEr/rFrGrrHrJ�typing�OptionalrLrrNrr$rPrQ�object�boolrVrXrZr�Encodingr^rrrrr:PsF
�r:)�	metaclassc@sJeZdZejed�dd��Zejejd�dd��Zeje	d�dd��Z
dS)	�RevokedCertificater@cCsdS)zG
        Returns the serial number of the revoked certificate.
        NrrArrrrB�sz RevokedCertificate.serial_numbercCsdS)zH
        Returns the date of when this certificate was revoked.
        NrrArrr�revocation_date�sz"RevokedCertificate.revocation_datecCsdS)zW
        Returns an Extensions object containing a list of Revoked extensions.
        NrrArrrr$�szRevokedCertificate.extensionsN)rr r!r_rcrdrBr/rlrr$rrrrrk�srkc@speZdZejejed�dd��Zeje	j
ed�dd��Zejee
jed�dd	��Zeje	j
d
�dd��Zejed
�d
d��Zejed
�dd��Zejejd
�dd��Zejejd
�dd��Zejed
�dd��Zejed
�dd��Zejed
�dd��Zejeed�dd��Z ejeed�dd��Z!ejed
�d d!��Z"ejd"d#��Z#ejd$d%��Z$eje%ed&�d'd(��Z&d)S)*�CertificateRevocationListr[cCsdS)z:
        Serializes the CRL to PEM or DER format.
        Nrr]rrrr^�sz&CertificateRevocationList.public_bytesr;cCsdSr=rr>rrrr?�sz%CertificateRevocationList.fingerprint)rBr,cCsdS)zs
        Returns an instance of RevokedCertificate or None if the serial_number
        is not in the CRL.
        Nr)rrBrrr�(get_revoked_certificate_by_serial_number�szBCertificateRevocationList.get_revoked_certificate_by_serial_numberr@cCsdSrKrrArrrrL�sz2CertificateRevocationList.signature_hash_algorithmcCsdSrMrrArrrrN�sz1CertificateRevocationList.signature_algorithm_oidcCsdS)zC
        Returns the X509Name with the issuer of this CRL.
        NrrArrrrH�sz CertificateRevocationList.issuercCsdS)z?
        Returns the date of next update for this CRL.
        NrrArrr�next_update�sz%CertificateRevocationList.next_updatecCsdS)z?
        Returns the date of last update for this CRL.
        NrrArrr�last_update�sz%CertificateRevocationList.last_updatecCsdS)zS
        Returns an Extensions object containing a list of CRL extensions.
        NrrArrrr$sz$CertificateRevocationList.extensionscCsdSrOrrArrrrP
sz#CertificateRevocationList.signaturecCsdS)zO
        Returns the tbsCertList payload bytes as defined in RFC 5280.
        NrrArrr�tbs_certlist_bytessz,CertificateRevocationList.tbs_certlist_bytesrRcCsdSrTrrUrrrrVsz CertificateRevocationList.__eq__cCsdSrWrrUrrrrXsz CertificateRevocationList.__ne__cCsdS)z<
        Number of revoked certificates in the CRL.
        NrrArrr�__len__"sz!CertificateRevocationList.__len__cCsdS)zS
        Returns a revoked certificate (or slice of revoked certificates).
        Nr)r�idxrrr�__getitem__(sz%CertificateRevocationList.__getitem__cCsdS)z8
        Iterator over the revoked certificates
        NrrArrr�__iter__.sz"CertificateRevocationList.__iter__)rEr,cCsdS)zQ
        Verifies signature of revocation list against given public key.
        Nr)rrErrr�is_signature_valid4sz,CertificateRevocationList.is_signature_validN)'rr r!r_r`rrirbr^rrar?rdrerfrkrnrcrLrrNrrHr/rorprr$rPrqrgrhrVrXrrrtrurrvrrrrrm�sH�

rmc@seZdZejeed�dd��Zejeed�dd��Zeje	d�dd��Z
ejed�d	d
��Zej
ed�dd��Zej
ejd�d
d��Zej
ed�dd��Zej
ed�dd��Zejejed�dd��Zej
ed�dd��Zej
ed�dd��Zej
ed�dd��Zejeed�dd��ZdS) �CertificateSigningRequestrRcCsdSrTrrUrrrrV<sz CertificateSigningRequest.__eq__cCsdSrWrrUrrrrXBsz CertificateSigningRequest.__ne__r@cCsdSrYrrArrrrZHsz"CertificateSigningRequest.__hash__cCsdSrDrrArrrrENsz$CertificateSigningRequest.public_keycCsdSrIrrArrrrJTsz!CertificateSigningRequest.subjectcCsdSrKrrArrrrLZsz2CertificateSigningRequest.signature_hash_algorithmcCsdSrMrrArrrrNasz1CertificateSigningRequest.signature_algorithm_oidcCsdS)z@
        Returns the extensions in the signing request.
        NrrArrrr$gsz$CertificateSigningRequest.extensionsr[cCsdS)z;
        Encodes the request to PEM or DER format.
        Nrr]rrrr^msz&CertificateSigningRequest.public_bytescCsdSrOrrArrrrPssz#CertificateSigningRequest.signaturecCsdS)zd
        Returns the PKCS#10 CertificationRequestInfo bytes as defined in RFC
        2986.
        NrrArrr�tbs_certrequest_bytesysz/CertificateSigningRequest.tbs_certrequest_bytescCsdS)z8
        Verifies signature of signing request.
        NrrArrrrv�sz,CertificateSigningRequest.is_signature_valid)rr,cCsdS)z:
        Get the attribute value for a given OID.
        Nr)rrrrr�get_attribute_for_oid�sz/CertificateSigningRequest.get_attribute_for_oidN)rr r!r_r`rgrhrVrXrdrZrrErcrrJrrarLrrNrr$rrirbr^rPrxrvryrrrrrw;s4rw)�datar,cCst|�}|�|�Sr)r�load_pem_x509_certificate�rz�backendrrrr{�sr{cCst|�}|�|�Sr)r�load_der_x509_certificater|rrrr~�sr~cCst|�}|�|�Sr)r�load_pem_x509_csrr|rrrr�srcCst|�}|�|�Sr)r�load_der_x509_csrr|rrrr��sr�cCst|�}|�|�Sr)r�load_pem_x509_crlr|rrrr��sr�cCst|�}|�|�Sr)r�load_der_x509_crlr|rrrr��sr�c@s`eZdZdggfdd�Zed�dd�Zeed�dd	�Ze	e
d
�dd�Zdee
jed
�dd�ZdS)� CertificateSigningRequestBuilderNcCs||_||_||_dS)zB
        Creates an empty X.509 certificate request (v1).
        N)�
_subject_name�_extensions�_attributes)r�subject_namer$r(rrrr�sz)CertificateSigningRequestBuilder.__init__��namecCs4t|t�std��|jdk	r$td��t||j|j�S)zF
        Sets the certificate requestor's distinguished name.
        �Expecting x509.Name object.N�&The subject name may only be set once.)�
isinstancer�	TypeErrorr�r%r�r�r��rr�rrrr��s

�z-CertificateSigningRequestBuilder.subject_name��extval�criticalcCsDt|t�std��t|j||�}t||j�t|j|j|g|j	�S)zE
        Adds an X.509 extension to the certificate request.
        �"extension must be an ExtensionType)
r�rr�r
rr'r�r�r�r��rr�r�r#rrr�
add_extension�s

�z.CertificateSigningRequestBuilder.add_extension)r�valuecCsLt|t�std��t|t�s$td��t||j�t|j|j|j||fg�S)zK
        Adds an X.509 attribute with an OID and associated value.
        zoid must be an ObjectIdentifierzvalue must be bytes)	r�rr�rbr*r�r�r�r�)rrr�rrr�
add_attribute�s

�z.CertificateSigningRequestBuilder.add_attribute��private_keyr<r,cCs(t|�}|jdkrtd��|�|||�S)zF
        Signs the request using the requestor's private key.
        Nz/A CertificateSigningRequest must have a subject)rr�r%Zcreate_x509_csr�rr�r<r}rrr�sign�s	
z%CertificateSigningRequestBuilder.sign)N)rr r!rrr�rrhr�rrbr�rrrarwr�rrrrr��s��r�c@s�eZdZddddddgfdd�Zed�dd�Zed�dd�Zed	�d
d�Ze	d�d
d�Z
ejd�dd�Zejd�dd�Z
eed�dd�Zdeejed�dd�ZdS)�CertificateBuilderNcCs6tj|_||_||_||_||_||_||_||_	dSr)
r4r7�_version�_issuer_namer��_public_key�_serial_number�_not_valid_before�_not_valid_afterr�)r�issuer_namer�rErBrFrGr$rrrr�s
zCertificateBuilder.__init__r�cCsDt|t�std��|jdk	r$td��t||j|j|j|j	|j
|j�S)z3
        Sets the CA's distinguished name.
        r�N�%The issuer name may only be set once.)r�rr�r�r%r�r�r�r�r�r�r�r�rrrr�s

�zCertificateBuilder.issuer_namecCsDt|t�std��|jdk	r$td��t|j||j|j|j	|j
|j�S)z:
        Sets the requestor's distinguished name.
        r�Nr�)r�rr�r�r%r�r�r�r�r�r�r�r�rrrr�s

�zCertificateBuilder.subject_name)�keycCsXt|tjtjtjtjt	j
f�s&td��|jdk	r8t
d��t|j|j||j|j|j|j�S)zT
        Sets the requestor's public key (as found in the signing request).
        zhExpecting one of DSAPublicKey, RSAPublicKey, EllipticCurvePublicKey, Ed25519PublicKey or Ed448PublicKey.Nz$The public key may only be set once.)r�r�DSAPublicKeyr�RSAPublicKeyr	ZEllipticCurvePublicKeyr
ZEd25519PublicKeyrZEd448PublicKeyr�r�r%r�r�r�r�r�r�r�)rr�rrrrE)s.��
�
�zCertificateBuilder.public_key��numbercCsht|t�std��|jdk	r$td��|dkr4td��|��dkrHtd��t|j|j|j	||j
|j|j�S)z5
        Sets the certificate serial number.
        �'Serial number must be of integral type.N�'The serial number may only be set once.rz%The serial number should be positive.��3The serial number should not be more than 159 bits.)
r�rdr�r�r%�
bit_lengthr�r�r�r�r�r�r��rr�rrrrBKs&

��z CertificateBuilder.serial_number�r+cCszt|tj�std��|jdk	r&td��t|�}|tkr>td��|jdk	rZ||jkrZtd��t|j	|j
|j|j||j|j
�S)z7
        Sets the certificate activation time.
        �Expecting datetime object.Nz*The not valid before may only be set once.z>The not valid before date must be on or after 1950 January 1).zBThe not valid before date must be before the not valid after date.)r�r/r�r�r%r3�_EARLIEST_UTC_TIMEr�r�r�r�r�r�r��rr+rrrrFfs,
���z#CertificateBuilder.not_valid_beforecCszt|tj�std��|jdk	r&td��t|�}|tkr>td��|jdk	rZ||jkrZtd��t|j	|j
|j|j|j||j
�S)z7
        Sets the certificate expiration time.
        r�Nz)The not valid after may only be set once.z<The not valid after date must be on or after 1950 January 1.zAThe not valid after date must be after the not valid before date.)r�r/r�r�r%r3r�r�r�r�r�r�r�r�r�rrrrG�s2
�����z"CertificateBuilder.not_valid_afterr�c	CsTt|t�std��t|j||�}t||j�t|j|j	|j
|j|j|j
|j|g�S)z=
        Adds an X.509 extension to the certificate.
        r�)r�rr�r
rr'r�r�r�r�r�r�r�r�r�rrrr��s

�z CertificateBuilder.add_extensionr�cCs�t|�}|jdkrtd��|jdkr,td��|jdkr>td��|jdkrPtd��|jdkrbtd��|jdkrttd��|�|||�S)zC
        Signs the certificate using the CA's private key.
        Nz&A certificate must have a subject namez&A certificate must have an issuer namez'A certificate must have a serial numberz/A certificate must have a not valid before timez.A certificate must have a not valid after timez$A certificate must have a public key)	rr�r%r�r�r�r�r�Zcreate_x509_certificater�rrrr��s	





zCertificateBuilder.sign)N)rr r!rrr�r�rrErdrBr/rFrGrrhr�rrrar:r�rrrrr��s,�
�" ��r�c@s�eZdZdddggfdd�Zed�dd�Zejd�dd	�Zejd
�dd�Ze	e
d
�dd�Zed�dd�Z
deejed�dd�ZdS)� CertificateRevocationListBuilderNcCs"||_||_||_||_||_dSr)r��_last_update�_next_updater��_revoked_certificates)rr�rpror$Zrevoked_certificatesrrrr�s
z)CertificateRevocationListBuilder.__init__)r�cCs<t|t�std��|jdk	r$td��t||j|j|j|j	�S)Nr�r�)
r�rr�r�r%r�r�r�r�r�)rr�rrrr��s

�z,CertificateRevocationListBuilder.issuer_name)rpcCsrt|tj�std��|jdk	r&td��t|�}|tkr>td��|jdk	rZ||jkrZtd��t|j	||j|j
|j�S)Nr��!Last update may only be set once.�8The last update date must be on or after 1950 January 1.z9The last update date must be before the next update date.)r�r/r�r�r%r3r�r�r�r�r�r�)rrprrrrp�s(
���z,CertificateRevocationListBuilder.last_update)rocCsrt|tj�std��|jdk	r&td��t|�}|tkr>td��|jdk	rZ||jkrZtd��t|j	|j||j
|j�S)Nr�r�r�z8The next update date must be after the last update date.)r�r/r�r�r%r3r�r�r�r�r�r�)rrorrrros(
���z,CertificateRevocationListBuilder.next_updater�cCsLt|t�std��t|j||�}t||j�t|j|j	|j
|j|g|j�S)zM
        Adds an X.509 extension to the certificate revocation list.
        r�)r�rr�r
rr'r�r�r�r�r�r�r�rrrr�s

�z.CertificateRevocationListBuilder.add_extension)�revoked_certificatecCs2t|t�std��t|j|j|j|j|j|g�S)z8
        Adds a revoked certificate to the CRL.
        z)Must be an instance of RevokedCertificate)	r�rkr�r�r�r�r�r�r�)rr�rrr�add_revoked_certificate/s

�z8CertificateRevocationListBuilder.add_revoked_certificater�cCsLt|�}|jdkrtd��|jdkr,td��|jdkr>td��|�|||�S)NzA CRL must have an issuer namez"A CRL must have a last update timez"A CRL must have a next update time)rr�r%r�r�Zcreate_x509_crlr�rrrr�>s


z%CertificateRevocationListBuilder.sign)N)rr r!rrr�r/rprorrhr�rkr�rrrarmr�rrrrr��s"�

��r�c@sZeZdZddgfdd�Zed�dd�Zejd�dd	�Zee	d
�dd�Z
ded
�dd�ZdS)�RevokedCertificateBuilderNcCs||_||_||_dSr)r��_revocation_dater�)rrBrlr$rrrrRsz"RevokedCertificateBuilder.__init__r�cCsXt|t�std��|jdk	r$td��|dkr4td��|��dkrHtd��t||j|j�S)Nr�r�rz$The serial number should be positiver�r�)	r�rdr�r�r%r�r�r�r�r�rrrrBYs

��z'RevokedCertificateBuilder.serial_numberr�cCsNt|tj�std��|jdk	r&td��t|�}|tkr>td��t|j||j	�S)Nr�z)The revocation date may only be set once.z7The revocation date must be on or after 1950 January 1.)
r�r/r�r�r%r3r�r�r�r�r�rrrrlks
��z)RevokedCertificateBuilder.revocation_dater�cCsDt|t�std��t|j||�}t||j�t|j|j	|j|g�S)Nr�)
r�rr�r
rr'r�r�r�r�r�rrrr�ys

�z'RevokedCertificateBuilder.add_extensionr@cCs6t|�}|jdkrtd��|jdkr,td��|�|�S)Nz/A revoked certificate must have a serial numberz1A revoked certificate must have a revocation date)rr�r%r�Zcreate_x509_revoked_certificate)rr}rrr�build�s

�zRevokedCertificateBuilder.build)N)
rr r!rrdrBr/rlrrhr�rkr�rrrrr�Qs�
r�r@cCst�t�d�d�d?S)N��bigr)rd�
from_bytes�os�urandomrrrr�random_serial_number�sr�)N)N)N)N)N)N):r_r/r�re�cryptographyrZcryptography.hazmat._typesrrZcryptography.hazmat.backendsrZcryptography.hazmat.primitivesrr�)cryptography.hazmat.primitives.asymmetricrr	r
rr�cryptography.x509.extensionsr
rr�cryptography.x509.namer�cryptography.x509.oidrr��	Exceptionr�Listr'�Tuplerbr*r3�Enumr4r8�ABCMetar:rkrmrwr{r~rr�r�r�rgr�r�r�r�rdr�rrrr�<module>sL�
�
klRFf{@