
    ,hp                     f   d dl Z d dlmZ d dl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 dlmZ d	 Z G d
 de j$                        Z G d de j$                        Z G d de j$                        Z G d de j$                        Z G d de j$                        Zd dl
mZmZmZmZmZ ej9                  d eej<                        z   eej<                         ej<                  D ]  Zej9                  d ee      z   ee         ej<                  D ]  Zej9                  d ee      z   ee         ej<                  D ]  Zej9                  d ee      z   ee         ej<                  D ]  Zej9                  d ee      z   ee         i fdZ e!dk(  rd Z" e jF                  d       yy)    N)	unhexlify)list_test_cases)load_test_vectors_wycheproof)tobytesbchr)AESDES3)SHAKE128)strxorc                 ^    t        j                  t        |             j                  |      S )N)data)r
   newr   read)taglengths     a/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/Crypto/SelfTest/Cipher/test_EAX.pyget_tag_randomr   +   s     <<WS\*//77    c                       e Zd Z edd      Z edd      Z edd      Z edd      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d Zd Zd Zd Zd Zd Zd Zd Zd Zy)EaxTestskey_128   key_192	nonce_128   data_128c                 l   t        j                  | j                  t         j                  | j                        }t        dd      }|j                  |      }t        j                  | j                  t         j                  | j                        }|j                  |      }| j                  ||       y )Nnonce	plaintexti@  )	r   r   r   MODE_EAXnonce_96r   encryptdecryptassertEqualselfcipherptctpt2s        r   test_loopback_128zEaxTests.test_loopback_1286   sv    s||4==IK2^^Bs||4==InnR S!r   c                 l   t        j                  | j                  t         j                  | j                        }t        dd      }|j                  |      }t        j                  | j                  t         j                  | j                        }|j                  |      }| j                  ||       y )Nr   r    i   )	r	   r   r   r!   r"   r   r#   r$   r%   r&   s        r   test_loopback_64zEaxTests.test_loopback_64?   sv    $,,T]]KK1^^B$,,T]]KnnR S!r   c                    t        j                  | j                  t         j                        }|j                  }t        j                  | j                  t         j                        }|j                  }| j                  t        |      d       | j                  ||       t        j                  | j                  t         j                  | j                        }|j                  | j                        }t        j                  | j                  t         j                  | j                        }| j                  ||j                  | j                               y )Nr   r   )r   r   r   r!   r   r%   lenassertNotEqualr"   r#   r   )r'   r(   nonce1nonce2r*   s        r   
test_noncezEaxTests.test_nonceH   s    s||4s||4Vb)FF+s||T]]C^^DMM*s||4==IV^^DMM:;r   c                     | j                  t        t        j                  | j                  t        j
                  d       y )Ntest12345678r   )assertRaises	TypeErrorr   r   r   r!   r'   s    r   test_nonce_must_be_bytesz!EaxTests.test_nonce_must_be_bytesW   s,    )SWWdllCLL / 	 	1r   c                 R   | j                  t        t        j                  | j                  t        j
                  d       t        dd      D ]X  }t        j                  | j                  t        j
                  t        d      |z        }|j                  t        d             Z y )Nr   r         )	r7   
