+
    '(j                     h   ^ RI t ^ RIHt ^ RIHtHtHt ^ RIHt ^ RI	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/ 3R lt]R8X  d   R t] P6                  ! RR7       R# R# )    N)	unhexlify)btobytesbchr)long_to_bytes)load_test_vectors)list_test_cases)AES)SHAKE128c                 `    \         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_OCB.pyget_tag_randomr   +   s     <<WS\*//77    c                      a  ] tR t^/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R tR tR tR tR tR tRtV tR# )OcbTestskey_128	nonce_128r   c                t   \         P                  ! V P                  \         P                  V P                  R 7      p\        RR4      pVP                  V4      w  r4\         P                  ! V P                  \         P                  V P                  R 7      pVP                  W44      pV P                  W%4       R# )nonce	plaintextNi@  )	r
   r   r   MODE_OCBnonce_96r   encrypt_and_digestdecrypt_and_verifyassertEqual)selfcipherptctmacpt2s   &     r   test_loopback_128OcbTests.test_loopback_1285   sz    s||4==IK2++B/s||4==I''0!r   c                   \         P                  ! V P                  \         P                  4       \         P                  ! V P                  \         P                  V P                  4      pVP                  V P                  4      p\         P                  ! V P                  \         P                  V P                  R 7      pV P                  W!P                  V P                  4      4       R# r   N)r
   r   r   r   r   encryptr   r!   r"   r#   r%   s   &  r   
test_nonceOcbTests.test_nonce>   s    cll+s||T]]C^^DII&s||4==I^^DII67r   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!OcbTests.test_nonce_must_be_bytesH   s,    )SWWdllCLL / 	 	1r   c           	        V P                  \        \        P                  V P                  \        P
                  \        R 4      R7       \        ^^4       FA  p\        P                  ! V P                  \        P
                  V P                  RV R7       KC  	  V P                  \        \        P                  V P                  \        P
                  V P                  R7       R# ) r   N)	r2   
ValueErrorr
   r   r   r   r   ranger   )r"   r   s   & r   test_nonce_lengthOcbTests.test_nonce_lengthL   s    *cggt||S\\ !" 	 	' ArlFGGDLL#,,dii6HI # 	*cggt||S\\ $		 	 	+r   c                   \         P                  ! V P                  \         P                  V P                  R 7      pV P                  VP                  \         P                  4       \         P                  ! V P                  \         P                  4      P                  p\         P                  ! V P                  \         P                  4      P                  pV P                  \        V4      ^4       V P                  W#4       R# r+   )
r
   r   r   r   r   r!   
block_sizer   lenassertNotEqualr"   r#   nonce1nonce2s   &   r   test_block_size_128OcbTests.test_block_size_128X   s    s||4==I**CNN; s||4::s||4::Vb)F+r   c                   \         P                  ! V P                  \         P                  V P                  R 7      pV P                  VP                  V P                  4       \         P                  ! V P                  \         P                  4      P                  p\         P                  ! V P                  \         P                  4      P                  pV P                  \        V4      ^4       V P                  W#4       R# r+   )	r
   r   r   r   r   r!   r   r?   r@   rA   s   &   r   test_nonce_attributeOcbTests.test_nonce_attributeb   s    s||4==It}}5 s||4::s||4::Vb)F+r   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)r2   r3   r
   r   r   r   r   r4   s   &r   test_unknown_parameters OcbTests.test_unknown_parametersl   s    )SWWdllCLL--	,)SWWdllCLL $q 	 	:
 	cll$--	!r   c                    R Fs  p\         P                  ! V P                  \         P                  V P                  R7      p\        W!4      ! \        R4      4      pV P                  V\        R4      4       Ku  	  R# )r,   r   r8   Nr,   decrypt)r
   r   r   r   r   getattrr   r!   )r"   funcr#   results   &   r   test_null_encryption_decryption(OcbTests.test_null_encryption_decryptionw   sQ    (DWWT\\3<<t}}MFV*1R51FVQrU+ )r   c                   \         P                  ! V P                  \         P                  V P                  R 7      pVP                  \        R4      4       V P                  \        VP                  \        R4      4       \         P                  ! V P                  \         P                  V P                  R 7      pVP                  \        R4      4       V P                  \        VP
                  \        R4      4       R# )r   xyzN)
