
    i!                         S SK r S SKJr  S SKJr  S SKJr  S SKJrJ	r	J
r
  S SKJr  S rS SKJr   " S	 S
\5      r " S S\ R"                  5      r0 4S jr\S:X  a  S r\ R,                  " SS9  gg)    N)	unhexlify)list_test_cases)tobytes)AESDES3DES)SHAKE128c                 Z    [         R                  " [        U 5      S9R                  U5      $ )N)data)r	   newr   read)taglengths     ^/var/www/html/trading/venv/lib/python3.13/site-packages/Crypto/SelfTest/Cipher/test_OpenPGP.pyget_tag_randomr   '   s     <<WS\*//77    )BlockChainingTestsc                       \ rS rSr\R
                  r\R
                  r\	" SS5      r
\	" SS5      r\	" SS5      r\	" SS5      r\	" S	S5      rS
 rS rS rS rS rS rS rS rS rS rS rSrg)OpenPGPTests-   key_128   key_192   iv_128iv_64   data_128c                 h   [         R                  " U R                  [         R                  U R                  5      n[        SS5      nUR                  U5      nUS S USS  p4[         R                  " U R                  [         R                  U5      nUR                  U5      nU R                  X%5        g )N	plaintexti@     )	r   r   r   MODE_OPENPGPr   r   encryptdecryptassertEqualselfcipherptcteivpt2s         r   test_loopback_128OpenPGPTests.test_loopback_128:   s    s'7'7EK2^^BSb'2bc7Rs'7'7=nnR !r   c                 h   [         R                  " U R                  [         R                  U R                  5      n[        SS5      nUR                  U5      nUS S USS  p4[         R                  " U R                  [         R                  U5      nUR                  U5      nU R                  X%5        g )Nr    i   
   )	r   r   r   r"   r   r   r#   r$   r%   r&   s         r   test_loopback_64OpenPGPTests.test_loopback_64E   s    $,,(9(94::FK1^^BSb'2bc7R$,,(9(93?nnR !r   c                    [         R                  " U R                  [         R                  U R                  5      nUR                  S5      nU R                  UR                  U R                  5        [         R                  " U R                  [         R                  U5      nU R                  UR                  U R                  5        g Nr   )r   r   r   r"   r   r#   r%   ivr'   r(   r+   s      r   test_IV_iv_attributes"OpenPGPTests.test_IV_iv_attributesP   s|    s'7'7EnnS!DKK0s'7'7=DKK0r   c                 <   [         R                  " U R                  [         R                  U R                  5      nUR                  S5      n[         R                  " U R                  [         R                  U5      nU R                  UR                  S5      S5        g r4   )r   r   r   r"   r   r#   r%   r$   r6   s      r   test_null_encryption_decryption,OpenPGPTests.test_null_encryption_decryptionX   se    s'7'7EnnS!s'7'7=,c2r   c                    [         R                  " U R                  [         R                  U R                  5      nUR                  S5      nU R                  [        UR                  S5        [         R                  " U R                  [         R                  U5      nUR                  S5        U R                  [        UR
                  S5        g r4   )	r   r   r   r"   r   r#   assertRaises	TypeErrorr$   r6   s      r   test_either_encrypt_or_decrypt+OpenPGPTests.test_either_encrypt_or_decrypt_   s    s'7'7EnnS!)V^^S9s'7'7=s)V^^S9r   c                    S/S-  n[         R                  " U R                  [         R                  U R                  5      nU Vs/ s H  o2R                  U5      PM     nn[         R                  " U R                  [         R                  U R                  5      nU R                  SR                  U5      UR                  SR                  U5      5      5        g s  snf Ns   7777777d   r   )r   r   r   r"   r   r#   r%   joinr'   
plaintextsr(   xciphertextss        r   test_unaligned_data_128$OpenPGPTests.test_unaligned_data_128h   s    !^c)
s'7'7E3=?:aq):?s'7'7E+.sxx
?S0TU @   Cc                    S/S-  n[         R                  " U R                  [         R                  U R                  5      nU Vs/ s H  o2R                  U5      PM     nn[         R                  " U R                  [         R                  U R                  5      nU R                  SR                  U5      UR                  SR                  U5      5      5        g s  snf rB   )r   r   r   r"   r   r#   r%   rD   rE   s        r   test_unaligned_data_64#OpenPGPTests.test_unaligned_data_64p   s    !^c)
$,,(9(94::F3=?:aq):?$,,(9(94::F+.sxx
?S0TU @rK   c                     g N r'   s    r   test_output_paramOpenPGPTests.test_output_paramx       r   c                     g rP   rQ   rR   s    r   test_output_param_same_buffer*OpenPGPTests.test_output_param_same_buffer{   rU   r   c                     g rP   rQ   rR   s    r   test_output_param_memoryview)OpenPGPTests.test_output_param_memoryview~   rU   r   c                     g rP   rQ   rR   s    r   test_output_param_neg"OpenPGPTests.test_output_param_neg   rU   r   rQ   N)__name__
__module____qualname____firstlineno__r   r"   aes_moder   	des3_moder   r   r   r   r   r   r-   r1   r7   r:   r?   rI   rM   rS   rW   rZ   r]   __static_attributes__rQ   r   r   r   r   -   s    H!!I Y+GY+GHb)F7A&Ej"-H	"	"13:VVr   r   c                        \ rS rSrS rS rSrg)TestVectors   c                    SnSnSnSnSn[        U5      n[        U5      n[        U5      n[        U5      n[        U5      n[        R                  " U[        R                  U5      nUR	                  U5      nU R                  US S U5        U R                  USS  U5        [        R                  " U[        R                  U5      nUR                  U5      nU R                  X5        g )N4ac18620270744fb4f647426c61636b43617457686974654361744dc6b9e1f095de609765c59983db5956ae4f63aea7405389d2ebb 5baa61e4c9b93f3f0682250b6cf8331b 3d7d3e62282add7eb203eeba5c800733$fd934601ef49cb58b6d9aebca6056bdb96efr!   )r   r   r   r"   r#   r%   r$   	r'   r    
ciphertextkeyr5   encrypted_ivr(   r*   r)   s	            r   test_aesTestVectors.test_aes   s    0 K	K
0/;i(	z*
nr] .c..3^^I&CR,/BC*-c..=^^J''r   c                    SnSnSnSnSn[        U5      n[        U5      n[        U5      n[        U5      n[        U5      n[        R                  " U[        R                  U5      nUR	                  U5      nU R                  US S U5        U R                  USS  U5        [        R                  " U[        R                  U5      nUR                  U5      nU R                  X5        g )N2ac1762037074324fb53ba3596f73656d69746556616c6c657929979238528357b90e2e0be549cb0b2d5999b9a4a447e5c5c7d07ade65b460f5ea9be35f9e14aa883a2048e3824aa616c0b2cd47e2afb8b7e4b06a7eef0b58050e8b904ar0   )r   r   r   r"   r#   r%   r$   ro   s	            r   	test_des3TestVectors.test_des3   s     I	I
@+i(	z*
nr] .#t00"5^^I&CR,/BC*-#t00,?^^J''r   rQ   N)r_   r`   ra   rb   rs   r{   re   rQ   r   r   rg   rg      s    +(Z(r   rg   c                 R    / nU[        [        5      -  nU[        [        5      -  nU$ rP   )r   r   rg   )configtestss     r   	get_testsr      s*    E	_\**E	_[))ELr   __main__c                  >    [         R                  " [        5       5      $ rP   )unittest	TestSuiter   rQ   r   r   <lambda>r      s    H&&y{3r   suite)defaultTest)r   binasciir   Crypto.SelfTest.st_commonr   Crypto.Util.py3compatr   Crypto.Cipherr   r   r   Crypto.Hashr	   r   Crypto.SelfTest.Cipher.test_CBCr   r   TestCaserg   r   r_   r   mainrQ   r   r   <module>r      su   >   5 ) ( (  8 ?U% UpI((## I(X   z3EMMg& r   