ValueErrorr   r   r   r!   ranger   r#   )r'   xr(   s      r   test_nonce_lengthzEaxTests.test_nonce_length[   su    *cggt||S\\ # 	 	% q# 	$AWWT\\3<<tAw{KFNN47#	$r   c                     t        j                  | j                  t         j                  | j                        }| j                  |j                  t         j                         y Nr   )r   r   r   r!   r"   r%   
block_sizer'   r(   s     r   test_block_size_128zEaxTests.test_block_size_128d   s:    s||4==I**CNN;r   c                     t        j                  | j                  t        j                  | j
                        }| j                  |j                  t         j                         y rC   )r	   r   r   r   r!   r"   r%   rD   rE   s     r   test_block_size_64zEaxTests.test_block_size_64h   s:    $,,DMMJ**DOO<r   c                    t        j                  | j                  t         j                  | j                        }| j                  |j                  | j                         t        j                  | j                  t         j                        j                  }t        j                  | j                  t         j                        j                  }| j                  t        |      d       | j                  ||       y )Nr   r   )	r   r   r   r!   r"   r%   r   r0   r1   )r'   r(   r2   r3   s       r   test_nonce_attributezEaxTests.test_nonce_attributel   s    s||4==It}}5 s||4::s||4::Vb)FF+r   c                    | j                  t        t        j                  | j                  t        j
                  | j                  d       | j                  t        t        j                  | j                  t        j
                  | j                  d       t        j                  | j                  t        j
                  | j                  d       y )N   )r   unknownF)r   	use_aesni)r7   r8   r   r   r   r!   r"   r9   s    r   test_unknown_parametersz EaxTests.test_unknown_parametersv   s    )SWWdllCLL--	,)SWWdllCLL $q 	 	:
 	cll$--	!r   c                     dD ]`  }t        j                  | j                  t         j                  | j                        } t        ||      d      }| j                  |d       b y )Nr#   r$   r   r   )r   r   r   r!   r"   getattrr%   )r'   funcr(   results       r   test_null_encryption_decryptionz(EaxTests.test_null_encryption_decryption   sR    ( 	*DWWT\\3<<t}}MF*WVT*3/FVS)	*r   c                    t        j                  | j                  t         j                  | j                        }|j                  d       | j                  t        |j                  d       t        j                  | j                  t         j                  | j                        }|j                  d       | j                  t        |j
                  d       y )Nr   r   )	r   r   r   r!   r"   r#   r7   r8   r$   rE   s     r   test_either_encrypt_or_decryptz'EaxTests.test_either_encrypt_or_decrypt   s    s||4==Is)V^^S9s||4==Is)V^^S9r   c                 p   t        j                  | j                  t         j                  | j                        }| j                  t        |j                  d       t        j                  | j                  t         j                  | j                        }| j                  t        |j                  d       y )Nr   ztest1234567890-*)	r   r   r   r!   r"   r7   r8   r#   r$   rE   s     r   test_data_must_be_bytesz EaxTests.test_data_must_be_bytes   sl    s||4==I)V^^5HIs||4==I)V^^5HIr   c                     | j                  t        t        j                  | j                  t        j
                  | j                  d       | j                  t        t        j                  | j                  t        j
                  | j                  d       t        dd      D ]v  }t        j                  | j                  t        j
                  | j                  |      }|j                  | j                        \  }}| j                  t        |      |       x t        j                  | j                  t        j
                  | j                        }|j                  | j                        \  }}| j                  t        |      d       y )Nr<   )r   mac_len      r   r   )r7   r>   r   r   r   r!   r"   r?   encrypt_and_digestr   r%   r0   )r'   r[   r(   _macs        r   test_mac_lenzEaxTests.test_mac_len   s   *cggt||S\\ $s 	 	<*cggt||S\\ $t 	 	= Q' 	0GWWT\\3<<t}}%,.F..t}}=FAsSXw/		0 s||4==I**4==93S2&r   c                    ddl m} t        j                  | j                  t        j
                  | j                        }|j                  | j                        \  }} ||d      }t        j                  | j                  t        j
                  | j                        }| j                  t        |j                  ||       y )Nr   )strxor_cr   r<   )Crypto.Util.strxorrc   r   r   r   r!   r"   r^   r   r7   r>   decrypt_and_verify)r'   rc   r(   r*   r`   invalid_macs         r   test_invalid_maczEaxTests.test_invalid_mac   s    /s||4==I++DMM:CsD)s||4==I*f&?&?%	'r   c                    t        j                  | j                  t         j                  | j                        }|j                         }| j                  |j                         t        |             t        j                  | j                  t         j                  | j                        }|j                  |       y rC   )
