
    ,hBS                     *   d dl Z d dlmZmZ d dlmZ d dlmZmZ d dl	m
Z
mZ d dlmZ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i fdZedk(  rd Z e j2                  d       yy)    N)hexlify	unhexlify)list_test_cases)tobytesbchr)AESDES3)SHAKE128SHA256)Counterc                 ^    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_CTR.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 ej                  d	e
      Z
 ej                  d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d Zd Zd Zd Zd Zd Zd Zd Zd  Z y!)"CtrTestskey_128   key_192   nonce_32   nonce_64       prefix@   c                 l   t        j                  | j                  t         j                  | j                        }t        dd      }|j                  |      }t        j                  | j                  t         j                  | j                        }|j                  |      }| j                  ||       y )Ncounter	plaintexti@  )	r   r   r   MODE_CTRctr_128r   encryptdecryptassertEqualselfcipherptctpt2s        r   test_loopback_128zCtrTests.test_loopback_1284   sv    s||T\\JK2^^Bs||T\\J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(   ctr_64r   r*   r+   r,   r-   s        r   test_loopback_64zCtrTests.test_loopback_64=   sv    $,,t{{KK1^^B$,,t{{KnnR S!r   c                    | j                  t        t        j                  | j                  t
        j                         | j                  t        t
        j                  | j                  t
        j                  | j                         y N)	assertRaises	TypeErrorr	   r   r   r   r(   r   r)   r.   s    r   test_invalid_counter_parameterz'CtrTests.test_invalid_counter_parameterF   sJ    )TXXt||S\\J 	)SWWdllCLL$,,Wr   c                 r   t        j                  | j                  t         j                  | j                        }| j                  |j                  | j                         t        j                  | j                  t        j                  | j                        }| j                  |j                  | j                         t        j                  d| j                  | j                        }t        j                  | j                  t        j                  |      }| j                  t        |d             y )Nr%   r#   )r"   suffixnonce)r	   r   r   r(   r5   r,   r?   r   r   r   r)   r   r   assertFalsehasattr)r.   r/   r&   s      r   test_nonce_attributezCtrTests.test_nonce_attributeM   s    $,,t{{Kt}}5 s||T\\Jt}}5 ++bt}}Ms||WE12r   c                    t        j                  | j                  t         j                  | j                        }| j                  |j                  | j                         t        j                  d| j                  d      }t        j                  | j                  t         j                  |      }| j                  |j                  |j                         t        dd      }| j                  |j                  |      |j                  |             t        j                  | j                  t         j                        j                  }t        j                  | j                  t         j                        j                  }| j                  ||       | j                  t        |      d       t        j                  | j                  t         j                  d	      }| j                  d	|j                         |j                  d
       | j                  t        t         j                  | j                  t         j                  | j                  | j                         y )Nr?   r#   r   r"   initial_valuer%   r'      r   r   s,  000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)r&   r?   )r   r   r   r(   r   r,   r?   r   r   r*   assertNotEquallenr9   r:   r)   )r.   cipher1r&   cipher2r0   nonce1nonce2r/   s           r   test_nonce_parameterzCtrTests.test_nonce_parameter[   s   ''$,,DMMJ6++baH''$,,gF6K/,goob.AB s||4::s||4::FF+Va( s||3?fll+x  	)SWWdllCLL"&,,dmm 	 	Er   c                    t        j                  | j                  t         j                  | j                  d      }t        j                  d| j                  d      }t        j                  | j                  t         j                  |      }t        dd      }| j                  |j                  |      |j                  |             t        j                  | j                  t         j                  d      }t        j                  d|j                  d      }t        j                  | j                  t         j                  |      }t        dd      }| j                  |j                  |      |j                  |             | j                  t        t         j                  | j                  t         j                  | j                  d	
       y )N  r?   rF   r#   rE   r%   r'   rG   rF   r   )r&   rF   )r   r   r   r(   r   r   r   r,   r*   r?   r9   r:   r)   )r.   rJ   r&   rK   r0   s        r   test_initial_value_parameterz%CtrTests.test_initial_value_parameterv   s4   ''$,, $VE++bfM''$,,gFK/,goob.AB ''$,,(.0++bfM''$,,gFK/,goob.AB 	)SWWdllCLL"&,,a 	 	Ar   c                    t        j                  | j                  t         j                  | j                  d      }t        j                  | j                  t         j                  | j                  d      }t        dd      }| j                  |j                  |      |j                  |             | j                  t        t         j                  | j                  t         j                  d       | j                  t        t         j                  | j                  t         j                  | j                  d       | j                  t        t         j                  | j                  t         j                  d	       | j                  t        t         j                  | j                  t         j                  | j                  d
       y )N         rQ   rP   r'   rG   s   55555555555555555rR   s	   555555555s   555555555555555s   5555555)
