a
    xdy                     @   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   A/var/www/html/Ranjet/env/lib/python3.9/site-packages/openid/dh.py
<listcomp>       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   ZlongToBinaryr   )r!   r'   secretZ	hash_funcZ	dh_sharedZ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)Zopenidr   r   objectr   r   r   r   r   <module>   s   