o
    -×¾g3  ã                   @   sŒ   d dl mZmZmZmZ d dlZddlmZ ddlm	Z	m
Z
 ejdkr*ddlmZ nejdkr6ddlmZ nddlmZ d	d
gZdd	„ ZdS )é    )Úunicode_literalsÚdivisionÚabsolute_importÚprint_functionNé   )Úpretty_message)Ú	type_nameÚbyte_clsÚdarwin)Ú
rand_bytesÚwin32Úconstant_comparer   c                 C   sž   t | tƒsttdt| ƒƒƒ‚t |tƒsttdt|ƒƒƒ‚t| ƒt|ƒkr&dS tjdk r9dd„ | D ƒ} dd„ |D ƒ}d}t| |ƒD ]
\}}|||A O }q@|dkS )	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)é   c                 S   ó   g | ]}t |ƒ‘qS © ©Úord©Ú.0Úcharr   r   úW/var/www/html/backend_erp/backend_erp_env/lib/python3.10/site-packages/oscrypto/util.pyÚ
<listcomp>9   ó    z$constant_compare.<locals>.<listcomp>c                 S   r   r   r   r   r   r   r   r   :   r   r   )	Ú
isinstancer	   Ú	TypeErrorr   r   ÚlenÚsysÚversion_infoÚzip)ÚaÚbÚresultÚxÚyr   r   r   r      s&   
ü
ü
)Ú
__future__r   r   r   r   r   Ú_errorsr   Ú_typesr   r	   ÚplatformÚ	_mac.utilr   Ú	_win.utilÚ_openssl.utilÚ__all__r   r   r   r   r   Ú<module>   s   

þ