
    h                         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      Zdddde
dfdZy)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                   B    e Zd ZdZdddedfdZd Zd ZefdZ	efdZ
y)	r   zSigned serializer.Njsonc                 \    || _         || _        || _        t        |      | _        || _        y N)_key_cert_cert_storer   _digest_serializer)selfkeycert
cert_storedigest
serializers         Y/var/www/Befach/backend/env/lib/python3.12/site-packages/celery/security/serialization.py__init__zSecureSerializer.__init__   s,    	
%+F3%    c           
      x   | j                   J | j                  J t        dt        f      5  t	        || j
                        \  }}}t        |      }| j                  |||| j                   j                  || j                        | j                  j                               cddd       S # 1 sw Y   yxY w)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bodys        r#   	serializezSecureSerializer.serialize   s    yy$$$zz%%%89,G 	:38!1!1430L*D  %D::dL2B(,		tT\\(J%)ZZ%6%6%8  :	: 	: 	:s   A8B00B9c                 (   | j                   J t        dt        f      5  | j                  |      }|d   |d   |d   }}}| j                   |   j	                  ||| j
                         ddd       t        d   |d   d	      S # 1 sw Y   xY w)
z'Deserialize data structure from string.NzUnable to deserialize: {0!r}r(   r)   r1   r/   r0   T)force)r   r   r*   _unpackverifyr   r   )r   r.   payloadr(   r)   r1   s         r#   deserializezSecureSerializer.deserialize0   s    +++:YLI 	Kll4(G'.{';'.x'8'.v  $vI V$++D)T\\J	K T7>2/0> 	>	K 	Ks   ABBc                 v    |j                  d t        |      t        |      |||fD              }t        |      S )Nc              3   2   K   | ]  }t        |        y wr   )r   ).0ss     r#   	<genexpr>z)SecureSerializer._pack.<locals>.<genexpr>>   s      
 !LO
s   )joinr   )r   r1   r/   r0   r)   r(   sepfieldss           r#   r+   zSecureSerializer._pack<   sD     
&/&799M&24Dd&L
 
   r%   c                     t        t        |            }|j                  |d      }t        |d         t        |d         t        |d         t        |d         |d   dS )N   )maxsplitr   r         )r)   r(   r/   r0   r1   )r
   r   splitr   )r   r7   r?   raw_payloadvs        r#   r5   zSecureSerializer._unpackD   se    W 56cA.!o"1Q4(1. ,QqT 2aD
 	
r%   )__name__
__module____qualname____doc__r	   r$   r2   r8   DEFAULT_SEPARATORr+   r5    r%   r#   r   r      s4    dt/F&:"
> $! $5 	
r%   r   Nr   c                     t        | xr t        | |      |xr t        |      |xr t        |      ||      }t	        j
                  d|j                  |j                  dd       y)zRegister security serializer.)passwordr'   authzapplication/datazutf-8)r/   r0   N)r   r   r   r   r   registerr2   r8   )r   key_passwordr   storer!   r"   r<   s          r#   r   r   P   s_     	GC,!G3+d"35;u#5J	8A fakk1==#5'.0r%   )rL   kombu.serializationr   r   r   kombu.utils.encodingr   r   r   celery.app.defaultsr	   celery.utils.serializationr
   r   certificater   r   r   r   utilsr   r   __all__rM   r   r   rN   r%   r#   <module>r\      sV     6 6 I I 7 ; 1  7
/
 !, 9
 9
x D0#
0r%   