r   r   r   r(   r   r   r,   r*   r9   
ValueError)r.   rJ   rK   r0   s       r   "test_initial_value_bytes_parameterz+CtrTests.test_initial_value_bytes_parameter   s4   ''$,, $(=? ''$,, $VEK/,goob.AB 	*cggt||S\\(/ 	 	1*cggt||S\\ $V 	 	E 	*cggt||S\\(/ 	 	1*cggt||S\\ $V 	 	Er   c           	      P   | j                  t        t        j                  | j                  t        j
                  t        j                  d             | j                  t        t        j                  | j                  t        j
                  t        j                  d             y )Nx   r%      )r9   rV   r   r   r   r(   r   r;   s    r   test_iv_with_matching_lengthz%CtrTests.test_iv_with_matching_length   sh    *cggt||S\\")++c"2 	 	4*cggt||S\\")++c"2 	 	4r   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CtrTests.test_block_size_128   s:    s||T\\J**CNN;r   c                     t        j                  | j                  t         j                  | j                        }| j                  |j                  t         j                         y r]   )r	   r   r   r(   r5   r,   r^   r_   s     r   test_block_size_64zCtrTests.test_block_size_64   s:    $,,t{{K**DOO<r   c                 h   dgdz  }t        j                  | j                  t         j                  | j                        }|D cg c]  }|j                  |       }}t        j                  | j                  t         j                  | j                        }| j                  dj                  |      |j                  dj                  |                   t        j                  | j                  t         j                  | j                        }|D cg c]  }|j                  |       }}t        j                  | j                  t         j                  | j                        }| j                  dj                  |      |j                  dj                  |                   y c c}w c c}w Ns   7777777d   r%   r   )r   r   r   r(   r)   r*   r,   joinr.   
plaintextsr/   xciphertextss        r   test_unaligned_data_128z CtrTests.test_unaligned_data_128   s    !^c)
s||T\\J3=?aq)??s||T\\J+.sxx
?S0TUs||T\\J3=?aq)??s||T\\J+.sxx
?S0TU @
 @   F*F/c                 h   dgdz  }t        j                  | j                  t        j                  | j
                        }|D cg c]  }|j                  |       }}t        j                  | j                  t        j                  | j
                        }| j                  dj                  |      |j                  dj                  |                   t        j                  | j                  t        j                  | j
                        }|D cg c]  }|j                  |       }}t        j                  | j                  t        j                  | j
                        }| j                  dj                  |      |j                  dj                  |                   y c c}w c c}w rd   )	r	   r   r   r   r(   r5   r*   r,   rf   rg   s        r   test_unaligned_data_64zCtrTests.test_unaligned_data_64   s    !^c)
$,,dkkJ3=?aq)??$,,dkkJ+.sxx
?S0TU$,,dkkJ3=?aq)??$,,dkkJ+.sxx
?S0TU @
 @rl   c                    | j                  t        t        j                  | j                  t        j
                  d| j                         | j                  t        t        j                  | j                  t        j
                  | j                  d       t        j                  | j                  t        j
                  | j                  d       y )N   r%   )r&   unknownF)r&   	use_aesni)r9   r:   r   r   r   r(   r)   r;   s    r   test_unknown_parametersz CtrTests.test_unknown_parameters   s    )SWWdllCLLT\\ 	 	3)SWWdllCLL"&,, 	 	; 	cllDLLERr   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(CtrTests.test_null_encryption_decryption   sR    ( 	*DWWT\\3<<NF*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*   r9   r:   r+   r_   s     r   test_either_encrypt_or_decryptz'CtrTests.test_either_encrypt_or_decrypt   s    s||T\\Js)V^^S9s||T\\Js)V^^S9r   c                 >   t        j                  dt        d      dz        }d}t        j                  | j                  t        j
                  |      }|j                  d|z         | j                  t        |j                  d       t        j                  | j                  t        j
                  |      }| j                  t        |j                  d|dz   z         t        j                  | j                  t        j
                  |      }|j                  d|z         | j                  t        |j                  d       t        j                  | j                  t        j
                  |      }| j                  t        |j                  d|dz   z         y )	Nr   	      r!   i   r%      9   )
r   r   r   r   r   r(   r*   r9   OverflowErrorr+   )r.   r&   	max_bytesr/   s       r   test_wrap_aroundzCtrTests.test_wrap_around   s   ++aQ"5	s||WEti'(->s||WE-Q9OPs||WEti'(->s||WE-Q9OPr   c                 l   d}d}t        j                  | j                  t         j                  | j                  |      }|j                  |      }t        j                  | j                  t         j                  t        | j                        t        |            }|j                  t        |            }| j                  ||       | j                  |j                  |j                         t        j                  | j                  t         j                  | j                  |      }|j                  |      }t        j                  | j                  t         j                  t        | j                        t        |            }	|	j                  t        |            }
| j                  ||
       y )Ns   1111111111111111rU   rQ   )