r
   r   r   r   r   r,   r   r2   r3   rQ   r"   r#   s   & r   test_either_encrypt_or_decrypt'OcbTests.test_either_encrypt_or_decrypt}   s    s||4==Iqx )V^^QuX>s||4==Iqx )V^^QuX>r   c                v   \         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4       R# )r   ztest1234567890-*N)	r
   r   r   r   r   r2   r3   r,   rQ   rY   s   & r   test_data_must_be_bytes OcbTests.test_data_must_be_bytes   sl    s||4==I)V^^5HIs||4==I)V^^5HIr   c           	     &   V P                  \        \        P                  V P                  \        P
                  V P                  ^R7       V P                  \        \        P                  V P                  \        P
                  V P                  ^R7       \        ^^4       Fw  p\        P                  ! V P                  \        P
                  V P                  VR7      pVP                  V P                  4      w  r4V P                  \        V4      V4       Ky  	  \        P                  ! V P                  \        P
                  V P                  R7      pVP                  V P                  4      w  r4V P                  \        V4      ^4       R# )rJ   r   mac_lenr   N)r2   r9   r
   r   r   r   r   r:   r   r   r!   r?   )r"   ra   r#   _r&   s   &    r   test_mac_lenOcbTests.test_mac_len   s   *cggt||S\\ $q 	 	:*cggt||S\\ $t 	 	= Q'GWWT\\3<<t}}%,.F..tyy9FASXw/	 ( 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.strxorrf   r
   r   r   r   r   r   r   r2   r9   r    )r"   rf   r#   r%   r&   invalid_macs   &     r   test_invalid_macOcbTests.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OcbTests.test_hex_mac   su    s||4==I""$)G*<=s||4==I!r   c                L   \        R ^4      p\        R^4      p\        P                  ! V P                  \        P                  V P
                  R7      pVP                  V4       VP                  V4      w  rER pR F  p\        P                  ! V P                  \        P                  V P
                  R7      pV! W4       F  pVP                  V4       K  	  \        R4      p	V! WG4       F  pWP                  V4      ,          p	K  	  WP                  4       ,          p	V P                  W)4       VP                  V4       K  	  R F  p\        P                  ! V P                  \        P                  V P
                  R7      pV! W4       F  pVP                  V4       K  	  \        R4      p
V! W'4       F  pWP                  V4      ,          p
K  	  WP                  4       ,          p
V P                  WJ4       V P                  VP                  4       V4       K  	  R# )zauthenticated datar   r   c                 h    \        ^ \        V 4      V4       Uu. uF  q W"V,            NK  	  up# u upi )r   )r:   r?   )r   chunk_lengthis   && r   break_up.OcbTests.test_message_chunks.<locals>.break_up   s?    49!SY 5" # 5"q\>* 5" # # #s   /r8   N)
         rJ   
         (   P      )r   r
   r   r   r   r   updater   r   rQ   r!   verifyr,   rm   )r"   	auth_datar   r#   
ciphertextref_macrv   rt   chunkr'   ct2s   &          r   test_message_chunksOcbTests.test_message_chunks   s    ##7=	";4	s||4==Ii $77	B
	#
 @LWWT\\3<<t}}MF!):e$ ;B%C!*;~~e,, <>>##CY,MM'" @ @LWWT\\3<<t}}MF!):e$ ;B%C!):~~e,, ;>>##CZ-V]]_g6 @r   c                   \        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      VP                  4       ,           pVP                  4       p\        P
                  ! V\        P                  VR 7      pRVR&   RVR&   VP                  V4       RVR&   VP                  V4      VP                  4       ,           p	RVR&   VP                  4       p
V P                  Wi4       V P                  Wz4       V P                  VP                  VP                  4       \        V P                  4      p\        V P                  4      p\        V P                  4      p?\        P
                  ! V\        P                  VR 7      pRVR&   RVR&   VP                  V4       RVR&   VP                  \        V	4      \        V
4      4      pV P                  V P                  V4       R# r   s   :Nrz   NN)	bytearrayr   r   r   r
   r   r   r   r,   rm   r!   r   r    )r"   key_banonce_ba	header_badata_bacipher1r%   r   cipher2ct_testtag_testcipher4pt_tests   &            r   test_bytearrayOcbTests.test_bytearray   s    4<<(T]]+dii(	DII&''$,,,, $/ 	tyy!__TYY''//*;;nn''&,, (* %r
