o
    vh                     @   s  d dl m Z  d dlmZmZmZ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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/d0 d0eZ#G d1d2 d2eZ$G d3d4 d4e#Z%G d5d6 d6e	Z&G d7d8 d8e	Z'd9S ):    )datetime)ListOptionalTypeTypeVar)	CRLReason)InvalidSignature)ValProcState)ValidationPathc                   @      e Zd ZdS )	PathErrorN__name__
__module____qualname__ r   r   Z/var/www/html/hyperkenya/venv/lib/python3.10/site-packages/pyhanko_certvalidator/errors.pyr          r   c                   @   r   )PathBuildingErrorNr   r   r   r   r   r      r   r   c                   @   r   )CertificateFetchErrorNr   r   r   r   r   r      r   r   c                   @   r   )CRLValidationErrorNr   r   r   r   r   r      r   r   c                   @   r   )CRLNoMatchesErrorNr   r   r   r   r   r      r   r   c                   @   r   )CRLFetchErrorNr   r   r   r   r   r      r   r   c                       6   e Zd Z	ddedee dee f fddZ  ZS )CRLValidationIndeterminateErrorNmsgfailuressuspect_stalec                    $   || _ || _|| _t || d S Nr   r   r   super__init__selfr   r   r   	__class__r   r   r"   $      z(CRLValidationIndeterminateError.__init__r   	r   r   r   strr   r   r   r"   __classcell__r   r   r%   r   r   #       r   c                   @   r   )OCSPValidationErrorNr   r   r   r   r   r,   0   r   r,   c                   @   r   )OCSPNoMatchesErrorNr   r   r   r   r   r-   4   r   r-   c                       r   ) OCSPValidationIndeterminateErrorNr   r   r   c                    r   r   r    r#   r%   r   r   r"   9   r'   z)OCSPValidationIndeterminateError.__init__r   r(   r   r   r%   r   r.   8   r+   r.   c                   @   r   )OCSPFetchErrorNr   r   r   r   r   r/   E   r   r/   c                       s"   e Zd Zdef fddZ  ZS )ValidationErrormessagec                    s   || _ t | d S r   )failure_msgr!   r"   )r$   r1   r%   r   r   r"   J   s   zValidationError.__init__)r   r   r   r)   r"   r*   r   r   r%   r   r0   I   s    r0   TPathErrPathValidationError)boundc                	       sH   e Zd Zedee dededefddZdedef fddZ	  Z
S )	r4   clsr   
proc_statereturnc                 C   s   | ||dS N)r7   r   )r6   r   r7   r   r   r   
from_stateS   s   zPathValidationError.from_statec                   sP   |j | _ |j| _|jj}|jj}|d ur|d usJ || _|| _t | d S r   )	
is_ee_certis_side_validationcert_path_stackheadlastcurrent_pathoriginal_pathr!   r"   )r$   r   r7   currentorigr%   r   r   r"   Y   s   zPathValidationError.__init__)r   r   r   classmethodr   r3   r)   r	   r:   r"   r*   r   r   r%   r   r4   R   s    c                	       sH   e Zd ZededededefddZdededef fddZ	  Z
S )	RevokedErrorreasonrevocation_dtrevinfo_typer7   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 .)human_friendlystrftimedescribe_certrE   )	r6   rF   rG   rH   r7   
reason_strdatetimer   r   r   r   formate   s   

zRevokedError.formatc                    s    || _ || _t j||d d S r9   )rF   rG   r!   r"   )r$   r   rF   rG   r7   r%   r   r   r"   v   s   zRevokedError.__init__)r   r   r   rD   r   r   r)   r	   rP   r"   r*   r   r   r%   r   rE   d   s$    rE   c                   @   r   )InsufficientRevinfoErrorNr   r   r   r   r   rQ      r   rQ   c                       sD   e Zd ZedededefddZdededef fddZ  Z	S )StaleRevinfoErrorr   time_cutoffr7   c                 C   s   t |||S r   )rR   )r6   r   rS   r7   r   r   r   rP      s   zStaleRevinfoError.formatc                       || _ t j||d d S r9   )rS   r!   r"   )r$   r   rS   r7   r%   r   r   r"      s   zStaleRevinfoError.__init__)
r   r   r   rD   r)   r   r	   rP   r"   r*   r   r   r%   r   rR      s     rR   c                   @   r   )InsufficientPOEErrorNr   r   r   r   r   rU      r   rU   c                       <   e Zd ZededefddZdedef fddZ  ZS )ExpiredError
expired_dtr7   c                C   &   d|   d|d }t|||S )N(The path could not be validated because z	 expired %Y-%m-%d %H:%M:%SZ)rL   rK   rW   )r6   rX   r7   r   r   r   r   rP         zExpiredError.formatc                    rT   r9   )rX   r!   r"   )r$   r   rX   r7   r%   r   r   r"         zExpiredError.__init__	r   r   r   rD   r   r	   rP   r"   r*   r   r   r%   r   rW          rW   c                       rV   )NotYetValidError
valid_fromr7   c                C   rY   )NrZ   z is not valid until r[   )rL   rK   r`   )r6   ra   r7   r   r   r   r   rP      r\   zNotYetValidError.formatc                    rT   r9   )ra   r!   r"   )r$   r   ra   r7   r%   r   r   r"      r]   zNotYetValidError.__init__r^   r   r   r%   r   r`      r_   r`   c                   @   r   )InvalidCertificateErrorNr   r   r   r   r   rb      r   rb   c                
       sR   e Zd Zdddee f fddZe	ddededee dd fd	d
Z	  Z
S )DisallowedAlgorithmErrorN)banned_sincerd   c                   s   || _ t j|i | d S r   )rd   r!   r"   )r$   rd   argskwargsr%   r   r   r"      s   z!DisallowedAlgorithmError.__init__r   r7   r8   c                 C   s   | |||dS )N)rd   r7   r   )r6   r   r7   rd   r   r   r   r:      s   z#DisallowedAlgorithmError.from_stater   )r   r   r   r   r   r"   rD   r)   r	   r:   r*   r   r   r%   r   rc      s     rc   c                   @   r   )InvalidAttrCertificateErrorNr   r   r   r   r   rg      r   rg   c                   @   r   )PSSParameterMismatchNr   r   r   r   r   rh      r   rh   c                   @   r   )DSAParametersUnavailableNr   r   r   r   r   ri      s    ri   N)(r   typingr   r   r   r   asn1crypto.crlr   cryptography.exceptionsr   pyhanko_certvalidator._stater	   pyhanko_certvalidator.pathr
   	Exceptionr   r   r   r   r   r   r   r,   r-   r.   r/   r0   r3   r4   rE   rQ   rR   rU   rW   r`   rb   rc   rg   rh   ri   r   r   r   r   <module>   s>   