
     h&                     t   U d dl mZ d dlmZ d dlmZmZmZmZm	Z	 d dl
Z
d dlmZ d dlmZ d dlmZmZ d dlmZmZ d d	lmZ d d
lmZ d dlmZmZmZ e G d d                      Z ed           G d d                      ZdxZZ eedZ!ee"ee         f         e#d<   defdZ$de%de%fdZ&de%de%fdZ'dS )    )	dataclass)	timedelta)DictListOptionalTypeUnionN)ValidationContext)ConfigurationError)	LogConfigparse_logging_config)DEFAULT_TIME_TOLERANCEparse_trust_config)DEFAULT_SIGNING_STAMP_STYLE)KeyUsageConstraints)BaseStampStyleQRStampStyleTextStampStylec                       e Zd ZU dZeeef         ed<   	 eeef         ed<   	 eed<   	 eed<   	 eed<   	 e	ed<   	 eed<   	 dd
Z
	 ddee         de	fdZ	 ddee         defdZ	 ddee         deeef         fdZd	S )	CLIConfigz%
    CLI configuration settings.
    validation_contextsstamp_stylesdefault_validation_contextdefault_stamp_styletime_toleranceretroactive_revinfo
raw_configNc                 r    |p| j         }	 | j        |         S # t          $ r t          d| d          w xY w)Nz&There is no validation context named ''.)r   r   KeyErrorr   )selfnames     N/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/pyhanko/cli/config.py_get_validation_settings_rawz&CLIConfig._get_validation_settings_raw\   s]    6t6	+D11 	 	 	$AAAA  	s    6Fr"   as_dictc                     |                      |          }t          || j        | j                  }|r|nt	          di |S )a  
        Retrieve a validation context by name.

        :param name:
            The name of the validation context. If not supplied, the value
            of :attr:`default_validation_context` will be used.
        :param as_dict:
            If ``True`` return the settings as a keyword argument dictionary.
            If ``False`` (the default), return a
            :class:`~pyhanko_certvalidator.context.ValidationContext`
            object.
         )r$   r   r   r   r
   )r!   r"   r%   	vc_config	vc_kwargss        r#   get_validation_contextz CLIConfig.get_validation_contexte   sS     55d;;	&t*D,D
 
	 $Gyy):)G)GY)G)GG    returnc                 f   |                      |          }	 t          |d                   }n# t          $ r i }Y nw xY w	 |d         }|                    d|           n# t          $ r Y nw xY w	 |d         }|                    d|           n# t          $ r Y nw xY wt	          j        |          S )a:  
        Get a set of key usage constraints for a given validation context.

        :param name:
            The name of the validation context. If not supplied, the value
            of :attr:`default_validation_context` will be used.
        :return:
            A :class:`.KeyUsageConstraints` object.
        zsigner-key-usage-policyzsigner-key-usagez	key-usagezsigner-extd-key-usagezextd-key-usage)r$   dictr    
setdefaultr   from_config)r!   r"   r(   policy_settingskey_usage_stringss        r#   get_signer_key_usageszCLIConfig.get_signer_key_usagesz   s     55d;;		!"9-F#GHHOO 	! 	! 	! OOO	!	 )*< =&&{4EFFFF 	 	 	D		 )*A B&&'79JKKKK 	 	 	D	 #.???s0   - << A 
A,+A,0B 
BBc                 2   |p| j         }	 t          | j        |                   }n=# t          $ r t	          d| d          t
          $ r}t	          |          d}~ww xY wt          |                    dd                   }|                    |          S )a  
        Retrieve a stamp style by name.

        :param name:
            The name of the style. If not supplied, the value
            of :attr:`default_stamp_style` will be used.
        :return:
            A :class:`TextStampStyle` or `QRStampStyle` object.
        zThere is no stamp style named 'r   Ntypetext)	r   r.   r   r    r   	TypeErrorSTAMP_STYLE_TYPESpopr0   )r!   r"   style_configeclss        r#   get_stamp_stylezCLIConfig.get_stamp_style   s     /t/	( 1$ 788LL 	Q 	Q 	Q$%Ot%O%O%OPPP 	( 	( 	($Q'''	( 0 0 @ @A|,,,s   & &A AA )N)NF)__name__
