§
    jŠtj†&  ã                   ó¾  — d Z ddlZddlZddlZddlZddlZddlZddlZ eej	        j
                             ¦   «         ¦  «        Z
ej        ej        ej        e         f         Zdd„Z G d„ dej        ¬¦  «        Z G d„ d	e¦  «        Z G d
„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z e¦   «         Z e¦   «         Z e¦   «         Z e¦   «         ZdS )zWCommandline scripts.

These scripts are called by the executables defined in setup.py.
é    NÚreturnc                  ór  — t          j        dd¬¦  «        } |                      ddd¬¦  «         |                      dd	dd
¬¦  «         |                      dddd¬¦  «         |                      t          j        dd…         ¦  «        \  }}t          |¦  «        dk    r#|                      ¦   «          t          d¦  «        ‚	 t          |d         ¦  «        }nZ# t          $ rM}|                      ¦   «          t          d|d         z  t          j        ¬¦  «         t          d¦  «        |‚d}~ww xY wt          d|z  t          j        ¬¦  «         t          j        |¦  «        \  }}|j        r€t          d|j        z  t          j        ¬¦  «         |                     |j        ¬¦  «        }t%          |j        d¦  «        5 }|                     |¦  «         ddd¦  «         n# 1 swxY w Y   |                     |j        ¬¦  «        }|j        rht          d|j        z  t          j        ¬¦  «         t%          |j        d¦  «        5 }|                     |¦  «         ddd¦  «         dS # 1 swxY w Y   dS t          dt          j        ¬¦  «         t          j        j                             |¦  «         dS )zKey generator.zusage: %prog [options] keysizez/Generates a new RSA key pair of "keysize" bits.©ÚusageÚdescriptionz--puboutÚstringzžOutput filename for the public key. The public key is not saved if this option is not present. You can use pyrsa-priv2pub to create the public key file later.©ÚtypeÚhelpú-oz--outz`Output filename for the private key. The key is written to stdout if this option is not present.z--formz7key format of the private and public keys - default PEM©ÚPEMÚDERr   ©r   ÚchoicesÚdefaulté   Nr   zNot a valid number: %s©ÚfilezGenerating %i-bit keyzWriting public key to %s)ÚformatÚwbzWriting private key to %szWriting private key to stdout)ÚoptparseÚOptionParserÚ
add_optionÚ
parse_argsÚsysÚargvÚlenÚ
print_helpÚ
SystemExitÚintÚ
ValueErrorÚprintÚstderrÚrsaÚnewkeysÚpuboutÚ
save_pkcs1ÚformÚopenÚwriteÚoutÚstdoutÚbuffer)	ÚparserÚcliÚcli_argsÚkeysizeÚexÚpub_keyÚpriv_keyÚdataÚoutfiles	            úE/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/rsa/cli.pyÚkeygenr9   !   sP  € õ Ô"Ø.ØEðñ ô €Fð
 ×ÒØØð>ð ñ ô ð ð ×ÒØØØð;ð	 ñ ô ð ð ×ÒØØFØØð	 ñ ô ð ð ×'Ò'­¬°°°¬Ñ5Ô5�O€Sˆ(å
ˆ8�}„}˜ÒÐØ×ÒÑÔÐÝ˜‰mŒmÐð$Ý�h˜q”kÑ"Ô"ˆˆøÝð $ð $ð $Ø×ÒÑÔÐÝÐ&¨°!¬Ñ4½3¼:ÐFÑFÔFÐFÝ˜‰mŒm Ð#øøøøð$øøøõ
 
