
     h                         d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
mZmZ ddlmZ dd	lmZ d
Z G d d          Z G d d          Z G d de          ZdS )zX.509 certificates.    N)default_backend)padding)load_pem_x509_certificate)bytes_to_strensure_bytes)SecurityError   )reraise_errors)Certificate	CertStoreFSCertStorec                   <    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	S )
r   zX.509 certificate.c                     t          dt          f          5  t          t          |          t	                                | _        d d d            d S # 1 swxY w Y   d S )NzInvalid certificate: {0!r})errors)backend)r
   
ValueErrorr   r   r   _cert)selfcerts     W/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/celery/security/certificate.py__init__zCertificate.__init__   s    (*
 
 
 	? 	? 3T""O,=,=? ? ?DJ	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   0AAAc                 Z    t           j                                         | j        j        k    S )z%Check if the certificate has expired.)datetimeutcnowr   not_valid_afterr   s    r   has_expiredzCertificate.has_expired   s!     ''))TZ-GGG    c                 4    | j                                         S )z Get public key from certificate.)r   
public_keyr   s    r   
get_pubkeyzCertificate.get_pubkey    s    z$$&&&r   c                     | j         j        S )z,Return the serial number in the certificate.)r   serial_numberr   s    r   get_serial_numberzCertificate.get_serial_number$   s    z''r   c                 T    d                     d | j        j        D                       S )zReturn issuer (CA) as a string. c              3   $   K   | ]}|j         V  d S N)value).0xs     r   	<genexpr>z)Certificate.get_issuer.<locals>.<genexpr>*   s$      ;;A;;;;;;r   )joinr   issuerr   s    r   
get_issuerzCertificate.get_issuer(   s(    xx;;):;;;;;;r   c                 X    |                                   d|                                  S )z<Serial number/issuer pair uniquely identifies a certificate.r&   )r/   r$   r   s    r   get_idzCertificate.get_id,   s,    //##@@d&<&<&>&>@@@r   c                 2   t          d          5  t          j        t          j        |          t          j        j                  }|                                                     |t          |          ||           ddd           dS # 1 swxY w Y   dS )z,Verify signature for string containing data.zBad signature: {0!r})mgfsalt_lengthN)r
   r   PSSMGF1
MAX_LENGTHr!   verifyr   )r   data	signaturedigestpadds        r   r8   zCertificate.verify0   s    233 	G 	G;L((#K24 4 4D OO$$Y%1$%7%7vG G G	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	Gs   A/BBBN)__name__
__module____qualname____doc__r   r   r!   r$   r/   r1   r8    r   r   r   r      s        ? ? ?H H H' ' '( ( (< < <A A A	G 	G 	G 	G 	Gr   r   c                   *    e Zd ZdZd Zd Zd Zd ZdS )r   z"Base class for certificate stores.c                     i | _         d S r(   )_certsr   s    r   r   zCertStore.__init__?   s    r   c              #   H   K   | j                                         E d{V  dS )zReturn certificate iterator.N)rD   valuesr   s    r   	itercertszCertStore.itercertsB   s2      ;%%'''''''''''r   c                 x    	 | j         t          |                   S # t          $ r t          d|          w xY w)zGet certificate by id.zUnknown certificate: )rD   r   KeyErrorr   )r   ids     r   __getitem__zCertStore.__getitem__F   sS    	@;|B//00 	@ 	@ 	@ > > >???	@s    9c                     t          |                                          }|| j        v rt          dt                    || j        |<   d S )NzDuplicate certificate: )r   r1   rD   r   rJ   )r   r   cert_ids      r   add_certzCertStore.add_certM   sM    t{{}}--dk!! @" @ @AAA#Gr   N)r=   r>   r?   r@   r   rG   rK   rN   rA   r   r   r   r   <   sY        ,,  ( ( (@ @ @$ $ $ $ $r   r   c                   "     e Zd ZdZ fdZ xZS )r   zFile system certificate store.c                    t                                                       t          j                            |          r t          j                            |d          }t          j        |          D ]}t          |          5 }t          |	                                          }|
                                r$t          d|                                          |                     |           d d d            n# 1 swxY w Y   d S )N*zExpired certificate: )superr   ospathisdirr-   globopenr   readr   r   r1   rN   )r   rT   pfr   	__class__s        r   r   zFSCertStore.__init__W   s(   7== 	+7<<c**D4 	$ 	$Aa $A"16688,,##%% C'AAAC C Cd###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $	$ 	$s   A/DD	D	)r=   r>   r?   r@   r   __classcell__)r[   s   @r   r   r   T   s>        ((
$ 
$ 
$ 
$ 
$ 
$ 
$ 
$ 
$r   r   )r@   r   rV   rS   cryptography.hazmat.backendsr   )cryptography.hazmat.primitives.asymmetricr   cryptography.x509r   kombu.utils.encodingr   r   celery.exceptionsr   utilsr
   __all__r   r   r   rA   r   r   <module>rd      s*       				 8 8 8 8 8 8 = = = = = = 7 7 7 7 7 7 ; ; ; ; ; ; ; ; + + + + + + ! ! ! ! ! !
5'G 'G 'G 'G 'G 'G 'G 'GT$ $ $ $ $ $ $ $0$ $ $ $ $) $ $ $ $ $r   