U aðf3ã@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}t||ƒD]\}}|||AO}q€|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ú>/opt/nydus/tmp/pip-target-53d1vnqk/lib/python/oscrypto/util.pyÚ 9sz$constant_compare..cSsg|] }t|ƒ‘qSrrrrrrr: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    þ