o
    /׾gy                     @   s(   d dl mZ dd ZG dd deZdS )    )	cryptutilc                 C   sX   t | t |krtdt| tr| d} t|tr |d}tdd t| |D S )Nz*Inputs to strxor must have the same lengthzutf-8c                 S   s   g | ]\}}||A qS  r   ).0abr   r   S/var/www/html/backend_erp/backend_erp_env/lib/python3.10/site-packages/openid/dh.py
<listcomp>   s    zstrxor.<locals>.<listcomp>)len
ValueError
isinstancestrencodebyteszip)xyr   r   r   strxor   s   



r   c                   @   sL   e Zd ZdZdZdd ZeeZdd Zdd Zd	d
 Z	dd Z
dd ZdS )DiffieHellmanlE   EKx[/B.>" \6yRW4fG9OQRQ FoH(:.7qBrrBz]A&m0GliXl|'\8$f	O\h]0ncn]8btp,X&frr.hg    c                 C   s   | | j | jS N)DEFAULT_MODDEFAULT_GEN)clsr   r   r   fromDefaults   s   zDiffieHellman.fromDefaultsc                 C   s.   t || _t || _| td|d  d S )N   )intmodulus	generator_setPrivater   	randrange)selfr   r   r   r   r   __init__   s   

zDiffieHellman.__init__c                 C   s   || _ t| j| j | j| _dS )z#This is here to make testing easierN)privatepowr   r   public)r    r"   r   r   r   r       s   zDiffieHellman._setPrivatec                 C   s   | j | jko| j| jkS r   )r   r   r   r   )r    r   r   r   usingDefaultValues%   s   
z DiffieHellman.usingDefaultValuesc                 C   s   t || j| jS r   )r#   r"   r   )r    	compositer   r   r   getSharedSecret)   s   zDiffieHellman.getSharedSecretc                 C   s"   |  |}|t|}t||S r   )r'   r   longToBinaryr   )r    r&   secret	hash_func	dh_sharedhashed_dh_sharedr   r   r   	xorSecret,   s   

zDiffieHellman.xorSecretN)__name__
__module____qualname__r   r   r   classmethodr!   r   r%   r'   r-   r   r   r   r   r      s    r   N)openidr   r   objectr   r   r   r   r   <module>   s    