
    g                        d dl Z d dlmZ d dlmZmZ d dl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 d dlmZ d d	lmZ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edee   de fdZ!dededefdZ"dedejF                  fdZ$y)    N)datetime)ListOptional)pem)
CLIContext)get_text_paramsopen_for_signing)SigningCommandPlugin)pyhanko_exception_manager)readable_filewritable_file)
PdfHandler)	PdfSignerfields)PdfCMSSignedAttributesselect_suitable_signing_md)HTTPTimeStamperhandlernamewill_createc           	         d}	 t        t        j                  | |            \  }}}t        j                  |j	                               }t        j
                  |      \  }}	|r|	st        j                  | d| d      y # t        $ r= |st        j                  | d      |st        j                  | d| d| d      Y y w xY w)	Nz3You seem to be trying to create a visible signature)	with_name)	sig_fieldz, but the field 'ze' in the PDF is not a visible one. Please specify another field name if you need a visible signature.z, but the PDF did not contain any signature fields, and you did not specify a bounding box. Please specify the field as --field "PAGE/X1,Y1,X2,Y2/NAME" to create a visible signature field at the coordinates provided.z' does not exist in the PDF file, and you did not specify a bounding box. Please specify the field as --field "PAGE/X1,Y1,X2,Y2/zB" to create a visible signature field at the coordinates provided.)	nextr   enumerate_sig_fieldsget_sig_field_annot
get_objectannot_width_heightclickClickExceptionStopIteration)
r   r   r   prefixfq_name_	field_ref	sig_annotwhs
             [/var/www/html/Beni/venv/lib/python3.12/site-packages/pyhanko/cli/commands/signing/plugin.py_ensure_field_visibler*      s    CF $''4@!
I ..9M9M9OP	((31&&(+G9 5, -    &&( P Q  &&(+D6 2. /3V 4PQ  s   A?B AC
	C
plugininfileoutfilec           
         t        j                         }|j                  }|j                  }|t	        |      }nd } | j
                  |fi |5 }|j                  }	|	|d }
n(t        j                  t        j                               }
t        |d      5 }|j                  }|J |j                  |t        |j                        |t!        |
            }t#        j$                  |      }d d d        j'                         }|j(                  rt+        j,                  d|      }t        |d      5 }|j/                  |       d d d        nt1        ||j2                        5 }|j4                  j6                  r#t9        ||	j:                  |j<                  d u       t?        |	|||j@                  |j<                        jC                  ||jD                  tG        |      	      }t        |d      5 }|jI                         }|j/                  |       |jK                          d d d        d d d        d d d        y # 1 sw Y   TxY w# 1 sw Y   xY w# 1 sw Y   3xY w# 1 sw Y   7xY w# 1 sw Y   y xY w)
N)tzrb)signing_time)timestampersigned_attr_settingsPKCS7wb)infile_pathlenient)signerr2   stamp_stylenew_field_spec)existing_fields_onlyappearance_text_params)&r   get_current_contextobjtimestamp_urlr   create_signersig_settingsr   nowtzlocalget_localzoneopensigning_certasync_sign_general_datar   
public_keyr   asynciorundump
detach_pemr   armorwriter	   r7   uxvisible_signature_desiredr*   
field_namer:   r   r9   sign_pdfr;   r   	getbufferrelease)r+   r,   r-   kwargsctxcli_ctxr?   r2   r8   pdf_sig_settingstimestamp_attrinfcertsignature_job	signatureoutput_bytesoutr'   resultoutfbufs                        r)   _callback_logicrc   ;   s@    
#
#
%C''G#*#8#8M %m4			g	0	0F"//#&!% "*1F1F1H!Ifd#s**''' & > >.t? +)?%3*	 !? ! $KK6	 $ %>>+L!!"yy,?gt$		,' %$ ""GOO::77)(33..d:
 #$! + ' 3 3#*#9#9 ()0)E)E+:3+?    '4(D **,CJJsOKKM )+A 
1	0 $#" %$0 )(+ A 
1	0sp   AI3AI0AI36I I3(BI'72I)I'1I3I	I3I	I3I$ I''I0	,I33I<returnc                 j    dt         dt         f fd}t        j                  dt              t        j                  dt              g}|j                   j                                |j                   j                                t        j                   j                  | j                  |      S )Nr,   r-   c                 `    t               5  t        | |fi | d d d        y # 1 sw Y   y xY w)N)r   rc   )r,   r-   rU   r+   s      r)   	_callbackz&command_from_plugin.<locals>._callback   s&    &(FFG>v> )((s   $-)r,   )type)r-   )r   callbackhelpparams)strr   Argumentr   r   extendclick_extra_argumentsclick_optionsCommandsubcommand_namehelp_summary)r+   rg   rk   s   `  r)   command_from_pluginrt      s    ?S ?3 ?
 	{7|-8%F MM&..01
MM&&&()==##  	     )%rI   r   typingr   r   r   rC   
asn1cryptor   pyhanko.cli._ctxr   "pyhanko.cli.commands.signing.utilsr   r	   pyhanko.cli.plugin_apir
   pyhanko.cli.runtimer   pyhanko.cli.utilsr   r   pyhanko.pdf_utils.rw_commonr   pyhanko.signr   r   pyhanko.sign.signers.pdf_cmsr   r   pyhanko.sign.timestampsr   rl   boolr*   rc   rq   rt    ru   r)   <module>r      s      !    ' P 7 9 : 2 * 4!!'}!;?!HC" C"*-C"8;C"L 4  ru   