ó
    ð›‘hB  ã                   ó’   • S SK r S SKrS SKrS SKJr  S SKJr  SrSrSr	\r
SrSrS	S
/rS rS rS rS rS rS rS rS r\S4S jrg)é    N)Úb58encode_check)Ú	SECP256k1i   Úmnemonicl        s   Bitcoin seedzm/44'/60'/0'/0Úmnemonic_to_bip39seedÚmnemonic_to_private_keyc                 óx   • [        U S5      n [        [        U-   S5      n[        R                  " SX[        5      $ )z^BIP39 seed from a mnemonic key.
Logic adapted from https://github.com/trezor/python-mnemonic. Úutf8Úsha512)ÚbytesÚBIP39_SALT_MODIFIERÚhashlibÚpbkdf2_hmacÚBIP39_PBKDF2_ROUNDS)r   Ú
passphraseÚsalts      ÚZC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\autobahn/xbr/_mnemonic.pyr   r   2   s8   € ô �X˜vÓ&€HÜÔ$ zÑ1°6Ó:€DÜ×Ò˜x¨Ô9LÓMÐMó    c                 óŠ   • [         R                  " [        U [        R                  5      R                  5       nUSS USS p2X#4$ )zŽBIP32 master node derivation from a bip39 seed.
Logic adapted from https://github.com/satoshilabs/slips/blob/master/slip-0010/testvectors.py. Né    )ÚhmacÚnewÚBIP32_SEED_MODIFIERr   r
   Údigest)ÚseedÚhÚkeyÚ
