§
    Ìtºf¡&  ã                   óX  — d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlZd dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZmZmZ d dlmZ d	ej        v r/d
                     ej        d	          ej        ¦   «         ¦  «        ZndZ G d„ dej        ¦  «        Zdd„Zdd„Z G d„ de¦  «        ZdS )é    N)ÚOrderedDict)Ú
SigningKey)Ú
HexEncoder)ÚKeyAPI)ÚNativeECCBackend)ÚutcnowÚwrite_keyfileÚparse_keyfile)Ú
cryptosignÚUSERú{}@{}Úunknownc                   ó"   — e Zd ZdZdZd„ Zd„ ZdS )ÚEmailAddressz"
    Email address validator.
    zEmail addressc                 óD   — t           j                             | ¦  «         d S ©N)ÚclickÚ	ParamTypeÚ__init__©Úselfs    úT/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/autobahn/xbr/_userkey.pyr   zEmailAddress.__init__:   s   € ÝŒ× Ò  Ñ&Ô&Ð&Ð&Ð&ó    c                 ó„   — t          j        d|¦  «        r|S |                      d                     |¦  «        ¦  «         d S )Nz0^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$zinvalid email address "{}")ÚreÚmatchÚfailÚformat)r   ÚvalueÚparamÚctxs       r   ÚconvertzEmailAddress.convert=   sC   € ÝŒ8ÐGÈÑOÔOð 	ØˆLØ�	Š	Ð.×5Ò5°eÑ<Ô<Ñ=Ô=Ð=Ð=Ð=r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Únamer   r"   © r   r   r   r   3   sC   € € € € € ðð ð €Dð'ð 'ð 'ð>ð >ð >ð >ð >r   r   Fc                 óÀ   — | rt           S 	 t          j        dt          ¦   «         t           ¬¦  «        }t          j        d                     |¦  «        d¬¦  «        rnŒS|S )NTzPlease enter your email address)ÚtypeÚdefaultz,We will send an activation code to "{}", ok?)r+   )Ú_DEFAULT_EMAIL_ADDRESSr   Úpromptr   Úconfirmr   )Ú
yes_to_allr   s     r   Ú_user_idr0   C   sg   € Øð &Ý%Ð%ðÝ”Ð>Å\Á^Ä^Õ]sÐtÑtÔtˆÝŒ=ÐG×NÒNÈuÑUÔUÐ_cÐdÑdÔdð 	Øðð €Lr   c                 óÜ   — | rt           S 	 t          j        ¦   «         }n# t          $ r d}Y nw xY w	 t	          j        ¦   «         }n# t          $ r d}Y nw xY wd                     ||¦  «        S )zQ
    for informational purposes, try to identify the creator (user@hostname)
    r   r   )r,   ÚgetpassÚgetuserÚBaseExceptionÚsocketÚgethostnamer   )r/   ÚuserÚhostnames      r   Ú_creatorr9   M   s™   € ð ð .Ý%Ð%ð	Ý”?Ñ$Ô$ˆDˆDøÝð 	ð 	ð 	ØˆDˆDˆDð	øøøð	!ÝÔ)Ñ+Ô+ˆHˆHøÝð 	!ð 	!ð 	!Ø ˆHˆHˆHð	!øøøð �~Š~˜d HÑ-Ô-Ð-s   ‹ Ÿ.­.²A ÁAÁAc                   ó$   — e Zd Zdd„Zd„ Zdd„ZdS )	ÚUserKeyTc                 óÔ   — || _         || _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _	        |  
                    | j         | j        |¦  «         d S r   )Ú_privkey_pathÚ_pubkey_pathÚkeyr9   Ú_created_atÚuser_idÚ_privkeyÚ_privkey_hexÚ_pubkeyÚ_pubkey_hexÚ_load_and_maybe_generate)r   ÚprivkeyÚpubkeyr/   s       r   r   zUserKey.__init__b   sq   € à$ˆÔØ"ˆÔàˆŒØˆŒØˆÔØˆŒØˆŒØ ˆÔØˆŒØˆÔØ×%Ò% dÔ&8¸$Ô:KÈZÑXÔXÐXÐXÐXr   c                 óN   — d                      | j        | j        | j        ¦  «        S )Nz'UserKey(privkey="{}", pubkey="{}" [{}]))r   r=   r>   rE   r   s    r   Ú__str__zUserKey.__str__q   s.   € Ø8×?Ò?ÀÔ@RÐTXÔTeØ@DÔ@PñRô Rð 	Rr   Fc                 óL  — t           j                             |¦  «        �r­t          |d¬¦  «        }dD ])}||vr#t	          d                     ||¦  «        ¦  «        ‚Œ*|d         }|d         }|d         }|d         }	t          |	t          ¬	¦  «        }
