
    ip                     t   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	  S SK
JrJr  S SKJr  S SKJr  S	 r " S
 S\ R$                  5      r " S S\ R$                  5      r " S S\ R$                  5      r " S S\ R$                  5      r " S S\ R$                  5      rS SK
JrJrJrJrJr  \R9                  S\" \R<                  5      -   \\R<                  5        \R<                   H  r\R9                  S\" \5      -   \\5        M!     \R<                   H  r\R9                  S\" \5      -   \\5        M!     \R<                   H  r\R9                  S\" \5      -   \\5        M!     \R<                   H  r\R9                  S\" \5      -   \\5        M!     0 4S jr \!S:X  a  S r"\ RF                  " SS9  gg)    N)	unhexlify)list_test_cases)load_test_vectors_wycheproof)tobytesbchr)AESDES3)SHAKE128)strxorc                 Z    [         R                  " [        U 5      S9R                  U5      $ )N)data)r
   newr   read)taglengths     Z/var/www/html/trading/venv/lib/python3.13/site-packages/Crypto/SelfTest/Cipher/test_EAX.pyget_tag_randomr   +   s     <<WS\*//77    c                       \ rS rS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S rS rS rS rS rS rS rS rS rSrg)EaxTests/   key_128   key_192	nonce_128   data_128c                 b   [         R                  " U R                  [         R                  U R                  S9n[        SS5      nUR                  U5      n[         R                  " U R                  [         R                  U R                  S9nUR                  U5      nU R                  X$5        g )Nnonce	plaintexti@  )	r   r   r   MODE_EAXnonce_96r   encryptdecryptassertEqualselfcipherptctpt2s        r   test_loopback_128EaxTests.test_loopback_1286   st    s||4==IK2^^Bs||4==InnR !r   c                 b   [         R                  " U R                  [         R                  U R                  S9n[        SS5      nUR                  U5      n[         R                  " U R                  [         R                  U R                  S9nUR                  U5      nU R                  X$5        g )Nr   r!   i   )	r	   r   r   r"   r#   r   r$   r%   r&   r'   s        r   test_loopback_64EaxTests.test_loopback_64?   st    $,,T]]KK1^^B$,,T]]KnnR !r   c                    [         R                  " U R                  [         R                  5      nUR                  n[         R                  " U R                  [         R                  5      nUR                  nU R                  [        U5      S5        U R                  X#5        [         R                  " U R                  [         R                  U R                  5      nUR                  U R                  5      n[         R                  " U R                  [         R                  U R                  S9nU R                  XAR                  U R                  5      5        g )Nr   r   )r   r   r   r"   r    r&   lenassertNotEqualr#   r$   r   )r(   r)   nonce1nonce2r+   s        r   
