
    9iBS                     (   S SK r S SKJr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Jr  S SKJr  S r " S	 S
\ R$                  5      r " S S\ R$                  5      r " S S\ R$                  5      r0 4S jr\S:X  a  S r\ R2                  " SS9  gg)    N)hexlify	unhexlify)list_test_cases)tobytesbchr)AESDES3)SHAKE128SHA256)Counterc                 Z    [         R                  " [        U 5      S9R                  U5      $ )N)data)r
   newr   read)taglengths     _/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/Crypto/SelfTest/Cipher/test_CTR.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\	R                  " S
\S9r\	R                  " S\S9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#)$CtrTests+   key_128   key_192   nonce_32   nonce_64       prefix@   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 )Ncounter	plaintexti@  )	r   r   r   MODE_CTRctr_128r   encryptdecryptassertEqualselfcipherptctpt2s        r   test_loopback_128CtrTests.test_loopback_1284   st    s||T\\JK2^^Bs||T\\J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)   ctr_64r   r+   r,   r-   r.   s        r   test_loopback_64CtrTests.test_loopback_64=   st    $,,t{{KK1^^B$,,t{{KnnR !r   c                    U R                  [        [        R                  U R                  [
        R                  5        U R                  [        [
        R                  U R                  [
        R                  U R                  5        g N)	assertRaises	TypeErrorr	   r   r   r   r)   r   r*   r/   s    r   test_invalid_counter_parameter'CtrTests.test_invalid_counter_parameterF   sJ    )TXXt||S\\J 	)SWWdllCLL$,,Wr   c                 b   [         R                  " U R                  [         R                  U R                  S9nU R                  UR                  U R                  5        [        R                  " U R                  [        R                  U R                  S9nU R                  UR                  U R                  5        [        R                  " SU R                  U R                  S9n[        R                  " U R                  [        R                  US9nU R                  [        US5      5        g )Nr&   r$   )r#   suffixnonce)r	   r   r   r)   r7   r-   rC   r   r   r   r*   r   r   assertFalsehasattr)r/   r0   r'   s      r   test_nonce_attributeCtrTests.test_nonce_attributeM   s    $,,t{{Kt}}5 s||T\\Jt}}5 ++bt}}Ms||WE12r   c           	         [         R                  " U R                  [         R                  U R                  S9nU R                  UR                  U R                  5        [        R                  " SU R                  SS9n[         R                  " U R                  [         R                  US9nU R                  UR                  UR                  5        [        SS5      nU R                  UR                  U5      UR                  U5      5        [         R                  " U R                  [         R                  5      R                  n[         R                  " U R                  [         R                  5      R                  nU R                  XV5        U R                  [        U5      S5        [         R                  " U R                  [         R                  S	S9nU R                  S	UR                  5        UR                  S
5        U R                  [        [         R                  U R                  [         R                  U R                  U R                  S9  g )NrC   r$   r   r#   initial_valuer&   r(      r    r   s,  000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)r'   rC   )r   r   r   r)   r   r-   rC   r   r   r+   assertNotEquallenr<   r=   r*   )r/   cipher1r'   cipher2r1   nonce1nonce2r0   s           r   test_nonce_parameterCtrTests.test_nonce_parameter[   s   ''$,,DMMJ6++baH''$,,gF6K/,goob.AB s||4::s||4::F+Va( s||3?fll+x  	)SWWdllCLL"&,,dmm 	 	Er   c           	         [         R                  " U R                  [         R                  U R                  SS9n[
        R                  " SU R                  SS9n[         R                  " U R                  [         R                  US9n[        SS5      nU R                  UR                  U5      UR                  U5      5        [         R                  " U R                  [         R                  SS9n[
        R                  " SUR                  SS9n[         R                  " U R                  [         R                  US9n[        SS5      nU R                  UR                  U5      UR                  U5      5        U R                  [        [         R                  U R                  [         R                  U R                  S	S
9  g )N  rC   rK   r$   rJ   r&   r(   rL   rK   r   )r'   rK   )r   r   r   r)   r   r   r   r-   r+   rC   r<   r=   r*   )r/   rO   r'   rP   r1   s        r   test_initial_value_parameter%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   [         R                  " U R                  [         R                  U R                  SS9n[         R                  " U R                  [         R                  U R                  SS9n[        SS5      nU R                  UR                  U5      UR                  U5      5        U R                  [        [         R                  U R                  [         R                  SS9  U R                  [        [         R                  U R                  [         R                  U R                  SS9  U R                  [        [         R                  U R                  [         R                  S	S9  U R                  [        [         R                  U R                  [         R                  U R                  S
S9  g )N         rW   rV   r(   rL   s   55555555555555555rX   s	   555555555s   555555555555555s   5555555)
r   r   r   r)   r   r   r-   r+   r<   
ValueError)r/   rO   rP   r1   s       r   "test_initial_value_bytes_parameter+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           	      H   U R                  [        [        R                  U R                  [        R
                  [        R                  " S5      S9  U R                  [        [        R                  U R                  [        R
                  [        R                  " S5      S9  g )Nx   r&      )r<   r]   r   r   r   r)   r   r>   s    r   test_iv_with_matching_length%CtrTests.test_iv_with_matching_length   sh    *cggt||S\\")++c"2 	 	4*cggt||S\\")++c"2 	 	4r   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/   r0   s     r   test_block_size_128CtrTests.test_block_size_128   s:    s||T\\J**CNN;r   c                     [         R                  " U R                  [         R                  U R                  S9nU R                  UR                  [         R                  5        g rf   )r	   r   r   r)   r7   r-   rg   rh   s     r   test_block_size_64CtrTests.test_block_size_64   s:    $,,t{{K**DOO<r   c                 `   S/S-  n[         R                  " U R                  [         R                  U R                  S9nU Vs/ s H  o2R                  U5      PM     nn[         R                  " U R                  [         R                  U R                  S9nU R                  SR                  U5      UR                  SR                  U5      5      5        [         R                  " U R                  [         R                  U R                  S9nU Vs/ s H  o2R                  U5      PM     nn[         R                  " U R                  [         R                  U R                  S9nU R                  SR                  U5      UR                  SR                  U5      5      5        g s  snf s  snf Ns   7777777d   r&   r   )r   r   r   r)   r*   r+   r-   joinr/   
plaintextsr0   xciphertextss        r   test_unaligned_data_128 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                 `   S/S-  n[         R                  " U R                  [        R                  U R
                  S9nU Vs/ s H  o2R                  U5      PM     nn[         R                  " U R                  [        R                  U R
                  S9nU R                  SR                  U5      UR                  SR                  U5      5      5        [         R                  " U R                  [        R                  U R
                  S9nU Vs/ s H  o2R                  U5      PM     nn[         R                  " U R                  [        R                  U R
                  S9nU R                  SR                  U5      UR                  SR                  U5      5      5        g s  snf s  snf ro   )	r	   r   r   r   r)   r7   r+   r-   rq   rr   s        r   test_unaligned_data_64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 @
 @rx   c           	         U R                  [        [        R                  U R                  [        R
                  SU R                  S9  U R                  [        [        R                  U R                  [        R
                  U R                  SS9  [        R                  " U R                  [        R
                  U R                  SS9  g )N   r&   )r'   unknownF)r'   	use_aesni)r<   r=   r   r   r   r)   r*   r>   s    r   test_unknown_parameters CtrTests.test_unknown_parameters   s    )SWWdllCLLT\\ 	 	3)SWWdllCLL"&,, 	 	; 	cllDLLERr   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/   funcr0   results       r   test_null_encryption_decryption(CtrTests.test_null_encryption_decryption   sI    (DWWT\\3<<NF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,   rh   s     r   test_either_encrypt_or_decrypt'CtrTests.test_either_encrypt_or_decrypt   s    s||T\\Js)V^^S9s||T\\Js)V^^S9r   c                 *   [         R                  " S[        S5      S-  S9nSn[        R                  " U R                  [        R
                  US9nUR                  SU-  5        U R                  [        UR                  S5        [        R                  " U R                  [        R
                  US9nU R                  [        UR                  SUS-   -  5        [        R                  " U R                  [        R
                  US9nUR                  SU-  5        U R                  [        UR                  S5        [        R                  " U R                  [        R
                  US9nU R                  [        UR                  SUS-   -  5        g )	Nr    	      r"   i   r&      9   )
r   r   r   r   r   r)   r+   r<   OverflowErrorr,   )r/   r'   	max_bytesr0   s       r   test_wrap_around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                 X   SnSn[         R                  " U R                  [         R                  U R                  US9nUR                  U5      n[         R                  " U R                  [         R                  [        U R                  5      [        U5      S9nUR                  [        U5      5      nU R                  XF5        U R                  UR                  UR                  5        [         R                  " U R                  [         R                  U R                  US9nUR                  U5      n[         R                  " U R                  [         R                  [        U R                  5      [        U5      S9n	U	R                  [        U5      5      n
U R                  X5        g )Ns   1111111111111111r\   rW   )
r   r   r   r)   r   r+   	bytearrayr-   rC   r,   )r/   r   ivrO   ref1rP   ref2cipher3ref3cipher4ref4s              r   test_bytearrayCtrTests.test_bytearray   s.   & ''$,, $(*, t$''$,, )$-- 8(1"7 y/$6 ''$,, $(*, t$''$,, )$-- 8(1"7 y/$r   c                     [         R                  " S[         R                  SS9nUR                  SS-  5      n[        R                  " U5      R                  5       nU R                  US5        g )Ns    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAr   rI      Bi@B @96204fc470476561a3a8f3b6fe6d24be85c87510b638142d1d0fb90989f8a6a6)r   r   r)   r+   r   	hexdigestr-   )r/   r0   r2   digests       r   test_very_long_dataCtrTests.test_very_long_data  sQ    CLL<^^D7N+B))+!cdr   c                    Sn[         R                  " S[         R                  U R                  S9nUR	                  U5      n[        S5      n[         R                  " S[         R                  U R                  S9nUR	                  XS9nU R                  X45        U R                  US 5        [         R                  " S[         R                  U R                  S9nUR                  X4S9nU R                  X5        U R                  US 5        g Ns   55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555   4444444444444444rI      output)r   r   r)   r   r+   r   r-   r,   )r/   r1   r0   r2   r   ress         r   test_output_paramCtrTests.test_output_param  s    #,,dmmD^^B3#,,dmmDnnRn/$d##,,dmmDnnRn/$d#r   c                    Sn[         R                  " S[         R                  U R                  S9nUR	                  U5      n[        [        S5      5      n[         R                  " S[         R                  U R                  S9nUR	                  XS9  U R                  X45        [         R                  " S[         R                  U R                  S9nUR                  X4S9  U R                  X5        g r   )	r   r   r)   r   r+   
memoryviewr   r-   r,   )r/   r1   r0   r2   r   s        r   test_output_param_memoryview%CtrTests.test_output_param_memoryview(  s    #,,dmmD^^BIcN+#,,dmmDr)$#,,dmmDr)$r   c                 $   SnSU-  n[         R                  " S[         R                  U R                  S9nUR	                  U5      n[         R                  " S[         R                  U R                  S9nU R                  [        UR                  USU-  S9  [         R                  " S[         R                  U R                  S9nU R                  [        UR                  USU-  S9  [        US-
  5      n[         R                  " S[         R                  U R                  S9nU R                  [        UR                  X%S9  [         R                  " S[         R                  U R                  S9nU R                  [        UR                  XES9  g )Nr      5r   rI      0r   r   )
r   r   r)   r   r+   r<   r=   r,   r   r]   )r/   LEN_PTr1   r0   r2   shorter_outputs         r   test_output_param_neg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____firstlineno__r   r   r   r   r   r   r   r7   r*   r4   r8   r?   rF   rS   rY   r^   rc   ri   rl   rv   rz   r   r   r   r   r   r   r   r   r   __static_attributes__r   r   r   r   r   +   s    Y+GY+Gj!,Hj!,H[[H-Fkk"X.G""X3E6A*E,4<=V
VS*:Q&%>e$"%Qr   r   c                   *    \ rS rSrSrS rS rS rSrg)SP800TestVectorsiK  zMClass exercising the CTR test vectors found in Section F.5
of NIST SP 800-38Ac                    SnSnSn[         R                  " S[        S5      SS9n[        U5      n[        U5      n[        U5      n[        R                  " U[        R                  US9nU R                  UR                  U5      U5        [        R                  " U[        R                  US9nU R                  UR                  U5      U5        g )	Nڀ6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710ڀ874d6191b620e3261bef6864990db6ce9806f66b7970fdff8617187bb9fffdff5ae4df3edbd5d35e5b4f09020db03eab1e031dda2fbe03d1792170a0f3009cee 2b7e151628aed2a6abf7158809cf4f3cr   f0f1f2f3f4f5f6f7f8f9fafbfcfd  nbitsr#   rK   r&   r   r   r   r   r)   r-   r+   r,   r/   r(   
ciphertextkeyr'   r0   s         r   test_aes_128SP800TestVectors.test_aes_128O  s    ;	;
 ;"+45S+T28: ni(	z*
cllG<	2J?cllG<
3Y?r   c                    SnSnSn[         R                  " S[        S5      SS9n[        U5      n[        U5      n[        U5      n[        R                  " U[        R                  US9nU R                  UR                  U5      U5        [        R                  " U[        R                  US9nU R                  UR                  U5      U5        g )	Nr   ڀ1abc932417521ca24f2b0459fe7e6e0b090339ec0aa6faefd5ccc2c6f4ce8e941e36b26bd1ebc670d1bd1d665620abf74f78a7f6d29809585a97daec58c6b05008e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7br   r   r   r   r&   r   r   s         r   test_aes_192SP800TestVectors.test_aes_192f  s    ;	;
 K"+45S+T28: ni(	z*
cllG<	2J?cllG<
3Y?r   c                    SnSnSn[         R                  " S[        S5      SS9n[        U5      n[        U5      n[        U5      n[        R                  " U[        R                  US9nU R                  UR                  U5      U5        [        R                  " U[        R                  US9nU R                  UR                  U5      U5        g )	Nr   ڀ601ec313775789a5b7a7f504bbf3d228f443e3ca4d62b59aca84e990cacaf5c52b0930daa23de94ce87017ba2d84988ddfc9c58db67aada613c2dd08457941a6@603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4r   r   r   r   r&   r   r   s         r   test_aes_256SP800TestVectors.test_aes_256}  s    ;	;
 ["+45S+T28: ni(	z*
cllG<	2J?cllG<
3Y?r   r   N)	r   r   r   r   __doc__r   r   r   r   r   r   r   r   r   K  s    @.@.@r   r   c                       \ rS rSrSr/ r\ H2  r\R                  \ V VVs/ s H  n[        U5      PM     snnn 5        M4     S r	Sr
gs  snnn f )RFC3686TestVectorsi  )	) 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                    U R                    Ht  u  pp4[        R                  " SUS9n[        R                  " U[        R                  US9nUR                  U5      nU R                  [        U5      [        U5      5        Mv     g )Nr!   r"   r&   )bindatar   r   r   r)   r+   r-   r   )r/   r1   r2   r   r#   r'   r0   r   s           r   runTestRFC3686TestVectors.runTest  sa    #'<<BCkk"V4GWWS#,,@F^^B'FWR['&/:	 $0r   r   N)r   r   r   r   r   r   tvappendr   r   r   ).0rt   r   s   000r   r   r     sD    %
DN Gb1b	!b12 ; 2s   A	r   c                 n    / nU[        [        5      -  nU[        [        5      -  nU[        5       /-  nU$ r;   )r   r   r   r   )configtestss     r   	get_testsr    s<    E	_X&&E	_-..E	!#%%ELr   __main__c                  >    [         R                  " [        5       5      $ r;   )unittest	TestSuiter  r   r   r   <lambda>r
    s    H&&y{3r   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MMg& r   