+
    '(jM                        ^ RI t ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIH	t	H
t
 ^ RIHt ^ RIHt ^ RIHt R	 t ! R
 R]P$                  4      t ! R R]P$                  4      tR t ! R R]P$                  4      t ! R R]P$                  4      t ! R R]P$                  4      t/ 3R lt]R8X  d   R t]P8                  ! RR7       R# R# )    N)	unhexlify)list_test_cases)load_test_vectors_wycheproof)tobytesbchr)AES)SHAKE128)strxorc                 `    \         P                  ! \        V 4      R 7      P                  V4      # ))data)r	   newr   read)taglengths   &&T/home/ubuntu/cf-venv/lib/python3.14/site-packages/Crypto/SelfTest/Cipher/test_SIV.pyget_tag_randomr   -   s     <<WS\*//77    c                      a  ] tR t^1t o ]! R^ 4      t]! R^04      t]! R^@4      t]! R^4      t]! R^4      t	R t
R tR tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tRtV tR# )SivTestskey_256key_384key_512	nonce_128r   c                   V P                   V P                  V P                  3 F  p\        P                  ! V\        P
                  V P                  R 7      p\        RR4      pVP                  V4      w  rE\        P                  ! V\        P
                  V P                  R 7      pVP                  WE4      pV P                  W64       K  	  R# )nonce	plaintextNi@  )r   r   r   r   r   MODE_SIVnonce_96r   encrypt_and_digestdecrypt_and_verifyassertEqual)selfkeycipherptctmacpt2s   &      r   test_loopback_128SivTests.test_loopback_1289   s    <<t||;CWWS#,,dmmDFX6B//3GBWWS#,,dmmDF++B4CR% <r   c                   \         P                  ! V P                  \         P                  4       \         P                  ! V P                  \         P                  V P                  4      pVP                  V P                  4      w  r#\         P                  ! V P                  \         P                  V P                  R 7      pVP                  V P                  4      w  rEV P                  W#,           WE,           4       R# r   N)r   r   r   r   r   r    r   r"   )r#   r%   ct1tag1ct2tag2s   &     r   
test_nonceSivTests.test_nonceC   s    cll+s||T]]C--dii8	s||4==I--dii8	SZ0r   c                    V P                  \        \        P                  V P                  \        P
                  R R7       R# )test12345678r   N)assertRaises	TypeErrorr   r   r   r   r#   s   &r   test_nonce_must_be_bytes!SivTests.test_nonce_must_be_bytesN   s,    )SWWdllCLL / 	 	1r   c                P   V P                  \        \        P                  V P                  \        P
                  R R7       \        ^^4       FU  p\        P                  ! V P                  \        P
                  \        ^4      V,          R7      pVP                  R4       KW  	  R# )r   r      N)	r6   
