U
    ‰dM  ã                   @   s\   d Z ddlZddlmZ ddlZddlmZ ddlm	Z	m
Z
 dZddd	„Zeddd„ƒZdS )z1Utilities used by the message signing serializer.é    N)Úcontextmanager)Úhashes)ÚSecurityErrorÚreraise)Úget_digest_algorithmÚreraise_errorsÚsha256c                 C   s   | dk	st ‚tt|  ¡ ƒƒ S )z6Convert string to hash object of cryptography library.N)ÚAssertionErrorÚgetattrr   Úupper)Údigest© r   ú9/tmp/pip-unpacked-wheel-mu1yl971/celery/security/utils.pyr      s    r   ú{0!r}c              
   c   sd   |dkrt jfn|}z
dV  W n@ |k
r^ } z"ttt|  |¡ƒt ¡ d ƒ W 5 d}~X Y nX dS )z8Context reraising crypto errors as :exc:`SecurityError`.Né   )ÚcryptographyÚ
exceptionsr   r   ÚformatÚsysÚexc_info)ÚmsgÚerrorsÚexcr   r   r   r      s    

þr   )r   )r   N)Ú__doc__r   Ú
contextlibr   Zcryptography.exceptionsr   Zcryptography.hazmat.primitivesr   Zcelery.exceptionsr   r   Ú__all__r   r   r   r   r   r   Ú<module>   s   