&y!'	"//'*W__->>%>>#%'6 4<<(T]]+dii(	''&,, (* %r
&y!'	",,Yw-?8ATUG,r   c                z   \        \        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      VP                  4       ,           pVP                  4       p\
        P                  ! V\
        P                  VR 7      pRVR&   RVR&   VP                  V4       RVR&   VP                  V4      VP                  4       ,           p	RVR&   VP                  4       p
V 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?\
        P                  ! V\
        P                  VR 7      pRVR&   RVR&   VP                  V4       RVR&   VP                  \        V	4      \        V
4      4      pV P                  V P                  V4       R# r   )
memoryviewr   r   r   r   r
   r   r   r   r,   rm   r!   r   r    )r"   key_mvnonce_mv	header_mvdata_mvr   r%   r   r   r   r   r   r   s   &            r   test_memoryviewOcbTests.test_memoryview  s    Idll34i67y34	Ytyy12''$,,,, $/ 	tyy!__TYY''//*;;nn''&,, (* %r
&y!'	"//'*W__->>%>>#%'6 Idll34i67y34	''&,, (* %r
&y!'	",,Z-@*XBVWG,r    N)__name__
__module____qualname____firstlineno__r   r   r   r   r(   r.   r5   r;   rD   rG   rM   rU   rZ   r]   rc   ri   rp   r   r   r   __static_attributes____classdictcell____classdict__s   @r   r   r   /   s     Y+Gk2.H&#&D"81
+,,	!,?J'&	'")7V--^-- --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R tR tR tR tRtV tR# )OcbFSMTestsi=  r   r   r   c                   \         P                  ! V P                  \         P                  V P                  R 7      pVP                  V P                  4      pW!P                  4       ,          pVP                  4       p\         P                  ! V P                  \         P                  V P                  R 7      pVP                  V4       VP                  4        VP                  V4       R# r+   )
r
   r   r   r   r   r,   r   rm   rQ   r   )r"   r#   r%   r&   s   &   r   -test_valid_init_encrypt_decrypt_digest_verify9OcbFSMTests.test_valid_init_encrypt_decrypt_digest_verifyC  s     s||#}}.^^DII&
nnmmo s||#}}.rcr   c                   \         P                  ! V P                  \         P                  V P                  R 7      pVP                  V P                  4      pV P                  \        VP                  4       \         P                  ! V P                  \         P                  V P                  R 7      pVP                  V4       V P                  \        VP                  4       R# r+   )r
   r   r   r   r   r,   r   r2   r3   rm   rQ   r   r-   s   &  r   /test_invalid_init_encrypt_decrypt_digest_verify;OcbFSMTests.test_invalid_init_encrypt_decrypt_digest_verifyS  s     s||#}}.^^DII&)V]]3 s||#}}.r)V]]3r   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   r   r   rm   r   r"   r#   r&   s   &  r   $test_valid_init_update_digest_verify0OcbFSMTests.test_valid_init_update_digest_verifya  s     s||#}}.dii mmo s||#}}.dii cr   c                l   \         P                  ! V P                  \         P                  V P                  R 7      pVP                  V P                  4       VP                  V P                  4      pW!P                  4       ,          pVP                  4       p\         P                  ! V P                  \         P                  V P                  R 7      pVP                  V P                  4       VP                  V4       VP                  4        VP                  V4       \         P                  ! V P                  \         P                  V P                  R 7      pVP                  V P                  4       VP                  V P                  R,          4      pVP                  V P                  R,          4      w  rS\         P                  ! V P                  \         P                  V P                  R 7      pVP                  V P                  4       VP                  V4       VP                  WS4       R# )r   :Nry   N:ry   NNN)r
   r   r   r   r   r   r   r,   rm   rQ   r   r   r    )r"   r#   r%   r&   ct1r   s   &     r   test_valid_full_path OcbFSMTests.test_valid_full_patho  sf    s||#}}.dii ^^DII&
nnmmo s||#}}.dii rc s||#}}.dii nnTYYr]+,,TYYr]; s||#}}.dii s!!#+r   c                ^   \         P                  ! V P                  \         P                  V P                  R 7      pVP                  V P                  4       VP                  V P                  4       VP                  4        V P                  \        VP                  V P                  4       R# r+   )
r
   r   r   r   r   r   r   r,   r2   r3   rY   s   & r    test_invalid_encrypt_after_final,OcbFSMTests.test_invalid_encrypt_after_final  g    s||#}}.dii tyy!)V^^TYY?r   c                ^   \         P                  ! V P                  \         P                  V P                  R 7      pVP                  V P                  4       VP                  V P                  4       VP                  4        V P                  \        VP                  V P                  4       R# r+   )