ValueErrorr   r   r   r   ranger   r    )r#   xr%   s   &  r   test_nonce_lengthSivTests.test_nonce_lengthR   sn    *cggt||S\\ # 	 	% q#AWWT\\3<<tAw{KF%%g. r   c                    \         P                  ! V P                  \         P                  V P                  R 7      pV P                  VP                  \         P                  4       R# r-   )r   r   r   r   r   r"   
block_sizer#   r%   s   & r   test_block_size_128SivTests.test_block_size_128[   s:    s||4==I**CNN;r   c                X   \         P                  ! V P                  \         P                  V P                  R 7      pV P                  VP                  V P                  4       V P                  \        \         P                  ! V P                  \         P                  4      R4      4       R# )r   r   N)	r   r   r   r   r   r"   r   assertFalsehasattrrD   s   & r   test_nonce_attributeSivTests.test_nonce_attribute_   sb    s||4==It}}5 	s||!DgNOr   c           	        V P                  \        \        P                  V P                  \        P
                  V P                  ^4       V P                  \        \        P                  V P                  \        P
                  V P                  ^R7       \        P                  ! V P                  \        P
                  V P                  RR7       R# )   )r   unknownF)r   	use_aesniN)r6   r7   r   r   r   r   r   r8   s   &r   test_unknown_parameters SivTests.test_unknown_parametersf   s    )SWWdllCLL--	,)SWWdllCLL $q 	 	:
 	cll$--	!r   c                    \         P                  ! V P                  \         P                  V P                  R 7      pVP                  V P                  4       V P                  \        VP                  V P                  4       \         P                  ! V P                  \         P                  V P                  R 7      pVP                  V P                  4       V P                  \        VP                  V P                  V P                  4       R# r-   )r   r   r   r   r   r    r   r6   r7   decryptr!   rD   s   & r   test_encrypt_excludes_decrypt&SivTests.test_encrypt_excludes_decryptq   s    s||4==I!!$)),)V^^TYY?s||4==I!!$)),)V%>%>))TYY	0r   c                x   \         P                  ! V P                  \         P                  V P                  R 7      pV P                  \        VP                  R4       \         P                  ! V P                  \         P                  V P                  R 7      pV P                  \        VP                  RR4       R# )r   ztest1234567890-*s   xxxxN)	r   r   r   r   r   r6   r7   encryptr!   rD   s   & r   test_data_must_be_bytes SivTests.test_data_must_be_bytes{   sr    s||4==I)V^^5HIs||4==I)V%>%>-w	8r   c                    \         P                  ! V P                  \         P                  V P                  R 7      pVP                  V P                  4      w  r#V P                  \        V4      ^4       R# r-   )	r   r   r   r   r   r    r   r"   len)r#   r%   _r(   s   &   r   test_mac_lenSivTests.test_mac_len   sJ    s||4==I**4995S2&r   c                   ^ RI Hp \        P                  ! V P                  \        P
                  V P                  R7      pVP                  V P                  4      w  r4V! V^4      p\        P                  ! V P                  \        P
                  V P                  R7      pV P                  \        VP                  VV4       R# )r   )strxor_cr   N)Crypto.Util.strxorr`   r   r   r   r   r   r    r   r6   r=   r!   )r#   r`   r%   r'   r(   invalid_macs   &     r   test_invalid_macSivTests.test_invalid_mac   s    /s||4==I++DII6sD)s||4==I*f&?&?%	'r   c                   \         P                  ! V P                  \         P                  V P                  R 7      pVP                  4       pV P                  VP                  4       \        V4      4       \         P                  ! V P                  \         P                  V P                  R 7      pVP                  V4       R# r-   )
r   r   r   r   r   	hexdigestr"   digestr   	hexverify)r#   r%   mac_hexs   &  r   test_hex_macSivTests.test_hex_mac   su    s||4==I""$)G*<=s||4==I!r   c                j   \        V P                  4      p\        V P                  4      p\        V P                  4      p\        V P                  4      p\        P
                  ! V P                  \        P                  V P                  R 7      pVP                  V P                  4       VP                  V P                  4      w  rg\        P
                  ! V\        P                  VR 7      pRVR&   RVR&   VP                  V4       RVR&   VP                  V4      w  rV P                  Wi4       V P                  Wz4       V P                  VP                  VP                  4       \        V P                  4      p\        V P                  4      p\        V P                  4      p\        V4      p\        V4      p\        P
                  ! V\        P                  VR 7      pRVR&   RVR&   VP                  V4       RVR&   VP                  W4      pV P                  V P                  V4       R# r   s   :N   NN)	bytearrayr   r   r   r   r   r   updater    r"   r   r!   r#   r$   r   r   headercipher1r'   r   cipher2ct_testtag_testct_batag_bacipher3pt_tests   &              r   test_bytearraySivTests.test_bytearray   s    %$--(#499%''$,,,, $/ 	tyy!,,TYY7''#,, %' "B#b	v$r