Ð
! GÑ
+µ#´*Ð=Ñ=Ô=Ð=Ýœ+ gÑ.Ô.Ñ€Wˆhð „zð  ÝÐ(¨3¬:Ñ5½C¼JÐGÑGÔGÐGØ×!Ò!¨¬Ð!Ñ2Ô2ˆÝ�#”*˜dÑ#Ô#ð 	  wØ�MŠM˜$ÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð ×Ò c¤hÐÑ/Ô/€Dà
„wð &ÝÐ)¨C¬GÑ3½#¼*ÐEÑEÔEÐEÝ�#”'˜4Ñ Ô ð 	  GØ�MŠM˜$ÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 õ 	Ð-µC´JÐ?Ñ?Ô?Ð?ÝŒ
Ô×Ò Ñ%Ô%Ð%Ð%Ð%s=   ÃC Ã
D/Ã"AD*Ä*D/ÇG#Ç#G'Ç*G'ÉI+É+I/É2I/c            	       ó:  — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZej        Zdd„Zej        dedej        j        dedej        fd„¦   «         Zdd„Zdej        ej        ej        e          f         fd„Z!de de dej        j        fd„Z"de defd„Z#dede ddfd„Z$dS )ÚCryptoOperationz9CLI callable that operates with input, output, and a key.Úpublicz'usage: %%prog [options] %(keyname)s_keyÚ ÚdecryptÚ	decryptedÚ
decryptingzEName of the file to %(operation)s. Reads from stdin if not specified.zjName of the file to write the %(operation_past)s file to. Written to stdout if this option is not present.r   Tr   Nc                 óœ   — | j         | j        j        z  | _         | j        | j        j        z  | _        | j        | j        j        z  | _        d S )N)r   Ú	__class__Ú__dict__Ú
input_helpÚoutput_help)Úselfs    r8   Ú__init__zCryptoOperation.__init__w   sC   € Ø”Z $¤.Ô"9Ñ9ˆŒ
Øœ/¨D¬NÔ,CÑCˆŒØÔ+¨d¬nÔ.EÑEˆÔÐÐó    ÚindataÚkeyr1   c                 ó   — dS )z€Performs the program's operation.

        Implement in a subclass.

        :returns: the data to write to the output.
        N© )rF   rI   rJ   r1   s       r8   Úperform_operationz!CryptoOperation.perform_operation|   s   € € € rH   c                 ó„  — |                       ¦   «         \  }}|                      |d         |j        ¦  «        }|                      |j        ¦  «        }t          | j                             ¦   «         t          j	        ¬¦  «         |  
                    |||¦  «        }| j        r|                      ||j        ¦  «         dS dS )zRuns the program.r   r   N)Ú	parse_cliÚread_keyÚkeyformÚread_infileÚinputr#   Úoperation_progressiveÚtitler   r$   rM   Ú
has_outputÚwrite_outfileÚoutput)rF   r0   r1   rJ   rI   Úoutdatas         r8   Ú__call__zCryptoOperation.__call__‡   s²   € ð Ÿ.š.Ñ*Ô*‰ˆˆhà�mŠm˜H QœK¨¬Ñ5Ô5ˆà×!Ò! #¤)Ñ,Ô,ˆåˆdÔ(×.Ò.Ñ0Ô0µs´zÐBÑBÔBÐBØ×(Ò(¨°°hÑ?Ô?ˆàŒ?ð 	4Ø×Ò˜w¨¬
Ñ3Ô3Ð3Ð3Ð3ð	4ð 	4rH   c                 óÜ  — t          j        | j        | j        ¬¦  «        }|                     ddd| j        ¬¦  «         | j        r|                     ddd| j        ¬¦  «         |                     dd	| j        z  d
d¬¦  «         | 	                    t          j        dd…         ¦  «        \  }}t          |¦  «        | j        k    r#|                     ¦   «          t          d¦  «        ‚||fS )zFParse the CLI options

        :returns: (cli_opts, cli_args)
        r   z-iz--inputr   r	   r   z--outputz	--keyformz&Key format of the %s key - default PEMr   r   r   r   N)r   r   r   r   r   rD   rV   rE   Úkeynamer   r   r   r   Úexpected_cli_argsr   r    )rF   r/   r0   r1   s       r8   rO   zCryptoOperation.parse_cli–   s÷   € õ Ô&¨T¬ZÀTÔEUÐVÑVÔVˆà×Ò˜$ 	°¸t¼ÐÑOÔOÐOàŒ?ð 	VØ×Ò˜d J°XÀDÔDTÐÑUÔUÐUà×ÒØØ9¸D¼LÑHØ"Øð	 	ñ 	
