ó
    ð›‘há™  ã                   ó  • S SK r S SKrS SKJrJr  S SKrS SKJrJrJrJ	r	J
r
  S SKrS SKJr  S SKJrJr  S SKJr  S SKJr  S SKJr  S	/r S S
KJrJrJr  S SKJr  Sr\R?                  S5        S r!S r"S r# " S S5      r$S\%S\&4S jr'S r(S r)S r*S'S jr+S r,\(       aZ  S\S\\&   S\\-   S\&4S jr.S \&S!\S\&4S" jr/ " S# S\05      r1\Rd                  " \15         " S$ S%\05      r3\Ri                  / S&Q5        gg! \  a    Sr N™f = f)(é    N)Úa2b_hexÚb2a_hex)ÚCallableÚOptionalÚUnionÚDictÚAny)Úutil)ÚISecurityModuleÚICryptosignKey)Ú	Challenge)Ú_URI_PAT_REALM_NAME_ETH)Úparse_keyfileÚHAS_CRYPTOSIGN)ÚencodingÚsigningÚbindings)ÚSignedMessageTÚCryptosignKeyFc                 ó¤   • / nU (       aF  [         R                  " SU SS 5      S   nU SUS-    U SU-   S pUR                  U5        U (       a  MF  U$ )zq
Unpack a SSH agent key blob into parts.

See: http://blog.oddbit.com/2011/05/08/converting-openssh-public-keys/
ú>INé   r   )ÚstructÚunpackÚappend)ÚkeydataÚpartsÚdlenÚdatas       Ú\C:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\autobahn/wamp/cryptosign.pyÚ_unpackr!   8   s`   € ð €EÞ
ä�}Š}˜T 7¨2¨A ;Ó/°Ñ2ˆð    $¨¡(Ð+¨W°Q¸±X°YÐ-?ˆgØ�‰�TÔ÷ ˆ'ð €Ló    c           	      óº   • / nU  HC  nUR                  [        R                  " S[        U5      5      5        UR                  U5        ME     SR	                  U5      $ )z!
Pack parts into a SSH key blob.
r   r"   )r   r   ÚpackÚlenÚjoin)Úkeypartsr   Úparts      r    Ú_packr)   I   sJ   € ð €EÛˆØ�‰”V—[’[ ¤s¨4£yÓ1Ô2Ø�‰�TÖñ ð �8‰8�E‹?Ðr"   c                 ó4  • [        U 5      [        :w  a#  [        SR                  [        U 5      5      5      eU R	                  5       R                  5       n[        U5      S:w  a  [        S5      eUu  p nUS:w  a  [        SR                  U5      5      e[        R                  " U 5      n [        U5      S   n[        U5      S	:w  a#  [        S
R                  [        U5      5      5      eXS4$ ! [         a  n[        SR                  U5      5      eSnAff = f)a`  
Parse an OpenSSH Ed25519 public key from a string into a raw public key.

Example input:

    ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJukDU5fqXv/yVhSirsDWsUFyOodZyCSLxyitPPzWJW9 oberstet@office-corei7

:param keydata: The OpenSSH Ed25519 public key data to parse.
:type keydata: str