|
j        }| 	                    t          ¬	¦  «         
                    d
¦  «        }|d         |k    r"t	          d                     |¦  «        ¦  «        ‚d }d }|                     dd ¦  «        }|r†t          j        |¦  «        }t          t          ¦  «                             |¦  «        }|j                             ¦   «         }d|v r.|d         |k    r"t	          d                     |¦  «        ¦  «        ‚t           j                             |¦  «        rªt          |d¬¦  «        }dD ])}||vr#t	          d                     ||¦  «        ¦  «        ‚Œ*|d         |k    r"t	          d                     |¦  «        ¦  «        ‚|                     dd ¦  «        |k    r#t	          d                     ||¦  «        ¦  «        ‚�nOt'          d|d         fd|d         fd|d         fd|fd|fg¦  «        }d}t)          |||¦  «         t+          j        d                     |¦  «        ¦  «         �nãt/          |¦  «        }t1          ¦   «         }t3          |¦  «        }t          j        ¦   «         }
|
 	                    t          ¬	¦  «         
                    d
¦  «        }	|
j        }| 	                    t          ¬	¦  «         
                    d
¦  «        }t          j        d¦  «        }t          j        |¦  «         
                    ¦   «         }t          t          ¦  «                             |¦  «        }|j                             ¦   «         }t'          d|fd|fd|fd|fd|fg¦  «        }d}t)          |||¦  «         t          j        |d¦  «         |	|d<   ||d<   d}t)          |||¦  «         t          j        |d¦  «         t+          j        d                     |¦  «        ¦  «         t+          j        d                     d|¦  «        ¦  «         t          j        |¦  «        j        dz  dk    r)t          j        |d¦  «         t+          j        d¦  «         t          j        |¦  «        j        dz  dk    r)t          j        |d¦  «         t+          j        d ¦  «         || _        || _         |
| _!        |	| _"        || _#        || _$        || _%        || _&        || _'        || _(        tS          j*        |
d¬!¦  «        | _+        d S )"NT)Úprivate)Úcreatorú
created-atúuser-idúpublic-key-ed25519úprivate-key-ed25519z3Corrupt user private key file {} - {} tag not foundrM   rN   rO   rQ   )ÚencoderÚasciirP   zdInconsistent user private key file {} - public-key-ed25519 doesn't correspond to private-key-ed25519zprivate-key-ethzpublic-adr-ethz\Inconsistent node private key file {} - public-adr-eth doesn't correspond to private-key-ethF)rM   rN   rO   rP   z2Corrupt user public key file {} - {} tag not foundzcInconsistent user public key file {} - public-key-ed25519 doesn't correspond to private-key-ed25519zrInconsistent user public key file {} - public-adr-eth doesn't correspond to private-key-eth in private key file {}zCrossbar.io user public key

z/Re-created user public key from private key: {}é    i¤  z0Crossbar.io user private key - KEEP THIS SAFE!

i€  z!New user public key generated: {}z'New user private key generated ({}): {}zkeep this safe!iÿ  z*File permissions on user public key fixed!z+File permissions on user private key fixed!)Úcan_sign),ÚosÚpathÚexistsr
   Ú	Exceptionr   r   r   Ú
