§
    ÌtºfÈ  ã                   ó    — d dl Z d dlmZ d dlZd dlZddededee         defd„Zdded	edee         defd
„Zddeded	edee         def
d„Z	dS )é    N)ÚOptionalÚemailÚpasswordÚsaltÚreturnc           
      ó~  — |sWt          j        ¦   «         }|                     |                      d¦  «        ¦  «         |                     ¦   «         dd…         }t          |¦  «        dk    sJ ‚t          j                             |                     d¦  «        |ddddt          j        j	        j
        d¬	¦  «        }|S )
a]  
    Compute argon2id based secret from user email and password only. This uses Argon2id
    for stretching a potentially weak user password/PIN and subsequent HKDF based key
    extending to derive private key material (PKM) for different usage contexts.

    The Argon2 parameters used are the following:

    * kdf ``argon2id-13``
    * time cost ``4096``
    * memory cost ``512``
    * parallelism ``1``

    See `draft-irtf-cfrg-argon2 <https://datatracker.ietf.org/doc/draft-irtf-cfrg-argon2/>`__ and
    `argon2-cffi <https://argon2-cffi.readthedocs.io/en/stable/>`__.

    :param email: User email.
    :param password: User password.
    :param salt: Optional salt to use (must be 16 bytes long). If none is given, compute salt
        from email as ``salt = SHA256(email)[:16]``.
    :return: The computed private key material (256b, 32 octets).
    Úutf8Né   i   i   é   é    é   )Úsecretr   Ú	time_costÚmemory_costÚparallelismÚhash_lenÚtypeÚversion)ÚhashlibÚsha256ÚupdateÚencodeÚdigestÚlenÚargon2Ú	low_levelÚhash_secret_rawÚTypeÚID)r   r   r   ÚmÚpkms        úS/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/autobahn/xbr/_wallet.pyÚstretch_argon2_secretr#   !   s°   € ð, ð ÝŒNÑÔˆØ	�Š�—’˜fÑ%Ô%Ñ&Ô&Ð&Ø�xŠx‰zŒz˜#˜2˜#ŒˆÝˆt‰9Œ9˜Š?ˆ?ˆ?ˆ?å
Ô
×
*Ò
*Ø�Š˜vÑ&Ô&ØØØØØÝÔÔ"Ô%Øð +ñ 	ô 	€Cð €Jó    r!   Úcontextc                 óv   — t          j        || t          j        ¬¦  «        }|                     |d¬¦  «        }|S )zö

    Expand ``pkm`` and ``context`` into a key of length ``bytes`` using
    HKDF's expand function based on HMAC SHA-512). See the HKDF draft RFC and paper for usage notes.

    :param pkm:
    :param context:
    :param salt:
    :return:
    )r   Úinput_key_materialÚhashr   )ÚinfoÚlength)ÚhkdfÚHkdfr   Úsha512Úexpand)r!   r%   r   ÚkdfÚkeys        r"   Úexpand_argon2_secretr1   K   s6   € õ Œ)˜°#½G¼NÐ
KÑ
KÔ
K€CØ
�*Š*˜'¨"ˆ*Ñ
-Ô
-€CØ€Jr$   c                 óT  — |sWt          j        ¦   «         }|                     |                      d¦  «        ¦  «         |                     ¦   «         dd…         }t          |¦  «        dk    sJ ‚|                     d¦  «        }t          | ||¬¦  «        }t          |||¬¦  «        }|S )z_

    :param email:
    :param password:
    :param context:
    :param salt:
    :return:
    r	   Nr
   )r   r   r   )r!   r%   r   )r   r   r   r   r   r   r#   r1   )r   r   r%   r   r    r!   r0   s          r"   Úpkm_from_argon2_secretr3   [   s�   € ð ð ÝŒNÑÔˆØ	�Š�—’˜fÑ%Ô%Ñ&Ô&Ð&Ø�xŠx‰zŒz˜#˜2˜#ŒˆÝˆt‰9Œ9˜Š?ˆ?ˆ?ˆ?à�nŠn˜VÑ$Ô$€Gå
 e°hÀTÐ
JÑ
JÔ
J€CÝ
 3°¸dÐ
CÑ
CÔ
C€Cà€Jr$   )N)
r   Útypingr   r   r+   ÚstrÚbytesr#   r1   r3   © r$   r"   ú<module>r8      sõ   ðð6 €€€Ø Ð Ð Ð Ð Ð Ø €€€Ø €€€ð'ð ' ð '°ð '¸8ÀE¼?ð 'ÐV[ð 'ð 'ð 'ð 'ðTð ˜eð ¨eð ¸8ÀE¼?ð ÐV[ð ð ð ð ð ð  #ð °ð ¸sð È(ÐSXÌ/ð Ðejð ð ð ð ð ð r$   