ô 	
ð 	
ð !×+Ò+­C¬H°Q°R°R¬LÑ9Ô9‰ˆˆhåˆx‰=Œ=˜DÔ2Ò2Ð2Ø×ÒÑÔÐÝ˜Q‘-”-Ðà�Hˆ}ÐrH   ÚfilenamerQ   c                 óü   — t          d| j        ›d|›�t          j        ¬¦  «         t	          |d¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   | j                             ||¦  «        S )zReads a public or private key.zReading z
 key from r   ÚrbN)r#   r\   r   r$   r*   ÚreadÚ	key_classÚ
load_pkcs1)rF   r^   rQ   ÚkeyfileÚkeydatas        r8   rP   zCryptoOperation.read_key²   s±   € õ 	ˆ¨$¬,¨,¨,¸¸ÐAÍÌ
ÐSÑSÔSÐSÝ�(˜DÑ!Ô!ð 	% WØ—l’l‘n”nˆGð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ð Œ~×(Ò(¨°'Ñ:Ô:Ð:s   ·AÁAÁAÚinnamec                 ó6  — |rZt          d|z  t          j        ¬¦  «         t          |d¦  «        5 }|                     ¦   «         cddd¦  «         S # 1 swxY w Y   t          dt          j        ¬¦  «         t          j        j                             ¦   «         S )zRead the input filezReading input from %sr   r`   NzReading input from stdin)r#   r   r$   r*   ra   Ústdinr.   )rF   rf   Úinfiles      r8   rR   zCryptoOperation.read_infile»   sÈ   € ð ð 	%ÝÐ)¨FÑ2½¼ÐDÑDÔDÐDÝ�f˜dÑ#Ô#ð % vØ—{’{‘}”}ð%ð %ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %õ 	Ð(­s¬zÐ:Ñ:Ô:Ð:ÝŒyÔ×$Ò$Ñ&Ô&Ð&s   ±AÁAÁArY   Úoutnamec                 óD  — |r^t          d|z  t          j        ¬¦  «         t          |d¦  «        5 }|                     |¦  «         ddd¦  «         dS # 1 swxY w Y   dS t          dt          j        ¬¦  «         t          j        j                             |¦  «         dS )zWrite the output filezWriting output to %sr   r   NzWriting output to stdout)r#   r   r$   r*   r+   r-   r.   )rF   rY   rj   r7   s       r8   rW   zCryptoOperation.write_outfileÆ   sá   € ð ð 	-ÝÐ(¨7Ñ2½¼ÐDÑDÔDÐDÝ�g˜tÑ$Ô$ð '¨Ø—’˜gÑ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð 'ð 'õ Ð,µ3´:Ð>Ñ>Ô>Ð>ÝŒJÔ×#Ò# GÑ,Ô,Ð,Ð,Ð,s   ±AÁAÁA©r   N)%Ú__name__Ú
__module__Ú__qualname__Ú__doc__r\   r   r   Ú	operationÚoperation_pastrT   rD   rE   r]   rV   r%   Ú	PublicKeyrb   rG   ÚabcÚabstractmethodÚbytesrJ   ÚAbstractKeyÚ	IndexableÚtypingÚAnyrM   rZ   ÚTupler   ÚValuesÚListÚstrrO   rP   rR   rW   rL   rH   r8   r;   r;   d   s|  € € € € € ØCÐCà€GØ5€EØ€KØ€IØ €NØ(ÐØ[€Jð	?ð ð ÐØ€Jà”€IðFð Fð Fð Fð
 	ÔðØðØ"%¤'Ô"5ðØAJðà	Œðð ð ñ Ôðð4ð 4ð 4ð 4ð˜6œ<¨¬¸¼ÀSÔ9IÐ(IÔJð ð ð ð ð8; ð ;¨sð ;°s´wÔ7Jð ;ð ;ð ;ð ;ð	' #ð 	'¨%ð 	'ð 	'ð 	'ð 	'ð	- Uð 	-°Sð 	-¸Tð 	-ð 	-ð 	-ð 	-ð 	-ð 	-rH   r;   )Ú	metaclassc            	       óV   — e Zd ZdZdZdZdZdZdZ	 dde	d	e
j        j        d
ede	fd„ZdS )ÚEncryptOperationzEncrypts a file.r<   zWEncrypts a file. The file must be shorter than the key length in order to be encrypted.ÚencryptÚ	encryptedÚ
encryptingrL   rI   r4   r1   r   c                 ón   — t          |t          j        j        ¦  «        sJ ‚t          j        ||¦  «        S )zEncrypts files.)Ú
isinstancer%   rJ   rs   r‚   )rF   rI   r4   r1   s       r8   rM   z"EncryptOperation.perform_operationÝ   s1   € õ ˜'¥3¤7Ô#4Ñ5Ô5Ð5Ð5Ð5ÝŒ{˜6 7Ñ+Ô+Ð+rH   N©rL   )rm   rn   ro   rp   r\   r   rq   rr   rT   rv   r%   rJ   rw   rx   rM   rL   rH   r8   r�   r�   Ò   s~   € € € € € ØÐà€Gàdð ð €IØ €NØ(Ðð RTð,ð ,Øð,Ø&)¤gÔ&9ð,ØENð,à	ð,ð ,ð ,ð ,ð ,ð ,rH   r�   c            	       ód   — e Zd ZdZdZdZdZdZdZe	j
        Z	 dded	e	j        j        d