r   r   r   r(   r   r*   	bytearrayr,   r?   r+   )r.   r   ivrJ   ref1rK   ref2cipher3ref3cipher4ref4s              r   test_bytearrayzCtrTests.test_bytearray   s2   & ''$,, $(*, t$''$,, )$-- 8(1"7 y/t$6 ''$,, $(*, t$''$,, )$-- 8(1"7 y/t$r   c                     t        j                  dt         j                  d      }|j                  ddz        }t	        j                  |      j                         }| j                  |d       y )Ns    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAr   rD      Bi@B @96204fc470476561a3a8f3b6fe6d24be85c87510b638142d1d0fb90989f8a6a6)r   r   r(   r*   r   	hexdigestr,   )r.   r/   r1   digests       r   test_very_long_datazCtrTests.test_very_long_data  sQ    CLL<^^D7N+B))+!cdr   c                 <   d}t        j                  dt         j                  | j                        }|j	                  |      }t        d      }t        j                  dt         j                  | j                        }|j	                  ||      }| j                  ||       | j                  |d        t        j                  dt         j                  | j                        }|j                  ||      }| j                  ||       | j                  |d        y Ns   55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555   4444444444444444rD      output)r   r   r(   r   r*   r   r,   r+   )r.   r0   r/   r1   r   ress         r   test_output_paramzCtrTests.test_output_param  s    #,,dmmD^^B3#,,dmmDnnRn/V$d##,,dmmDnnRn/V$d#r   c                    d}t        j                  dt         j                  | j                        }|j	                  |      }t        t        d            }t        j                  dt         j                  | j                        }|j	                  ||       | j                  ||       t        j                  dt         j                  | j                        }|j                  ||       | j                  ||       y r   )	r   r   r(   r   r*   
memoryviewr   r,   r+   )r.   r0   r/   r1   r   s        r   test_output_param_memoryviewz%CtrTests.test_output_param_memoryview(  s    #,,dmmD^^BIcN+#,,dmmDr&)V$#,,dmmDr&)V$r   c                 T   d}d|z  }t        j                  dt         j                  | j                        }|j	                  |      }t        j                  dt         j                  | j                        }| j                  t        |j                  |d|z         t        j                  dt         j                  | j                        }| j                  t        |j                  |d|z         t        |dz
        }t        j                  dt         j                  | j                        }| j                  t        |j                  ||       t        j                  dt         j                  | j                        }| j                  t        |j                  ||       y )Nr      5r   rD      0r   r   )
