U
    c                     @   s  d dl m Z  d dlmZmZmZ d dlmZ d dlmZ d dl	m
Z
 G dd deZG dd	 d	eZG d
d deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZeddd ZG d!d deZG d"d# d#eZG d$d% d%eZG d&d' d'eZG d(d) d)eZG d*d+ d+eZG d,d- d-eZG d.d/ d/eZ G d0d1 d1eZ!G d2d3 d3eZ"G d4d5 d5eZ#d6S )7    )datetime)OptionalTypeTypeVar)	CRLReason)InvalidSignature)ValProcStatec                   @   s   e Zd ZdS )	PathErrorN__name__
__module____qualname__ r   r   @/tmp/pip-unpacked-wheel-rwcmptg8/pyhanko_certvalidator/errors.pyr	      s   r	   c                   @   s   e Zd ZdS )PathBuildingErrorNr
   r   r   r   r   r      s   r   c                   @   s   e Zd ZdS )CertificateFetchErrorNr
   r   r   r   r   r      s   r   c                   @   s   e Zd ZdS )CRLValidationErrorNr
   r   r   r   r   r      s   r   c                   @   s   e Zd ZdS )CRLNoMatchesErrorNr
   r   r   r   r   r      s   r   c                   @   s   e Zd ZdS )CRLFetchErrorNr
   r   r   r   r   r   #   s   r   c                   @   s   e Zd Zedd ZdS )CRLValidationIndeterminateErrorc                 C   s
   | j d S N   argsselfr   r   r   failures(   s    z(CRLValidationIndeterminateError.failuresNr   r   r   propertyr   r   r   r   r   r   '   s   r   c                   @   s   e Zd ZdS )OCSPValidationErrorNr
   r   r   r   r   r   -   s   r   c                   @   s   e Zd ZdS )OCSPNoMatchesErrorNr
   r   r   r   r   r    2   s   r    c                   @   s   e Zd Zedd ZdS ) OCSPValidationIndeterminateErrorc                 C   s
   | j d S r   r   r   r   r   r   r   8   s    z)OCSPValidationIndeterminateError.failuresNr   r   r   r   r   r!   7   s   r!   c                   @   s   e Zd ZdS )OCSPFetchErrorNr
   r   r   r   r   r"   =   s   r"   c                       s"   e Zd Zed fddZ  ZS )ValidationError)messagec                    s   || _ t | d S N)Zfailure_msgsuper__init__)r   r$   	__class__r   r   r'   B   s    zValidationError.__init__)r   r   r   strr'   __classcell__r   r   r(   r   r#   A   s   r#   TPathErrPathValidationError)boundc                       sB   e Zd Zeee eeedddZee	e	d fddZ
  ZS )r-   )clsmsg
proc_statereturnc                 C   s   | ||j |jdS N
is_ee_certis_side_validationr4   )r/   r0   r1   r   r   r   
from_stateK   s
    zPathValidationError.from_state)r0   r5   r6   c                   s   || _ || _t | d S r%   )r5   r6   r&   r'   r   r0   r5   r6   r(   r   r   r'   U   s    zPathValidationError.__init__)r   r   r   classmethodr   r,   r*   r   r7   boolr'   r+   r   r   r(   r   r-   J   s     	c                       s>   e Zd ZeeeeedddZeeed fddZ	  Z
S )RevokedError)reasonrevocation_dtrevinfo_typer1   c           	   
   C   sN   |j }|d}|d}| d|  d| d| d| d
}t||||S )Nz%Y-%m-%dz%H:%M:%Sz indicates z was revoked at z on z	, due to .)Zhuman_friendlystrftimeZdescribe_certr;   )	r/   r<   r=   r>   r1   Z
reason_strdatetimer0   r   r   r   format\   s    

$zRevokedError.format)r<   r=   r1   c                    s&   || _ || _t j||j|jd d S r3   )r<   r=   r&   r'   r5   r6   )r   r0   r<   r=   r1   r(   r   r   r'   m   s    zRevokedError.__init__)r   r   r   r9   r   r   r*   r   rC   r'   r+   r   r   r(   r   r;   [   s   r;   c                   @   s   e Zd ZdS )InsufficientRevinfoErrorNr
   r   r   r   r   rD   }   s   rD   c                   @   s   e Zd ZdS )InsufficientPOEErrorNr
   r   r   r   r   rE      s   rE   c                   @   s   e Zd ZdS )ExpiredErrorNr
   r   r   r   r   rF      s   rF   c                   @   s   e Zd ZdS )NotYetValidErrorNr
   r   r   r   r   rG      s   rG   c                       s   e Zd Zd fdd	Z  ZS )InvalidCertificateErrorTFc                    s   t  j|||d d S r3   )r&   r'   r8   r(   r   r   r'      s
      z InvalidCertificateError.__init__)TF)r   r   r   r'   r+   r   r   r(   r   rH      s   rH   c                       sJ   e Zd Zddee d fddZedeeee d dddZ	  Z
S )	DisallowedAlgorithmErrorN)banned_sincec                   s   || _ t j|| d S r%   )rJ   r&   r'   )r   rJ   r   kwargsr(   r   r   r'      s    z!DisallowedAlgorithmError.__init__)r0   r1   rJ   r2   c                 C   s   | ||j |j|dS )N)r5   r6   rJ   r4   )r/   r0   r1   rJ   r   r   r   r7      s    z#DisallowedAlgorithmError.from_state)N)r   r   r   r   r   r'   r9   r*   r   r7   r+   r   r   r(   r   rI      s    rI   c                   @   s   e Zd ZdS )InvalidAttrCertificateErrorNr
   r   r   r   r   rL      s   rL   c                   @   s   e Zd ZdS )PSSParameterMismatchNr
   r   r   r   r   rM      s   rM   c                   @   s   e Zd ZdS )DSAParametersUnavailableNr
   r   r   r   r   rN      s   rN   N)$r   typingr   r   r   Zasn1crypto.crlr   Zcryptography.exceptionsr   Zpyhanko_certvalidator._stater   	Exceptionr	   r   r   r   r   r   r   r   r    r!   r"   r#   r,   r-   r;   rD   rE   rF   rG   rH   rI   rL   rM   rN   r   r   r   r   <module>   s8   "