#66t<%'6 %$--(499%"3''#,, %' "B#b	v$r
,,U;G,r   c                   \        \        V P                  4      4      p\        \        V P                  4      4      p\        \        V P                  4      4      p\        \        V P                  4      4      p\
        P                  ! V P                  \
        P                  V P                  R 7      pVP                  V P                  4       VP                  V P                  4      w  rg\
        P                  ! V\
        P                  VR 7      pRVR&   RVR&   VP                  V4       RVR&   VP                  V4      w  rV P                  Wi4       V P                  Wz4       V P                  VP                  VP                  4       \        \        V P                  4      4      p\        \        V P                  4      4      p\        \        V P                  4      4      p\        \        V4      4      p\        \        V4      4      p\
        P                  ! V\
        P                  VR 7      pRVR&   RVR&   VP                  V4       RVR&   VP                  W4      pV P                  V P                  V4       R# rm   )
memoryviewro   r   r   r   r   r   r   rp   r    r"   r   r!   rq   s   &              r   test_memoryviewSivTests.test_memoryview   s    4<<019T]]34)DII./Idii01''$,,,, $/ 	tyy!,,TYY7''#,, %' "B#b	v$r
"55d;%'6 4<<019T]]34Idii019R=)IcN+''#,, %' "B#b	v$r
,,U;G,r   c                   Rp\         P                  ! V P                  \         P                  V P                  R7      pVP                  V4      w  r4\        ^4      p\         P                  ! V P                  \         P                  V P                  R7      pVP                  WR7      w  rgV P                  W54       V P                  VR4       V P                  WG4       \         P                  ! V P                  \         P                  V P                  R7      pVP                  W4VR7      pV P                  W4       V P                  VR4       R#    5r   outputNs   55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555)	r   r   r   r   r   r    ro   r"   r!   )r#   r&   r%   r'   r   r   restag_outs   &       r   test_output_paramSivTests.test_output_param   s    s||4==I++B/3s||4==I000C$d#&s||4==I'''?$d#r   c                H   Rp\         P                  ! V P                  \         P                  V P                  R7      pVP                  V4      w  r4\        \        ^4      4      p\         P                  ! V P                  \         P                  V P                  R7      pVP                  WR7       V P                  W54       \         P                  ! V P                  \         P                  V P                  R7      pVP                  W4VR7       V P                  W4       R# r   )
r   r   r   r   r   r    r~   ro   r"   r!   )r#   r&   r%   r'   r   r   s   &     r   test_output_param_memoryview%SivTests.test_output_param_memoryview  s    s||4==I++B/IcN+s||4==I!!"!4$s||4==I!!"&!9$r   c                   ^pRV,          p\         P                  ! V P                  \         P                  V P                  R7      pVP                  V4      w  rE\         P                  ! V P                  \         P                  V P                  R7      pV P                  \        VP
                  VRV,          R7       \         P                  ! V P                  \         P                  V P                  R7      pV P                  \        VP                  WERV,          R7       \        V^,
          4      p\         P                  ! V P                  \         P                  V P                  R7      pV P                  \        VP
                  W&R7       \         P                  ! V P                  \         P                  V P                  R7      pV P                  \        VP                  WEVR7       R# )   r   r      0r   N)r   r   r   r   r   r    r6   r7   r!   ro   r=   )r#   LEN_PTr&   r%   r'   r   shorter_outputs   &      r   test_output_param_negSivTests.test_output_param_neg  sE   F]s||4==I++B/s||4==I)V%>%>4RX=Ys||4==I)V%>%>PTW]P]^"6A:.s||4==I*f&?&?[s||4==I*f&?&?Q_`r    N)__name__