r   r   r(   r   r*   r9   r:   r+   r   rV   )r.   LEN_PTr0   r/   r1   shorter_outputs         r   test_output_param_negzCtrTests.test_output_param_neg7  s"   F]#,,dmmD^^B#,,dmmD)V^^RvN#,,dmmD)V^^RvN"6A:.#,,dmmD*fnnbP#,,dmmD*fnnbPr   N)!__name__
__module____qualname__r   r   r   r   r   r   r   r5   r)   r3   r6   r<   rB   rN   rS   rW   r[   r`   rb   rk   rn   rs   rx   rz   r   r   r   r   r   r    r   r   r   r   +   s    Y+GY+Gj!,Hj!,HW[[H-Fgkk"X.G""X3E6A*E,4<=V
VS*:Q&%>e$"%Qr   r   c                   "    e Zd ZdZd Zd Zd Zy)SP800TestVectorszQClass exercising the CTR test vectors found in Section F.5
    of NIST SP 800-38Ac                    d}d}d}t        j                  dt        d      d      }t        |      }t        |      }t        |      }t        j                  |t        j                  |      }| j                  |j                  |      |       t        j                  |t        j                  |      }| j                  |j                  |      |       y )	Nڀ6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710ڀ874d6191b620e3261bef6864990db6ce9806f66b7970fdff8617187bb9fffdff5ae4df3edbd5d35e5b4f09020db03eab1e031dda2fbe03d1792170a0f3009cee 2b7e151628aed2a6abf7158809cf4f3cr   f0f1f2f3f4f5f6f7f8f9fafbfcfd  nbitsr"   rF   r%   r   r   r   r   r(   r,   r*   r+   r.   r'   
ciphertextkeyr&   r/   s         r   test_aes_128zSP800TestVectors.test_aes_128O  s    ;	;
 ;"+45S+T28: ni(	z*
cllG<	2J?cllG<
3Y?r   c                    d}d}d}t        j                  dt        d      d      }t        |      }t        |      }t        |      }t        j                  |t        j                  |      }| j                  |j                  |      |       t        j                  |t        j                  |      }| j                  |j                  |      |       y )	Nr   ڀ1abc932417521ca24f2b0459fe7e6e0b090339ec0aa6faefd5ccc2c6f4ce8e941e36b26bd1ebc670d1bd1d665620abf74f78a7f6d29809585a97daec58c6b05008e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7br   r   r   r   r%   r   r   s         r   test_aes_192zSP800TestVectors.test_aes_192f  s    ;	;
 K"+45S+T28: ni(	z*
cllG<	2J?cllG<
3Y?r   c                    d}d}d}t        j                  dt        d      d      }t        |      }t        |      }t        |      }t        j                  |t        j                  |      }| j                  |j                  |      |       t        j                  |t        j                  |      }| j                  |j                  |      |       y )	Nr   ڀ601ec313775789a5b7a7f504bbf3d228f443e3ca4d62b59aca84e990cacaf5c52b0930daa23de94ce87017ba2d84988ddfc9c58db67aada613c2dd08457941a6@603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4r   r   r   r   r%   r   r   s         r   test_aes_256zSP800TestVectors.test_aes_256}  s    ;	;
 ["+45S+T28: ni(	z*
cllG<	2J?cllG<
3Y?r   N)r   r   r   __doc__r   r   r   r   r   r   r   r   K  s    @.@.@r   r   c                       e Zd ZdZg ZeD ].  Zej                  eD  cg c]  }t        |       c}}}        0 d Zyc c}}} w )RFC3686TestVectors)	) 53696e676c6520626c6f636b206d7367 e4095d4fb7a7b3792d6175a3261311b8 ae6852f8121067cc4bf7a5765577f39e000000300000000000000000)@000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f@5104a106168a72d9790d41ee8edad388eb2e1efc46da57c8fce630df9141be28 7e24067817fae0d743d6ce1f32539163006cb6dbc0543b59da48d90b)H000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223Hc1cf48a89f2ffdd9cf4652e9efdb72d74540a42bde6d7836d59a5ceaaef3105325b2072f 7691be035e5020a8ac6e618529f9a0dc00e0017b27777f3f4a1786f0)r    4b55384fe259c9c84e7935a003cbe928016af5b145fc9f579c175f93e3bfb0eed863d06ccfdb785150000004836733c147d6d93cb)r   @453243fc609b23327edfaafa7131cd9f8490701c5ad4a79cfc1fe0ff42f4fb0007c5cb2401b3dc33c19e7340819e0f69c678c3db8e6f6a91a0096b03b020c6eadc2cb500d)r   H96893fc55e5c722f540b7dd1ddf7e758d288bc95c69165884536c811662f2188abee0935002bf391ee8ecb159b959617b0965279bf59b60a786d3e0fe0007bdfd5cbd60278dcc0912)r    145ad01dbf824ec7560863dc71e3e0c0@776beff2851db06f4c8a0542c8696f6c6a81af1eec96b4d37fc1d689e6c1c10400000060db5672c97aa8f0b2)r   @f05e231b3894612c49ee000b804eb2a9b8306b508f839d6a5530831d9344af1c@f6d66d6bd52d59bb0796365879eff886c66dd51a5b6a99744b50590c87a2388400faac24c1585ef15a43d875)r   Heb6c52821d0bbbf7ce7594462aca4faab407df866569fd07f48cc0b583d6071f1ec0e6b8@ff7a617ce69148e4f1726e2f43581de2aa62d9f805532edff1eed687fb54153d001cc5b751a51d70a1c11148c                    | j                   D ]y  \  }}}}t        j                  d|      }t        j                  |t        j                  |      }|j                  |      }| j                  t        |      t        |             { y )Nr    r!   r%   )bindatar   r   r   r(   r*   r,   r   )r.   r0   r1   r   r"   r&   r/   rw   s           r   runTestzRFC3686TestVectors.runTest  sj    #'<< 	;BCkk"V4GWWS#,,@F^^B'FWR['&/:		;r   N)	r   r   r   r   r   tvappendr   r   ).0ri   r   s   000r   r   r     sH    %
DN G 3b11	!123; 2s   A r   c                 n    g }|t        t              z  }|t        t              z  }|t               gz  }|S r8   )r   r   r   r   )configtestss     r   	get_testsr     s<    E	_X&&E	_-..E	!#%%ELr   __main__c                  <    t        j                  t                     S r8   )unittest	TestSuiter   r   r   r   <lambda>r     s    H&&y{3 r   suite)defaultTest)r   binasciir   r   Crypto.SelfTest.st_commonr   Crypto.Util.py3compatr   r   Crypto.Cipherr   r	   Crypto.Hashr
   r   Crypto.Utilr   r   TestCaser   r   r   r   r   r   mainr   r   r   <module>r      s   >  ' 5 / # ( 8]Qx   ]Q@	F@x(( F@R7;** 7;t   z3EHMMg& r   