chain_codes       r   Úbip39seed_to_bip32masternoder   :   s?   € ô 	�ŠÔ$ d¬G¯N©NÓ;×BÑBÓD€AØ˜˜�f˜a  ˜fˆØˆ?Ðr   c                 óþ   • [         R                  U SS9[        R                  -  n[        UR	                  5       5      R                  SSS9nUR                  5       S-  n[        SU-   5      R                  SSS9U-   $ )z}Public key from a private key.
Logic adapted from https://github.com/satoshilabs/slips/blob/master/slip-0010/testvectors.py. Úbig©Ú	byteorderr   é   é   )ÚintÚ
from_bytesÚBIP32_CURVEÚ	generatorÚxÚto_bytesÚy)Úprivate_keyÚQÚxstrÚparitys       r   Úderive_public_keyr0   B   sr   € ô 	�‰�{¨eˆÐ4´{×7LÑ7LÑL€AÜˆq�s‰s‹u‹:×Ñ˜r¨UÐÐ3€DØ�S‰S‹U�Q‰Y€FÜˆq�6‰z‹?×#Ñ# A°Ð#Ð7¸$Ñ>Ð>r   c                 ó`  • [        U 5      S:X  d   e[        U5      S:X  d   eUnU[        -  S:w  a  SU -   nO[        U 5      nU[        R                  " SU5      -   n [
        R                  " X5[        R                  5      R                  5       nUSS USS pt[        R                  USS9n[        R                  U SS9n	X‰-   [        R                  -  nU[        R                  :  a#  US:w  a  [        U5      R                  SSS9n XG4$ SUSS -   [        R                  " SU5      -   nMÒ  )	z«Derives a child key from an existing key, i is current derivation parameter.
Logic adapted from https://github.com/satoshilabs/slips/blob/master/slip-0010/testvectors.py. r   r   ó    z>LNr    r!   ó   )ÚlenÚBIP32_PRIVDEVr0   ÚstructÚpackr   r   r   r
   r   r%   r&   r'   Úorderr*   )
Ú
parent_keyÚparent_chain_codeÚiÚkr   Údr   r   ÚaÚbs
             r   Úderive_bip32childkeyr@   L   s/  € ô ˆz‹?˜bÓ Ð Ð ÜÐ Ó! RÓ'Ð'Ð'Ø€AØ	ŒMÑ˜aÓØ˜
Ñ"‰ä 
Ó+ˆØŒf�kŠk˜$ Ó"Ñ"€AØ
Ü�HŠH�Qœ7Ÿ>™>Ó*×1Ñ1Ó3ˆØ˜C˜R˜& ! B C &ˆZÜ�N‰N˜3¨%ˆNÐ0ˆÜ�N‰N˜:°ˆNÐ7ˆØ‰uœ×)Ñ)Ñ)ˆØŒ{× Ñ Ó  S¨A£XÜ�c“(×#Ñ# B°%Ð#Ð8ˆCØð ˆ?Ðð �a˜˜�fÑœvŸ{š{¨4°Ó3Ñ3ˆñ r   c                 ó–   • [         R                  " S[         R                  " U 5      R                  5       5      R                  5       SS $ )z;BIP32 fingerprint formula, used to get b58 serialized key. Ú	ripemd160Né   )r   r   Úsha256r   )Ú
public_keys    r   ÚfingerprintrF   f   s9   € ô �;Š;�{¤G§N¢N°:Ó$>×$EÑ$EÓ$GÓH×OÑOÓQÐRTÐSTÐUÐUr   c                 ó”   • S[        [        U5      S5      -   U -   [        U5      R                  SSS9-   U-   S-   U-   n[	        U5      $ )z&Private key b58 serialization format. s   ˆ­äúutf-8rC   r    r!   r2   ©r   Úchrr%   r*   r   )Úparent_fingerprintr,   ÚchainÚdepthÚchildnrÚraws         r   Úb58xprvrP   l   sj   € ð ¤¤s¨5£z°7Ó!;Ñ;Ð>PÑPÔSVÐW^ÓS_×ShÑShØ	�Uð Tið Tñ Ø#ñ$Ø&-ñ.Ø0;ñ<€Cô ˜3ÓÐr   c                 óŽ   • S[        [        U5      S5      -   U -   [        U5      R                  SSS9-   U-   U-   n[	        U5      $ )z%Public key b58 serialization format. s   ˆ²rH   rC   r    r!   rI   )rK   rE   rL   rM   rN   rO   s         r   Úb58xpubrR   u   sb   € ð ¤¤s¨5£z°7Ó!;Ñ;Ð>PÑPÔSVÐW^ÓS_×ShÑShØ	�Uð Tið Tñ Ø#ñ$Ø&0ñ1€Cô ˜3ÓÐr   c           	      ó  • / nU SS S:w  a  [        S5      eU R                  S5      R                  S5       HI  nSU;   a&  UR                  [        [        USS 5      -   5        M/  UR                  [        U5      5        MK     U$ )	zhParses a derivation path such as "m/44'/60/0'/0" and returns
list of integers for each element in path. r   r$   zm/zECan't recognize derivation path. It should look like "m/44'/60/0'/0".Ú/Ú'Néÿÿÿÿ)Ú
ValueErrorÚlstripÚsplitÚappendr5   r%   )Ústr_derivation_pathÚpathr;   s      r   Úparse_derivation_pathr]   ~   s}   € ð €DØ˜1˜QÐ 4Ó'ÜÐbÓcÐcà ×'Ñ'¨Ó-×3Ñ3°CÖ8ˆØ�!‹8Ø�K‰Kœ¬¨A¨c¨r¨F«Ñ3Ö4à�K‰Kœ˜A›Öñ	 9ð
 €Kr   Ú c                 ó~   • [        U5      n[        X5      n[        U5      u  pVXVp‡U H  n	[        XxU	5      u  pxM     U$ )aœ  Performs all convertions to get a private key from a mnemonic sentence, including:

    BIP39 mnemonic to seed
    BIP32 seed to master key
    BIP32 child derivation of a path provided

Parameters:
    mnemonic -- seed wordlist, usually with 24 words, that is used for ledger wallet backup
    str_derivation_path -- string that directs BIP32 key derivation, defaults to path
        used by ledger ETH wallet

)r]   r   r   r@   )
r   r[   r   Úderivation_pathÚ	bip39seedÚmaster_private_keyÚmaster_chain_coder,   r   r;   s
             r   r   r   Ž   sP   € ô ,Ð,?Ó@€Oä% hÓ;€Iä,HÈÓ,SÑ)Ðà0�ãˆÜ"6°{ÐPQÓ"RÑˆ‘Zñ ð Ðr   )r   r   r6   Úbase58r   Úecdsa.curvesr   r   r   r5   r'   r   ÚLEDGER_ETH_DERIVATION_PATHÚ__all__r   r   r0   r@   rF   rP   rR   r]   r   © r   r   Ú<module>ri      s�   ðó8 Û Û å "Ý "àÐ Ø Ð Ø€Ø€Ø%Ð ð .Ð ð Øð€òNòò?òò4Vò ò òð  ;UÐacõ r   