
    qhy                     ,    S SK Jr  S r " S S\5      rg)    )	cryptutilc                 B   [        U 5      [        U5      :w  a  [        S5      e[        U [        5      (       a  U R	                  S5      n [        U[        5      (       a  UR	                  S5      n[        [        X5       VVs/ s H	  u  p#X#-  PM     snn5      $ s  snnf )Nz*Inputs to strxor must have the same lengthzutf-8)len
ValueError
isinstancestrencodebyteszip)xyabs       ;/var/www/html/env/lib/python3.13/site-packages/openid/dh.pystrxorr      sy    
1vQEFF!SHHW!SHHWCI.IDA!%I.//.s   B
c                   P    \ rS rSrSrSrS r\" \5      rS rS r	S r
S rS	 rS
rg)DiffieHellman   lE   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                 <    U " U R                   U R                  5      $ N)DEFAULT_MODDEFAULT_GEN)clss    r   fromDefaultsDiffieHellman.fromDefaults   s    3??COO44    c                     [        U5      U l        [        U5      U l        U R                  [        R
                  " SUS-
  5      5        g )N   )intmodulus	generator_setPrivater   	randrange)selfr!   r"   s      r   __init__DiffieHellman.__init__   s7    7|Y,,Q!<=r   c                 p    Xl         [        U R                  U R                   U R                  5      U l        g)z#This is here to make testing easierN)privatepowr"   r!   public)r%   r)   s     r   r#   DiffieHellman._setPrivate    s#    $..$,,Er   c                 t    U R                   U R                  :H  =(       a    U R                  U R                  :H  $ r   )r!   r   r"   r   )r%   s    r   usingDefaultValues DiffieHellman.usingDefaultValues%   s0     0 00 3$"2"22	4r   c                 B    [        XR                  U R                  5      $ r   )r*   r)   r!   )r%   	composites     r   getSharedSecretDiffieHellman.getSharedSecret)   s    9llDLL99r   c                 r    U R                  U5      nU" [        R                  " U5      5      n[        X%5      $ r   )r2   r   longToBinaryr   )r%   r1   secret	hash_func	dh_sharedhashed_dh_shareds         r   	xorSecretDiffieHellman.xorSecret,   s3    ((3	$Y%;%;I%FGf//r   )r"   r!   r)   r+   N)__name__
__module____qualname____firstlineno__r   r   r   classmethodr&   r#   r.   r2   r:   __static_attributes__ r   r   r   r      s:     HKK5 |,L>F
4:0r   r   N)openidr   r   objectr   rB   r   r   <module>rE      s    	00F 0r   