o
    h                     @   s   d Z ddlmZmZmZ ddlmZmZmZ ddl	m
Z
 ddlmZmZ ddlmZmZ ddlmZ dd	lmZmZ d
ZedZG dd dZdddde
dfddZdS )zSecure serializer.    )dumpsloadsregistry)bytes_to_strensure_bytesstr_to_bytes)DEFAULT_SECURITY_DIGEST)	b64decode	b64encode   )CertificateFSCertStore)
PrivateKey)get_digest_algorithmreraise_errors)SecureSerializerregister_authz c                   @   sL   e Zd ZdZdddedfddZdd Zdd	 Zefd
dZ	efddZ
dS )r   zSigned serializer.Njsonc                 C   s&   || _ || _|| _t|| _|| _d S N)_key_cert_cert_storer   _digest_serializer)selfkeycert
cert_storedigest
serializer r    _/var/www/html/optinet_system/venv/lib/python3.10/site-packages/celery/security/serialization.py__init__   s
   

zSecureSerializer.__init__c              	   C   s   | j dusJ | jdusJ tdtf) t|| jd\}}}t|}| j|||| j || j	| j
 dW  d   S 1 s@w   Y  dS )z%Serialize data structure into string.NzUnable to serialize: {0!r}r   )	signaturesigner)r   r   r   	Exceptionr   r   r   _packsignr   get_id)r   datacontent_typecontent_encodingbodyr    r    r!   	serialize   s   
$zSecureSerializer.serializec                 C   s   | j dusJ tdtf& | |}|d |d |d }}}| j | ||| j W d   n1 s6w   Y  t||d |d dd	S )
z'Deserialize data structure from string.NzUnable to deserialize: {0!r}r$   r%   r-   r+   r,   T)force)r   r   r&   _unpackverifyr   r   )r   r*   payloadr$   r%   r-   r    r    r!   deserialize0   s   


zSecureSerializer.deserializec                 C   s.   | dd t|t||||fD }t|S )Nc                 s   s    | ]}t |V  qd S r   )r   ).0sr    r    r!   	<genexpr>>   s    
z)SecureSerializer._pack.<locals>.<genexpr>)joinr
   )r   r-   r+   r,   r%   r$   sepfieldsr    r    r!   r'   <   s   
zSecureSerializer._packc                 C   sN   t t|}|j|dd}t |d t |d t|d t|d |d dS )N   )maxsplitr   r         )r%   r$   r+   r,   r-   )r	   r   splitr   )r   r2   r8   raw_payloadvr    r    r!   r0   D   s   



zSecureSerializer._unpack)__name__
__module____qualname____doc__r   r"   r.   r3   DEFAULT_SEPARATORr'   r0   r    r    r    r!   r      s    

r   Nr   c                 C   sJ   t | ot| |d|ot||ot|||d}tjd|j|jddd dS )zRegister security serializer.)passwordr#   authzapplication/datazutf-8)r+   r,   N)r   r   r   r   r   registerr.   r3   )r   key_passwordr   storer   r   r5   r    r    r!   r   P   s   


r   )rD   kombu.serializationr   r   r   kombu.utils.encodingr   r   r   celery.app.defaultsr   celery.utils.serializationr	   r
   certificater   r   r   r   utilsr   r   __all__rE   r   r   r    r    r    r!   <module>   s    <