
    >i                         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 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_authc                   Z    e Zd ZdZdddedfdZd Zd Z ed      fdZ	 ed      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/html/wine-match-dev/backend/winematch-backend/venv/lib/python3.12/site-packages/celery/security/serialization.py__init__zSecureSerializer.__init__   s,    	
%+F3%    c           
         | j                   J | j                  J t        dt        f      5  t	        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   r   _packsignr   get_id)r   datacontent_typecontent_encodingbodys        r#   	serializezSecureSerializer.serialize   s    yy$$$zz%%%89,G 
	:38T"t/?/?4A0L*D  %D::dL2B(,		tT\\(J%)ZZ%6%6%8  :
	: 
	: 
	:s   BB99Cc                 :   | j                   J t        dt        f      5  | j                  |      }|d   |d   |d   }}}| j                   |   j	                  ||| j
                         ddd       t        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   r.   payloadr(   r)   r1   s         r#   deserializezSecureSerializer.deserialize*   s    +++:YLI 	Kll4(G'.{';'.x'8'.v  $vI V$++D)T\\J	K \$')@/0> 	>	K 	Ks   ABBz c                 R    |j                  d |||||fD              }t        |      S )Nc              3   2   K   | ]  }t        |        y wr   )r   ).0ss     r#   	<genexpr>z)SecureSerializer._pack.<locals>.<genexpr>8   s      
 !LO
s   )joinr   )r   r1   r/   r0   r)   r(   sepfieldss           r#   r+   zSecureSerializer._pack6   s8     
&,i&6&>
 
   r%   c                 h   t        t        |            }|j                  |      }|d | }| j                  |   }|j	                         j
                  dz	  }t        |      }||z   }	|	|z   }
||	|
 }||
|z   d  j                  |      }||t        |d         t        |d         t        |d         dS )N   r   r      )r)   r(   r/   r0   r1   )	r
   r   findr   
get_pubkeykey_sizelensplitr   )r   r7   r?   raw_payload	first_sepr)   signer_certsig_lensep_lensignature_start_positionsignature_end_positionr(   vs                r#   r5   zSecureSerializer._unpack>   s    W 56$$S)	Zi(&&v.
 ((*33q8c(#,w#6 !9G!C$%;
	 .89:@@E "(1. ,QqT 2 1&
 	
r%   )__name__
__module____qualname____doc__r	   r$   r2   r8   r   r+   r5    r%   r#   r   r      s>    dt/F&: 
> z*! $0
#; 
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   [   s_     	GC,!G3+d"35;u#5J	8A fakk1==#5'.0r%   )rT   kombu.serializationr   r   r   kombu.utils.encodingr   r   r   celery.app.defaultsr	   celery.utils.serializationr
   r   certificater   r   r   r   utilsr   r   __all__r   r   rU   r%   r#   <module>rc      sK     6 6 I I 7 ; 1  7
/I
 I
X D0#
0r%   