U
    
Xiw                     @   sp   d dl Z d dlZd dlZd dlZd dlZeedddZeedddZeee	edd	d
Z
eedddZdS )    N)breturnc                 C   s   t |  dS )N=)base64urlsafe_b64encodedecoderstrip)r    r	   */var/www/html/luxverbi-app/media_tokens.py_b64url   s    r   )sr   c                 C   s&   ddt | d  d  }t| | S )Nr      )lenr   urlsafe_b64decode)r   padr	   r	   r
   _b64urldecode   s    r   )filenamesecretttl_secondsr   c                 C   s`   t t t | }| |d}tj|ddd }t| |tj	 }t
| dt
| S )N)fexp),:F)
separatorsensure_ascii.)inttimejsondumpsencodehmacnewhashlibsha256digestr   )r   r   r   r   payload	payload_bsigr	   r	   r
   make_media_token
   s
    
r)   )tokenr   c                 C   s   z|  dd\}}t|}t|}t| |tj }t||sLW d S t	
| }t|ddtt k r|W d S |W S  tk
r   Y d S X d S )Nr      r   r   )splitr   r!   r"   r    r#   r$   r%   compare_digestr   loadsr   r   getr   	Exception)r*   r   pr   r'   r(   expectedr&   r	   r	   r
   verify_media_token   s    r3   )r   r!   r#   r   r   bytesstrr   r   r   r)   r3   r	   r	   r	   r
   <module>   s   (