r   r   r   r!   r"   	hexdigestr%   digestr   	hexverify)r'   r(   mac_hexs      r   test_hex_maczEaxTests.test_hex_mac   su    s||4==I""$)G*<=s||4==I!r   c                    t        dd      }t        dd      }t        j                  | j                  t        j                  | j
                        }|j                  |       |j                  |      \  }}d }dD ]  }t        j                  | j                  t        j                  | j
                        } |||      D ]  }|j                  |        d}	 |||      D ]  }|	|j                  |      z  }	 | j                  ||	       |j                  |        dD ]  }t        j                  | j                  t        j                  | j
                        } |||      D ]  }|j                  |        d}
 |||      D ]  }|
|j                  |      z  }
 | j                  ||
       | j                  |j                         |        y )Nzauthenticated data   r    r   c                 `    t        dt        |       |      D cg c]
  }| |||z     c}S c c}w )Nr   )r?   r0   )r   chunk_lengthis      r   break_upz.EaxTests.test_message_chunks.<locals>.break_up   s9    49!SY 5" #qD1\>* # # #s   +)
r<   r]      rL   
      r   (   P   r=   r   )r   r   r   r   r!   r"   updater^   r$   r%   verifyr#   rj   )r'   	auth_datar    r(   
ciphertextref_macrs   rq   chunkr+   ct2s              r   test_message_chunkszEaxTests.test_message_chunks   s    ##7=	";4	s||4==Ii $77	B
G	#
 @ 
	#LWWT\\3<<t}}MF!)\: %e$%C!*l; -v~~e,,-Y,MM'"
	# @ 
	7LWWT\\3<<t}}MF!)\: %e$%C!)\: -v~~e,,-Z-V]]_g6
	7r   c                    t        | j                        }t        | j                        }t        | j                        }t        | j                        }t	        j
                  | j                  t        j                  | j                        }|j                  | j                         |j                  | j                        }|j                         }t	        j
                  |t        j                  |      }d|d d d|d d |j                  |       d|d d |j                  |      }	d|d d |j                         }
| j                  ||	       | j                  ||
       | j                  |j                  |j                         t        | j                        }t        | j                        }t        | j                        }t        |      }t        |      }~t	        j
                  |t        j                  |      }d|d d d|d d |j                  |       d|d d |j                  |      }d|d d |j                  |       | j                  || j                         y Nr   s   rt   s   )	bytearrayr   r"   r   r   r   r!   ry   r#   rj   r%   r   r$   rz   )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_bytearrayzEaxTests.test_bytearray   s    4<<(T]]+dmm,	DMM*''$,,,, $/ 	t}}%__T]]+nn''&,, (* %r
&!y!'	"1//'*%>>#W%h'6 4<<(T]]+dmm,	"3''&,, (* %r
&!y!'	"1//%(#bq	v$--0r   c                 x   t        t        | j                              }t        t        | j                              }t        t        | j                              }t        t        | j                              }t        j                  | j                  t
        j                  | j                        }|j                  | j                         |j                  | j                        }|j                         }t        j                  |t
        j                  |      }d|d d d|d d |j                  |       d|d d |j                  |      }	d|d d |j                         }
| j                  ||	       | j                  ||
       | j                  |j                  |j                         t        t        | j                              }t        t        | j                              }t        t        | j                              }t        t        |            }t        t        |            }~t        j                  |t
        j                  |      }d|d d d|d d |j                  |       d|d d |j                  |      }d|d d |j                  |       | j                  || j                         y r   )
memoryviewr   r   r"   r   r   r   r!   ry   r#   rj   r%   r   r$   rz   )r'   key_mvnonce_mv	header_mvdata_mvr   r*   r   r   r   r   ct_mvtag_mvr   r   s                  r   test_memoryviewzEaxTests.test_memoryview  s$    Idll34i67y78	Yt}}56''$,,,, $/ 	t}}%__T]]+nn''&,, (* %r
&!y!'	"1//'*%>>#W%h'6 Idll34i67y78	9R=)IcN+''&,, (* %r
&!y!'	"1//%(#bq	v$--0r   c                    d}t        j                  | j                  t         j                  | j                        }|j                  |      }|j                         }t        d      }t        j                  | j                  t         j                  | j                        }|j                  ||      }| j                  ||       | j                  |d        t        j                  | j                  t         j                  | j                        }|j                  ||      }| j                  ||       | j                  |d        t        j                  | j                  t         j                  | j                        }|j                  ||      \  }}| j                  ||       | j                  |d        | j                  ||       t        j                  | j                  t         j                  | j                        }|j                  |||      }| j                  ||       | j                  |d        y Ns   55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555r   r=   output)r   r   r   r!   r"   r#   rj   r   r%   r$   r^   re   )r'   r)   r(   r*   r   r   restag_outs           r   test_output_paramzEaxTests.test_output_paramL  s   s||4==I^^Bmmo3s||4==InnRn/V$d#s||4==InnRn/V$d#s||4==I00F0CWV$d#g&s||4==I''C'?V$d#r   c                 B   d}t        j                  | j                  t         j                  | j                        }|j                  |      }t        t        d            }t        j                  | j                  t         j                  | j                        }|j                  ||       | j                  ||       t        j                  | j                  t         j                  | j                        }|j                  ||       | j                  ||       y r   )
r   r   r   r!   r"   r#   r   r   r%   r$   )r'   r)   r(   r*   r   s        r   test_output_param_memoryviewz%EaxTests.test_output_param_memoryviewi  s    s||4==I^^BIcN+s||4==Ir&)V$s||4==Ir&)V$r   c                    d}d|z  }t        j                  | j                  t         j                  | j                        }|j                  |      }t        j                  | j                  t         j                  | j                        }| j                  t        |j
                  |d|z         t        j                  | j                  t         j                  | j                        }| j                  t        |j                  |d|z         t        |dz
        }t        j                  | j                  t         j                  | j                        }| j                  t        |j
                  ||       t        j                  | j                  t         j                  | j                        }| j                  t        |j                  ||       y )Nr      5r      0r   r<   )r   r   r   r!   r"   r#   r7   r8   r$   r   r>   )r'   LEN_PTr)   r(   r*   shorter_outputs         r   test_output_param_negzEaxTests.test_output_param_negx  s6   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__r   r   r   r"   r   r,   r.   r4   r:   rA   rF   rH   rJ   rO   rU   rW   rY   ra   rg   rm   r   r   r   r   r   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                       e Zd Z edd      Z edd      Z edd      Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zy)EaxFSMTestsr   r   r   r   r   c                    t        j                  | j                  t         j                  | j                        }|j                  | j                        }|j                         }t        j                  | j                  t         j                  | j                        }|j                  |       |j                  |       y rC   )
r   r   r   r!   r"   r#   r   rj   r$   rz   r'   r(   r*   r`   s       r   -test_valid_init_encrypt_decrypt_digest_verifyz9EaxFSMTests.test_valid_init_encrypt_decrypt_digest_verify  s}     s||#}}.^^DMM*mmo s||#}}.rcr   c                    t        j                  | j                  t         j                  | j                        }|j                  | j                         |j                         }t        j                  | j                  t         j                  | j                        }|j                  | j                         |j                  |       y rC   )	r   r   r   r!   r"   ry   r   rj   rz   r'   r(   r`   s      r   $test_valid_init_update_digest_verifyz0EaxFSMTests.test_valid_init_update_digest_verify  s     s||#}}.dmm$mmo s||#}}.dmm$cr   c                    t        j                  | j                  t         j                  | j                        }|j                  | j                         |j                  | j                        }|j                         }t        j                  | j                  t         j                  | j                        }|j                  | j                         |j                  |       |j                  |       y rC   )r   r   r   r!   r"   ry   r   r#   rj   r$   rz   r   s       r   test_valid_full_pathz EaxFSMTests.test_valid_full_path  s     s||#}}.dmm$^^DMM*mmo s||#}}.dmm$rcr   c                     t        j                  | j                  t         j                  | j                        }|j                          y rC   )r   r   r   r!   r"   rj   rE   s     r   test_valid_init_digestz"EaxFSMTests.test_valid_init_digest  s)    s||4==Ir   c                 .   t        j                  | j                  t         j                  | j                        }|j                         }t        j                  | j                  t         j                  | j                        }|j                  |       y rC   )r   r   r   r!   r"   rj   rz   r   s      r   test_valid_init_verifyz"EaxFSMTests.test_valid_init_verify  sU    s||4==Immos||4==Icr   c                    dD ]  }d d| j                   | j                   dz   fD ]  }|d }nt        |      }t        j                  | j                  t        j
                  | j                        }||j                  |       t        ||      } || j                           || j                           || j                           || j                            y )NrQ   s   333   3r   )	r   r0   r   r   r   r!   r"   ry   rR   )r'   method_namer{   	assoc_lenr(   methods         r   &test_valid_multiple_encrypt_or_decryptz2EaxFSMTests.test_valid_multiple_encrypt_or_decrypt  s    / 	&K"FDMM"mmd24 &	$ $I #IIs||'+}}6(MM), 5t}}%t}}%t}}%t}}%&	&r   c                    t        j                  | j                  t         j                  | j                        }|j                  | j                         |j                         }t        d      D ]"  }| j                  ||j                                $ t        j                  | j                  t         j                  | j                        }|j                  | j                         t        d      D ]  }|j                  |        y )Nr         )r   r   r   r!   r"   ry   r   rj   r?   r%   rz   )r'   r(   	first_macr@   s       r   $test_valid_multiple_digest_or_verifyz0EaxFSMTests.test_valid_multiple_digest_or_verify  s    s||4==Idmm$MMO	q 	9AY8	9 s||4==Idmm$q 	%AMM)$	%r   c                    t        j                  | j                  t         j                  | j                        }|j                  | j                         |j                  | j                        \  }}t        j                  | j                  t         j                  | j                        }|j                  | j                         |j                  ||      }| j                  | j                  |       y rC   )