edefd„ZdS )ÚDecryptOperationzDecrypts a file.ÚprivatezgDecrypts a file. The original file must be shorter than the key length in order to have been encrypted.r>   r?   r@   rL   rI   r5   r1   r   c                 ón   — t          |t          j        j        ¦  «        sJ ‚t          j        ||¦  «        S )zDecrypts files.)r†   r%   rJ   Ú
PrivateKeyr>   )rF   rI   r5   r1   s       r8   rM   z"DecryptOperation.perform_operationò   s1   € õ ˜(¥C¤GÔ$6Ñ7Ô7Ð7Ð7Ð7ÝŒ{˜6 8Ñ,Ô,Ð,rH   Nr‡   )rm   rn   ro   rp   r\   r   rq   rr   rT   r%   rŒ   rb   rv   rJ   rw   rx   rM   rL   rH   r8   r‰   r‰   å   s‡   € € € € € ØÐà€Gð	:ð ð €IØ €NØ(ÐØ”€Ið SUð-ð -Øð-Ø'*¤wÔ':ð-ØFOð-à	ð-ð -ð -ð -ð -ð -rH   r‰   c                   ó˜   — e Zd ZdZdZdZdd                     e¦  «        z  ZdZ	dZ
dZej        Zd	Zd
Zdedej        j        dedefd„ZdS )ÚSignOperationzSigns a file.rŠ   z/usage: %%prog [options] private_key hash_methodzCSigns a file, outputs the signature. Choose the hash method from %sú, ÚsignÚ	signatureÚSigningé   z\Name of the file to write the signature to. Written to stdout if this option is not present.rI   r5   r1   r   c                 óæ   — t          |t          j        j        ¦  «        sJ ‚|d         }|t          vr*t          dd                     t          ¦  «        z  ¦  «        ‚t          j        |||¦  «        S )zSigns files.r   z%Invalid hash method, choose one of %sr�   )r†   r%   rJ   rŒ   ÚHASH_METHODSr    Újoinr�   )rF   rI   r5   r1   Úhash_methods        r8   rM   zSignOperation.perform_operation  sh   € õ ˜(¥C¤GÔ$6Ñ7Ô7Ð7Ð7Ð7à˜q”kˆØ�lÐ*Ð*ÝÐDÀtÇyÂyÕQ]ÑG^ÔG^Ñ^Ñ_Ô_Ð_åŒx˜ ¨+Ñ6Ô6Ð6rH   N)rm   rn   ro   rp   r\   r   r–   r•   r   rq   rr   rT   r%   rŒ   rb   r]   rE   rv   rJ   rw   rx   rM   rL   rH   r8   rŽ   rŽ   ú   s¤   € € € € € ØÐà€GØ=€Eð	ØŸ9š9 \Ñ2Ô2ñ	3ð ð €IØ €NØ%ÐØ”€IØÐð	3ð ð