r
   r   r   r   r   r   r   rQ   r2   r3   rY   s   & r    test_invalid_decrypt_after_final,OcbFSMTests.test_invalid_decrypt_after_final  r   r   c                    \         P                  ! V P                  \         P                  V P                  R 7      pVP                  4        R# r+   )r
   r   r   r   r   rm   rY   s   & r   test_valid_init_digest"OcbFSMTests.test_valid_init_digest  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   rm   r   r   s   &  r   test_valid_init_verify"OcbFSMTests.test_valid_init_verify  sU    s||4==Immos||4==Icr   c                   R F  pR\        R4      V P                  V P                  \        R4      ,           3 F  p\        P                  ! V P                  \        P
                  V P                  R7      pVe   VP                  V4       \        W14      pV! V P                  4       V! V P                  4       V! V P                  4       V! V P                  4       V! 4        K  	  K  	  R# )r,   N3333r   rP   )	r   r   r
   r   r   r   r   r   rR   )r"   method_namer   r#   methods   &    r   &test_valid_multiple_encrypt_or_decrypt2OcbFSMTests.test_valid_multiple_encrypt_or_decrypt  s    /K"AeHdii"ii!C&02	s||'+}}6(MM), 5tyy!tyy!tyy!tyy!2 0r   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   r   r   rm   r:   r!   r   )r"   r#   	first_macxs   &   r   $test_valid_multiple_digest_or_verify0OcbFSMTests.test_valid_multiple_digest_or_verify  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   r   r   r   r    r!   )r"   r#   r%   r&   r$   s   &    r   0test_valid_encrypt_and_digest_decrypt_and_verify<OcbFSMTests.test_valid_encrypt_and_digest_decrypt_and_verify  s    s||4==Idii ++DII6 s||4==Idii &&r/B'r   c           	     t   R F  w  rR F  p\         P                  ! V P                  \         P                  V P                  R7      pV'       d   VP                  V P                  4       \        WA4      ! V P                  4       V P                  \        \        WB4      V P                  4       K  	  K  	  R# )r,   r   N)rP   )rQ   r,   )TF)
r
   r   r   r   r   r   r   rR   r2   r3   )r"   method1_namemethod2_nameassoc_data_presentr#   s   &    r   #test_invalid_mixing_encrypt_decrypt/OcbFSMTests.test_invalid_mixing_encrypt_decrypt  s    +C&L&3"s||'+}}6%MM$)),-dii8!!)WV-J"&))- '4+Cr   c                   R F  p\         P                  ! V P                  \         P                  V P                  R7      pVP                  V P                  4       VP                  4        VP                  4        V P                  \        \        W!4      V P                  4       \         P                  ! V P                  \         P                  V P                  R7      pVP                  V P                  4       K  	  R# )r,   r   N)r,   r   )r
   r   r   r   r   r,   r   rm   r2   r3   rR   r   )r"   r   r#   s   &  r   +test_invalid_encrypt_or_update_after_digest7OcbFSMTests.test_invalid_encrypt_or_update_after_digest  s    .KWWT\\3<<t}}MFNN499%NNMMOi)E"ii) WWT\\3<<t}}MF%%dii0 /r   c                .   \         P                  ! V P                  \         P                  V P                  R 7      pVP                  V P                  4      pW!P                  4       ,          pVP                  4       pR EF  p\         P                  ! V P                  \         P                  V P                  R 7      pVP                  V4       VP                  4        VP                  V4       V P                  \        \        W4      V P                  4       \         P                  ! V P                  \         P                  V P                  R 7      pVP                  W#4       V P                  \        \        W4      V P                  4       EK  	  R# )r   N)rQ   r   )r
   r   r   r   r   r,   r   rm   rQ   r   r2   r3   rR   r    )r"   r#   r%   r&   r   s   &    r   +test_invalid_decrypt_or_update_after_verify7OcbFSMTests.test_invalid_decrypt_or_update_after_verify  s    s||4==I^^DII&
