
    ei                     Z    d dl Z d dlZd dlZd dlmZmZ d dlmZ dZd Z	d Z
d Zd Zd	 Zy)
    N)FernetInvalidToken)settingsu   ••••••••c                      t        t        dd       xs1 t        j                  j	                  d      xs t        j
                  S )NISTAT_CREDENTIAL_ENCRYPTION_KEY)getattrr   osenvironget
SECRET_KEY     /backend/istat/security.py_get_encryption_secretr      s8    ;TB 	::>>;<	r   c                      t               } t        | t              r| j                  d      } t	        j
                  t        j                  |       j                               }t        |      S )Nutf-8)
r   
isinstancestrencodebase64urlsafe_b64encodehashlibsha256digestr   )
raw_secretderived_keys     r   _get_cipherr      sQ    ')J*c"&&w/
**7>>*+E+L+L+NOK+r   c                     t        | xs d      j                         }|syt               j                  |j	                  d            j                  d      S )N r   )r   stripr   encryptr   decode)value
normalizeds     r   encrypt_istat_secretr%      sH    U[b!'')J=  !2!27!;<CCGLLr   c                     | sy	 t               j                  | j                  d            j                  d      S # t        $ r}t        d      |d }~ww xY w)Nr   r   z+Unable to decrypt stored ISTAT credentials.)r   decryptr   r"   r   
ValueError)r#   excs     r   decrypt_istat_secretr*   $   sU    Q}$$U\\'%:;BB7KK QFGSPQs   6< 	AAAc                     | rt         S dS )Nr   )MASKED_SECRET)r#   s    r   mask_istat_secretr-   .   s    !=)r)r   )r   r   r	   cryptography.fernetr   r   django.confr   r,   r   r   r%   r*   r-   r   r   r   <module>r0      s6      	 4   MQ*r   