
    Wwg{*                        d dl Z d dlZd dlmZ d dlZd dlmZmZ d dlmZ d dl	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 d d
lmZ d dlmZ d dl	mZ d dlmZ d dlm Z  dgZ!	 d<dZ"d Z#d Z$defdZ%e ejL                  dd       ejN                  d ejP                  d             ejR                  dde*ddd       ejR                  d d!e*ddd       ejR                  d"d# ejV                   ejX                               d$       ejR                  d%d&e*ddd       ejR                  d'd(e*ddd       ejR                  d)d*e*ddd       ejR                  d+d,e*ddd       ejR                  d-d.e-d$       ejR                  d/de-d01       ejR                  d2de*dd34       ejR                  d5 ejP                  d      d67       ejR                  d8d9e*ddd      ej\                  d:ej^                  fd;                                                                                                                Z0y)=    N)datetime)cmspem)ValidationContext)_get_key_usage_settings_prepare_vcbuild_vc_kwargstrust_options)signing)pyhanko_exception_manager)logger)crypt)isoparse)PdfFileReader)
validation)RevocationInfoValidationType)SignatureValidationErrorvalidate_signaturesFc                     | :t        di |}t        j                  j                  j	                  ||||      }|S t        j
                  || ||||      }|S )N)key_usage_settingssigner_validation_context	skip_diff)r   force_revinfovalidation_context_kwargsr    )r   pyhankosignr   validate_pdf_signaturevalidate_pdf_ltv_signature)ltv_profile	vc_kwargsr   r   embedded_sigr   vcstatuss           _/var/www/horilla/myenv/lib/python3.12/site-packages/pyhanko/cli/commands/validation/validate.py_signature_statusr&      su     ++((??1&(	 @ 
 M 661'&/
 M    c                    |j                         }	 t        j                  |      rt        j                  |      \  }}}t        j
                  j                  |      }|d   j                  dk7  rt        j                  d      	 t        j                  | |d   ||      }t        j                  |      S # t        $ r}t        j                  d      |d }~ww xY w)Ncontent_typesigned_dataz"CMS content type is not signedDatazCould not parse CMS objectcontent)r*   r   r   )readr   detectunarmorr   ContentInfoloadnativeclickClickException
ValueErrorr   async_validate_detached_cmsasynciorun)	infile
sig_infilevalidation_contextr   	sig_bytes_content_infoevalidation_coros	            r%   _validate_detachedr@   9   s     !IH::i !kk)4OAq)++I6'..-?&&'KLL @
 !<< +"4-	O ;;''  H""#?@aGHs   A4B8 8	CCCc                    	  |        }|r|s|j                   rdnd|j                   fS |r|j                         |j                   fS |j                         |j                   fS # t        j                  $ r8}dt        |      z   }t        j                  |       |r	|dfcY d }~S Y d }~yd }~wt        $ r:}dt        |      z   }t        j                  ||       |r	|dfcY d }~S Y d }~yd }~ww xY w)	NVALIDINVALIDzOAn error occurred while parsing the revocation information for this signature: F)REVINFO_FAILUREFz3An error occurred while validating this signature: )exc_info)rC   F)	bottom_linepretty_print_detailssummaryr   ValidationInfoReadingErrorstrr   errorr   )status_callbackpretty_printexecutive_summaryr$   r>   msgs         r%   _signature_status_strrP   O   s    $ "\!--9""  ..0&2D2DDD>>#V%7%77700 	,#%(V, 	 	S:+# $Cc!fLS1%:#$s:   &A# A# A# #C/6(B)C/)C/5*C*C/*C/returnc                 j    	 t        |       }|S # t        $ r t        j                  d| d      w xY w)Nz	datetime z could not be parsed)r   r4   r2   r3   )dt_strdts     r%   _attempt_iso_dt_parserU   n   sG    Of I  O""Yvj8L#MNNOs    #2validatezvalidate signatures)namehelpr8   rb)typez--executive-summaryz/only print final judgment on signature validityT)rX   rZ   is_flagdefaultshow_defaultz--pretty-printz8render a prettier summary for the signatures in the filez--ltv-profilez LTV signature validation profile)rX   rZ   requiredz--force-revinfozJFail trust validation if a certificate has no known CRL or OCSP endpoints.z--soft-revocation-checkzbDo not fail validation on revocation checking failures (only applied to on-line revocation checks)z--no-revocation-checkzJDo not attempt to check revocation status (meaningless for LTV validation)z--retroactive-revinfozOTreat revocation info as retroactively valid (i.e. ignore thisUpdate timestamp)z--validation-timezOverride the validation time (ISO 8601 date). The special value 'claimed' causes the validation time claimed by the signer to be used. Revocation checking will be disabled. Option ignored in LTV mode.z
