
     h
                     P    d dl mZ d dlmZ d dlmZ d dlmZ  G d d          ZdS )    )Optional)x509ValidationPath)ConsListc                       e Zd Zddddee         dee         defdZe	d             Z
e	d	efd
            Zdej        fdZddZdS )ValProcStateNF)ee_name_overrideis_side_validationcert_path_stackr
   r   c                    |j         t          d          d| _        || _        t	          |p|j                  | _        || _        d S )NzEmpty path stackr   )head
ValueErrorindexr
   booltailr   r   )selfr   r
   r   s       X/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/pyhanko_certvalidator/_state.py__init__zValProcState.__init__
   sX     '/000
 0"&6/"6#
 #
  /    c                 X    ddl m} | j        j        }t	          ||          sJ |j        S )z
        Length of the path being validated.

        .. note::
            This is the path length in the sense of RFC 5280, i.e.
            the root doesn't count.
        r   r   )pyhanko_certvalidator.pathr   r   r   
isinstancepkix_len)r   r   paths      r   path_lenzValProcState.path_len   s?     	>=====#($/////}r   returnc                 "    | j         | j        k    S )N)r   r   )r   s    r   
is_ee_certzValProcState.is_ee_cert)   s    zT]**r   ee_certc                 z    ddl m} | j        D ],}|                                }|r|j        |j        k    r|c S -dS )a  
        Helper method to avoid recursion in indirect CRL validation.
        There are some questionable-but-technically-valid CA setups where
        a CRL issuer is authorised to assert its own revocation status,
        which could cause a naive implementation to recurse.
        r   r   N)r   r   r   get_ee_cert_safesha256)r   r    r   r   certs        r   check_path_verif_recursionz'ValProcState.check_path_verif_recursion-   s`     	>===== ( 	 	D((**D w~55tr   c                     | }| j         dk     r
| j        d}n(| j        s||z  }d| j          }n| j        | j        }nd}|rd|z   S |S )zy
        :return:
            A unicode string describing the position of a certificate
            in the chain
           Ncertificatezintermediate certificate zend-entity certificatezthe )r   r
   r   )r   
def_interm	never_defprefixresults        r   describe_certzValProcState.describe_cert=   sy     :>>d3;"FF 	.j F===FF".*FF-F 	F?"Mr   )FF)__name__
__module____qualname__r   r   r   strr   r   propertyr   r   r   Certificater%   r-    r   r   r	   r	   	   s        
 +/#(/ / / ".1/ #3-	/
 !/ / / /    X +D + + + X+$2B          r   r	   N)	typingr   
asn1cryptor   r   r   pyhanko_certvalidator.utilr   r	   r4   r   r   <module>r8      s                5 5 5 5 5 5 / / / / / /I I I I I I I I I Ir   