:returns: pair of raw public key (32 bytes) and comment
:rtype: tuple
zinvalid type {} for keydataé   zinvalid SSH Ed25519 public keyzssh-ed25519z%not a Ed25519 SSH public key (but {})é   zcould not parse key ({})Né    z9invalid length {} for embedded raw key (must be 32 bytes))
ÚtypeÚstrÚ	ExceptionÚformatÚstripÚsplitr%   ÚbinasciiÚ
a2b_base64r!   )r   r   ÚalgoÚcommentÚblobÚkeyÚes          r    Ú_read_ssh_ed25519_pubkeyr;   T   sþ   € ô ˆGƒ}œÓÜÐ5×<Ñ<¼TÀ'»]ÓKÓLÐLà�M‰M‹O×!Ñ!Ó#€EÜ
ˆ5ƒz�QƒÜÐ8Ó9Ð9Ø"Ñ€D�7àˆ}ÓÜÐ?×FÑFÀtÓLÓMÐMä×Ò˜wÓ'€Dð>Ü�d‹m˜AÑˆô ˆ3ƒx�2ƒ~ÜÐS×ZÑZÔ[^Ð_bÓ[cÓdÓeÐeàˆ<Ðøô ó >ÜÐ2×9Ñ9¸!Ó<Ó=Ð=ûð>ús   Â+C. Ã.
DÃ8DÄDc                   ó6   • \ rS rSrSrS rS rS rS rS r	Sr
g	)
Ú_SSHPacketReaderéz   z<
Read OpenSSH packet format which is used for key material.
c                 ó>   • Xl         SU l        [        U5      U l        g ©Nr   )Ú_packetÚ_idxr%   Ú_len)ÚselfÚpackets     r    Ú__init__Ú_SSHPacketReader.__init__   s   € ØŒØˆŒ	Ü˜“Kˆ�	r"   c                 ó4   • U R                   U R                  S  $ ©N)rA   rB   ©rD   s    r    Úget_remaining_payloadÚ&_SSHPacketReader.get_remaining_payload„   s   € Ø�|‰|˜DŸI™I˜JÐ'Ð'r"   c                 óÌ   • U R                   U-   U R                  :”  a  [        S5      eU R                  U R                   U R                   U-    nU =R                   U-  sl         U$ )Nzincomplete packet)rB   rC   r0   rA   )rD   ÚsizeÚvalues      r    Ú	get_bytesÚ_SSHPacketReader.get_bytes‡   sS   € Ø�9‰9�tÑ˜dŸi™iÓ'ÜÐ/Ó0Ð0à—‘˜TŸY™Y t§y¡y°4Ñ'7Ð8ˆØ�	Š	�TÑ�	Øˆr"   c                 óT   • [         R                  " SU R                  S5      5      S   $ )Nr   r   r   )r   r   rP   rJ   s    r    Ú
get_uint32Ú_SSHPacketReader.get_uint32�   s!   € Ü�}Š}˜T 4§>¡>°!Ó#4Ó5°aÑ8Ð8r"   c                 ó@   • U R                  U R                  5       5      $ rI   )rP   rS   rJ   s    r    Ú
get_stringÚ_SSHPacketReader.get_string’   s   € Ø�~‰~˜dŸo™oÓ/Ó0Ð0r"   )rB   rC   rA   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rF   rK   rP   rS   rV   Ú__static_attributes__© r"   r    r=   r=   z   s    † ñò ò
(òò9õ1r"   r=   rN   Úreturnc                 óp   • SU s=::  a  S:  d   e   eSR                  S [        SU S-   5       5       5      $ )Nr   éÿ   r"   c              3   ó@   #   • U  H  oR                  S SS9v •  M     g7f)r,   Úbig)Ú	byteorderN)Úto_bytes©Ú.0Úxs     r    Ú	<genexpr>Ú_makepad.<locals>.<genexpr>˜   s   é € ÐOÒ<N°q—J‘J˜q¨E�JÕ2Ò<Nùó   ‚r,   )r&   Úrange)rN   s    r    Ú_makepadrm   –   s7   € Ø��?�s‹?Ð‰?Ðˆ?Ø�8‰8ÑO¼EÀ!ÀTÈAÁXÔ<NÓOÓOÐOr"   c                 ó  • SnSnSnU R                  U5      (       a  U R                  U5      (       d  [        S5      eU R                  U5      nU [	        U5      U n SR                  S U R                  5        5       5      n [        R                  " U 5      nU[	        U5      S n[        U5      nUR                  5       nUR                  5       nUR                  5         UR                  5       n	UR                  5         UR                  5       n
UR                  5       nSnUS	:w  a  [        S
5      eUS	:w  a  [        S5      eU	S:w  a  [        SR                  U	5      5      eU(       a  [        S5      e[        U
5      nUR                  5         UR                  5         UR                  5       nUS:w  a)  [        SR                  UR                  S5      5      5      eUR                  5       nUR                  5       n[	        U5      [        R                   :w  a  [        S5      e[	        U5      [        R"                  :w  a  [        S5      eUR                  5       nUR                  5       n[	        U5      (       a^  [	        U5      U:¼  d  U[%        [	        U5      5      :w  a7  [        SR                  [	        U5      U[%        [	        U5      5      5      5      eUS[        R&                   nUR                  S5      nUU4$ )a¸  
Parse an OpenSSH Ed25519 private key from a string into a raw private key.

Example input:

    -----BEGIN OPENSSH PRIVATE KEY-----
    b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
    QyNTUxOQAAACCbpA1OX6l7/8lYUoq7A1rFBcjqHWcgki8corTz81iVvQAAAKDWjZ0Y1o2d
    GAAAAAtzc2gtZWQyNTUxOQAAACCbpA1OX6l7/8lYUoq7A1rFBcjqHWcgki8corTz81iVvQ
    AAAEArodzIMjH9MOBz0X+HDvL06rEJOMYFhzGQ5zXPM7b7fZukDU5fqXv/yVhSirsDWsUF
    yOodZyCSLxyitPPzWJW9AAAAFm9iZXJzdGV0QG9mZmljZS1jb3JlaTcBAgMEBQYH
    -----END OPENSSH PRIVATE KEY-----


:param keydata: The OpenSSH Ed25519 private key data to parse.
:type keydata: str

:returns: pair of raw private key (32 bytes) and comment
:rtype: tuple
ú#-----BEGIN OPENSSH PRIVATE KEY-----z!-----END OPENSSH PRIVATE KEY-----s   openssh-key-v1 zFinvalid OpenSSH private key (does not start/end with OPENSSH preamble)Ú c              3   ó@   #   • U  H  oR                  5       v •  M     g 7frI   )r2   rf   s     r    ri   Ú,_read_ssh_ed25519_privkey.<locals>.<genexpr>Â   s   é € Ð9ª A—g‘g—i�iªùrk   Né   s   nonezjencrypted private keys not supported (please remove the passphrase from your private key or use SSH agent)z/passphrase encrypted private keys not supportedr,   zAmultiple private keys in a key file not supported (found {} keys)z=invalid OpenSSH private key (found remaining payload for mac)s   ssh-ed25519z6invalid key type: we only support Ed25519 (found "{}")Úasciizinvalid public key lengthzGinvalid OpenSSH private key (padlen={}, actual_pad={}, expected_pad={}))Ú
startswithÚendswithr0   Úfindr%   r&   r3   r4   r5   r=   rV   rS   rK   r1   Údecoder   Úcrypto_sign_PUBLICKEYBYTESÚcrypto_sign_SECRETKEYBYTESrm   Úcrypto_sign_SEEDBYTES)r   Ú	SSH_BEGINÚSSH_ENDÚOPENSSH_KEY_V1Ússh_endr8   rE   Úcipher_nameÚkdfÚnkeysÚkey_dataÚmacÚ
block_sizeÚalgÚvkÚskr7   ÚpadÚseeds                      r    Ú_read_ssh_ed25519_privkeyr‹   ›   sÓ  € ð< 6€IØ1€GØ(€Nà×Ñ˜y×)Ñ)¨g×.>Ñ.>¸w×.GÑ.GÜÐ`ÓaÐaà�l‰l˜7Ó#€GØ”c˜)“n WÐ-€GØ�g‰gÑ9¨¯©¬Ó9Ó9€GÜ×Ò˜wÓ'€Dà”�NÓ#Ð$Ð%€DÜ˜dÓ#€Fà×#Ñ#Ó%€KØ
×
Ñ
Ó
€CØ
×ÑÔØ×ÑÓ€EØ
×ÑÔØ× Ñ Ó"€HØ
×
&Ñ
&Ó
(€Cà€Jà�gÓÜð  Eó  Fð  	Fà
ˆgƒ~ÜÐIÓJÐJà�ƒzÜÐ[×bÑbÐchÓiÓjÐjæ
ÜÐWÓXÐXä˜hÓ'€Fà
×ÑÔØ
×ÑÔà
×
Ñ
Ó
€Cà
ˆnÓÜÐP×WÑWÐX[×XbÑXbÐcjÓXkÓlÓmÐmà	×	Ñ	Ó	€BØ	×	Ñ	Ó	€Bä
ˆ2ƒw”(×5Ñ5Ó5ÜÐ3Ó4Ð4ä
ˆ2ƒw”(×5Ñ5Ó5ÜÐ3Ó4Ð4à×ÑÓ!€GØ
×
&Ñ
&Ó
(€Cä
ˆ3‡x�x”S˜“X Ó+¨s´h¼sÀ3»xÓ6HÓ/HÜÐa×hÑhÔilÐmpÓiqÐsvô  yAô  BEð  FIó  BJó  yKó  Ló  Mð  	Mð Ð-Œx×-Ñ-Ð.€Dà�n‰n˜WÓ%€Gà�ˆ=Ðr"   c                 ó&  • [        U 5       n[        R                  " UR                  5       R	                  5       S   5      SS n[        U5      S:w  a#  [        SR                  [        U5      5      5      eUsSSS5        $ ! , (       d  f       g= f)zt
Read a Ed25519 signature file created with OpenBSD signify.

http://man.openbsd.org/OpenBSD-current/man1/signify.1
r,   é
   Né@   zEbogus Ed25519 signature: raw signature length was {}, but expected 64©Úopenr4   r5   ÚreadÚ
splitlinesr%   r0   r1   )Úsignature_fileÚfÚsigs      r    Ú_read_signify_ed25519_signaturer–   ÿ   sq   € ô 
ˆnÔ	 ä×!Ò! !§&¡&£(×"5Ñ"5Ó"7¸Ñ":Ó;¸B¸CÐ@ˆÜˆs‹8�r‹>ÜÐc×jÑjÔknÐorÓksÓtÓuÐuØ÷ 
×	×	úó   ŒA,BÂ
Bc                 ó&  • [        U 5       n[        R                  " UR                  5       R	                  5       S   5      SS n[        U5      S:w  a#  [        SR                  [        U5      5      5      eUsSSS5        $ ! , (       d  f       g= f)z€
Read a public key from a Ed25519 key pair created with OpenBSD signify.

http://man.openbsd.org/OpenBSD-current/man1/signify.1
r,   r�   Nr-   z@bogus Ed25519 public key: raw key length was {}, but expected 32r�   )Úpubkey_filer”   Úpubkeys      r    Ú_read_signify_ed25519_pubkeyr›     sr   € ô 
ˆkÔ	˜aä×$Ò$ Q§V¡V£X×%8Ñ%8Ó%:¸1Ñ%=Ó>¸r¸sÐCˆÜˆv‹;˜"ÓÜÐ^×eÑeÔfiÐjpÓfqÓrÓsÐsØ÷ 
×	×	úr—   c                 ór  • US;   d   eSSK n[        U 5       nUR                  5       R                  5       S   nUR	                  SUR
                  S9nUR                  U5        US:X  aG  SSKnUR                  5        nUR                  USS	9  UR                  5       sSSS5        sSSS5        $ US
:X  aJ  SSKnUR                  UR                  R                  R                  S9nUR!                  5       sSSS5        $ [#        S5      e! , (       d  f       O= f SSS5        g! , (       d  f       g= f)a}  

Usage:

1. Get the OpenBSD 5.7 release public key from here

    http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/etc/signify/Attic/openbsd-57-base.pub?rev=1.1

2. Generate QR Code and print to terminal

    print(cryptosign._qrcode_from_signify_ed25519_pubkey('openbsd-57-base.pub'))

3. Compare to (scroll down) QR code here

    https://www.openbsd.org/papers/bsdcan-signify.html
)ÚtextÚsvgr   Nr,   r+   )Úbox_sizeÚerror_correctionr�   T)ÚoutÚinvertrž   )Úimage_factoryzlogic error)Úqrcoder�   r‘   r’   ÚQRCodeÚERROR_CORRECT_LÚadd_dataÚioÚStringIOÚprint_asciiÚgetvalueÚqrcode.image.svgÚ
make_imageÚimagerž   ÚSvgImageÚ	to_stringr0   )	r™   Úmoder¤   r”   rš   Úqrr¨   Údata_bufferr®   s	            r    Ú#_qrcode_from_signify_ed25519_pubkeyr´     s  € ð" �?Ó"Ð#Ð"ãä	ˆkÔ	˜aØ—‘“×$Ñ$Ó& qÑ)ˆà�]‰] AØ,2×,BÑ,Bð ð Dˆà
�‰�FÔà�6‹>Ûà—‘” +Ø—‘ ;°t�Ñ<Ø"×+Ñ+Ó-÷ �÷ 
Ñ	ð �U‹]Û#à—M‘M°·±×0@Ñ0@×0IÑ0I�MÐJˆEØ—?‘?Ó$÷# 
Ñ	ô& ˜MÓ*Ð*÷ •ú�÷ 
×	Ö	ús1   ˜A'D(Á? DÂ	D(Â2AD(ÄD(Ä
D	ÄD(Ä(
D6c                 ó~   • [        U 5      n[        R                  " U5      n[        U5      nUR	                  X%5        g)aS  
Verify a Ed25519 signature created with OpenBSD signify.

This will raise a `nacl.exceptions.BadSignatureError` if the signature is bad
and return silently when the signature is good.

Usage:

1. Create a signature:

    signify-openbsd -S -s ~/.signify/crossbario-trustroot.sec -m .profile

2. Verify the signature

    from autobahn.wamp import cryptosign

    with open('.profile', 'rb') as f:
        message = f.read()
        cryptosign._verify_signify_ed25519_signature('.signify/crossbario-trustroot.pub', '.profile.sig', message)

http://man.openbsd.org/OpenBSD-current/man1/signify.1
N)r›   r   Ú	VerifyKeyr–   Úverify)r™   r“   Úmessagerš   Ú
verify_keyr•   s         r    Ú!_verify_signify_ed25519_signaturerº   F  s6   € ô. *¨+Ó6€FÜ×"Ò" 6Ó*€JÜ
)¨.Ó
9€CØ×Ñ�gÕ#r"   Ú	challengeÚchannel_id_rawÚchannel_id_typec                 ó”  • [        U [        5      (       d#  [        SR                  [	        U 5      5      5      eSU R
                  ;  a  [        S5      eU R
                  S   n[	        U5      [        :w  a#  [        SR                  [	        U5      5      5      e[        U5      S:w  a#  [        SR                  [        U5      5      5      e[        R                  " U5      nUS:X  aF  [        U5      S:X  d   S	R                  [        U5      5      5       e[        R                  " XA5      nU$ Uc  UnU$  S
R                  U5      5       e)aO  
Format the challenge based on provided parameters

:param challenge: The WAMP-cryptosign challenge object for which a signature should be computed.
:param channel_id_raw: The channel ID when channel_id_type is 'tls-unique'.
:param channel_id_type: The type of the channel id, currently handles 'tls-unique' and
    ignores otherwise.
zCchallenge must be instance of autobahn.wamp.types.Challenge, not {}r»   z*missing challenge value in challenge.extraz5invalid type {} for challenge (expected a hex string)rŽ   z:unexpected challenge (hex) length: was {}, but expected 64ú
tls-uniquer-   zDunexpected TLS transport channel ID length (was {}, but expected 32)zinvalid channel_id_type "{}")Ú
isinstancer   r0   r1   r.   Úextrar/   r%   r4   r   r
   Úxor)r»   r¼   r½   Úchallenge_hexÚchallenge_rawr   s         r    Ú_format_challengerÅ   n  sK  € ô ˜)¤Y×/Ñ/ÜØU×\Ñ\Ô]aÐbkÓ]lÓmóoð oð ˜iŸo™oÓ-ÜÐHÓIÐIð "Ÿ™¨Ñ4ˆä�Ó¤#Ó%ÜÐS×ZÑZÔ[_Ð`mÓ[nÓoÓpÐpäˆ}Ó Ó#ÜÐX×_Ñ_Ô`cÐdqÓ`rÓsÓtÐtô !×(Ò(¨Ó7ˆà˜lÓ*ÜØó Ø#%ó&ð %Ø'm×'tÑ'tÜ�NÓ#ó(%ó%ð &ô —8’8˜MÓ:ˆDð ˆð Ñ$à ˆDð ˆð QÐ8×?Ñ?ÀÓPÓP�5r"   r   Úsigner_funcc                 ó€   ^ ^• U" T 5      n[         R                  " 5       mUU 4S jn[         R                  " X#S5        T$ )zá
Sign the provided data using the provided signer.

:param data: challenge to sign
:param signer_func: The callable function to use for signing
:returns: A Deferred/Future that resolves to the computed signature.
:rtype: str
c                 óÐ   >• [         R                  " U 5      R                  S5      n[         R                  " T5      R                  S5      nX-   n[        R                  " TU5        g )Nrt   )r4   r   rx   ÚtxaioÚresolve)Úsignature_rawÚsignature_hexÚdata_hexr•   Úd2r   s       €€r    ÚprocessÚ _sign_challenge.<locals>.processª  sQ   ø€ ä$×,Ò,¨]Ó;×BÑBÀ7ÓKˆMô  ×'Ò'¨Ó-×4Ñ4°WÓ=ˆHàÑ*ˆCÜ�MŠM˜"˜cÕ"r"   N)rÉ   Úcreate_futureÚadd_callbacks)r   rÆ   Úd1rÏ   rÎ   s   `   @r    Ú_sign_challengerÔ   š  s;   ù€ ñ ˜Óˆô × Ò Ó"ˆö	#ô 	×Ò˜B¨Ô.àˆ	r"   c                   ó0  • \ rS rSrSr  S'S\S\\   S\\   S\\	   SS4
S	 jjr
\S\S
   4S j5       r\S\\   4S j5       r\S\\	   4S j5       r\S\	4S j5       r\S\4S j5       rS\S\4S jr  S(S\S\\   S\\	   S\4S jjrS)S\S\\	\4   4S jjr\S*S\S\\	   SS 4S jj5       r\S*S\S\\	   SS 4S jj5       r\S*S\	S\\	   SS 4S jj5       r\S\	SS 4S j5       r\S\	SS 4S  j5       r\S+S!\	S"\SS 4S# jj5       r\S$\	SS 4S% j5       rS&rg),r   i¸  z”
A cryptosign private key for signing, and hence usable for authentication or a
public key usable for verification (but can't be used for signing).
NÚcan_signÚsecurity_moduleÚkey_nor7   r_   c                 óž  • [        U[        R                  5      (       dB  [        U[        R                  5      (       d#  [	        SR                  [        U5      5      5      eU(       a  [        U[        R                  5      (       d(  U(       d  [        U[        R                  5      (       d   eXl        X l        X0l	        X@l
        XPl        g )Nzinvalid type {} for key)rÀ   r   r¶   Ú
SigningKeyr0   r1   r.   Ú_keyÚ	_can_signÚ_security_moduleÚ_key_noÚ_comment)rD   r9   rÖ   r×   rØ   r7   s         r    rF   ÚCryptosignKey.__init__¾  sŽ   € ä˜s¤G×$5Ñ$5×6Ñ6¼*ÀSÌ'×J\ÑJ\×:]Ñ:]ÜÐ 9× @Ñ @ÄÀcÃÓ KÓLÐLæ¤¨C´×1CÑ1C×!DÑ!DÎhÔ[eÐfiÔkr×k|Ñk|×[}Ñ[}Ð~Ð~ØŒIØ%ŒNØ$3Ô!Ø!ŒLØ#�Mr"   r   c                 ó   • U R                   $ )zC
Implements :meth:`autobahn.wamp.interfaces.IKey.security_module`.
)rÝ   rJ   s    r    r×   ÚCryptosignKey.security_moduleÊ  s   € ð
 ×(Ñ(Ð(r"   c                 ó   • U R                   $ )z:
Implements :meth:`autobahn.wamp.interfaces.IKey.key_no`.
)rÞ   rJ   s    r    rØ   ÚCryptosignKey.key_noÑ  s   € ð
 —<‘<Ðr"   c                 ó   • U R                   $ )z;
Implements :meth:`autobahn.wamp.interfaces.IKey.comment`.
)rß   rJ   s    r    r7   ÚCryptosignKey.commentØ  s   € ð
 —=‘=Ð r"   c                 ó   • g)z<
Implements :meth:`autobahn.wamp.interfaces.IKey.key_type`.
Ú
cryptosignr^   rJ   s    r    Úkey_typeÚCryptosignKey.key_typeß  s   € ð
  r"   c                 ó   • U R                   $ )z<
Implements :meth:`autobahn.wamp.interfaces.IKey.can_sign`.
)rÜ   rJ   s    r    rÖ   ÚCryptosignKey.can_signæ  s   € ð
 —>‘>Ð!r"   r   c                 óì   • U R                   (       d  [        S5      e[        U5      [        :w  a  [        S5      eU R                  R                  U5      n[        R                  " UR                  5      $ )z8
Implements :meth:`autobahn.wamp.interfaces.IKey.sign`.
za signing key required to signz data to be signed must be binary)	rÜ   r0   r.   ÚbytesrÛ   ÚsignrÉ   Úcreate_future_successÚ	signature)rD   r   r•   s      r    rï   ÚCryptosignKey.signí  sX   € ð —>—>ÜÐ @ÓAÐAä�D‹zœUÓ"ÜÐ BÓCÐCà!%§¡§¡°Ó!5ˆCô ×.Ò.¨s¯}©}Ó=Ð=r"   r»   Ú
channel_idr½   c                 ó¤   • UR                   S;   d    SR                  UR                   5      5       e[        XU5      n[        X@R                  5      $ )zL
Implements :meth:`autobahn.wamp.interfaces.ICryptosignKey.sign_challenge`.
)rè   zcryptosign-proxyz0unexpected cryptosign challenge with method "{}")Úmethodr1   rÅ   rÔ   rï   )rD   r»   ró   r½   r   s        r    Úsign_challengeÚCryptosignKey.sign_challengeÿ  sS   € ð
 ×#Ñ#Ð'IÓIð \ØB×IÑIÈ)×JZÑJZÓ[ó\ÐIô % Y¸OÓLˆDä" 4¯©Ó3Ð3r"   Úbinaryc                 ó   • [        U R                  [        R                  5      (       a  U R                  R                  nOU R                  nU(       a  UR                  5       $ UR                  [        R                  S9R                  S5      $ )z�
Returns the public key part of a signing key or the (public) verification key.

:returns: The public key in Hex encoding.
:rtype: str or None
©Úencoderrt   )	rÀ   rÛ   r   rÚ   r¹   Úencoder   Ú
HexEncoderrx   )rD   rø   r9   s      r    Ú
public_keyÚCryptosignKey.public_key  sd   € ô ˜$Ÿ)™)¤W×%7Ñ%7×8Ñ8Ø—i‘i×*Ñ*‘à—i‘i�æØ—z‘z“|Ð#à—z‘z¬(×*=Ñ*=�zÐ>×EÑEÀgÓNÐNr"   rš   c                 ó|  • Ub6  [        U5      [        :X  d#  [        SR                  [        U5      5      5      e[        U5      [        :w  a#  [        SR                  [        U5      5      5      e[        U5      S:w  a#  [        SR                  [        U5      5      5      eU " [        R                  " U5      SUS9$ )Núinvalid type {} for commentú%invalid key type {} (expected binary)r-   ú#invalid key length {} (expected 32)F©r9   rÖ   r7   )r.   r/   Ú
ValueErrorr1   rî   r%   r   r¶   )Úclsrš   r7   s      r    Úfrom_pubkeyÚCryptosignKey.from_pubkey  s™   € à‘O¤t¨G£}¼Ó';Ü Ð!>×!EÑ!EÄdÈ7ÃmÓ!TÓUÐUä�F‹|œuÓ$Ü Ð!H×!OÑ!OÔPTÐU[ÓP\Ó!]Ó^Ð^ä�6‹{˜bÓ Ü Ð!F×!MÑ!MÌcÐRXËkÓ!ZÓ[Ð[áœ7×,Ò,¨VÓ4¸uÈgÑVÐVr"   r9   c                 ó|  • Ub6  [        U5      [        :X  d#  [        SR                  [        U5      5      5      e[        U5      [        :w  a#  [        SR                  [        U5      5      5      e[        U5      S:w  a#  [        SR                  [        U5      5      5      eU " [        R                  " U5      SUS9$ )Nr  r  r-   r  Tr  )r.   r/   r  r1   rî   r%   r   rÚ   )r  r9   r7   s      r    Ú
from_bytesÚCryptosignKey.from_bytes)  s˜   € à‘O¤t¨G£}¼Ó';Ü Ð!>×!EÑ!EÄdÈ7ÃmÓ!TÓUÐUä�C‹yœEÓ!Ü Ð!H×!OÑ!OÔPTÐUXÓPYÓ!ZÓ[Ð[ä�3‹x˜2‹~Ü Ð!F×!MÑ!MÌcÐRUËhÓ!WÓXÐXáœ7×-Ò-¨cÓ2¸TÈ7ÑSÐSr"   Úfilenamec                 óZ  • Ub6  [        U5      [        :X  d#  [        SR                  [        U5      5      5      e[        U5      [        :w  a  [        SR                  U5      5      e[	        US5       nUR                  5       nSSS5        U R                  WUS9$ ! , (       d  f       N= f)aj  
Load an Ed25519 (private) signing key (actually, the seed for the key) from a raw file of 32 bytes length.
This can be any random byte sequence, such as generated from Python code like

    os.urandom(32)

or from the shell

    dd if=/dev/urandom of=client02.key bs=1 count=32

:param filename: Filename of the key.
:param comment: Comment for key (optional).
Nr  zinvalid type {} for filenameÚrb)r7   )r.   r/   r0   r1   r�   r‘   r
  )r  r  r7   r”   rƒ   s        r    Ú	from_fileÚCryptosignKey.from_file6  sŒ   € ð ‘O¤t¨G£}¼Ó';ÜÐ =× DÑ DÄTÈ'Ã]Ó SÓTÐTä�H‹~¤Ó$ÜÐ >× EÑ EÀhÓ OÓPÐPä�h Ô%¨ØŸ6™6›8�÷ &ð —>‘> (°G�>Ð<Ð<÷ &Õ%ús   Á3BÂ
B*c                 óÊ   • [        US5       nUR                  5       R                  S5      R                  5       nSSS5        U R	                  W5      $ ! , (       d  f       N= f)zÝ
Load an Ed25519 key from a SSH key file. The key file can be a (private) signing
key (from a SSH private key file) or a (public) verification key (from a SSH
public key file). A private key file must be passphrase-less.
r  zutf-8N)r�   r‘   rx   r2   Úfrom_ssh_bytes)r  r  r”   rƒ   s       r    Úfrom_ssh_fileÚCryptosignKey.from_ssh_fileP  sL   € ô �h Ô%¨ØŸ6™6›8Ÿ?™?¨7Ó3×9Ñ9Ó;�÷ &à×%Ñ% hÓ/Ð/÷ &Õ%ús   �.AÁ
A"rƒ   c                 óð   • SnUR                  U5      (       a3  [        U5      u  p[        R                  " U[        R
                  S9nSnO%[        U5      u  p[        R                  " U5      nSnU " XEUS9$ )zÛ
Load an Ed25519 key from SSH key file. The key file can be a (private) signing
key (from a SSH private key file) or a (public) verification key (from a SSH
public key file). A private key file must be passphrase-less.
ro   rú   TFr  )ru   r‹   r   rÚ   r   Ú
RawEncoderr;   r¶   )r  rƒ   r|   r7   r9   rÖ   s         r    r  ÚCryptosignKey.from_ssh_bytes\  su   € ð >ˆIØ×"Ñ" 9×-Ñ-ä$=¸hÓ$GÑ!�Ü×(Ò(¨¼8×;NÑ;NÑO�Ø‘ô %=¸XÓ$FÑ!�Ü×'Ò'¨Ó1�Ø �á˜3¸7ÑCÐCr"   Ú
seedphraseÚindexc                 ó  •  SSK Jn  SR	                  U5      nU" X5      n[        U5      [        :X  d   e[        U5      S:X  d   eU R                  U5      nU$ ! [         a  n[        SR	                  U5      5      eSnAff = f)aT  
Create a private key from the given BIP-39 mnemonic seed phrase and index,
which can be used to sign and create signatures.

:param seedphrase: The BIP-39 seedphrase ("Mnemonic") from which to derive the account.
:param index: The account index in account hierarchy defined by the seedphrase.
:return: New instance of :class:`EthereumKey`
r   )Úmnemonic_to_private_keyz*package autobahn[xbr] not installed ("{}")Nzm/44'/655'/0'/0/{}r-   )	Úautobahn.xbr._mnemonicr  ÚImportErrorÚRuntimeErrorr1   r.   rî   r%   r
  )r  r  r  r  r:   Úderivation_pathÚkey_rawr9   s           r    Úfrom_seedphraseÚCryptosignKey.from_seedphraseq  sŒ   € ð[ÝJð 3×9Ñ9¸%Ó@ˆOá-¨jÓJˆGÜ˜“=¤EÓ)Ð)Ð)Ü�w“< 2Ó%Ð%Ð%ð —.‘. Ó)ˆCàˆJøô ó [Ü"Ð#O×#VÑ#VÐWXÓ#YÓZÐZûð[ús   ‚A Á
BÁ$A>Á>BÚkeyfilec                 ó  • [         R                  R                  U5      (       a$  [         R                  R                  U5      (       d  [	        SR                  U5      5      e[        U5      nUR                  SS5      nUcX  UR                  SS5      nUc  [	        SR                  U5      5      e[        R                  [        R                  " U5      5      $ [        R                  [        R                  " U5      5      $ )a¥  
Create a public or private key from reading the given public or private key file.

Here is an example key file that includes an CryptosignKey private key ``private-key-ed25519``, which
is loaded in this function, and other fields, which are ignored by this function:

.. code-block::

    This is a comment (all lines until the first empty line are comments indeed).

    creator: oberstet@intel-nuci7
    created-at: 2022-07-05T12:29:48.832Z
    user-id: oberstet@intel-nuci7
    public-key-ed25519: 7326d9dc0307681cc6940fde0e60eb31a6e4d642a81e55c434462ce31f95deed
    public-adr-eth: 0x10848feBdf7f200Ba989CDf7E3eEB3EC03ae7768
    private-key-ed25519: f750f42b0430e28a2e272c3cedcae4dcc4a1cf33bc345c35099d3322626ab666
    private-key-eth: 4d787714dcb0ae52e1c5d2144648c255d660b9a55eac9deeb80d9f506f501025

:param keyfile: Path (relative or absolute) to a public or private keys file.
:return: New instance of :class:`CryptosignKey`
zkeyfile "{}" is not a filezprivate-key-ed25519Nzpublic-key-ed25519zJneither "private-key-ed25519" nor "public-key-ed25519" found in keyfile {})ÚosÚpathÚexistsÚisfiler  r1   r   Úgetr   r  r4   r   r
  )r  r#  r   Úprivkey_ed25519_hexÚpubkey_ed25519_hexs        r    Úfrom_keyfileÚCryptosignKey.from_keyfileŽ  sÛ   € ô. —7‘7—>‘> '×*Ñ*´"·'±'·.±.À×2IÑ2IÜ"Ð#?×#FÑ#FÀwÓ#OÓPÐPô ! Ó)ˆDà"&§(¡(Ð+@À$Ó"GÐØ"Ñ*Ø%)§X¡XÐ.BÀDÓ%IÐ"Ø%Ñ-Ü&Ð's×'zÑ'zð  |Có  (Dó  Eð  Eä(×4Ñ4´X×5EÒ5EÐFXÓ5YÓZÐZä$×/Ñ/´×0@Ò0@ÐATÓ0UÓVÐVr"   )rÜ   rß   rÛ   rÞ   rÝ   )NNN)NN)FrI   )r   ) rX   rY   rZ   r[   r\   Úboolr   r   Úintr/   rF   Úpropertyr×   rØ   r7   ré   rÖ   rî   rï   r   rö   r   rþ   Úclassmethodr  r
  r  r  r  r!  r,  r]   r^   r"   r    r   r   ¸  sm  † ñ	ð
 ^bØLPñ
	$¨$ð 
	$ÀÈ/ÑAZð 
	$Ø% c™]ð
	$Ø<DÀS¹Mð
	$ØUYõ
	$ð 
ð	) XÐ.?Ñ%@ó 	)ó 
ð	)ð 
ð	 ˜H S™Mó 	 ó 
ð	 ð 
ð	!˜X c™]ó 	!ó 
ð	!ð 
ð	 ˜có 	 ó 
ð	 ð 
ð	"˜dó 	"ó 
ð	"ð	>˜Uð 	> uô 	>ð$ VZØ<@ñ
	4¨Ið 
	4À8ÈEÁ?ð 
	4Ø,4°S©Mð
	4ØEJõ
	4ñ	O Tð 	O°e¸CÀ¸JÑ6Gõ 	Oð" 
ñ
	W Uð 
	W°X¸c±]ð 
	WÈoô 
	Wó 
ð
	Wð 
ñ
	T ð 
	T°¸#±ð 
	TÈ/ô 
	Tó 
ð
	Tð 
ñ	= Sð 	=°8¸C±=ð 	=ÈOô 	=ó 
ð	=ð2 
ð		0¨ð 		0°ó 		0ó 
ð		0ð 
ð	D¨#ð 	D°/ó 	Dó 
ð	Dð( 
ñ	¨Sð 	¸ð 	À_ô 	ó 
ð	ð8 
ð,	W sð ,	W¨ó ,	Wó 
ó,	Wr"   c                   ó¼  • \ rS rSrSr/ SQr            S0S\\   S\\   S\\   S\\   S	\\   S
\\   S\\	   S\\	   S\\   S\\   S\\	   S\\   4S jjr
\S\\   4S j5       r\R                  S\\   4S j5       r\S\\   4S j5       r\R                  S\\   4S j5       r\S\\   4S j5       r\R                  S\\   4S j5       r\S\\   4S j5       r\R                  S\\   4S j5       r\S\\   4S j5       r\R                  S\\   4S j5       r\S\\   4S j5       r\R                  S\\   4S j5       r\S\\	   4S  j5       r\R                  S\\	   4S! j5       r\S\\	   4S" j5       r\R                  S\\	   4S# j5       r\S\\   4S$ j5       r\R                  S\\   4S% j5       r\S\\   4S& j5       r\R                  S\\   4S' j5       r\S\\	   4S( j5       r\R                  S\\	   4S) j5       r\S\\   4S* j5       r\R                  S\\   4S+ j5       r\S,\\\4   SS 4S- j5       rS\\\4   4S. jrS/rg)1ÚCryptosignAuthextrai¿  z#
WAMP-Cryptosign authextra object.
)Ú_pubkeyÚ
_trustrootÚ
_challengeÚ_channel_bindingÚ_channel_idÚ_realmÚ	_chain_idÚ	_block_noÚ	_delegateÚ_seederÚ
_bandwidthÚ
_signatureNrš   r»   Úchannel_bindingró   Ú	trustrootÚrealmÚchain_idÚblock_noÚdelegateÚseederÚ	bandwidthrñ   c                 ó2  • U(       a  [        U5      S:X  d   eU(       a  [        U5      S:X  d   eU(       a  [        U5      S:X  d   eU(       a  US;   d   eU(       a  [        U5      S:X  d   eU(       a  [        U5      S:X  d   eU	(       a  [        U	5      S:X  d   eU
(       a  [        U
5      S:X  d   eU(       a  [        U5      S:X  d   eXl        XPl        X l        X0l        X@l        X`l        Xpl        X€l        X�l	        X l
        X°l        XÀl        g )Nr-   é   ©r¿   éA   )r%   r4  r5  r6  r7  r8  r9  r:  r;  r<  r=  r>  r?  )rD   rš   r»   r@  ró   rA  rB  rC  rD  rE  rF  rG  rñ   s                r    rF   ÚCryptosignAuthextra.__init__Ò  sû   € ö* Ü˜6“{ bÓ(Ð(Ð(ÞÜ˜9“~¨Ó+Ð+Ð+ÞÜ˜9“~¨Ó+Ð+Ð+ÞØ&¨.Ó8Ð8Ð8ÞÜ˜:“¨"Ó,Ð,Ð,ÞÜ˜5“z RÓ'Ð'Ð'ÞÜ˜8“}¨Ó*Ð*Ð*ÞÜ˜6“{ bÓ(Ð(Ð(ÞÜ˜9“~¨Ó+Ð+Ð+Ø!ŒLØ'ŒOØ'ŒOØ$3Ô!Ø)ÔØŒKØ%ŒNØ%ŒNØ%ŒNØ!ŒLØ'ŒOØ'�Or"   r_   c                 ó   • U R                   $ rI   )r4  rJ   s    r    rš   ÚCryptosignAuthextra.pubkey  ó   € à—<‘<Ðr"   rO   c                 ó8   • Ub  [        U5      S:X  d   eXl        g ©NrI  )r%   r4  ©rD   rO   s     r    rš   rN  
  ó   € à‘=¤C¨£J°"Ó$4Ð4Ð4Ø �Lr"   c                 ó   • U R                   $ rI   )r5  rJ   s    r    rA  ÚCryptosignAuthextra.trustroot  ó   € à—?‘?Ð"r"   c                 ó8   • Ub  [        U5      S:X  d   eXl        g rQ  )r%   r5  rR  s     r    rA  rU    ó   € à‘=¤C¨£J°"Ó$4Ð4Ð4Ø#�Or"   c                 ó   • U R                   $ rI   )r6  rJ   s    r    r»   ÚCryptosignAuthextra.challenge  rV  r"   c                 ó8   • Ub  [        U5      S:X  d   eXl        g ©Nr-   )r%   r6  rR  s     r    r»   rZ    rX  r"   c                 ó   • U R                   $ rI   ©r7  rJ   s    r    r@  Ú#CryptosignAuthextra.channel_binding!  s   € à×(Ñ(Ð(r"   c                 ó&   • Ub  US;   d   eXl         g )NrJ  r^  rR  s     r    r@  r_  %  s   € à‘= E¨^Ó$;Ð;Ð;Ø$)Õ!r"   c                 ó   • U R                   $ rI   )r8  rJ   s    r    ró   ÚCryptosignAuthextra.channel_id*  s   € à×#Ñ#Ð#r"   c                 ó8   • Ub  [        U5      S:X  d   eXl        g r\  )r%   r8  rR  s     r    ró   rb  .  s   € à‘=¤C¨£J°"Ó$4Ð4Ð4Ø$Õr"   c                 ó   • U R                   $ rI   )r9  rJ   s    r    rB  ÚCryptosignAuthextra.realm3  s   € à—;‘;Ðr"   c                 ó8   • Ub  [        U5      S:X  d   eXl        g rQ  )r%   r9  rR  s     r    rB  re  7  s   € à‘=¤C¨£J°"Ó$4Ð4Ð4Ø�Kr"   c                 ó   • U R                   $ rI   ©r:  rJ   s    r    rC  ÚCryptosignAuthextra.chain_id<  ó   € à—>‘>Ð!r"   c                 ó&   • Ub  US:”  d   eXl         g r@   rh  rR  s     r    rC  ri  @  ó   € à‘= E¨A£IÐ-Ð-Ø"�Nr"   c                 ó   • U R                   $ rI   ©r;  rJ   s    r    rD  ÚCryptosignAuthextra.block_noE  rj  r"   c                 ó&   • Ub  US:”  d   eXl         g r@   rn  rR  s     r    rD  ro  I  rl  r"   c                 ó   • U R                   $ rI   )r<  rJ   s    r    rE  ÚCryptosignAuthextra.delegateN  rj  r"   c                 ó8   • Ub  [        U5      S:X  d   eXl        g rQ  )r%   r<  rR  s     r    rE  rr  R  s   € à‘=¤C¨£J°"Ó$4Ð4Ð4Ø"�Nr"   c                 ó   • U R                   $ rI   )r=  rJ   s    r    rF  ÚCryptosignAuthextra.seederW  rO  r"   c                 ó8   • Ub  [        U5      S:X  d   eXl        g rQ  )r%   r=  rR  s     r    rF  ru  [  rS  r"   c                 ó   • U R                   $ rI   ©r>  rJ   s    r    rG  ÚCryptosignAuthextra.bandwidth`  rV  r"   c                 ó&   • Ub  US:”  d   eXl         g r@   rx  rR  s     r    rG  ry  d  s   € à‘= E¨A£IÐ-Ð-Ø#�Or"   c                 ó   • U R                   $ rI   )r?  rJ   s    r    rñ   ÚCryptosignAuthextra.signaturei  rV  r"   c                 ó8   • Ub  [        U5      S:X  d   eXl        g )NrK  )r%   r?  rR  s     r    rñ   r|  m  rX  r"   r   c                 óÂ  • [        5       nU R                  SS 5      nUbx  [        U5      [        :w  a#  [	        SR                  [        U5      5      5      e[        U5      S:w  a#  [	        SR                  [        U5      5      5      e[        U5      Ul        U R                  SS 5      nUbx  [        U5      [        :w  a#  [	        SR                  [        U5      5      5      e[        U5      S:w  a#  [	        SR                  [        U5      5      5      e[        U5      Ul	        U R                  SS 5      nUb\  [        U5      [        :w  a#  [	        S	R                  [        U5      5      5      eUS
;  a  [	        SR                  U5      5      eXAl
        U R                  SS 5      nUbx  [        U5      [        :w  a#  [	        SR                  [        U5      5      5      e[        U5      S:w  a#  [	        SR                  [        U5      5      5      e[        U5      Ul        U R                  SS 5      nUb‡  [        U5      [        :w  a#  [	        SR                  [        U5      5      5      e[        R                  " U5      (       d#  [	        SR                  [        U5      5      5      e[        USS  5      Ul        U R                  SS 5      nUGbý  [        U5      [        :w  a#  [	        SR                  [        U5      5      5      eUR                  SS 5      nUb<  [        U5      [         :w  a#  [	        SR                  [        U5      5      5      eX�l        UR                  SS 5      n	U	b<  [        U	5      [         :w  a#  [	        SR                  [        U	5      5      5      eX‘l        UR                  SS 5      n
U
b‡  [        U
5      [        :w  a#  [	        SR                  [        U
5      5      5      e[        R                  " U
5      (       d#  [	        SR                  [        U
5      5      5      e[        U
SS  5      Ul        UR                  SS 5      nUb‡  [        U5      [        :w  a#  [	        SR                  [        U5      5      5      e[        R                  " U5      (       d#  [	        SR                  [        U5      5      5      e[        USS  5      Ul        UR                  SS 5      nUb‡  [        U5      [        :w  a#  [	        S R                  [        U5      5      5      e[        R                  " U5      (       d#  [	        S!R                  [        U5      5      5      e[        USS  5      Ul        UR                  S"S 5      nUb<  [        U5      [         :w  a#  [	        S#R                  [        U5      5      5      eXÑl        U R                  S$S 5      nUbx  [        U5      [        :w  a#  [	        S%R                  [        U5      5      5      e[        U5      S&:w  a#  [	        S'R                  [        U5      5      5      e[        U5      Ul        U$ )(Nrš   zinvalid type {} for pubkeyrŽ   zinvalid length {} of pubkeyr»   zinvalid type {} for challengezinvalid length {} of challenger@  z#invalid type {} for channel_bindingrJ  z&invalid value "{}" for channel_bindingró   zinvalid type {} for channel_idzinvalid length {} of channel_idrA  z1invalid type {} for trustroot - expected a stringz?invalid value "{}" for trustroot - expected an Ethereum addressé   Úreservationzinvalid type {} for reservationrC  z>invalid type {} for reservation.chain_id - expected an integerrD  z>invalid type {} for reservation.block_no - expected an integerrB  z9invalid type {} for reservation.realm - expected a stringzGinvalid value "{}" for reservation.realm - expected an Ethereum addressrE  z<invalid type {} for reservation.delegate - expected a stringzJinvalid value "{}" for reservation.delegate - expected an Ethereum addressrF  z:invalid type {} for reservation.seeder - expected a stringzHinvalid value "{}" for reservation.seeder - expected an Ethereum addressrG  z?invalid type {} for reservation.bandwidth - expected an integerrñ   zinvalid type {} for signatureé‚   zinvalid length {} of signature)r3  r)  r.   r/   r  r1   r%   r   r4  r6  r7  r8  r   Úmatchr5  Údictr/  r:  r;  r9  r<  r=  r>  r?  )r   Úobjrš   r»   r@  ró   rA  r€  rC  rD  rB  rE  rF  rG  rñ   s                  r    ÚparseÚCryptosignAuthextra.parser  s«  € ä%Ó'ˆCà—X‘X˜h¨Ó-ˆFØÑ!Ü˜“<¤3Ó&Ü$Ð%A×%HÑ%HÌÈfËÓ%VÓWÐWÜ�v“; &Ó(Ü$Ð%B×%IÑ%IÌ#ÈfË+Ó%VÓWÐWÜ% f›o�”àŸ™ ¨dÓ3ˆIØÑ$Ü˜	“?¤cÓ)Ü$Ð%D×%KÑ%KÌDÐQZËOÓ%\Ó]Ð]Ü�y“> VÓ+Ü$Ð%E×%LÑ%LÌSÐQZË^Ó%\Ó]Ð]Ü!(¨Ó!3�”à"Ÿh™hÐ'8¸$Ó?ˆOØÑ*Ü˜Ó(¬CÓ/Ü$Ð%J×%QÑ%QÔRVÐWfÓRgÓ%hÓiÐiØ"¨.Ó8Ü$Ð%M×%TÑ%TÐUdÓ%eÓfÐfØ'6Ô$àŸ™ ,°Ó5ˆJØÑ%Ü˜
Ó#¤sÓ*Ü$Ð%E×%LÑ%LÌTÐR\ÓM]Ó%^Ó_Ð_Ü�z“? fÓ,Ü$Ð%F×%MÑ%MÌcÐR\ËoÓ%^Ó_Ð_Ü")¨*Ó"5�”àŸ™ ¨dÓ3ˆIØÑ$Ü˜	“?¤cÓ)Ü$Ð%X×%_Ñ%_Ô`dÐenÓ`oÓ%pÓqÐqÜ.×4Ò4°Y×?Ñ?Ü$Ð%f×%mÑ%mÔnrÐs|Ón}Ó%~ÓÐÜ!(¨°1°2¨Ó!7�”àŸ(™( =°$Ó7ˆKØÒ&Ü˜Ó$¬Ó,Ü$Ð%F×%MÑ%MÌdÐS^ÓN_Ó%`ÓaÐaà&Ÿ?™?¨:°tÓ<�ØÑ'Ü˜H“~¬Ó,Ü(Ð)i×)pÑ)pÔquÐv~Óqó  *Aó  Bð  BØ$,”Mà&Ÿ?™?¨:°tÓ<�ØÑ'Ü˜H“~¬Ó,Ü(Ð)i×)pÑ)pÔquÐv~Óqó  *Aó  Bð  BØ$,”Mà#Ÿ™¨°Ó6�ØÑ$Ü˜E“{¤cÓ)Ü(Ð)d×)kÑ)kÔlpÐqvÓlwÓ)xÓyÐyÜ2×8Ò8¸×?Ñ?Ü(Ð)r×)yÑ)yÔz~ð  @Eó  {Fó  *Gó  Hð  HÜ!(¨¨q¨r¨Ó!3�C”Jà&Ÿ?™?¨:°tÓ<�ØÑ'Ü˜H“~¬Ó,Ü(Ð)g×)nÑ)nÔosÐt|Óo}Ó)~ÓÐÜ2×8Ò8¸×BÑBÜ(Ð)u×)|Ñ)|ô  ~Bð  CKó  ~Ló  *Mó  Nð  NÜ$+¨H°Q°R¨LÓ$9�C”Mà$Ÿ™¨°4Ó8�ØÑ%Ü˜F“|¤sÓ*Ü(Ð)e×)lÑ)lÔmqÐrxÓmyÓ)zÓ{Ð{Ü2×8Ò8¸×@Ñ@Ü(Ð)s×)zÑ)zÔ{ð  AGó  |Hó  *Ió  Jð  JÜ")¨&°°¨*Ó"5�C”Kà'ŸO™O¨K¸Ó>�	ØÑ(Ü˜I“¬#Ó-Ü(Ð)j×)qÑ)qÔrvð  xAó  sBó  *Có  Dð  DØ%.”NàŸ™ ¨dÓ3ˆIØÑ$Ü˜	“?¤cÓ)Ü$Ð%D×%KÑ%KÌDÐQZËOÓ%\Ó]Ð]Ü�y“> VÓ+Ü$Ð%E×%LÑ%LÌSÐQZË^Ó%\Ó]Ð]Ü!(¨Ó!3�”àˆJr"   c                 óL  • 0 nU R                   b&  [        U R                   5      R                  5       US'   U R                  b&  [        U R                  5      R                  5       US'   U R                  b  U R                  US'   U R
                  b&  [        U R
                  5      R                  5       US'   U R                  b)  S[        U R                  5      R                  5       -   US'   0 nU R                  b  U R                  US'   U R                  b  U R                  US'   U R                  b)  S[        U R                  5      R                  5       -   US	'   U R                  b)  S[        U R                  5      R                  5       -   US
'   U R                  b)  S[        U R                  5      R                  5       -   US'   U R                  b  U R                  US'   U(       a  X!S'   U R                  b&  [        U R                  5      R                  5       US'   U$ )Nrš   r»   r@  ró   Ú0xrA  rC  rD  rB  rE  rF  rG  r€  rñ   )r4  r   rx   r6  r7  r8  r5  r:  r;  r9  r<  r=  r>  r?  )rD   Úresr€  s      r    ÚmarshalÚCryptosignAuthextra.marshal×  sÊ  € ØˆCð �|‰|Ñ'Ü '¨¯©Ó 5× <Ñ <Ó >��H‘à�‰Ñ*Ü#*¨4¯?©?Ó#;×#BÑ#BÓ#D��KÑ Ø×$Ñ$Ñ0Ø)-×)>Ñ)>�Ð%Ñ&Ø×ÑÑ+Ü$+¨D×,<Ñ,<Ó$=×$DÑ$DÓ$F��LÑ!à�‰Ñ*Ø#'¬'°$·/±/Ó*B×*IÑ*IÓ*KÑ#K��KÑ àˆKØ�~‰~Ñ)Ø*.¯.©.�˜JÑ'Ø�~‰~Ñ)Ø*.¯.©.�˜JÑ'Ø�{‰{Ñ&Ø'+¬g°d·k±kÓ.B×.IÑ.IÓ.KÑ'K�˜GÑ$Ø�~‰~Ñ)Ø*.´¸¿¹Ó1H×1OÑ1OÓ1QÑ*Q�˜JÑ'Ø�|‰|Ñ'Ø(,¬w°t·|±|Ó/D×/KÑ/KÓ/MÑ(M�˜HÑ%Ø�‰Ñ*Ø+/¯?©?�˜KÑ(ÞØ%0�MÑ"à�‰Ñ*Ü#*¨4¯?©?Ó#;×#BÑ#BÓ#D��KÑ àˆJr"   )r>  r;  r:  r6  r7  r8  r<  r4  r9  r=  r?  r5  )NNNNNNNNNNNN)rX   rY   rZ   r[   r\   Ú	__slots__r   rî   r/   r/  rF   r0  rš   ÚsetterrA  r»   r@  ró   rB  rC  rD  rE  rF  rG  rñ   Ústaticmethodr   r	   r…  rŠ  r]   r^   r"   r    r3  r3  ¿  sJ  † ñ	ò
ˆ	ð  04Ø26Ø6:Ø37ð 37ð
 /3Ø/3Ø/3Ø15Ø/3Ø04à26ñ'2	(Ø% e™_ð2	(à (¨¡ð2	(ð '/¨s¡mð2	(ð "*¨%¡ð	2	(ð !)¨¡ð2	(ð % U™Oð2	(ð  (¨™}ð2	(ð  (¨™}ð2	(ð  (¨™ð2	(ð  & e™_ð!2	(ð" !)¨¡ð#2	(ð& !)¨¡õ'2	(ðh 
ð	 ˜H U™Oó 	 ó 
ð	 ð 
�‰ð	! ¨¡ó 	!ó 
ð	!ð 
ð	#˜x¨™ó 	#ó 
ð	#ð 
×	Ñ	ð	$ 8¨E¡?ó 	$ó 
ð	$ð 
ð	#˜x¨™ó 	#ó 
ð	#ð 
×	Ñ	ð	$ 8¨E¡?ó 	$ó 
ð	$ð 
ð	) X¨c¡]ó 	)ó 
ð	)ð 
×	Ñ	ð	*¨°#©ó 	*ó 
 ð	*ð 
ð	$ ¨¡ó 	$ó 
ð	$ð 
×	Ñ	ð	% H¨U¡Oó 	%ó 
ð	%ð 
ð	˜8 E™?ó 	ó 
ð	ð 
�‰ð	 ˜x¨™ó 	 ó 
ð	 ð 
ð	"˜h s™mó 	"ó 
ð	"ð 
�‰ð	# (¨3¡-ó 	#ó 
ð	#ð 
ð	"˜h s™mó 	"ó 
ð	"ð 
�‰ð	# (¨3¡-ó 	#ó 
ð	#ð 
ð	"˜h u™oó 	"ó 
ð	"ð 
�‰ð	# (¨5¡/ó 	#ó 
ð	#ð 
ð	 ˜H U™Oó 	 ó 
ð	 ð 
�‰ð	! ¨¡ó 	!ó 
ð	!ð 
ð	#˜x¨™}ó 	#ó 
ð	#ð 
×	Ñ	ð	$ 8¨C¡=ó 	$ó 
ð	$ð 
ð	#˜x¨™ó 	#ó 
ð	#ð 
×	Ñ	ð	$ 8¨E¡?ó 	$ó 
ð	$ð 
ðb	˜˜S #˜X™ð b	Ð+@ó b	ó 
ðb	ðH%	˜T # s (™^÷ %	r"   r3  )r   Úformat_challengerö   r3  )r�   )5r%  r4   r   r   r   Útypingr   r   r   r   r	   rÉ   Úautobahnr
   Úautobahn.wamp.interfacesr   r   Úautobahn.wamp.typesr   Úautobahn.wamp.messager   Úautobahn.utilr   Ú__all__Únaclr   r   r   Únacl.signingr   r   r   r  r!   r)   r;   r=   r/  rî   rm   r‹   r–   r›   r´   rº   r/   rÅ   rÔ   Úobjectr   Úregisterr3  Úextendr^   r"   r    Ú<module>rœ     sN  ðó6 
Û ß %Û ß 7Õ 7ã å ß DÝ )Ý 9Ý 'ð ð€ð$ç0Ñ0Ý*ð €NØ‡N�N�?Ô#òò"ò#÷L1ñ 1ð8P�3ð P˜5ô Pò
aòHòô(+òV$öL ð* Yð *ÀÈÁð *ÐbjÐknÑboð *Ðtyô *ðX˜eð °(ð ¸uô ô<CW˜ô CWðJ ×Ò˜MÔ*ô}˜fô }ð~	 ‡N�NÒaÕbðe øðw	 ó Ø‚Nðús   ÁC= Ã=DÄD