7Øð
7Ø'*¤wÔ':ð
7ØFOð
7à	ð
7ð 
7ð 
7ð 
7ð 
7ð 
7rH   rŽ   c                   ól   — e Zd ZdZdZdZdZdZdZdZ	e
j        ZdZd	Zd
ede
j        j        deddfd„ZdS )ÚVerifyOperationzVerify a signature.r<   z1usage: %%prog [options] public_key signature_filezsVerifies a signature, exits with status 0 upon success, prints an error message and exits with status 1 upon error.ÚverifyÚverifiedÚ	Verifyingr“   FrI   r4   r1   r   Nc                 ó„  — t          |t          j        j        ¦  «        sJ ‚|d         }t	          |d¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   	 t          j        |||¦  «         n'# t          j        $ r}t          d¦  «        |‚d}~ww xY wt          dt          j        ¬¦  «         dS )zVerifies files.r   r`   NzVerification failed.zVerification OKr   )r†   r%   rJ   rs   r*   ra   rš   ÚVerificationErrorr    r#   r   r$   )rF   rI   r4   r1   Úsignature_fileÚsigfiler‘   r3   s           r8   rM   z!VerifyOperation.perform_operation+  s  € õ ˜'¥3¤7Ô#4Ñ5Ô5Ð5Ð5Ð5à! !œˆå�. $Ñ'Ô'ð 	'¨7ØŸš™œˆIð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð	=ÝŒJ�v˜y¨'Ñ2Ô2Ð2Ð2øÝÔ$ð 	=ð 	=ð 	=ÝÐ3Ñ4Ô4¸"Ð<øøøøð	=øøøõ 	Ð¥c¤jÐ1Ñ1Ô1Ð1Ð1Ð1s)   ºAÁAÁ"AÁ'A> Á>B"ÂBÂB")rm   rn   ro   rp   r\   r   r   rq   rr   rT   r%   rs   rb   r]   rV   rv   rJ   rw   rx   rM   rL   rH   r8   r™   r™     sŒ   € € € € € ØÐà€GØ?€Eð	Fð ð €IØ€NØ'ÐØ”€IØÐØ€Jð2Øð2Ø&)¤gÔ&9ð2ØENð2à	ð2ð 2ð 2ð 2ð 2ð 2rH   r™   rl   )rp   rt   r   ry   r   r%   Úrsa.keyÚ	rsa.pkcs1ÚsortedÚpkcs1r•   ÚkeysÚUnionr{   r}   r~   rx   r9   ÚABCMetar;   r�   r‰   rŽ   r™   r‚   r>   r�   rš   rL   rH   r8   ú<module>r¨      sÅ  ððð ð
 €
€
€
Ø 
€
€
€
Ø €€€Ø €€€à 
€
€
€
Ø €€€Ø Ð Ð Ð àˆv�c”iÔ,×1Ò1Ñ3Ô3Ñ4Ô4€ØŒL˜œ v¤{°3Ô'7Ð7Ô8€	ð@&ð @&ð @&ð @&ðFk-ð k-ð k-ð k-ð k- ¤ð k-ñ k-ô k-ð k-ð\,ð ,ð ,ð ,ð ,�ñ ,ô ,ð ,ð&-ð -ð -ð -ð -�ñ -ô -ð -ð*7ð 7ð 7ð 7ð 7�Oñ 7ô 7ð 7ðB 2ð  2ð  2ð  2ð  2�oñ  2ô  2ð  2ðF Ð
Ñ
Ô
€Ø
Ð
Ñ
Ô
€Ø€}�„€Ø	ˆÑ	Ô	€€€rH   