Ë
    (üàg½>  ã                   ó`  — 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mZ d dlmZ d dlmZ d	„ Z G d
„ de«      Z G d„ de j(                  «      ZdZdZeD ].  ZdD ]'  Zej5                  de«      Zeefd„Z eedez   e«       Œ) Œ0 eD ].  ZdD ]'  Zej5                  de«      Zeefd„Z eedez   e«       Œ) Œ0 [[dZeD ].  ZdD ]  Zej5                  de«      Zeefd„ZŒ  eedez   e«       Œ0  G d„ de j(                  «      Zi fd„Z e!dk(  rd„ Z" e jF                  d¬«       yy) é    N)Ú	unhexlify)Úload_test_vectors)Úlist_test_cases)ÚtobytesÚ	is_string)ÚAESÚDES3ÚDES)ÚSHAKE128)ÚBlockChainingTestsc                 ó^   — t        j                  t        | «      ¬«      j                  |«      S )N)Údata)r   Únewr   Úread)ÚtagÚlengths     ú]/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/Crypto/SelfTest/Cipher/test_CFB.pyÚget_tag_randomr   +   s    € Ü�<‰<œW S›\Ô*×/Ñ/°Ó7Ð7ó    c                   óT   — e Zd Zej                  Zej                  Zd„ Zd„ Z	d„ Z
d„ Zy)ÚCfbTestsc                 óp  — dgdz  }t        j                  | j                  t         j                  | j                  d¬«      }|D �cg c]  }|j                  |«      ‘Œ }}t        j                  | j                  t         j                  | j                  d¬«      }| j                  dj                  |«      |j                  dj                  |«      «      «       t        j                  | j                  t         j                  | j                  d¬«      }|D �cg c]  }|j                  |«      ‘Œ }}t        j                  | j                  t         j                  | j                  d¬«      }| j                  dj                  |«      |j                  dj                  |«      «      «       y c c}w c c}w )Nó   7777777éd   é   ©Úsegment_sizer   é€   )r   r   Úkey_128ÚMODE_CFBÚiv_128ÚencryptÚassertEqualÚjoin©ÚselfÚ
plaintextsÚcipherÚxÚciphertextss        r   Útest_unaligned_data_128z CfbTests.test_unaligned_data_1286   s(  € Ø!�^ cÑ)ˆ
ä—‘˜Ÿ™¤s§|¡|°T·[±[ÈqÔQˆØ3=Ö?¨a˜Ÿ™ qÕ)Ð?ˆÐ?Ü—‘˜Ÿ™¤s§|¡|°T·[±[ÈqÔQˆØ×Ñ˜Ÿ™ +Ó.°·±¸s¿x¹xÈ
Ó?SÓ0TÔUä—‘˜Ÿ™¤s§|¡|°T·[±[ÈsÔSˆØ3=Ö?¨a˜Ÿ™ qÕ)Ð?ˆÐ?Ü—‘˜Ÿ™¤s§|¡|°T·[±[ÈsÔSˆØ×Ñ˜Ÿ™ +Ó.°·±¸s¿x¹xÈ
Ó?SÓ0TÕUùò @ùò
 @ó   ÁF.ÄF3c                 óp  — dgdz  }t        j                  | j                  t         j                  | j                  d¬«      }|D �cg c]  }|j                  |«      ‘Œ }}t        j                  | j                  t         j                  | j                  d¬«      }| j                  dj                  |«      |j                  dj                  |«      «      «       t        j                  | j                  t         j                  | j                  d¬«      }|D �cg c]  }|j                  |«      ‘Œ }}t        j                  | j                  t         j                  | j                  d¬«      }| j                  dj                  |«      |j                  dj                  |«      «      «       y c c}w c c}w )Nr   r   r   r   r   é@   )r	   r   Úkey_192r    Úiv_64r"   r#   r$   r%   s        r   Útest_unaligned_data_64zCfbTests.test_unaligned_data_64C   s,  € Ø!�^ cÑ)ˆ
Ü—‘˜$Ÿ,™,¬¯©°t·z±zÐPQÔRˆØ3=Ö?¨a˜Ÿ™ qÕ)Ð?ˆÐ?Ü—‘˜$Ÿ,™,¬¯©°t·z±zÐPQÔRˆØ×Ñ˜Ÿ™ +Ó.°·±¸s¿x¹xÈ
Ó?SÓ0TÔUä—‘˜$Ÿ,™,¬¯©°t·z±zÐPRÔSˆØ3=Ö?¨a˜Ÿ™ qÕ)Ð?ˆÐ?Ü—‘˜$Ÿ,™,¬¯©°t·z±zÐPRÔSˆØ×Ñ˜Ÿ™ +Ó.°·±¸s¿x¹xÈ
Ó?SÓ0TÕUùò @ùò
 @r,   c           	      óB  — t        ddd«      D ]=  }t        j                  | j                  t        j                  | j
                  |¬«      }Œ? dD ]M  }| j                  t        t        j                  | j                  t        j                  | j
                  |¬«       ŒO y )Nr   é�   r   )r   é   é	   é   r3   )Úranger   r   r   r    r!   ÚassertRaisesÚ
ValueError©r&   Úbitsr(   s      r   Útest_segment_size_128zCfbTests.test_segment_size_128Q   s   € Ü˜!˜S !Ó$ò 	0ˆDÜ—W‘W˜TŸ\™\¬3¯<©<¸¿¹Ø*.ô0‰Fð	0ð &ò 	1ˆDØ×Ñœj¬#¯'©'°4·<±<ÄÇÁØ"Ÿk™kØ+/ð õ 1ñ	1r   c           	      óB  — t        ddd«      D ]=  }t        j                  | j                  t        j                  | j
                  |¬«      }Œ? dD ]M  }| j                  t        t        j                  | j                  t        j                  | j
                  |¬«       ŒO y )Nr   éA   r   )r   r4   r5   é?   r>   )	r7   r	   r   r/   r    r0   r8   r9   r   r:   s      r   Útest_segment_size_64zCfbTests.test_segment_size_64[   s~   € Ü˜!˜R “Oò 	1ˆDÜ—X‘X˜dŸl™l¬D¯M©M¸4¿:¹:Ø+/ô1‰Fð	1ð $ò 	1ˆDØ×Ñœj¬$¯(©(°D·L±LÄ#Ç,Á,Ø"Ÿj™jØ+/ð õ 1ñ	1r   N)Ú__name__Ú
__module__Ú__qualname__r   r    Úaes_moder	   Ú	des3_moder+   r1   r<   r@   © r   r   r   r   /   s*   „ à�|‰|€HØ—‘€IòVò
Vò1ó1r   r   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚNistCfbVectorsc                 óæ  — t        d|d|z  dd„ i«      }|€y d }|D ]Ó  }t        |«      r|}Œ|j                  | _        t	        j
                  |j                  t        j                  |j                  |¬«      }|dk(  r6| j                  |j                  |j                  «      |j                  «       Œ˜|dk(  r6| j                  |j                  |j                  «      |j                  «       ŒÓJ ‚ y )N©ÚCipherr   zAES CFB%d KATÚcountc                 ó   — t        | «      S ©N©Úint©r)   s    r   ú<lambda>z1NistCfbVectors._do_kat_aes_test.<locals>.<lambda>m   ó
   € ´#°a³&€ r   r   ú	[ENCRYPT]ú	[DECRYPT])r   r   ÚdescÚdescriptionr   r   Úkeyr    Úivr#   r"   Ú	plaintextÚ
ciphertextÚdecrypt)r&   Ú	file_namer   Útest_vectorsÚ	directionÚtvr(   s          r   Ú_do_kat_aes_testzNistCfbVectors._do_kat_aes_testh   sÙ   € ä(Ð):Ø%Ø+¨lÑ:Ø%Ñ(8Ð:ó=ˆð ÐØàˆ	Øò 	ˆBô ˜Œ}Ø�	Øà!Ÿw™wˆDÔÜ—W‘W˜RŸV™V¤S§\¡\°2·5±5Ø*6ô8ˆFà˜KÒ'Ø× Ñ  §¡°·±Ó!=¸r¿}¹}ÕMØ˜kÒ)Ø× Ñ  §¡°·±Ó!>ÀÇÁÕMà�uñ	r   c                 óÆ  ‡‡— t        d|d‰z  dd„ i«      }|€y ‰dv sJ ‚d }|D �]:  Št        ‰«      r‰}Œ‰j                  | _        t	        j
                  ‰j                  t        j                  ‰j                  ‰¬«      }ˆˆfd„}|dk(  rfg }t        d	«      D ]6  } |‰j                  ||«      }	|j                  |j                  |	«      «       Œ8 | j                  |d
   ‰j                  «       ŒÏ|dk(  rgg }
t        d	«      D ]6  } |‰j                  |
|«      }|
j                  |j                  |«      «       Œ8 | j                  |
d
   ‰j                  «       �Œ;J ‚ y )NrJ   zAES CFB%d MontecarlorL   c                 ó   — t        | «      S rN   rO   rQ   s    r   rR   z1NistCfbVectors._do_mct_aes_test.<locals>.<lambda>‰   rS   r   )r   r   r   c                 ó�   •— ‰dk(  r|dk\  r|d   S | ‰j                   g|   S |dk(  r| S |dk  r‰j                   |dz
  | S ||dz
     S )Nr   é   éþÿÿÿr   é   é   é   )rY   )Ú
input_textÚ
output_seqÚjr   r`   s      €€r   Ú	get_inputz2NistCfbVectors._do_mct_aes_test.<locals>.get_input›   sg   ø€ à 3Ò&Ø˜A’vØ)¨"™~Ð-Ø&¨¯©Ð.¨qÑ1Ð1à˜’6Ø%Ð%Ø˜"’WØŸ5™5  Q¡ q˜>Ð)Ø! ! b¡&Ñ)Ð)r   rT   iè  éÿÿÿÿrU   )r   r   rV   rW   r   r   rX   r    rY   r7   rZ   Úappendr"   r#   r[   r\   )r&   r]   r   r^   r_   r(   rm   Úctsrl   rZ   Úptsr[   r`   s     `         @r   Ú_do_mct_aes_testzNistCfbVectors._do_mct_aes_test„   s`  ù€ ä(Ð):Ø%Ø2°\ÑAØ%Ñ(8Ð:ó=ˆð ÐØà˜xÑ'Ð(Ð'àˆ	Øó %	ˆBô ˜Œ}Ø�	Øà!Ÿw™wˆDÔÜ—W‘W˜RŸV™V¤S§\¡\°2·5±5Ø*6ô8ˆFõ*ð ˜KÒ'Ø�Ü˜t›ò :�AÙ )¨"¯,©,¸¸QÓ ?�IØ—J‘J˜vŸ~™~¨iÓ8Õ9ð:ð × Ñ   R¡¨"¯-©-Õ8Ø˜kÒ)Ø�Ü˜t›ò ;�AÙ!*¨2¯=©=¸#¸qÓ!A�JØ—J‘J˜vŸ~™~¨jÓ9Õ:ð;ð × Ñ   R¡¨"¯,©,Ö7à�uñK%	r   c                 ó  — t        d|d|z  dd„ i«      }|€y d }|D �]l  }t        |«      r|}Œ|j                  | _        t	        |d«      r<t        j                  |j                  t
        j                  |j                  |¬«      }nŠ|j                  |j                  k7  r'|j                  |j                  z   |j                  z   }n|j                  |j                  z   }t        j                  |t        j                  |j                  |¬«      }|dk(  r7| j                  |j                  |j                   «      |j"                  «       �Œ1|dk(  r7| j                  |j%                  |j"                  «      |j                   «       �ŒmJ ‚ y )	N)rK   ÚTDESzTDES CFB%d KATrL   c                 ó   — t        | «      S rN   rO   rQ   s    r   rR   z.NistCfbVectors._do_tdes_test.<locals>.<lambda>¼   rS   r   Úkeysr   rT   rU   )r   r   rV   rW   Úhasattrr
   r   rv   r    rY   Úkey1Úkey3Úkey2r	   r#   r"   rZ   r[   r\   )r&   r]   r   r^   r_   r`   r(   rX   s           r   Ú_do_tdes_testzNistCfbVectors._do_tdes_test·   sA  € ä(Ð);Ø%Ø,¨|Ñ;Ø%Ñ(8Ð:ó=ˆð ÐØàˆ	Øó 	ˆBô ˜Œ}Ø�	Øà!Ÿw™wˆDÔÜ�r˜6Ô"ÜŸ™ §¡¬#¯,©,¸¿¹Ø.:ô<‘ð —7‘7˜bŸg™gÒ%ØŸ'™' B§G¡GÑ+¨b¯g©gÑ5‘CàŸ'™' B§G¡GÑ+�CÜŸ™ #¤t§}¡}°b·e±eØ/;ô=�à˜KÒ'Ø× Ñ  §¡°·±Ó!=¸r¿}¹}ÖMØ˜kÒ)Ø× Ñ  §¡°·±Ó!>ÀÇÁÖMà�uñ/	r   N)rA   rB   rC   ra   rr   r{   rF   r   r   rH   rH   f   s   „ òò81óf!r   rH   )zCFB?GFSbox128.rspzCFB?GFSbox192.rspzCFB?GFSbox256.rspzCFB?KeySbox128.rspzCFB?KeySbox192.rspzCFB?KeySbox256.rspzCFB?VarKey128.rspzCFB?VarKey192.rspzCFB?VarKey256.rspzCFB?VarTxt128.rspzCFB?VarTxt192.rspzCFB?VarTxt256.rspzCFB?MMT128.rspzCFB?MMT192.rspzCFB?MMT256.rsp)zCFB?MCT128.rspzCFB?MCT192.rspzCFB?MCT256.rsp)Ú8Ú128ú?c                 ó:   — | j                  |t        |«      «       y rN   )ra   rP   ©r&   r]   r;   s      r   Únew_funcr�   ø   ó   € Ø×!Ñ! )¬S°«YÕ7r   Ú	test_AES_c                 ó:   — | j                  |t        |«      «       y rN   )rr   rP   r€   s      r   r�   r�   ÿ   r‚   r   )zTCFB?MMT2.rspzTCFB?MMT3.rspzTCFB?invperm.rspzTCFB?permop.rspzTCFB?subtab.rspzTCFB?varkey.rspzTCFB?vartext.rsp)r|   Ú64c                 ó:   — | j                  |t        |«      «       y rN   )r{   rP   r€   s      r   r�   r�     s   € Ø×Ñ˜y¬#¨d«)Õ4r   Ú