verify_keyÚencodeÚdecodeÚgetÚbinasciiÚa2b_hexr   r   Ú
PrivateKeyÚ
public_keyÚto_checksum_addressr   r	   r   Úechor9   r   r0   ÚgenerateÚurandomÚb2a_hexÚchmodÚstatÚst_moder@   rB   rC   rD   rE   Ú_eth_pubadrÚ_eth_privkey_seed_hexÚ_eth_privkeyrA   r   ÚCryptosignKeyr?   )r   Úprivkey_pathÚpubkey_pathr/   Ú	priv_tagsÚtagrM   Ú
created_atrA   Úprivkey_hexrG   rH   Ú
pubkey_hexÚ
eth_pubadrÚeth_privkeyÚeth_privkey_seed_hexÚeth_privkey_seedÚpub_tagsÚmsgÚtagss                       r   rF   z UserKey._load_and_maybe_generateu   só  € åŒ7�>Š>˜,Ñ'Ô'ñ c	jõ & l¸DÐAÑAÔAˆIØhð uð u�Ø˜iÐ'Ð'Ý#Ð$Y×$`Ò$`ÐamÐorÑ$sÔ$sÑtÔtÐtð (ð   	Ô*ˆGØ" <Ô0ˆJØ 	Ô*ˆGà#Ð$9Ô:ˆKÝ  µjÐAÑAÔAˆGØÔ'ˆFØŸš­z˜Ñ:Ô:×AÒAÀ'ÑJÔJˆJàÐ-Ô.°*Ò<Ð<Ýð "FßGMÂvÈkÑGZÔGZñ\ô \ð \ð ˆJØˆKØ#,§=¢=Ð1BÀDÑ#IÔ#IÐ Ø#ð aÝ#+Ô#3Ð4HÑ#IÔ#IÐ Ý$Õ%5Ñ6Ô6×AÒAÐBRÑSÔS�Ø(Ô3×GÒGÑIÔI�
Ø# yÐ0Ð0Ø Ð!1Ô2°jÒ@Ð@Ý'ð *JßKQÊ6ÐR^ÑK_ÔK_ñaô að aõ Œw�~Š~˜kÑ*Ô*ð bÝ(¨¸eÐDÑDÔD�ØUð wð w�CØ (Ð*Ð*Ý'Ð(\×(cÒ(cÐdoÐqtÑ(uÔ(uÑvÔvÐvð +ð Ð0Ô1°ZÒ?Ð?Ý#ð &JßKQÊ6ÐR]ÑK^ÔK^ñ`ô `ð `ð —<’<Ð 0°$Ñ7Ô7¸:ÒEÐEÝ#ðQßRXÒRXÐYdÐfrÑRsÔRsñuô uð uñ Fõ 'Ø 	¨)Ô 4Ð5Ø! 9¨\Ô#:Ð;Ø 	¨)Ô 4Ð5Ø)¨:Ð6Ø% zÐ2ð(ñ ô �ð 8�Ý˜k¨8°SÑ9Ô9Ð9å”
ÐL×SÒSÐT_Ñ`Ô`ÑaÔaÐaÑaõ ˜zÑ*Ô*ˆGÝ™œˆJÝ˜zÑ*Ô*ˆGå Ô)Ñ+Ô+ˆGØ!Ÿ.š.µ˜.Ñ<Ô<×CÒCÀGÑLÔLˆKØÔ'ˆFØŸš­z˜Ñ:Ô:×AÒAÀ'ÑJÔJˆJå!œz¨"™~œ~ÐÝ#+Ô#3Ð4DÑ#EÔ#E×#LÒ#LÑ#NÔ#NÐ Ý Õ!1Ñ2Ô2×=Ò=Ð>NÑOÔOˆKØ$Ô/×CÒCÑEÔEˆJõ Ø˜GÐ$Ø˜zÐ*Ø˜GÐ$Ø% zÐ2Ø! :Ð.ð ñ ô ˆDð 4ˆCÝ˜+ t¨SÑ1Ô1Ð1ÝŒH�[ #Ñ&Ô&Ð&ð +6ˆDÐ&Ñ'Ø&:ˆDÐ"Ñ#ØFˆCÝ˜,¨¨cÑ2Ô2Ð2ÝŒH�\ 3Ñ'Ô'Ð'åŒJÐ:×AÒAÀ+ÑNÔNÑOÔOÐOÝŒJÐ@×GÒGÐHYÐ[gÑhÔhÑiÔiÐiõ Œ7�;ÑÔÔ'¨#Ñ-°Ò4Ð4ÝŒH�[ #Ñ&Ô&Ð&ÝŒJÐCÑDÔDÐDåŒ7�<Ñ Ô Ô(¨3Ñ.°#Ò5Ð5ÝŒH�\ 3Ñ'Ô'Ð'ÝŒJÐDÑEÔEÐEð  ˆŒØ%ˆÔàˆŒØ'ˆÔØˆŒØ%ˆÔà%ˆÔØ%9ˆÔ"Ø'ˆÔàˆŒÝÔ+¨G¸dÐCÑCÔCˆŒˆˆr   N)T©F)r#   r$   r%   r   rJ   rF   r(   r   r   r;   r;   a   s^   € € € € € ðYð Yð Yð YðRð Rð RðDð Dð Dð Dð Dð Dr   r;   r|   ) r   rV   r^   r5   Úcollectionsr   r2   r   Únacl.signingr   Únacl.encodingr   Úeth_keysr   Úeth_keys.backendsr   Úautobahn.utilr   r	   r
   Úautobahn.wampr   Úenvironr   Úgetfqdnr,   r   r   r0   r9   Úobjectr;   r(   r   r   ú<module>r‡      sž  ðð6 
€	€	€	Ø 	€	€	€	Ø €€€Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #à €€€Ø €€€à #Ð #Ð #Ð #Ð #Ð #Ø $Ð $Ð $Ð $Ð $Ð $à Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .à >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø $Ð $Ð $Ð $Ð $Ð $à	ˆRŒZÐÐØ$Ÿ^š^¨B¬J°vÔ,>ÀÀÄÑ@PÔ@PÑQÔQÐÐà&Ðð>ð >ð >ð >ð >�5”?ñ >ô >ð >ð ð ð ð ð.ð .ð .ð .ð(SDð SDð SDð SDð SDˆfñ SDô SDð SDð SDð SDr   