B ª#a3ã@sŒddlmZmZmZmZddlZddlmZddlm Z m Z ej dkrTddl m Z n$ej dkrlddlm Z n ddlm Z d d gZd d „ZdS) é)Úunicode_literalsÚdivisionÚabsolute_importÚprint_functionNé)Úpretty_message)Ú type_nameÚbyte_clsÚdarwin)Ú rand_bytesÚwin32Úconstant_comparer cCs¢t|tƒsttdt|ƒƒƒ‚t|tƒs8ttdt|ƒƒƒ‚t|ƒt|ƒkrLdStjdkrrdd„|Dƒ}dd„|Dƒ}d}x"t||ƒD]\}}|||AO}q‚W|dkS) zê Compares two byte strings in constant time to see if they are equal :param a: The first byte string :param b: The second byte string :return: A boolean if the two byte strings are equal z9 a must be a byte string, not %s z9 b must be a byte string, not %s F)écSsg|] }t|ƒ‘qS©)Úord)Ú.0Úcharrrú4/tmp/pip-target-jgxl_w8r/lib/python/oscrypto/util.pyú 9sz$constant_compare..cSsg|] }t|ƒ‘qSr)r)rrrrrr:sr) Ú isinstancer Ú TypeErrorrrÚlenÚsysÚ version_infoÚzip)ÚaÚbÚresultÚxÚyrrrr s"     )Ú __future__rrrrrÚ_errorsrÚ_typesrr ÚplatformZ _mac.utilr Z _win.utilZ _openssl.utilÚ__all__r rrrrÚs