r   r   r   r!   r"   ry   r   r^   re   r%   )r'   r(   r*   r`   r)   s        r   0test_valid_encrypt_and_digest_decrypt_and_verifyz<EaxFSMTests.test_valid_encrypt_and_digest_decrypt_and_verify  s    s||4==Idmm$++DMM:C s||4==Idmm$&&r3/+r   c           	      b   dD ]  \  }}dD ]  }t        j                  | j                  t         j                  | j                        }|r|j                  | j                          t        ||      | j                         | j                  t        t        ||      | j                           y )N)rQ   )r$   r#   )TFr   )
r   r   r   r!   r"   ry   r   rR   r7   r8   )r'   method1_namemethod2_nameassoc_data_presentr(   s        r   #test_invalid_mixing_encrypt_decryptz/EaxFSMTests.test_invalid_mixing_encrypt_decrypt  s    +C 		1&L,&3 1"s||'+}}6%MM$--0--dmm<!!)WV\-J"&--11		1r   c                    dD ]  }t        j                  | j                  t         j                  | j                        }|j                  | j                         |j                          | j                  t        t        ||      | j                         t        j                  | j                  t         j                  | j                        }|j                  | j                          y )N)r#   ry   r   )r   r   r   r!   r"   r#   r   rj   r7   r8   rR   r^   )r'   r   r(   s      r   +test_invalid_encrypt_or_update_after_digestz7EaxFSMTests.test_invalid_encrypt_or_update_after_digest  s    . 	5KWWT\\3<<t}}MFNN4==)MMOi)E"mm- WWT\\3<<t}}MF%%dmm4	5r   c                    t        j                  | j                  t         j                  | j                        }|j                  | j                        }|j                         }dD ]  }t        j                  | j                  t         j                  | j                        }|j                  |       |j                  |       | j                  t        t        ||      | j                         t        j                  | j                  t         j                  | j                        }|j                  ||       | j                  t        t        ||      | j                          y )Nr   )r$   ry   )r   r   r   r!   r"   r#   r   rj   r$   rz   r7   r8   rR   re   )r'   r(   r*   r`   r   s        r   +test_invalid_decrypt_or_update_after_verifyz7EaxFSMTests.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   N)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                       e Zd ZdZg dZeD  cg c]  }|D cg c]  }t        |       c} c}}}} Zd Zyc c}w c c}}}} w )TestVectorsPaperzgClass 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           	         | j                   D ]  \  }}}}}}t        j                  |t        j                  |t	        |            }|j                  |       |j                  |      \  }}	| j                  ||       | j                  ||	       t        j                  |t        j                  |t	        |            }|j                  |       |j                  ||      }
| j                  ||
        y )Nr[   )	test_vectorsr   r   r!   r0   ry   r^   r%   re   )r'   
