U
    <ßôgƒ  ã                   @   s2  d dl mZmZmZmZ d dlZd dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZ d$ee ee eee ef eeee ef eee dœd	d
„Zejedœdd„Zejdddedejdddde
dejdddeddddejdddde
dgZedejdZeedœdd„Zd d!„ Zd"d#„ ZdS )%é    )ÚIterableÚOptionalÚTypeVarÚUnionN)Ú	CLIConfig)ÚloggerÚreadable_file)ÚConfigurationError)Úinit_validation_context_kwargs)Úload_certs_from_pemder)Ú
cli_configÚvalidation_contextÚtrustÚtrust_replaceÚother_certsÚretroactive_revinfoÚallow_fetchingc           
   
   C   sÚ  z<|d k	rt ||fƒr"t d¡‚| d kr4t d¡‚z| j|dd}W nF tk
rŒ } z(d|› d}	tj|	|d t |	¡‚W 5 d }~X Y nX n||s˜|rªt||||d}nb| d k	rz| jdd}W n@ tk
r } z d	}	tj|	|d t |	¡‚W 5 d }~X Y nX ni }|d k	r ||d
< n| d
d¡ |r:d|d< |W S  tjk
rX   ‚ Y n~ t	k
r– } z d}	tj|	|d t |	¡‚W 5 d }~X Y n@ t
k
rÔ } z d}	tj|	|d t |	¡‚W 5 d }~X Y nX d S )NzC--validation-context is incompatible with --trust and --other-certszNo config file specified.T)Zas_dictzAConfiguration problem. Are you sure that the validation context 'z0' is properly defined in the configuration file?)Úexc_info)r   r   r   r   z*Failed to load default validation context.r   r   z+I/O problem while reading validation configz:Generic processing problem while reading validation config)ÚanyÚclickÚClickExceptionZget_validation_contextr	   r   Úerrorr
   Ú
setdefaultÚIOErrorÚ	Exception)
r   r   r   r   r   r   r   ÚresultÚeÚmsg© r   ú6/tmp/pip-unpacked-wheel-w101_d3s/pyhanko/cli/_trust.pyÚbuild_vc_kwargs   sb    	ÿ
 ÿ

ÿü


r    )Úctxr   c                 C   s    | j j}|d krd S |j|dS )N)Úname)ÚobjÚconfigZget_signer_key_usages)r!   r   r   r   r   r   Ú_get_key_usage_settingsT   s    r%   )z--validation-contextz"use validation context from configF)ÚhelpÚrequiredÚtype)z--trustz#list trust roots (multiple allowed)T)r&   r'   Úmultipler(   )z--trust-replacez4listed trust roots supersede OS-provided trust store)r&   r'   r(   Zis_flagÚdefaultZshow_default)z--other-certsz#other certs relevant for validationÚFC)Úbound)ÚfÚreturnc                 C   s   | j  t¡ | S )N)ÚparamsÚextendÚTRUST_OPTIONS)r-   r   r   r   Útrust_options„   s    r2   c                 C   s6   |r|rt  d¡‚|rd}n|r&d}nd}|| d< | S )Nz<--soft-revocation-check is incompatible with --force-revinfoÚrequirez	soft-failz	hard-failZrevocation_mode)r   r   )Z	vc_kwargsZsoft_revocation_checkZforce_revinfoZrev_moder   r   r   Ú_prepare_vc‰   s    ÿr4   c              
   C   sT   | sd S zt t| ƒƒW S  ttfk
rN } zt d| › ¡|‚W 5 d }~X Y nX d S )Nz!Could not load certificates from )Úlistr   r   Ú
ValueErrorr   r   )Úfilesr   r   r   r   Ú
grab_certs˜   s    ÿþr8   )N)Útypingr   r   r   r   r   Zpyhanko.cli.configr   Zpyhanko.cli.utilsr   r   Zpyhanko.config.errorsr	   Zpyhanko.config.trustr
   Zpyhanko.keysr   ÚstrÚboolr    ÚContextr%   ÚOptionr1   ÚCommandr+   r2   r4   r8   r   r   r   r   Ú<module>   sf   
 ùùHüûù	ûé!