__module____qualname____doc__r   strr.   __annotations__r   boolr$   r   r*   r   r3   r	   r   r   r=   r'   r+   r#   r   r      sy          c4i(((6 sDy/!!!	 !$###
 
  
     ;@H HSMH37H H H H, %)#@ #@SM#@	#@ #@ #@ #@L %)- -SM-	~|+	,- - - - - -r+   r   T)frozenc                   ^    e Zd ZU dZeed<   	 eee         e	f         ed<   	 e
e         ed<   dS )CLIRootConfigzs
    Config settings that are only relevant tothe CLI root and are not exposed
    to subcommands and plugins.
    config
log_configplugin_endpointsN)r>   r?   r@   rA   r   rC   r   r   rB   r   r   r'   r+   r#   rG   rG      sf          
  Xc]I-.... 3i r+   rG   default)qrr6   r8   r,   c                     t          j        |           pi }t          di t          |          dt	          di t          |          d|iiS )NrH   r   r'   )yaml	safe_loadrG   process_root_config_settingsr   process_config_dict)yaml_strconfig_dicts     r#   parse_cli_configrT      s    .**0bK  
&{
3
3  
 
!+..
 
;F
 
 
   r+   rS   c                     |                      dg           }|                      di           }t          |          }t          ||          S )Npluginslogging)rI   rJ   )getr   r.   )rS   rV   log_config_specrI   s       r#   rP   rP      sR    ooi,,G!ooi44O%o66J    r+   c                    t           i i}	 | d         }|                    |           n# t          $ r Y nw xY wt          t          j        ddi}	 | d         }|                    |           n# t          $ r Y nw xY w|                     dt                     }|                     dt                    }|                     dt          j                  }t          |t                    st          d          t          |	          }t          |                     d
d                    }	t          ||||	||          S )Nzvalidation-contexts	__stamp__)z
stamp-text
backgroundzstamp-styleszdefault-validation-contextzdefault-stamp-styleztime-tolerancez5time-tolerance parameter must be specified in seconds)secondszretroactive-revinfoF)r   r   r   r   r   r   )DEFAULT_VALIDATION_CONTEXTupdater    DEFAULT_STAMP_STYLEr   
stamp_textrX   r   r]   
isinstanceintr   r   rD   r.   )
rS   vcsvc_specsstamp_configsstamp_specs
default_vcr   time_tolerance_secondsr   r   s
             r#   rQ   rQ      s   6;C45

8    	5@%
 
M!.1[))))    $&@ J &//2  )__08  ,c22 
 C
 
 	
 '=>>>N{/DeLLMM#-%/"/   s   ) 
66A. .
A;:A;)(dataclassesr   datetimer   typingr   r   r   r   r	   rN   pyhanko_certvalidatorr
   pyhanko.config.errorsr   pyhanko.config.loggingr   r   pyhanko.config.trustr   r   pyhanko.sign.signersr    pyhanko.sign.validation.settingsr   pyhanko.stampr   r   r   r   rG   r^   r`   r8   rB   rC   rT   r.   rP   rQ   r'   r+   r#   <module>rt      s   ! ! ! ! ! ! !       4 4 4 4 4 4 4 4 4 4 4 4 4 4  3 3 3 3 3 3 4 4 4 4 4 4 B B B B B B B B K K K K K K K K < < < < < < @ @ @ @ @ @ F F F F F F F F F F b- b- b- b- b- b- b- b-J $$ $ $ $ $ $ $ $X 4= < 0
6 6 4T.112   -    d t    0T 0d 0 0 0 0 0 0r+   