nnmmo.KWWT\\3<<t}}MFNN2NNMM#i)E"ii) WWT\\3<<t}}MF%%b.i)E"ii) /r   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s   @r   r   r   =  sw     Y+Gk2.H&#&D 4,@@@
%
(-
1) )r   r   c                   \        ^ 4      V ^,          ^,
          ,          \        V4      ,           pRp\        ^4       EF  p\        ^ 4      V,          p\        ^V,          ^,           V^,          4      p\        P                  ! V\        P
                  Wq^,          R7      pVP                  V4       WHP                  V4      VP                  4       ,           VP                  4       ,           ,          p\        ^V,          ^,           V^,          4      p\        P                  ! V\        P
                  Wq^,          R7      pWHP                  V4      VP                  4       ,           VP                  4       ,           ,          p\        ^V,          ^,           V^,          4      p\        P                  ! V\        P
                  Wq^,          R7      pVP                  V4       WHP                  4       VP                  4       ,           ,          pEK  	  \        RV^,          4      p\        P                  ! V\        P
                  Wq^,          R7      pVP                  V4       VP                  4       VP                  4       ,           # )z.Implement the algorithm at page 18 of RFC 7253r   r`   i  )	r   r:   r   r
   r   r   r   r,   rm   )	keylentaglennoncelenkeyCru   SNr#   s	   &&&      r   algo_rfc7253r     s    q'Vq[1_
%V
4CA3ZGaK!a%!)X]3cll!q[Ia	^^A!11FMMOCC!a%!)X]3cll!q[I	^^A!11FMMOCC!a%!)X]3cll!q[Ia	^^// " 	c8q=)AWWS#,,a1EF
MM!>>fmmo--r   c                   B   a  ] tR tRt o RtRtR	tR
tR tR t	R t
RtV tR# )OcbRfc7253Testi   000102030405060708090A0B0C0D0E0Fc           	        \        \        V P                  4      4      pV P                   EFB  pV Uu. uF  p\        \        V4      4      NK  	  upw  rErgVR R VRR  r\        P
                  ! V\        P                  VR7      p	V	P                  V4       V	P                  V4      V	P                  4       ,           p
V P                  Wz4       V P                  WP                  4       4       \        P
                  ! V\        P                  VR7      p	V	P                  V4       V	P                  V4      V	P                  4       ,           pV P                  Wk4       V	P                  V4       EKE  	  R # u upi )Nr   i)r   r   tv1_keytv1r
   r   r   r   r,   r!   rm   rQ   r   )r"   r   tvr   r   aadr$   r%   mac_tagr#   r   r'   s   &           r   test1OcbRfc7253Test.test1  s   $,,(((B;=!>2a)AaD/2!>ETc(BstHWWS#,,e<FMM#..$v~~'77CR%Wmmo6WWS#,,e<FMM#..$v~~'77CR%MM'" !>s   E4c                   V P                    Uu. uF  p\        \        V4      4      NK  	  upw  r#rEpVR R VRR  rv\        P                  ! V\        P
                  V^R7      pVP                  V4       VP                  V4      VP                  4       ,           p	V P                  Wi4       V P                  WxP                  4       4       \        P                  ! V\        P
                  V^R7      pVP                  V4       VP                  V4      VP                  4       ,           p