test_TDES_c                   ó4   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚSP800TestVectorszPClass exercising the CFB test vectors found in Section F.3
    of NIST SP 800-3Ac                 óŒ  — d}d}d}d}t        |«      }t        |«      }t        |«      }t        |«      }t        j                  |t        j                  |d¬«      }| j	                  |j                  |«      |«       t        j                  |t        j                  |d¬«      }| j	                  |j                  |«      |«       y )NÚ$6bc1bee22e409f96e93d7e117393172aae2dÚ$3b79424c9c0dd436bace9e0ed4586a4f32b9Ú 2b7e151628aed2a6abf7158809cf4f3cÚ 000102030405060708090a0b0c0d0e0fr   r   ©r   r   r   r    r#   r"   r\   ©r&   rZ   r[   rX   rY   r(   s         r   Útest_aes_128_cfb8z"SP800TestVectors.test_aes_128_cfb8  sž   € Ø>ˆ	Ø>ˆ
Ø:ˆØ:ˆä˜‹nˆÜ�r‹]ˆÜ˜iÓ(ˆ	Ü˜zÓ*ˆ
ä—‘˜œcŸl™l¨B¸QÔ?ˆØ×Ñ˜Ÿ™¨	Ó2°JÔ?Ü—‘˜œcŸl™l¨B¸QÔ?ˆØ×Ñ˜Ÿ™¨
Ó3°YÕ?r   c                 óŒ  — d}d}d}d}t        |«      }t        |«      }t        |«      }t        |«      }t        j                  |t        j                  |d¬«      }| j	                  |j                  |«      |«       t        j                  |t        j                  |d¬«      }| j	                  |j                  |«      |«       y )Nr‹   Ú$cda2521ef0a905ca44cd057cbf0d47a0678aÚ08e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7brŽ   r   r   r�   r�   s         r   Útest_aes_192_cfb8z"SP800TestVectors.test_aes_192_cfb8,  sž   € Ø>ˆ	Ø>ˆ
ØJˆØ:ˆä˜‹nˆÜ�r‹]ˆÜ˜iÓ(ˆ	Ü˜zÓ*ˆ
ä—‘˜œcŸl™l¨B¸QÔ?ˆØ×Ñ˜Ÿ™¨	Ó2°JÔ?Ü—‘˜œcŸl™l¨B¸QÔ?ˆØ×Ñ˜Ÿ™¨
Ó3°YÕ?r   c                 óŒ  — d}d}d}d}t        |«      }t        |«      }t        |«      }t        |«      }t        j                  |t        j                  |d¬«      }| j	                  |j                  |«      |«       t        j                  |t        j                  |d¬«      }| j	                  |j                  |«      |«       y )Nr‹   Ú$dc1f1a8520a64db55fcc8ac554844e889700Ú@603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4rŽ   r   r   r�   r�   s         r   Útest_aes_256_cfb8z"SP800TestVectors.test_aes_256_cfb8<  sž   € Ø>ˆ	Ø>ˆ
ØZˆØ:ˆä˜‹nˆÜ�r‹]ˆÜ˜iÓ(ˆ	Ü˜zÓ*ˆ
ä—‘˜œcŸl™l¨B¸QÔ?ˆØ×Ñ˜Ÿ™¨	Ó2°JÔ?Ü—‘˜œcŸl™l¨B¸QÔ?ˆØ×Ñ˜Ÿ™¨
Ó3°YÕ?r   c                 óŒ  — d}d}d}d}t        |«      }t        |«      }t        |«      }t        |«      }t        j                  |t        j                  |d¬«      }| j	                  |j                  |«      |«       t        j                  |t        j                  |d¬«      }| j	                  |j                  |«      |«       y )NÚ€6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710Ú€3b3fd92eb72dad20333449f8e83cfb4ac8a64537a0b3a93fcde3cdad9f1ce58b26751f67a3cbb140b1808cf187a4f4dfc04b05357c5d1c0eeac4c66f9ff7f2e6r�   rŽ   r   r   r�   r�   s         r   Útest_aes_128_cfb128z$SP800TestVectors.test_aes_128_cfb128L  s¤   € ð;ˆ	ð;ˆ
ð ;ˆØ:ˆä˜‹nˆÜ�r‹]ˆÜ˜iÓ(ˆ	Ü˜zÓ*ˆ
ä—‘˜œcŸl™l¨B¸SÔAˆØ×Ñ˜Ÿ™¨	Ó2°JÔ?Ü—‘˜œcŸl™l¨B¸SÔAˆØ×Ñ˜Ÿ™¨
Ó3°YÕ?r   c                 óŒ  — d}d}d}d}t        |«      }t        |«      }t        |«      }t        |«      }t        j                  |t        j                  |d¬«      }| j	                  |j                  |«      |«       t        j                  |t        j                  |d¬«      }| j	                  |j                  |«      |«       y )Nr›   Ú€cdc80d6fddf18cab34c25909c99a417467ce7f7f81173621961a2b70171d3d7a2e1e8a1dd59b88b1c8e60fed1efac4c9c05f9f9ca9834fa042ae8fba584b09ffr”   rŽ   r   r   r�   r�   s         r   Útest_aes_192_cfb128z$SP800TestVectors.test_aes_192_cfb128b  s¥   € ð;ˆ	ð;ˆ
ð KˆØ:ˆä˜‹nˆÜ�r‹]ˆÜ˜iÓ(ˆ	Ü˜zÓ*ˆ
ä—‘˜œcŸl™l¨B¸SÔAˆØ×Ñ˜Ÿ™¨	Ó2°JÔ?Ü—‘˜œcŸl™l¨B¸SÔAˆØ×Ñ˜Ÿ™¨
Ó3°YÕ?r   c                 óŒ  — d}d}d}d}t        |«      }t        |«      }t        |«      }t        |«      }t        j                  |t        j                  |d¬«      }| j	                  |j                  |«      |«       t        j                  |t        j                  |d¬«      }| j	                  |j                  |«      |«       y )Nr›   Ú€dc7e84bfda79164b7ecd8486985d386039ffed143b28b1c832113c6331e5407bdf10132415e54b92a13ed0a8267ae2f975a385741ab9cef82031623d55b1e471r˜   rŽ   r   r   r�   r�   s         r   Útest_aes_256_cfb128z$SP800TestVectors.test_aes_256_cfb128x  s¥   € ð;ˆ	ð
;ˆ
ð [ˆØ:ˆä˜‹nˆÜ�r‹]ˆÜ˜iÓ(ˆ	Ü˜zÓ*ˆ
ä—‘˜œcŸl™l¨B¸SÔAˆØ×Ñ˜Ÿ™¨	Ó2°JÔ?Ü—‘˜œcŸl™l¨B¸SÔAˆØ×Ñ˜Ÿ™¨
Ó3°YÕ?r   N)
rA   rB   rC   Ú__doc__r‘   r•   r™   r�   r    r£   rF   r   r   r‰   r‰     s+   „ ñò@ò @ò @ò @ò,@ó,@r   r‰   c                 ó˜   — g }|t        t        «      z  }| j                  d«      r|t        t        «      z  }|t        t        «      z  }|S )NÚ
slow_tests)r   r   ÚgetrH   r‰   )ÚconfigÚtestss     r   Ú	get_testsrª   �  sF   € Ø€EØ	Œ_œXÓ&Ñ&€EØ‡z�z�,ÔØ”¤Ó0Ñ0ˆØ	Œ_Ô-Ó.Ñ.€EØ€Lr   Ú__main__c                  ó<   — t        j                  t        «       «      S rN   )ÚunittestÚ	TestSuiterª   rF   r   r   rR   rR   š  s   € ”H×&Ñ&¤y£{Ó3€ r   Úsuite)ÚdefaultTest)$r­   Úbinasciir   ÚCrypto.SelfTest.loaderr   ÚCrypto.SelfTest.st_commonr   ÚCrypto.Util.py3compatr   r   ÚCrypto.Cipherr   r	   r
   ÚCrypto.Hashr   ÚCrypto.SelfTest.Cipher.test_CBCr   r   r   ÚTestCaserH   Únist_aes_kat_mmt_filesÚnist_aes_mct_filesÚfile_gen_namer;   Úreplacer]   r�   ÚsetattrÚnist_tdes_filesr‰   rª   rA   r¯   ÚmainrF   r   r   ú<module>rÀ      sž  ðó> Ý å 4Ý 5ß 4ß (Ñ (Ý  å >ò8ô41Ð!ô 41ônr�X×&Ñ&ô rðlÐ ð&Ð ð ,ò C€MØò CˆØ!×)Ñ)¨#¨tÓ4ˆ	Ø%.°Tó 	8á� ¨iÑ 7¸ÕBñ	CðCð (ò C€MØò CˆØ!×)Ñ)¨#¨tÓ4ˆ	Ø%.°Tó 	8á� ¨iÑ 7¸ÕBñ	CðCð ˆxð€ð %ò @€MØò 5ˆØ!×)Ñ)¨#¨tÓ4ˆ	Ø%.°Tô 	5ð5ñ ˆN˜L¨9Ñ4°hÕ?ð@ôu@�x×(Ñ(ô u@ðp ó ð ˆzÒÙ3€EØ€H‡M�M˜gÖ&ð r   