--passwordz9password to access the file (can also be read from stdin))r^   rZ   rX   z--no-diff-analysisz#disable incremental update analysis)r\   rZ   r[   rX   z
--detachedziRead signature CMS object from the indicated file; this can be used to verify signatures on non-PDF files)rZ   rX   z--no-strict-syntaxzAttempt to ignore syntactical problems in the input file and enable signature validation in hybrid-reference files.(warning: this may affect validation results in unexpected ways.)ctxc           
      .  	  ||d uz  }|rd}
|r|rt        j                  d      "|t        j                  d      t              t        | j                  j
                  ||||||rdnd        d}|dk(  rd}n|t        |       d<   t        | |      t         |
	       t               5  Nt         fd	||
      \  }}|rt        j                  |       nt        j                  |      	 d d d        y |r#t        j                  d       t        d      }nt              }|j                  }t!        |t"        j$                        re|t'        j&                  d      }|j)                  |      }|j*                  t"        j,                  j.                  k(  r,t        j                  d      |t        j                  d      d}t1        |j2                        D ]  \  }j4                  j6                  j9                         }|rj:                   d<   t        	 fd||
      \  }}j<                  }|rqd|dz    d| }dt?        |      z  }t        j                  |       t        j                  |       t        j                  |       t        j                  d|z          nt        j                  |d|d|       ||z  } |st        j                  d      	 d d d        y # 1 sw Y   y xY w)NTz8--pretty-print is incompatible with --executive-summary.z6--validation-time is not compatible with --ltv-profileF)allow_fetchingclaimedmoment)soft_revocation_checkr   c            	      2    t         t        di       S )Nr   )r@   r   )detachedr8   r   r!   s   r%   <lambda>z%validate_signatures.<locals>.<lambda>   s!    (:%2	2&	) r'   )rL   rM   rN   zQStrict PDF syntax is disabled; this could impact validation results. Use caution.)strictzFile password: )promptzPassword didn't match.zIThe CLI supports only password-based encryption when validating (for now)c                  &    t               S )N)r    r   r!   r   r"   r   )r&   )r"   r   r   r    no_diff_analysisr!   s   r%   rg   z%validate_signatures.<locals>.<lambda>J  s    (9 +"/''9!-.) r'   zField    z: =z

:zValidation failed) r2   r3   r   r	   objconfigrU   r   r   r   rP   echor   infor   security_handler
isinstancer   StandardSecurityHandlergetpassdecryptr$   
AuthStatusFAILED	enumerateembedded_regular_signaturessigner_certsha256hexself_reported_timestamp
field_namelen)!r_   r8   rN   rM   r:   trusttrust_replaceother_certsr    r   rd   no_revocation_checkpasswordretroactive_revinforf   rk   validation_timeno_strict_syntaxuse_claimed_validation_time
status_strsignature_okrshauth_resultall_signatures_okixfingerprintrW   headerliner"   r   r!   s!    `      ``    ``              @@@r%   r   r   y   s$   z ?$66 $)""F
 	
 &&&H  3;? 3uI #()#&*#		$3OD	(06HI3#I
 
#	$ F<)>! *"3	*&Z 

:&**:66!F< F<$ KK( fU3Af%Ab%778"??2CD))H-K!!U%5%5%<%<<**+CDD^&&' 
 ! )!*G*G H 	.B+77>>BBDK*&2&J&J	(#)>! ! *"3*&Z  **D!"q&D62S[(

4 

6"

4 

6J./

{JGH-7	.: !&&':;; !KF< F< F<s   9AL
G7LL)F)1r6   rv   r   r2   
asn1cryptor   r   pyhanko_certvalidatorr   pyhanko.signr   pyhanko.cli._trustr   r   r	   r
   pyhanko.cli.commands.signingr   pyhanko.cli.runtimer   pyhanko.cli.utilsr   pyhanko.pdf_utilsr   pyhanko.pdf_utils.miscr   pyhanko.pdf_utils.readerr   r   pyhanko.sign.validationr   pyhanko.sign.validation.errorsr   __all__r&   r@   rP   rU   commandargumentFileoptionboolChoiceas_tuplerJ   pass_contextContextr   r   r'   r%   <module>r      s        3   1 9 $ # + 2 # @ C 
! 8(,$>X  j'<=zuzz$/0	:	 	C	 	+	;2;;=	>	 
	 
2	 
'	 
)	 	8
 

 		D	 		. 	D		A	 
 

 A<	A< 

 1 > RA<r'   