V P                  WZ4       VP                  V4       R # u upi )Nr`   i)tv2r   r   r
   r   r   r   r,   r!   rm   rQ   r   )r"   r   r   r   r   r$   r%   r   r#   r   r'   s   &          r   test2OcbRfc7253Test.test2  s    <@HH"EHq9QqT?H"ECR#h34Gcll%DcnnR 6>>#33!--/2cll%DcnnR 6>>#33!g #Fs   Ec                    V P                    F6  w  rp\        W^`4      pV P                  \        \	        V4      4      V4       K8  	  R# )`   N)tv3r   r!   r   r   )r"   r   r   rT   result2s   &    r   test3OcbRfc7253Test.test3  s:    &*hh"FF"626GYqy17; '/r   r   N))BBAA99887766554433221100r8   r8    785407BFFFC8AD9EDCC5520AC9111EE6)BBAA998877665544332211010001020304050607r  06820B3657B6F615A5725BDA0D3B4EB3A257C9AF1F8F03009)BBAA99887766554433221102r  r8    81017F8203F081277152FADE694A0A00)BBAA99887766554433221103r8   r  045DD69F8F5AAE72414054CD1F35D82760B2CD00D2F99BFA9)BBAA99887766554433221104r   r   @571D535B60B277188BE5147170A9A22C3AD7A4FF3835B8C5701C1CCEC8FC3358)BBAA99887766554433221105r   r8    8CF761B6902EF764462AD86498CA6B97)BBAA99887766554433221106r8   r   @5CE88EC2E0692706A915C00AEB8B2396F40E1C743F52436BDF06D8FA1ECA343D)BBAA998877665544332211070000102030405060708090A0B0C0D0E0F1011121314151617r  P1CA2207308C87C010756104D8840CE1952F09673A448A122C92C62241051F57356D7F3C90BB0E07F)BBAA99887766554433221108r  r8    6DC225A071FC1B9F7C69F93B0F1E10DE)BBAA99887766554433221109r8   r  P221BD0DE7FA6FE993ECCD769460A0AF2D6CDED0C395B1C3CE725F32494B9F914D85C0B1EB38357FF)BBAA9988776655443322110A@000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1Fr  `BD6F6C496201C69296C11EFD138A467ABD3C707924B964DEAFFC40319AF5A48540FBBA186C5553C68AD9F592A79A4240)BBAA9988776655443322110Br  r8    FE80690BEE8A485D11F32965BC9D2A32)BBAA9988776655443322110Cr8   r  `2942BFC773BDA23CABC6ACFD9BFD5835BD300F0973792EF46040C53F1432BCDFB5E1DDE3BC18A5F840B52E653444D5DF)BBAA9988776655443322110DP000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627r  pD5CA91748410C1751FF8A2F618255B68A0A12E093FF454606E59F9C1D0DDC54B65E8628E568BAD7AED07BA06A4A69483A7035490C5769E60)BBAA9988776655443322110Er  r8    C5CD9D1850C141E358649994EE701B68)BBAA9988776655443322110Fr8   r  p4412923493C57D5DE0D700F753CCE0D1D2D95060122E9F15A5DDBFC5787E50B5CC55EE507BCB084E479AD363AC366B95A98CA5F3000B1479) 0F0E0D0C0B0A09080706050403020100r  r  r  h1792A4E31E0755FB03E31B22116E6C2DDF9EFD6E33D536F1A0124B0A55BAE884ED93481529C76B6AD0C515F4D1CDD4FDAC4F02AA)	)r   r    67E944D23256C5E0B6C61FA22FDF1EA2)   r    F673F2C3E7174AAE7BAE986CA9F29E17)   r    D90EB8E9C977C88B79DD793D7FFA161C)r   r   77A3D8E73589158D25D01209)r'  r   05D56EAD2752C86BE6932C5E)r)  r   5458359AC23B0CBA9E6330DD)r   @   192C9B7BD90BA06A)r'  r.  0066BC6E0EF34E24)r)  r.  7D4EA5D445501CBE)r   r   r   r   r   r   r   r   r   r   r   r   r   r   s   @r   r   r     s7      1Gs
Cv

C 
C#$"< <r   r   c                   6   a  ] tR tRt o RtR tR tR tRtV t	R# )
OcbDkgTesti  z9Test vectors from https://gitlab.com/dkg/ocb-test-vectorsc           	     t   . pR Fk  pR Fb  p\        RRW#3,          RW#3,          / 4      pVf    K-  V^ ,          P                  pVR,           F  pWVn        VP                  V4       K  	  Kd  	  Km  	  V F  pVP                  VP                  VP                  VP
                  VP                  3w  rxrp\        V4      \        V
4      ,
          p\        P                  ! V\        P                  WR7      pVP                  V	4       VP                  V
4      w  rV P                  WV,           4       K  	  R# )	rx   ztest-vector-%d-nonce%d.txtzDKG tests, %d, %d bitsN:rx   NNr`   )rx   ry   )h   p   x   )Cipherr
   )r   kappendnapcr?   r
   r   r   r   r   r!   )r"   tvsfinbtv_filer   r   r9  r;  r<  r=  r>  ra   r#   c_outtag_outs   &               r   test_1_2OcbDkgTest.test_1_2  s   B%+,=,HB8,S,Dx,O,.0 ?ajll!"++BDJJrN & &  BDD"$$bddBDD8MA!!fs1voGWWQAGFMM!#66q9NEQ0 r   c                f  a  V 3R  lpV! ^^^hR4       V! ^^^hR4       V! R^^hR4       V! ^^`^hR4       V! ^^`^hR4       V! R^`^hR4       V! ^^@^hR4       V! ^^@^hR	4       V! R^@^hR
