U
    cc:                     @   s   d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 ddl
mZ G dd	 d	eZd
d Zdd Zdd Zdd Zdd Zdd ZdS )    N)datetime)urlparse)urlopen)crypto   )loggerc                   @   s   e Zd ZdS )VerificationErrorN)__name__
__module____qualname__ r   r   U/var/www/html/flasktest/Project_env/lib/python3.8/site-packages/flask_ask/verifier.pyr      s    r   c                 C   s>   t | stdt|  }ttj|}t|s:td|S )Nz#Certificate URL verification failedzCertificate verification failed)_valid_certificate_urlr   r   readr   load_certificateZFILETYPE_PEM_valid_certificate)cert_urlZ	cert_datacertr   r   r   r      s    r   c              
   C   sP   zt |}t| ||d W n, tjk
rJ } zt|W 5 d }~X Y nX d S )NZsha1)base64	b64decoder   ZverifyErrorr   )r   	signatureZsigned_dataer   r   r   verify_signature   s
    
r   c                 C   s0   t  | jd d }t| dkr,tdd S )N)tzinfo   zTimestamp verification failed)r   utcnowreplaceabstotal_secondsr   )	timestampdtr   r   r   verify_timestamp"   s    r"   c                 C   s   | |krt dd S )Nz"Application ID verification failed)r   )	candidaterecordsr   r   r   verify_application_id(   s    r%   c                 C   s6   t | }|jdkr2|jdkr2t|jdr2dS dS )Nhttpszs3.amazonaws.comz
/echo.api/TF)r   schemehostname	posixpathnormpathpath
startswith)r   
parsed_urlr   r   r   r   -   s    

r   c                 C   s   |   d}t|d}t |kr*dS d}td|  D ]<}| |}| d}t	|}d|kr<d|kr<d} qzq<|sdS dS )Nzutf-8z%Y%m%d%H%M%SZFr   ZsubjectAltNamezDNS:echo-api.amazon.comT)
Zget_notAfterdecoder   strptimer   rangeZget_extension_countget_extensionZget_short_namestr)r   Z	not_afterfoundi	extensionZ
short_namevaluer   r   r   r   6   s    
r   )osr   r)   r   Zsix.moves.urllib.parser   Zsix.moves.urllib.requestr   ZOpenSSLr    r   	Exceptionr   r   r   r"   r%   r   r   r   r   r   r   <module>   s   
	