test_nonceEaxTests.test_nonceH   s    s||4s||4Vb)F+s||T]]C^^DMM*s||4==I^^DMM:;r   c                 ~    U R                  [        [        R                  U R                  [        R
                  SS9  g )Ntest12345678r   )assertRaises	TypeErrorr   r   r   r"   r(   s    r   test_nonce_must_be_bytes!EaxTests.test_nonce_must_be_bytesW   s,    )SWWdllCLL / 	 	1r   c                 L   U R                  [        [        R                  U R                  [        R
                  SS9  [        SS5       HW  n[        R                  " U R                  [        R
                  [        S5      U-  S9nUR                  [        S5      5        MY     g )Nr   r         )	r;   
ValueErrorr   r   r   r"   ranger   r$   )r(   xr)   s      r   test_nonce_lengthEaxTests.test_nonce_length[   sp    *cggt||S\\ # 	 	% q#AWWT\\3<<tAw{KFNN47# r   c                     [         R                  " U R                  [         R                  U R                  S9nU R                  UR                  [         R                  5        g Nr   )r   r   r   r"   r#   r&   
block_sizer(   r)   s     r   test_block_size_128EaxTests.test_block_size_128d   s:    s||4==I**CNN;r   c                     [         R                  " U R                  [        R                  U R
                  S9nU R                  UR                  [         R                  5        g rI   )r	   r   r   r   r"   r#   r&   rJ   rK   s     r   test_block_size_64EaxTests.test_block_size_64h   s:    $,,DMMJ**DOO<r   c                    [         R                  " U R                  [         R                  U R                  S9nU R                  UR                  U R                  5        [         R                  " U R                  [         R                  5      R                  n[         R                  " U R                  [         R                  5      R                  nU R                  [        U5      S5        U R                  X#5        g )Nr   r   )	r   r   r   r"   r#   r&   r    r3   r4   )r(   r)   r5   r6   s       r   test_nonce_attributeEaxTests.test_nonce_attributel   s    s||4==It}}5 s||4::s||4::Vb)F+r   c           	         U R                  [        [        R                  U R                  [        R
                  U R                  S5        U R                  [        [        R                  U R                  [        R
                  U R                  SS9  [        R                  " U R                  [        R
                  U R                  SS9  g )N   )r    unknownF)r    	use_aesni)r;   r<   r   r   r   r"   r#   r=   s    r   test_unknown_parameters EaxTests.test_unknown_parametersv   s    )SWWdllCLL--	,)SWWdllCLL $q 	 	:
 	cll$--	!r   c                     S H^  n[         R                  " U R                  [         R                  U R                  S9n[        X!5      " S5      nU R                  US5        M`     g )Nr$   r%   r   r   )r   r   r   r"   r#   getattrr&   )r(   funcr)   results       r   test_null_encryption_decryption(EaxTests.test_null_encryption_decryption   sI    (DWWT\\3<<t}}MFV*3/FVS) )r   c                    [         R                  " U R                  [         R                  U R                  S9nUR                  S5        U R                  [        UR                  S5        [         R                  " U R                  [         R                  U R                  S9nUR                  S5        U R                  [        UR
                  S5        g )Nr   r   )	r   r   r   r"   r#   r$   r;   r<   r%   rK   s     r   test_either_encrypt_or_decrypt'EaxTests.test_either_encrypt_or_decrypt   s    s||4==Is)V^^S9s||4==Is)V^^S9r   c                 h   [         R                  " U R                  [         R                  U R                  S9nU R                  [        UR                  S5        [         R                  " U R                  [         R                  U R                  S9nU R                  [        UR                  S5        g )Nr   ztest1234567890-*)	r   r   r   r"   r#   r;   r<   r$   r%   rK   s     r   test_data_must_be_bytes EaxTests.test_data_must_be_bytes   sl    s||4==I)V^^5HIs||4==I)V^^5HIr   c           	         U R                  [        [        R                  U R                  [        R
                  U R                  SS9  U R                  [        [        R                  U R                  [        R
                  U R                  SS9  [        SS5       Ht  n[        R                  " U R                  [        R
                  U R                  US9nUR                  U R                  5      u  p4U R                  [        U5      U5        Mv     [        R                  " U R                  [        R
                  U R                  S9nUR                  U R                  5      u  p4U R                  [        U5      S5        g )NrA   )r    mac_len      r   r   )r;   rC   r   r   r   r"   r#   rD   encrypt_and_digestr   r&   r3   )r(   rh   r)   _macs        r   test_mac_lenEaxTests.test_mac_len   s   *cggt||S\\ $s 	 	<*cggt||S\\ $t 	 	= Q'GWWT\\3<<t}}%,.F..t}}=FASXw/	 ( s||4==I**4==9S2&r   c                    SSK Jn  [        R                  " U R                  [        R
                  U R                  S9nUR                  U R                  5      u  p4U" US5      n[        R                  " U R                  [        R
                  U R                  S9nU R                  [        UR                  UU5        g )Nr   )strxor_cr   rA   )Crypto.Util.strxorrq   r   r   r   r"   r#   rk   r   r;   rC   decrypt_and_verify)r(   rq   r)   r+   rm   invalid_macs         r   test_invalid_macEaxTests.test_invalid_mac   s    /s||4==I++DMM:sD)s||4==I*f&?&?%	'r   c                 x   [         R                  " U R                  [         R                  U R                  S9nUR                  5       nU R                  UR                  5       [        U5      5        [         R                  " U R                  [         R                  U R                  S9nUR                  U5        g rI   )
r   r   r   r"   r#   	hexdigestr&   digestr   	hexverify)r(   r)   mac_hexs      r   test_hex_macEaxTests.test_hex_mac   su    s||4==I""$)G*<=s||4==I!r   c                    [        SS5      n[        SS5      n[        R                  " U R                  [        R                  U R
                  S9nUR                  U5        UR                  U5      u  pES nS H  n[        R                  " U R                  [        R                  U R
                  S9nU" X5       H  nUR                  U5        M     Sn	U" XG5       H  nXR                  U5      -  n	M     U R                  X)5        UR                  U5        M     S H  n[        R                  " U R                  [        R                  U R
                  S9nU" X5       H  nUR                  U5        M     Sn
U" X'5       H  nXR                  U5      -  n
M     U R                  XJ5        U R                  UR                  5       U5        M     g )Nzauthenticated data   r!   r   c                 b    [        S[        U 5      U5       Vs/ s H	  o X"U-    PM     sn$ s  snf )Nr   )rD   r3   )r   chunk_lengthis      r   break_up.EaxTests.test_message_chunks.<locals>.break_up   s?    49!SY 5" # 5"q\>* 5" # # #s   ,)
rA   rj      rU   
      r   (   P   rB   r   )r   r   r   r   r"   r#   updaterk   r%   r&   verifyr$   ry   )r(   	auth_datar!   r)   
ciphertextref_macr   r   chunkr,   ct2s              r   test_message_chunksEaxTests.test_message_chunks   su    ##7=	";4	s||4==Ii $77	B
	#
 @LWWT\\3<<t}}MF!):e$ ;C!*;~~e,, <Y,MM'" @ @LWWT\\3<<t}}MF!):e$ ;C!):~~e,, ;Z-V]]_g6 @r   c                    [        U R                  5      n[        U R                  5      n[        U R                  5      n[        U R                  5      n[        R
                  " U R                  [        R                  U R                  S9nUR                  U R                  5        UR                  U R                  5      nUR                  5       n[        R
                  " U[        R                  US9nSUS S& SUS S& UR                  U5        SUS S& UR                  U5      n	SUS S& UR                  5       n
U R                  Xi5        U R                  Xz5        U R                  UR                  UR                  5        [        U R                  5      n[        U R                  5      n[        U R                  5      n[        U5      n[        U5      nA[        R
                  " U[        R                  US9nSUS S& SUS S& UR                  U5        SUS S& UR                  U5      nSUS S& UR                  U5        U R                  XR                  5        g Nr   s   r   s   )	bytearrayr   r#   r   r   r   r"   r   r$   ry   r&   r    r%   r   )r(   key_banonce_ba	header_badata_bacipher1r+   r   cipher2ct_testtag_testct_batag_bacipher3pt_tests                  r   test_bytearrayEaxTests.test_bytearray   s    4<<(T]]+dmm,	DMM*''$,,,, $/ 	t}}%__T]]+nn''&,, (* %r
&!y!'	"1//'*%>>#%'6 4<<(T]]+dmm,	"3''&,, (* %r
&!y!'	"1//%(#bq	v--0r   c                 f   [        [        U R                  5      5      n[        [        U R                  5      5      n[        [        U R                  5      5      n[        [        U R                  5      5      n[
        R                  " U R                  [
        R                  U R                  S9nUR                  U R                  5        UR                  U R                  5      nUR                  5       n[
        R                  " U[
        R                  US9nSUS S& SUS S& UR                  U5        SUS S& UR                  U5      n	SUS S& UR                  5       n
U R                  Xi5        U R                  Xz5        U R                  UR                  UR                  5        [        [        U R                  5      5      n[        [        U R                  5      5      n[        [        U R                  5      5      n[        [        U5      5      n[        [        U5      5      nA[
        R                  " U[
        R                  US9nSUS S& SUS S& UR                  U5        SUS S& UR                  U5      nSUS S& UR                  U5        U R                  XR                  5        g r   )
memoryviewr   r   r#   r   r   r   r"   r   r$   ry   r&   r    r%   r   )r(   key_mvnonce_mv	header_mvdata_mvr   r+   r   r   r   r   ct_mvtag_mvr   r   s                  r   test_memoryviewEaxTests.test_memoryview  s    Idll34i67y78	Yt}}56''$,,,, $/ 	t}}%__T]]+nn''&,, (* %r
&!y!'	"1//'*%>>#%'6 Idll34i67y78	9R=)IcN+''&,, (* %r
&!y!'	"1//%(#bq	v--0r   c                 H   Sn[         R                  " U R                  [         R                  U R                  S9nUR                  U5      nUR                  5       n[        S5      n[         R                  " U R                  [         R                  U R                  S9nUR                  XS9nU R                  X55        U R                  US 5        [         R                  " U R                  [         R                  U R                  S9nUR                  X5S9nU R                  X5        U R                  US 5        [         R                  " U R                  [         R                  U R                  S9nUR                  XS9u  pgU R                  X55        U R                  US 5        U R                  XG5        [         R                  " U R                  [         R                  U R                  S9nUR                  X4US9nU R                  X5        U R                  US 5        g Ns   55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555r   rB   output)r   r   r   r"   r#   r$   ry   r   r&   r%   rk   rs   )r(   r*   r)   r+   r   r   restag_outs           r   test_output_paramEaxTests.test_output_paramL  s   s||4==I^^Bmmo3s||4==InnRn/$d#s||4==InnRn/$d#s||4==I000C$d#&s||4==I'''?$d#r   c                 "   Sn[         R                  " U R                  [         R                  U R                  S9nUR                  U5      n[        [        S5      5      n[         R                  " U R                  [         R                  U R                  S9nUR                  XS9  U R                  X45        [         R                  " U R                  [         R                  U R                  S9nUR                  X4S9  U R                  X5        g r   )
r   r   r   r"   r#   r$   r   r   r&   r%   )r(   r*   r)   r+   r   s        r   test_output_param_memoryview%EaxTests.test_output_param_memoryviewi  s    s||4==I^^BIcN+s||4==Ir)$s||4==Ir)$r   c                    SnSU-  n[         R                  " U R                  [         R                  U R                  S9nUR                  U5      n[         R                  " U R                  [         R                  U R                  S9nU R                  [        UR
                  USU-  S9  [         R                  " U R                  [         R                  U R                  S9nU R                  [        UR                  USU-  S9  [        US-
  5      n[         R                  " U R                  [         R                  U R                  S9nU R                  [        UR
                  X%S9  [         R                  " U R                  [         R                  U R                  S9nU R                  [        UR                  XES9  g )Nr      5r      0r   rA   )r   r   r   r"   r#   r$   r;   r<   r%   r   rC   )r(   LEN_PTr*   r)   r+   shorter_outputs         r   test_output_param_negEaxTests.test_output_param_negx  s2   F]s||4==I^^Bs||4==I)V^^RvNs||4==I)V^^RvN"6A:.s||4==I*fnnbPs||4==I*fnnbPr    N)__name__
__module____qualname____firstlineno__r   r   r   r#   r   r-   r0   r7   r>   rF   rL   rO   rR   rX   r_   rb   re   rn   ru   r|   r   r   r   r   r   r   __static_attributes__r   r   r   r   r   /   s    Y+GY+Gk2.Hj"-H""<1$<=,	!*:J'&	'"'7R11f11f$:%Qr   r   c                       \ rS rS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)EaxFSMTestsi  r   r   r   r   r   c                 ~   [         R                  " U R                  [         R                  U R                  S9nUR                  U R                  5      nUR                  5       n[         R                  " U R                  [         R                  U R                  S9nUR                  U5        UR                  U5        g rI   )
r   r   r   r"   r#   r$   r   ry   r%   r   r(   r)   r+   rm   s       r   -test_valid_init_encrypt_decrypt_digest_verify9EaxFSMTests.test_valid_init_encrypt_decrypt_digest_verify  s}     s||#}}.^^DMM*mmo s||#}}.rcr   c                    [         R                  " U R                  [         R                  U R                  S9nUR                  U R                  5        UR                  5       n[         R                  " U R                  [         R                  U R                  S9nUR                  U R                  5        UR                  U5        g rI   )	r   r   r   r"   r#   r   r   ry   r   r(   r)   rm   s      r   $test_valid_init_update_digest_verify0EaxFSMTests.test_valid_init_update_digest_verify  s     s||#}}.dmm$mmo s||#}}.dmm$cr   c                    [         R                  " U R                  [         R                  U R                  S9nUR                  U R                  5        UR                  U R                  5      nUR                  5       n[         R                  " U R                  [         R                  U R                  S9nUR                  U R                  5        UR                  U5        UR                  U5        g rI   )r   r   r   r"   r#   r   r   r$   ry   r%   r   r   s       r   test_valid_full_path EaxFSMTests.test_valid_full_path  s     s||#}}.dmm$^^DMM*mmo s||#}}.dmm$rcr   c                     [         R                  " U R                  [         R                  U R                  S9nUR                  5         g rI   )r   r   r   r"   r#   ry   rK   s     r   test_valid_init_digest"EaxFSMTests.test_valid_init_digest  s)    s||4==Ir   c                 &   [         R                  " U R                  [         R                  U R                  S9nUR                  5       n[         R                  " U R                  [         R                  U R                  S9nUR                  U5        g rI   )r   r   r   r"   r#   ry   r   r   s      r   test_valid_init_verify"EaxFSMTests.test_valid_init_verify  sU    s||4==Immos||4==Icr   c                    S H  nS SU R                   U R                   S-   4 H  nUc  S nO[        U5      n[        R                  " U R                  [        R
                  U R                  S9nUb  UR                  U5        [        XA5      nU" U R                   5        U" U R                   5        U" U R                   5        U" U R                   5        M     M     g )Nr[   s   333   3r   )	r   r3   r   r   r   r"   r#   r   r\   )r(   method_namer   	assoc_lenr)   methods         r   &test_valid_multiple_encrypt_or_decrypt2EaxFSMTests.test_valid_multiple_encrypt_or_decrypt  s    /K"FDMM"mmd24	$ $I #IIs||'+}}6(MM), 5t}}%t}}%t}}%t}}%4 0r   c                    [         R                  " U R                  [         R                  U R                  S9nUR                  U R                  5        UR                  5       n[        S5       H"  nU R                  X!R                  5       5        M$     [         R                  " U R                  [         R                  U R                  S9nUR                  U R                  5        [        S5       H  nUR                  U5        M     g )Nr         )r   r   r   r"   r#   r   r   ry   rD   r&   r   )r(   r)   	first_macrE   s       r   $test_valid_multiple_digest_or_verify0EaxFSMTests.test_valid_multiple_digest_or_verify  s    s||4==Idmm$MMO	qAY8  s||4==Idmm$qAMM)$ r   c                    [         R                  " U R                  [         R                  U R                  S9nUR                  U R                  5        UR                  U R                  5      u  p#[         R                  " U R                  [         R                  U R                  S9nUR                  U R                  5        UR                  X#5      nU R                  U R                  U5        g rI   )
r   r   r   r"   r#   r   r   rk   rs   r&   )r(   r)   r+   rm   r*   s        r   0test_valid_encrypt_and_digest_decrypt_and_verify<EaxFSMTests.test_valid_encrypt_and_digest_decrypt_and_verify  s    s||4==Idmm$++DMM: s||4==Idmm$&&r/+r   c           	      j   S H  u  pS H  n[         R                  " U R                  [         R                  U R                  S9nU(       a  UR                  U R                  5        [        XA5      " U R                  5        U R                  [        [        XB5      U R                  5        M     M     g )N)r[   )r%   r$   )TFr   )
r   r   r   r"   r#   r   r   r\   r;   r<   )r(   method1_namemethod2_nameassoc_data_presentr)   s        r   #test_invalid_mixing_encrypt_decrypt/EaxFSMTests.test_invalid_mixing_encrypt_decrypt  s    +C&L&3"s||'+}}6%MM$--0-dmm<!!)WV-J"&--1 '4+Cr   c                    S H  n[         R                  " U R                  [         R                  U R                  S9nUR                  U R                  5        UR                  5         U R                  [        [        X!5      U R                  5        [         R                  " U R                  [         R                  U R                  S9nUR                  U R                  5        M     g )N)r$   r   r   )r   r   r   r"   r#   r$   r   ry   r;   r<   r\   rk   )r(   r   r)   s      r   +test_invalid_encrypt_or_update_after_digest7EaxFSMTests.test_invalid_encrypt_or_update_after_digest  s    .KWWT\\3<<t}}MFNN4==)MMOi)E"mm- WWT\\3<<t}}MF%%dmm4 /r   c                    [         R                  " U R                  [         R                  U R                  S9nUR                  U R                  5      nUR                  5       nS H  n[         R                  " U R                  [         R                  U R                  S9nUR                  U5        UR                  U5        U R                  [        [        X5      U R                  5        [         R                  " U R                  [         R                  U R                  S9nUR                  X#5        U R                  [        [        X5      U R                  5        M     g )Nr   )r%   r   )r   r   r   r"   r#   r$   r   ry   r%   r   r;   r<   r\   rs   )r(   r)   r+   rm   r   s        r   +test_invalid_decrypt_or_update_after_verify7EaxFSMTests.test_invalid_decrypt_or_update_after_verify  s    s||4==I^^DMM*mmo.KWWT\\3<<t}}MFNN2MM#i)E"mm- WWT\\3<<t}}MF%%b.i)E"mm- /r   r   N)r   r   r   r   r   r   r#   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s]    Y+Gk2.Hj"-H 
&$%
,1	5-r   r   c                       \ rS rSrSr/ SQr\ V VVVs/ s H  o Vs/ s H  n[        U5      PM     snPM      snnnn rS rSr	gs  snf s  snnnn f )TestVectorsPaperi!  z`Class exercising the EAX test vectors found in
http://www.cs.ucdavis.edu/~rogaway/papers/eax.pdf)
)6bfb914fd07eae6b r    e037830e8389f27b025a2d6527e79d01 233952dee4d5ed5f9b9c6d6ff80ff478 62EC67F9C3A4A407FCB2A8C49031A8B3)fa3bfd4806eb53faf7fb19dd 5c4c9331049d0bdab0277408f67967e5 91945d3f4dcbee0bf45ef52255f095a4 BECAF043B0A23D843194BA972C66DEBD)234a3463c1264ac6
1a47cb4933
d851d5bae0 3a59f238a23e39199dc9266626c40f80 01f74ad64077f2e704c0f60ada3dd523 70C3DB4F0D26368400A10ED05D2BFF5E)33cce2eabff5a79d
481c9e39b1
632a9d131a d4c168a4225d8e1ff755939974a7bede d07cf6cbb7f313bdde66b727afd3c5e8 8408DFFF3C1A2B1292DC199E46B7D617)aeb96eaebe2970e940d0c07da5e4071dfe16c675 cb0677e536f73afe6a14b74ee49844dd 35b6d0580005bbc12b0587124557d2c2 FDB6B06676EEDC5C61D74276E1F8E816)d4482d1ca78dce0f4de3b35c3fc039245bd1fb7d835bb4f15d743e350e728414 abb8644fd6ccb86947c5e10590210a4f bd8e6e11475e60b268784c38c62feb22 6EAC5C93072D8E8513F750935E46DA1B)65d2017990d62528"8b0a79306c9ce7ed99dae4f87f8dd61636"02083e3979da014812f59f11d52630da30 137327d10649b0aa6e1c181db617d7f2 7c77d6e813bed5ac98baa417477a2e7d 1A8C98DCD73D38393B2BF1569DEEFC19)54b9f04e6a09189a$1bda122bce8a8dbaf1877d962b8592dd2d56$2ec47b2c4954a489afc7ba4897edcdae8cc3 3b60450599bd02c96382902aef7f832a 5fff20cafab119ca2fc73549e20f5b0d DDE59B97D722156D4D9AFF2BC7559826)899a175897561d7e$6cf36720872b8513f6eab1a8a44438d5ef11$0de18fd0fdd91e7af19f1d8ee8733938b1e8 e7f6d2231618102fdb7fe55ff1991700 a4a4782bcffd3ec5e7ef6d8c34a56123 B781FCF2F75FA5A8DE97A9CA48E522EC)126735fcc320d25a*ca40d7446e545ffaed3bd12a740a659ffbbb3ceab7*cb8920f87a6c75cff39627b56e3ed197c552d295a7 cfc46afc253b4652b1af3795b124ab6e 8395fcf1e95bebd697bd010bc766aac3 22E7ADD93CFC6393C57EC0B3C17D6B44c           	         U R                    H  u  pp4pV[        R                  " U[        R                  U[	        U5      S9nUR                  U5        UR                  U5      u  pU R                  X85        U R                  XI5        [        R                  " U[        R                  U[	        U5      S9nUR                  U5        UR                  X45      n
U R                  X*5        M     g )Nrh   )	test_vectorsr   r   r"   r3   r   rk   r&   rs   )r(   
assoc_datar*   r+   rm   keyr    r)   r   mac2r,   s              r   runTestTestVectorsPaper.runTestx  s    373D3D/JBSWWS#,,s3xHFMM*%11"5ICR%S' WWS#,,s3xHFMM*%++B4CR% 4Er   r   N)
r   r   r   r   __doc__test_vectors_hexr   r4  r8  r   ).0tvrE   r   s   0000r   r   r   !  sJ    <Ob :JJ9I22.2aYq\2.9IJL& /Js   	A