assoc_datar)   r*   r`   keyr   r(   r   mac2r+   s              r   runTestzTestVectorsPaper.runTestx  s    373D3D 	&/JBS%WWS#,,s3xHFMM*%11"5ICR%S$' WWS#,,s3xHFMM*%++B4CR%	&r   N)r   r   r   __doc__test_vectors_hexr   r  r  ).0tvr@   r   s   0000r   r   r   !  sC    <Ob :JJJ22.aYq\.JL& /Js   	A
<A
A
r   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestVectorsWycheproofc                 ^    t         j                  j                  |        || _        d| _        y )NNone)unittestTestCase__init___wycheproof_warnings_id)r'   wycheproof_warningss     r   r  zTestVectorsWycheproof.__init__  s%    ""4($7!r   c                 6    d }t        dddd|i      | _        y )Nc                     | d   dz  S )NtagSize   r   )groups    r   
filter_tagz/TestVectorsWycheproof.setUp.<locals>.filter_tag  s    #q((r   )Cipher
wycheproofzaes_eax_test.jsonzWycheproof EAXtag_size)	group_tag)r   r  )r'   r(  s     r   setUpzTestVectorsWycheproof.setUp  s'    	) //G/B/?:Dj9QSr   c                     | j                   S N)r!  r9   s    r   shortDescriptionz&TestVectorsWycheproof.shortDescription  s    xxr   c                     |j                   r>| j                  r1dd l}|j                  d| j                  d|j
                  d       y y y )Nr   zWycheproof warning: z ())warningr   warningswarnr!  comment)r'   r  r4  s      r   r5  zTestVectorsWycheproof.warn  s4    ::$33MM488RZZPQ 4:r   c                 b   dt        |j                        z   | _        	 t        j                  |j
                  t        j                  |j                  |j                        }|j                  |j                         |j                  |j                        \  }}|j                  rJ| j!                  ||j"                         | j!                  ||j$                         | j'                  |       y y # t        $ r1}t        |j                        dk(  rdt        |      v sJ Y d }~y d }~ww xY w)NzWycheproof Encrypt EAX Test #r  r   Nonce cannot be empty)stridr!  r   r   r  r!   ivr+  r>   r0   ry   aadr^   msgvalidr%   r*   r   r5  )r'   r  r(   er*   r   s         r   test_encryptz"TestVectorsWycheproof.test_encrypt  s    2SZ?	WWRVVS\\255"++NF
 	bff++BFF3C88R'S"&&)IIbM   	ruu:?'>#a&'HH	s   AC4 4	D.='D))D.c                 x   dt        |j                        z   | _        	 t        j                  |j
                  t        j                  |j                  |j                        }|j                  |j                         	 |j                  |j                  |j                        }|j                   sJ | j#                  ||j$                         | j'                  |       y # t        $ r1}t        |j                        dk(  rdt        |      v sJ Y d }~y d }~ww xY w# t        $ r |j                   rJ Y y w xY w)NzWycheproof Decrypt EAX Test #r  r   r8  )r9  r:  r!  r   r   r  r!   r;  r+  r>   r0   ry   r<  re   r*   r   r>  r%   r=  r5  )r'   r  r(   r?  r)   s        r   test_decryptz"TestVectorsWycheproof.test_decrypt  s    2SZ?	WWRVVS\\255"++NF
 	bff	**255"&&9B 88OR(IIbM  	ruu:?'>#a&'HH	  	 xxx	 s*   AC"  &D "	D+'DDD98D9c                    dt        |j                        z   | _        t        |j                        dk(  st        |j
                        dk  ry t        j                  |j                  t        j                  |j                  |j                        }|j                  |j                         t        |j
                  dt        |j
                        dz
  z  dz         }| j                  t        |j                   ||j"                         y )Nz%Wycheproof Corrupt Decrypt EAX Test #r   r<   r         )r9  r:  r!  r0   r;  r*   r   r   r  r!   r+  ry   r<  r   r7   r>   re   r   )r'   r  r(   
ct_corrupts       r   test_corrupt_decryptz*TestVectorsWycheproof.test_corrupt_decrypt  s    :SZGruu:?c"%%j1nruubkkJbffBEE7c"%%j1n#=#GH
*f&?&?RVVTr   c                     | j                   D ]5  }| j                  |       | j                  |       | j                  |       7 y r/  )r  r@  rB  rG  )r'   r  s     r   r  zTestVectorsWycheproof.runTest  s?    '' 	*Bb!b!%%b)	*r   N)r   r   r   r  r-  r0  r5  r@  rB  rG  r  r   r   r   r  r    s-    
SR
 &U*r   r  c                       e Zd Zed        Zy)TestOtherCiphersc                 0    ||fd}t        | d|z   |       y )Nc                    |j                  t        d|      |j                  d      }|j                  d      \  }}|j                  t        d|      |j                  d      }|j	                  ||      }| j                  d|       y )Nr(   s   noncer   s	   plaintext)r   r   r!   r^   re   r%   )r'   factorykey_sizer(   r*   r`   r+   s          r   test_templatez3TestOtherCiphers.create_test.<locals>.test_template  s    [[(!C!(!1!1'/ ! 1F //=GB[[(!C!(!1!1'/ ! 1F ++B4C\3/r   test_)setattr)clsnamerM  rN  rO  s        r   create_testzTestOtherCiphers.create_test  s      )0( 	0 	Wt^]3r   N)r   r   r   classmethodrT  r   r   r   rJ  rJ    s    4 4r   rJ  )DESr	   ARC2CASTBlowfishDES_DES3_ARC2_CAST_	Blowfish_c                     | j                  d      }g }|t        t              z  }|t        t              z  }|t	               gz  }|t        |      gz  }|t        t              z  }|S )Nr"  )getr   r   r   r   r  rJ  )configr"  testss      r   	get_testsrc    so     **%:;E	_X&&E	_[))E	!##E	$%89;;E	_-..ELr   __main__c                  <    t        j                  t                     S r/  )r  	TestSuiterc  r   r   r   <lambda>rg    s    H&&y{3 r   suite)defaultTest)$r  binasciir   Crypto.SelfTest.st_commonr   Crypto.SelfTest.loaderr   Crypto.Util.py3compatr   r   Crypto.Cipherr   r	   Crypto.Hashr
   rd   r   r   r  r   r   r   r  rJ  rV  rW  rX  rY  rT  r9  rN  ksrc  r   rh  mainr   r   r   <module>rr     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"=>


 FB  s2w!6"EF  	 z3EHMMg& r   