
    af&                     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    G/var/www/html/env/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5e<<=====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Nu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      .%%	?$$DD 	 	 	DDD		!)++HH 	! 	! 	! HHH	! ~~dH---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$:KZ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??@RTXTe@D@PR R 	Rr   Fc                 L   t           j                            |          rt          |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           }|rt          j        |          }t          t                                        |          }|j                                        }d|v r.|d         |k    r"t	          d                    |                    t           j                            |          rt          |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                    |                     nt/          |          }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 &lDAAAIh u ui''#$Y$`$`amor$s$sttt (  	*G"<0J	*G#$9:K jAAAG'Fz::AA'JJJ-.*<< "FGMvkGZGZ\ \ \ JK#,==1BD#I#I # a#+#34H#I#I $%566AABRSS(3GGII
#y00 !12j@@' *JKQ6R^K_K_a a a w~~k** b(eDDDU w wC(**'(\(c(cdoqt(u(uvvv + 01Z??# &JKQ6R]K^K^` ` ` << 0$77:EE#QRXRXYdfrRsRsu u u F '	) 45!9\#:;	) 45):6%z2(   8k8S999
LSST_``aaaa z**GJz**G )++G!...<<CCGLLK'Fz::AA'JJJ!z"~~#+#34D#E#E#L#L#N#N  !122==>NOOK$/CCEEJ G$z*G$%z2!:.   D 4C+tS111H[#&&& +6D&'&:D"#FC,c222H\3'''J:AA+NNOOOJ@GGHY[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"'+Gd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 
			 				   # # # # # #   # # # # # # $ $ $ $ $ $       . . . . . . > > > > > > > > > > $ $ $ $ $ $	RZ$^^BJv,>@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   