AA

A

r   c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TestVectorsWycheproofi  c                 \    [         R                  R                  U 5        Xl        SU l        g )NNone)unittestTestCase__init___wycheproof_warnings_id)r(   wycheproof_warningss     r   rD  TestVectorsWycheproof.__init__  s#    ""4($7!r   c                 0    S n[        SSSSU0S9U l        g )Nc                     U S   S-  $ )NtagSize   r   )groups    r   
filter_tag/TestVectorsWycheproof.setUp.<locals>.filter_tag  s    #q((r   )Cipher
wycheproofzaes_eax_test.jsonzWycheproof EAXtag_size)	group_tag)r   r=  )r(   rN  s     r   setUpTestVectorsWycheproof.setUp  s'    	) //G/B/?:Dj9QSr   c                     U R                   $ N)rF  r=   s    r   shortDescription&TestVectorsWycheproof.shortDescription  s    xxr   c                     UR                   (       aE  U R                  (       a3  SS KnUR                  SU R                  < SUR
                  < S35        g g g )Nr   zWycheproof warning: z ())warningrE  warningswarnrF  comment)r(   r=  r]  s      r   r^  TestVectorsWycheproof.warn  s4    ::$33MM488RZZPQ 4:r   c                 j   S[        UR                  5      -   U l         [        R                  " UR
                  [        R                  UR                  UR                  S9nUR                  UR                  5        UR                  UR                  5      u  pEUR                  (       aH  U R!                  XAR"                  5        U R!                  XQR$                  5        U R'                  U5        g g ! [         a4  n[        UR                  5      S:X  a  S[        U5      ;   d   e S nAg S nAff = f)NzWycheproof Encrypt EAX Test #r3  r   Nonce cannot be empty)stridrF  r   r   r6  r"   ivrR  rC   r3   r   aadrk   msgvalidr&   r+   r   r^  )r(   r=  r)   er+   r   s         r   test_encrypt"TestVectorsWycheproof.test_encrypt  s    2SZ?	WWRVVS\\255"++NF
 	bff++BFF388R'S&&)IIbM   	ruu:?'>#a&'HHH	s   AC4 4
D2>*D--D2c                    S[        UR                  5      -   U l         [        R                  " UR
                  [        R                  UR                  UR                  S9nUR                  UR                  5         UR                  UR                  UR                  5      nUR                   (       d   eU R#                  XAR$                  5        U R'                  U5        g ! [         a4  n[        UR                  5      S:X  a  S[        U5      ;   d   e S nAg S nAff = f! [         a    UR                   (       a   e g f = f)NzWycheproof Decrypt EAX Test #r3  r   rb  )rc  rd  rF  r   r   r6  r"   re  rR  rC   r3   r   rf  rs   r+   r   rh  r&   rg  r^  )r(   r=  r)   ri  r*   s        r   test_decrypt"TestVectorsWycheproof.test_decrypt  s    2SZ?	WWRVVS\\255"++NF
 	bff	**255"&&9B 88O8R(IIbM  	ruu:?'>#a&'HHH	  	 xx<x	 s*   AC$ >&D% $
D".*DD"%EEc                    S[        UR                  5      -   U l        [        UR                  5      S:X  d  [        UR
                  5      S:  a  g [        R                  " UR                  [        R                  UR                  UR                  S9nUR                  UR                  5        [        UR
                  S[        UR
                  5      S-
  -  S-   5      nU R                  [        UR                   X1R"                  5        g )Nz%Wycheproof Corrupt Decrypt EAX Test #r   rA   r3         )rc  rd  rF  r3   re  r+   r   r   r6  r"   rR  r   rf  r   r;   rC   rs   r   )r(   r=  r)   
ct_corrupts       r   test_corrupt_decrypt*TestVectorsWycheproof.test_corrupt_decrypt  s    :SZGruu:?c"%%j1nruubkkJbffBEE7c"%%j1n#=#GH
*f&?&?VVTr   c                     U R                    H6  nU R                  U5        U R                  U5        U R                  U5        M8     g rW  )r=  rj  rm  rs  )r(   r=  s     r   r8  TestVectorsWycheproof.runTest  s:    ''Bb!b!%%b) r   )rF  rE  r=  N)r   r   r   r   rD  rT  rX  r^  rj  rm  rs  r8  r   r   r   r   r?  r?    s-    
SR
 &U*r   r?  c                   $    \ rS rSr\S 5       rSrg)TestOtherCiphersi  c                 0    X#4S jn[        U SU-   U5        g )Nc                    UR                  [        SU5      UR                  SS9nUR                  S5      u  pEUR                  [        SU5      UR                  SS9nUR	                  XE5      nU R                  SU5        g )Nr)   s   noncer   s	   plaintext)r   r   r"   rk   rs   r&   )r(   factorykey_sizer)   r+   rm   r,   s          r   test_template3TestOtherCiphers.create_test.<locals>.test_template  s    [[(!C!(!1!1'/ ! 1F //=GB[[(!C!(!1!1'/ ! 1F ++B4C\3/r   test_)setattr)clsnamer{  r|  r}  s        r   create_testTestOtherCiphers.create_test  s     )0 	0 	Wt^]3r   r   N)r   r   r   r   classmethodr  r   r   r   r   rx  rx    s    4 4r   rx  )DESr	   ARC2CASTBlowfishDES_DES3_ARC2_CAST_	Blowfish_c                     U R                  S5      n/ nU[        [        5      -  nU[        [        5      -  nU[	        5       /-  nU[        U5      /-  nU[        [        5      -  nU$ )NrG  )getr   r   r   r   r?  rx  )configrG  testss      r   	get_testsr    so     **%:;E	_X&&E	_[))E	!##E	$%89;;E	_-..ELr   __main__c                  >    [         R                  " [        5       5      $ rW  )rB  	TestSuiter  r   r   r   <lambda>r    s    H&&y{3r   suite)defaultTest)$rB  binasciir   Crypto.SelfTest.st_commonr   Crypto.SelfTest.loaderr   Crypto.Util.py3compatr   r   Crypto.Cipherr   r	   Crypto.Hashr
   rr   r   r   rC  r   r   r   r?  rx  r  r  r  r  r  rc  r|  ksr  r   r  mainr   r   r   <module>r     s  >   5 ? / #   %8ZQx   ZQz
R-(## R-jd&x(( d&NJ*H-- J*Z4x(( 4* : 9   Vc#,,&77cll K
--B  3r7!2D"= 
--B  3r7!2D"= 
--B  3r7!2D"= 


B  s2w!6"E   	 z3EMMg& r   