4       V! ^^^pR4       V! ^^^pR4       V! R^^pR4       V! ^^`^pR4       V! ^^`^pR4       V! R^`^pR4       V! ^^@^pR4       V! ^^@^pR4       V! R^@^pR4       V! ^^^xR4       V! ^^^xR4       V! R^^xR4       V! ^^`^xR4       V! ^^`^xR4       V! R^`^xR4       V! ^^@^xR4       V! ^^@^xR4       V! R^@^xR4       R# )c                 V   < \        WV4      pSP                  V\        V4      4       R # N)r   r!   r   )r   r   r   exprT   r"   s   &&&& r   check OcbDkgTest.test_3.<locals>.check  s#    !&(;FVYs^4r    C47F5F0341E15326D4D1C46F47F05062 95B9167A38EB80495DFC561A8486E109r)   AFE1CDDB97028FD92F8FB3C8CFBA7D83F471B4983BA80946DF217A545AE828BC51C24D85FA5CC7B28C8335982E2B734616CAD14CB553F74B85FD1E5B3B49D20E513531F9ED6DA5B1216BF8BB CA8AFCA031BAC3F480A583BD6C50A547 D170C1DF356308079DA9A3F619147148 57F94381F2F9231EFB04AECD323757C33A618B2531ED39F260C750DC9071EB89FEDBADDA88FD286EFDF0EFB97F21A39AC4BAB5ACFAB2FF3A8DD82A13AC01D912BD0737D39D1FD0B500EA4ECF 9E043A7140A25FB91F43BCC9DD7E0F46 680000E53908323A7F396B955B8EC641 8304B97FAACDA56E676602E1878A7E6F81F978AC9867E825D339847DEFCF2D60B24926ADA48CF5B184961DC56E917B165E58C174227AEE6C9D905A61541DE691B9E1A2F9B0E761381C7129FCNr   )r"   rK  s   f r   test_3OcbDkgTest.test_3  s   	5
 	c3?@c3?@c3?@c2s67c2s67c2s67c2s./c2s./c2s./ 	c3?@c3?@c3?@c2s67c2s67c2s67c2s./c2s./c2s./ 	c3?@c3?@c3?@c2s67c2s67c2s67c2s./c2s./c2s./r   c                   \        R 4      p\        R4      p\        R4      p\        R4      p\        R4      p\        V4      \        V4      ,
          p\        R4      p\        P                  ! V\        P                  VRR VR7      pVP                  V4       VP                  V4      w  rV P                  WyV
,           4       R# )EEDDCCBBAA9988776655443322110Dr$  r  h07E903BFC49552411ABC865F5ECE60F6FAD1F5A9F14D3070FA2F1308A563207FFE14C1EEA44B22059C7484319D8A2C53C236A7B3hBA015C4E5AE54D76C890AE81BD40DC5703EDC30E8AC2A58BC5D8FA4D61C5BAE6C39BEAC435B2FD56A2A5085C1B135D770C8264B7Nr`   )r   r?   r
   r   r   r   r   r!   )r"   r   r   APr   ra   buggy_resultr#   C_out2tag_out2s   &          r   test_2_bugfixOcbDkgTest.test_2_bugfix(  s    :;:; 9 : 9 : ! " a&3q6/
 ! ", - cll%*gNa!44Q7'89r   r   N)
r   r   r   r   __doc__rE  rh  rt  r   r   r   s   @r   r3  r3    s     C1.%0N: :r   r3  c                     . pV\        \        4      ,          pV\        \        4      ,          pV\        \        4      ,          pV\        \        4      ,          pV# rI  )r	   r   r   r   r3  )configtestss   & r   	get_testsrz  A  sH    E	_X&&E	_[))E	_^,,E	_Z((ELr   __main__c                  >    \         P                  ! \        4       4      # rI  )unittest	TestSuiterz  r   r   r   suiter  K  s    !!)+..r   r  )defaultTest)r}  binasciir   Crypto.Util.py3compatr   r   r   Crypto.Util.numberr   Crypto.SelfTest.loaderr   Crypto.SelfTest.st_commonr	   Crypto.Cipherr
   Crypto.Hashr   r   TestCaser   r   r   r   r3  rz  r   r  mainr   r   r   <module>r     s   >   2 2 , 4 5   8K-x   K-\B)(## B)J.:E<X&& E<PW:"" W:t   z/MMg& r   