__module____qualname____firstlineno__r   r   r   r   r   r   r*   r2   r9   r@   rE   rJ   rP   rT   rX   r]   rc   rj   r{   r   r   r   r   __static_attributes____classdictcell____classdict__s   @r   r   r   1   s     Y+GY+GY+Gk2.H&#&D&	11/<P	!08'
	'"+-Z+-Z$$%a ar   r   c                      a  ] tR tRt o ]! R^ 4      t]! R^4      t]! R^4      tR tR t	R t
R tR	 tR
 tR tR tR tRtV tR# )SivFSMTestsi*  r   r   r   c                    \         P                  ! V P                  \         P                  V P                  R 7      pV P                  \        VP                  R4       R# r   s   xxxN)r   r   r   r   r   r6   r7   rW   rD   s   & r   test_invalid_init_encrypt%SivFSMTests.test_invalid_init_encrypt0  9    s||#}}.)V^^V<r   c                    \         P                  ! V P                  \         P                  V P                  R 7      pV P                  \        VP                  R4       R# r   )r   r   r   r   r   r6   r7   rS   rD   s   & r   test_invalid_init_decrypt%SivFSMTests.test_invalid_init_decrypt6  r   r   c                   \         P                  ! V P                  \         P                  V P                  R 7      pVP                  V P                  4       VP                  4       p\         P                  ! V P                  \         P                  V P                  R 7      pVP                  V P                  4       VP                  V4       R# r-   )	r   r   r   r   r   rp   r   rg   verifyr#   r%   r(   s   &  r   $test_valid_init_update_digest_verify0SivFSMTests.test_valid_init_update_digest_verify<  s     s||#}}.dii mmo s||#}}.dii cr   c                    \         P                  ! V P                  \         P                  V P                  R 7      pVP                  4        R# r-   )r   r   r   r   r   rg   rD   s   & r   test_valid_init_digest"SivFSMTests.test_valid_init_digestJ  s)    s||4==Ir   c                4   \         P                  ! V P                  \         P                  V P                  R 7      pVP                  4       p\         P                  ! V P                  \         P                  V P                  R 7      pVP                  V4       R# r-   )r   r   r   r   r   rg   r   r   s   &  r   test_valid_init_verify"SivFSMTests.test_valid_init_verifyO  sU    s||4==Immos||4==Icr   c                &   \         P                  ! V P                  \         P                  V P                  R 7      pVP                  V P                  4       VP                  4       p\        ^4       F"  pV P                  W!P                  4       4       K$  	  \         P                  ! V P                  \         P                  V P                  R 7      pVP                  V P                  4       \        ^4       F  pVP                  V4       K  	  R# r-   )r   r   r   r   r   rp   r   rg   r>   r"   r   )r#   r%   	first_macr?   s   &   r   $test_valid_multiple_digest_or_verify0SivFSMTests.test_valid_multiple_digest_or_verifyW  s    s||4==Idii MMO	qAY8  s||4==Idii qAMM)$ r   c                   \         P                  ! V P                  \         P                  V P                  R 7      pVP                  V P                  4       VP                  V P                  4      w  r#\         P                  ! V P                  \         P                  V P                  R 7      pVP                  V P                  4       VP                  W#4      pV P                  V P                  V4       R# r-   )
r   r   r   r   r   rp   r   r    r!   r"   )r#   r%   r'   r(   r&   s   &    r   0test_valid_encrypt_and_digest_decrypt_and_verify<SivFSMTests.test_valid_encrypt_and_digest_decrypt_and_verifye  s    s||4==Idii ++DII6 s||4==Idii &&r/B'r   c                    \         P                  ! V P                  \         P                  V P                  R 7      pVP                  V P                  4      w  r#V P                  \        VP
                  R4       R# )r   r   N)	r   r   r   r   r   r    r   r6   r7   r#   r%   r'   r   s   &   r   (test_invalid_multiple_encrypt_and_digest4SivFSMTests.test_invalid_multiple_encrypt_and_digestq  sN    s||4==I++DII6)V%>%>Dr   c                   \         P                  ! V P                  \         P                  V P                  R 7      pVP                  V P                  4      w  r#\         P                  ! V P                  \         P                  V P                  R 7      pVP                  W#4       V P                  \        VP                  W#4       R# r-   )
r   r   r   r   r   r    r   r!   r6   r7   r   s   &   r   (test_invalid_multiple_decrypt_and_verify4SivFSMTests.test_invalid_multiple_decrypt_and_verifyv  sz    s||4==I++DII6s||4==I!!"*)V%>%>Hr   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s   @r   r   r   *  s^     Y+Gj"-H&#&D==
%
(E
I Ir   r   c                 (   V ^ ,          P                  R4       Uu. uF  p\        V4      NK  	  up.pY R,           Uu. uF  p\        V4      NK  	  up,          pV ^,          '       d   \        V ^,          4      pMRpW#.,          pV# u upi u upi )r   -:      NN)splitr   )tvr?   new_tvr   s   &   r   	transformr     s~    %'U[[%56%5y|%567F
g.g	!g..F	!uu"Q% 
iFM 7.s
   B
Bc                   r   a ] tR tRt oRtRR.t] U u. uF  p \        V 4      NK  	  up tR tRt	Vt
R# u up i )TestVectorsi  z6Class exercising the SIV test vectors found in RFC5297Nc                   V P                    F  w  rr4rV\        P                  ! V\        P                  VR 7      pV F  pVP	                  V4       K  	  VP                  V4      w  rV P                  W94       V P                  WJ4       \        P                  ! V\        P                  VR 7      pV F  pVP	                  V4       K  	  VP                  W44      pV P                  W+4       K  	  R# r-   )test_vectorsr   r   r   rp   r    r"   r!   )r#   
assoc_datar&   r'   r(   r$   r   r%   r?   r0   mac2r)   s   &           r   runTestTestVectors.runTest  s    373D3D/JBS WWS#,,e<Fa   11"5ICR%S' WWS#,,e<Fa   ++B4CR% 4Er   r   )0101112131415161718191a1b1c1d1e1f2021222324252627112233445566778899aabbccddee40c02b9690c4dc04daef7f6afe5c 85632d07c6e8f37f950acd320a2ecc93@fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0f0f1f2f3f4f5f6f7f8f9fafbfcfdfeffN)ze00112233445566778899aabbccddeeffdeaddadadeaddadaffeeddccbbaa99887766554433221100-102030405060708090a0^7468697320697320736f6d6520706c61696e7465787420746f20656e6372797074207573696e67205349562d414553^cb900f2fddbe404326601965c889bf17dba77ceb094fa663b7a3f748ba8af829ea64ad544a272e9c485b62a3fd5c0d 7bdb6e3b432667eb06f4d14bff2fbd0f@7f7e7d7c7b7a79787776757473727170404142434445464748494a4b4c4d4e4f 09f911029d74e35bd84156c5635688c0)r   r   r   r   __doc__test_vectors_hexr   r   r   r   r   )r   r   s   0@r   r   r     sF     @
, .>?-=rYr]-=?L& & @s   4r   c                   D   a  ] tR tRt o R tR tR tR tR tR t	Rt
V tR	# )
TestVectorsWycheproofi  c                R    \         P                  P                  V 4       R V n        R# NoneNunittestTestCase__init___idr8   s   &r   r   TestVectorsWycheproof.__init__      ""4(r   c                *    \        RRR4      V n        R# )Cipherzaes_siv_cmac_test.jsonzWycheproof AES SIVNr   
wycheproofr   r   r8   s   &r   setUpTestVectorsWycheproof.setUp  s    ./G/G/CEr   c                    V P                   # Nr   r8   s   &r   shortDescription&TestVectorsWycheproof.shortDescription      xxr   c                   R \        VP                  4      ,           V n        \        P                  ! VP
                  \        P                  4      pVP                  VP                  4       VP                  VP                  4      w  r4VP                  '       d%   V P                  WC,           VP                  4       R# R# )z!Wycheproof Encrypt AES-SIV Test #N)stridr   r   r   r$   r   rp   aadr    msgvalidr"   r'   r#   r   r%   r'   r   s   &&   r   test_encrypt"TestVectorsWycheproof.test_encrypt  sx    6RUUC.bff++BFF3888SXruu- r   c                   R \        VP                  4      ,           V n        \        P                  ! VP
                  \        P                  4      pVP                  VP                  4        VP                  VP                  R,          VP                  R,          4      pVP                  '       g   Q hV P                  W1P                  4       R#   \         d    TP                  '       d   Q h R# i ; i)z!Wycheproof Decrypt AES_SIV Test #:   NN:Nr   NN)r   r   r   r   r   r$   r   rp   r   r!   r'   r   r"   r   r=   r#   r   r%   r&   s   &&  r   test_decrypt"TestVectorsWycheproof.test_decrypt  s    6RUUC.bff	)**255:ruuSzBB 888O8R(	  	 xxx<x	 s   -4C C5/C54C5c                p    V P                    F%  pV P                  V4       V P                  V4       K'  	  R # r   r   r   r  r#   r   s   & r   r   TestVectorsWycheproof.runTest  ,    ''Bb!b! r   r   r   Nr   r   r   r   r   r   r   r   r  r   r   r   r   s   @r   r   r     s)     E
.)" "r   r   c                   D   a  ] tR tRt o R tR tR tR tR tR t	Rt
V tR	# )
TestVectorsWycheproof2i  c                R    \         P                  P                  V 4       R V n        R# r   r   r8   s   &r   r   TestVectorsWycheproof2.__init__  r   r   c                *    \        RRR4      V n        R# )r   zaead_aes_siv_cmac_test.jsonzWycheproof AEAD SIVNr   r   r8   s   &r   r   TestVectorsWycheproof2.setUp  s    ./G/L/DFr   c                    V P                   # r   r   r8   s   &r   r   'TestVectorsWycheproof2.shortDescription  r   r   c                   R \        VP                  4      ,           V n        \        P                  ! VP
                  \        P                  VP                  R7      pVP                  VP                  4       VP                  VP                  4      w  r4VP                  '       d9   V P                  W1P                  4       V P                  WAP                  4       R# R# )z&Wycheproof Encrypt AEAD-AES-SIV Test #r   N)r   r   r   r   r   r$   r   ivrp   r   r    r   r   r"   r'   r   r   s   &&   r   r   #TestVectorsWycheproof2.test_encrypt  s    ;c"%%jHRUU;bff++BFF3888R'S&&) r   c                   R \        VP                  4      ,           V n        \        P                  ! VP
                  \        P                  VP                  R7      pVP                  VP                  4        VP                  VP                  VP                  4      pVP                  '       g   Q hV P                  W1P                  4       R#   \          d    TP                  '       d   Q h R# i ; i)z&Wycheproof Decrypt AEAD-AES-SIV Test #r   N)r   r   r   r   r   r$   r   r  rp   r   r!   r'   r   r   r"   r   r=   r   s   &&  r   r  #TestVectorsWycheproof2.test_decrypt  s    ;c"%%jHRUU;bff	)**255"&&9B 888O8R(	  	 xxx<x	 s   9&C C3-C32C3c                p    V P                    F%  pV P                  V4       V P                  V4       K'  	  R # r   r  r  s   & r   r   TestVectorsWycheproof2.runTest  r  r   r  Nr	  r   s   @r   r  r    s)     F
*)" "r   r  c                     V P                  R 4      p. pV\        \        4      ,          pV\        \        4      ,          pV\	        4       .,          pV\        4       .,          pV\        4       .,          pV# )wycheproof_warnings)getr   r   r   r   r   r  )configr  testss   &  r   	get_testsr    sk     **%:;E	_X&&E	_[))E	{}E	$&((E	%'))ELr   __main__c                  >    \         P                  ! \        4       4      # r   )r   	TestSuiter  r   r   r   <lambda>r"  '  s    H&&y{3r   suite)defaultTest)jsonr   binasciir   Crypto.SelfTest.st_commonr   Crypto.SelfTest.loaderr   Crypto.Util.py3compatr   r   Crypto.Cipherr   Crypto.Hashr	   ra   r
   r   r   r   r   r   r   r   r  r  r   r#  mainr   r   r   <module>r-     s   >    5 ? /    %8vax   varRI(## RIj6&(## 6&r("H-- ("V)"X.. )"X  	 z3EMMg& r   