ó
    ð›‘h’>  ã                   ó@  • S SK r S SKrS SKJrJrJrJr  S SKJrJ	r	  S SK
r
S SKrS SKJr  S SKJr  S SKJr  SSKJrJrJrJrJrJrJrJr  SS	KJr  S
\S\S\S\S\S\S\S\ 4S jr!S\S
\S\S\S\S\S\S\S\4S jr"S
\S\S\S\S\S\S\S\S\4S jr# " S S\5      r$g)é    N)ÚDictÚAnyÚOptionalÚList)Úa2b_hexÚb2a_hex)Úencode_typed_data)Ú_URI_PAT_REALM_NAME_ETH)ÚEthereumKeyé   )ÚsignÚrecoverÚis_chain_idÚ
is_addressÚis_cs_pubkeyÚis_block_numberÚis_signatureÚis_eth_privkey)ÚEIP712CertificateÚchainIdÚverifyingContractÚ	validFromÚdelegateÚcsPubKeyÚbootedAtÚmetaÚreturnc                 ó˜  • [        U 5      (       d   e[        U5      (       d   e[        U5      (       d   e[        U5      (       d   e[        U5      (       d   e[	        U5      [
        :X  d   eUb  [	        U5      [        :X  d   eSSS.SSS./SSS.SSS.S	SS.S
SS.SSS.SSS.SSS./S.SSSS.U UUUUUU=(       d    SS.S.nU$ )zº
Delegate certificate: dynamic/one-time, off-chain.

:param chainId:
:param verifyingContract:
:param validFrom:
:param delegate:
:param csPubKey:
:param bootedAt:
:param meta:
:return:
ÚnameÚstring)r   ÚtypeÚversionr   Úuint256r   Úaddressr   r   r   Úbytes32r   Úuint64r   )ÚEIP712DomainÚEIP712DelegateCertificater(   ÚWMPÚ1)r   r"   Ú ©r   r   r   r   r   r   r   )ÚtypesÚprimaryTypeÚdomainÚmessage)r   r   r   r   r!   ÚintÚstr)r   r   r   r   r   r   r   Údatas           ÚmC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\autobahn/xbr/_eip712_delegate_certificate.pyÚ"create_eip712_delegate_certificater5   -   sG  € ô& �w×ÑÐÐÜÐ'×(Ñ(Ð(Ð(Ü˜9×%Ñ%Ð%Ð%Ü�h×ÑÐÐÜ˜×!Ñ!Ð!Ð!Ü�‹>œSÓ Ð Ð Ø‰<œ4 ›:¬Ó,Ð,Ð,ð #Ø$ñð
 &Ø$ñð	ð &Ø%ñð
 0Ø%ñð
 (Ø%ñð
 'Ø%ñð
 'Ø%ñð
 'Ø$ñð
 #Ø$ñð3*ñ)
ðT 3àØñ
ð
 Ø!2Ø"Ø Ø Ø Ø—J˜Bñ
ña9€Dðv €Kó    Úeth_privkeyc           	      óX   • [        U 5      (       d   e[        XX4XVU5      n[        X5      $ )a1  
Sign the given data using a EIP712 based signature with the provided private key.

:param eth_privkey: Signing key.
:param chainId:
:param verifyingContract:
:param validFrom:
:param delegate:
:param csPubKey:
:param bootedAt:
:param meta:
:return: The signature according to EIP712 (32+32+1 raw bytes).
)r   r5   r   )	r7   r   r   r   r   r   r   r   r3   s	            r4   Ú sign_eip712_delegate_certificater9   †   s4   € ô* ˜+×&Ñ&Ð&Ð&ä-¨gÈ)Ø.6À$óH€Dä�Ó"Ð"r6   Ú	signaturec           	      óX   • [        U5      (       d   e[        XX#XEU5      n[        X‡5      $ )a  
Recover the signer address the given EIP712 signature was signed with.

:param chainId:
:param verifyingContract:
:param validFrom:
:param delegate:
:param csPubKey:
:param bootedAt:
:param signature:
:param meta:
:return: The (computed) signer address the signature was signed with.
)r   r5   r   )	r   r   r   r   r   r   r   r:   r3   s	            r4   Ú#recover_eip712_delegate_certificater<   ¢   s4   € ô* ˜	×"Ñ"Ð"Ð"ä-¨gÈ)Ø.6À$óH€Dä�4Ó#Ð#r6   c                   ó  ^ • \ rS rSrSr SS\S\S\S\S\S\S	\S
\\	\      4U 4S jjjr
S\S\4S jrS\S\4S jrS\4S jrSS\S\S\4S jjrS\S\4S jrSS\S\\\4   4S jjr\SS j5       rS\S\4S jr\SS j5       rSrU =r$ )r(   é¾   )	r   r   r   r   r   r   r   Ú
signaturesÚhashr   r   r   r   r   r   r   r?   c	           	      ó¤   >• [         T
U ]  XU5        X@l        XPl        X`l        Xpl        X€l        [        UUUUUUU5      n	[        U	5      U l	        g ©N)
ÚsuperÚ__init__r   r   r   r   r?   r5   r	   r@   )Úselfr   r   r   r   r   r   r   r?   Úeip712Ú	__class__s             €r4   rD   Ú"EIP712DelegateCertificate.__init__Î   sW   ø€ ä‰Ñ˜°YÔ?Ø ŒØ ŒØ ŒØŒ	Ø$ŒÜ3°GØ4EØ4=Ø4<Ø4<Ø4<Ø48ó:ˆô & fÓ-ˆ�	r6   Úotherr   c                 óV  • [        XR                  5      (       d  g[        R                  X5      (       d  gUR                  U R                  :w  a  gUR
                  U R
                  :w  a  gUR                  U R                  :w  a  gUR                  U R                  :w  a  gUR                  U R                  :w  a  gUR                  U R                  :w  a  gUR                  U R                  :w  a  gUR                  U R                  :w  a  gUR                  U R                  :w  a  gg)NFT)Ú
isinstancerG   r(   Ú__eq__r   r   r   r   r   r   r   r?   r@   ©rE   rI   s     r4   rL   Ú EIP712DelegateCertificate.__eq__ß   sÜ   € Ü˜%§¡×0Ñ0ØÜ(×/Ñ/°×<Ñ<ØØ�=‰=˜DŸL™LÓ(ØØ×"Ñ" d×&<Ñ&<Ó<ØØ�?‰?˜dŸn™nÓ,ØØ�>‰>˜TŸ]™]Ó*ØØ�>‰>˜TŸ]™]Ó*ØØ�>‰>˜TŸ]™]Ó*ØØ�:‰:˜Ÿ™Ó"ØØ×Ñ˜tŸ™Ó.ØØ�:‰:˜Ÿ™Ó"ØØr6   c                 ó.   • U R                  U5      (       + $ rB   )rL   rM   s     r4   Ú__ne__Ú EIP712DelegateCertificate.__ne__ø   s   € Ø—;‘;˜uÓ%Ô%Ð%r6   c                 óJ   • [         R                  " U R                  5       5      $ rB   )ÚpprintÚpformatÚmarshal)rE   s    r4   Ú__str__Ú!EIP712DelegateCertificate.__str__û   s   € Ü�~Š~˜dŸl™l›nÓ-Ð-r6   ÚkeyÚbinaryc           	      óÎ   • [        U R                  U R                  U R                  U R                  U R
                  U R                  U R                  5      nUR                  X2S9$ )N©rY   )	r5   r   r   r   r   r   r   r   Úsign_typed_data)rE   rX   rY   rF   s       r4   r   ÚEIP712DelegateCertificate.signþ   sT   € Ü3°D·L±LØ48×4JÑ4JØ48·N±NØ48·M±MØ48·M±MØ48·M±MØ48·I±Ió?ˆð ×"Ñ" 6Ð"Ð9Ð9r6   r:   c           
      ó²   • [        U R                  U R                  U R                  U R                  U R
                  U R                  U R                  U5      $ rB   )r<   r   r   r   r   r   r   r   )rE   r:   s     r4   r   Ú!EIP712DelegateCertificate.recover  sD   € Ü2°4·<±<Ø37×3IÑ3IØ37·>±>Ø37·=±=Ø37·=±=Ø37·=±=Ø37·9±9Ø3<ó>ð 	>r6   c           
      ó  • [        U R                  U R                  U R                  U R                  U R
                  U R                  U R                  S9nU(       d¨  US   S   (       a%  [        R                  R                  US   S   5      OS US   S'   US   S   (       a%  [        R                  R                  US   S   5      OS US   S'   US   S   (       a  [        US   S   5      R                  5       OS US   S'   U$ )Nr,   r0   r   r   r   )r5   r   r   r   r   r   r   r   Úweb3ÚWeb3ÚtoChecksumAddressr   Údecode)rE   rY   Úobjs      r4   rU   Ú!EIP712DelegateCertificate.marshal  s	  € Ü0¸¿¹ØCG×CYÑCYØ;?¿>¹>Ø:>¿-¹-Ø:>¿-¹-Ø:>¿-¹-Ø6:·i±iñAˆö Øvyð  {Dñ  wEð  FY÷  wZ´$·)±)×2MÑ2MÈcÐR[ÉnÐ]pÑNqÔ2rð  `dˆC�	‰NÐ.Ñ/ØdgÐhqÑdrÐs}×d~¬¯©×)DÑ)DÀSÈÁ^ÐT^ÑE_Ô)`ð  EIˆC�	‰N˜:Ñ&ØY\Ð]fÑYgÐhr×Ys¬°°Y±À
Ñ1KÓ)L×)SÑ)SÔ)UÐy}ˆC�	‰N˜:Ñ&Øˆ
r6   c           
      ój  • [        U 5      [        :w  a#  [        SR                  [        U 5      5      5      eU R	                  SS 5      nUS:w  a  [        SR                  U5      5      eU R	                  SS 5      n[        U5      [        :w  a#  [        SR                  [        U5      5      5      eU H#  nUS;  d  M  [        SR                  U5      5      e   UR	                  S	S 5      nU(       a   US:w  a  [        S
R                  U5      5      eUR	                  SS 5      nUc  [        S5      e[        U5      [
        :w  a#  [        SR                  [        U5      5      5      eUR	                  SS 5      nUc  [        S5      e[        U5      [        :w  a#  [        SR                  [        U5      5      5      e[        R                  " U5      (       d  [        SR                  U5      5      e[        USS  5      nUR	                  SS 5      nUc  [        S5      e[        U5      [
        :w  a#  [        SR                  [        U5      5      5      eUR	                  SS 5      nUc  [        S5      e[        U5      [        :w  a#  [        SR                  [        U5      5      5      e[        R                  " U5      (       d  [        SR                  U5      5      e[        USS  5      nUR	                  SS 5      n	U	c  [        S5      e[        U	5      [        :w  a#  [        SR                  [        U	5      5      5      e[        U	5      S:w  a  [        SR                  U	5      5      e[        U	5      n	UR	                  SS 5      n
U
c  [        S5      e[        U
5      [
        :w  a#  [        S R                  [        U
5      5      5      eUR	                  S!S 5      nUc  [        S"5      e[        U5      [        :w  a#  [        S#R                  [        U5      5      5      e[        XVUX‰X«S$9n U $ )%Nz=invalid type {} for object in EIP712DelegateCertificate.parser.   r(   z?invalid primaryType "{}" - expected "EIP712DelegateCertificate"r0   z-invalid type {} for EIP712DelegateCertificate)r!   r   r   r   r   r   r   r   z3invalid attribute "{}" in EIP712DelegateCertificater!   z1unexpected type "{}" in EIP712DelegateCertificater   z,missing chainId in EIP712DelegateCertificatez8invalid type {} for chainId in EIP712DelegateCertificater   z6missing verifyingContract in EIP712DelegateCertificatezBinvalid type {} for verifyingContract in EIP712DelegateCertificatezEinvalid value "{}" for verifyingContract in EIP712DelegateCertificateé   r   z.missing validFrom in EIP712DelegateCertificatez:invalid type {} for validFrom in EIP712DelegateCertificater   z-missing delegate in EIP712DelegateCertificatez9invalid type {} for delegate in EIP712DelegateCertificater   z-missing csPubKey in EIP712DelegateCertificatez9invalid type {} for csPubKey in EIP712DelegateCertificateé@   z<invalid value "{}" for csPubKey in EIP712DelegateCertificater   z-missing bootedAt in EIP712DelegateCertificatez9invalid type {} for bootedAt in EIP712DelegateCertificater   z)missing meta in EIP712DelegateCertificatez5invalid type {} for meta in EIP712DelegateCertificater,   )r!   ÚdictÚ
ValueErrorÚformatÚgetr1   r2   r
   Úmatchr   Úlenr(   )re   r.   r3   ÚkÚ_typer   r   r   r   r   r   r   s               r4   ÚparseÚEIP712DelegateCertificate.parse   sÚ  € ä�‹9œÓÜÐ\×cÑcÔdhÐilÓdmÓnÓoÐoà—g‘g˜m¨TÓ2ˆØÐ5Ó5ÜÐ^×eÑeÐfqÓrÓsÐsð �w‰w�y $Ó'ˆÜ�‹:œÓÜÐL×SÑSÔTXÐY]ÓT^Ó_Ó`Ð`ÛˆAØÐyÕyÜ Ð!V×!]Ñ!]Ð^_Ó!`ÓaÐañ ð —‘˜ Ó&ˆÞ�UÐ9Ó9ÜÐP×WÑWÐX]Ó^Ó_Ð_à—(‘(˜9 dÓ+ˆØ‰?ÜÐKÓLÐLÜ�‹=œCÓÜÐW×^Ñ^Ô_cÐdkÓ_lÓmÓnÐnà ŸH™HÐ%8¸$Ó?ÐØÑ$ÜÐUÓVÐVÜÐ!Ó"¤cÓ)ÜØT×[Ñ[Ô\`ÐarÓ\sÓtóvð vä&×,Ò,Ð->×?Ñ?ÜØW×^Ñ^Ð_pÓqósð sä#Ð$5°a°bÐ$9Ó:Ðà—H‘H˜[¨$Ó/ˆ	ØÑÜÐMÓNÐNÜ�	‹?œcÓ!ÜÐY×`Ñ`ÔaeÐfoÓapÓqÓrÐrà—8‘8˜J¨Ó-ˆØÑÜÐLÓMÐMÜ�‹>œSÓ ÜÐX×_Ñ_Ô`dÐemÓ`nÓoÓpÐpÜ&×,Ò,¨X×6Ñ6ÜÐd×kÑkÐltÓuÓvÐvÜ˜8 A B˜<Ó(ˆà—8‘8˜J¨Ó-ˆØÑÜÐLÓMÐMÜ�‹>œSÓ ÜÐX×_Ñ_Ô`dÐemÓ`nÓoÓpÐpÜˆx‹=˜BÓÜÐ[×bÑbÐckÓlÓmÐmÜ˜8Ó$ˆà—8‘8˜J¨Ó-ˆØÑÜÐLÓMÐMÜ�‹>œSÓ ÜÐX×_Ñ_Ô`dÐemÓ`nÓoÓpÐpà�x‰x˜ Ó%ˆØ‰<ÜÐHÓIÐIÜ�‹:œÓÜÐT×[Ñ[Ô\`ÐaeÓ\fÓgÓhÐhä'°ÐhqØ19ÐW_ñlˆàˆ
r6   Úfilenamec                 ó  • U R                   U R                  SS9U R                  =(       d    / /n[        US5       n[        R
                  " U5      nUR                  U5        SSS5        [        W5      $ ! , (       d  f       N= f)z«
Save certificate to file. File format (serialized as CBOR):

    [cert_hash: bytes, cert_eip712: Dict[str, Any], cert_signatures: List[bytes]]

:param filename:
:return:
Tr[   ÚwbN)r@   rU   r?   ÚopenÚcbor2ÚdumpsÚwritero   )rE   rt   Úcert_objÚfr3   s        r4   ÚsaveÚEIP712DelegateCertificate.saveo  sg   € ð —I‘I˜tŸ|™|°4˜|Ð8¸$¿/¹/×:OÈRÐPˆÜ�(˜DÔ! QÜ—;’;˜xÓ(ˆDØ�G‰G�DŒM÷ "ô �4‹yÐ÷ "Õ!ús   ¼(A7Á7
Bc                 ót  • [         R                  R                  U 5      (       d  [        SR	                  U 5      5      e[        U S5       n[        R                  " UR                  5       5      u  p#n[        R                  USS9nX%R                  :X  d   eXEl        UsS S S 5        $ ! , (       d  f       g = f)NzFcannot create EIP712DelegateCertificate from filename "{}": not a fileÚrbTr[   )ÚosÚpathÚisfileÚRuntimeErrorrl   rw   rx   ÚloadsÚreadr(   rr   r@   r?   )rt   r|   Ú	cert_hashÚcert_eip712Úcert_signaturesÚcerts         r4   ÚloadÚEIP712DelegateCertificate.load~  s‹   € ä�w‰w�~‰~˜h×'Ñ'ÜÐg×nÑnÐowÓxÓyÐyÜ�(˜DÔ! QÜ6;·k²kÀ!Ç&Á&Ã(Ó6KÑ3ˆI OÜ,×2Ñ2°;ÀtÐ2ÐLˆDØ§	¡	Ó)Ð)Ð)Ø-ŒOØ÷ "×!×!ús   ÁAB)Â)
B7)r   r   r   r@   r   r?   rB   )F)r   r(   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú	__slots__r1   Úbytesr2   r   r   rD   r   ÚboolrL   rP   rV   r   r   r   r   rU   Ústaticmethodrr   r}   r‹   Ú__static_attributes__Ú__classcell__)rG   s   @r4   r(   r(   ¾   s  ø† ð€Ið  PTñ. ð .¸ð .È#ð .ÐY^ð .Ðjoð .Øð.Ø&)ð.Ø7?ÀÀUÁÑ7L÷.ð .ð"˜Cð  Dô ð2&˜Cð & Dô &ð.˜ô .ñ:˜ð :¨Tð :¸eõ :ð> ð >¨5ô >ñ˜dð ¨t°C¸°H©~õ ð óLó ðLð\˜Sð  Sô ð óó ör6   r(   )%r�   rS   Útypingr   r   r   r   Úbinasciir   r   ra   rx   Úpy_eth_sig_utils.eip712r	   Úautobahn.wamp.messager
   Úautobahn.xbr._secmodr   Ú_eip712_baser   r   r   r   r   r   r   r   Ú_eip712_certificater   r1   r’   r2   rj   r5   r9   r<   r(   © r6   r4   Ú<module>rŸ      sO  ðó6 
Û ß ,Ó ,ß %ã Û å 5å 9Ý ,÷2÷ 2ó 2å 2ðV°ð VØ:?ðVà25ðVð 27ðVð 27ð	Vð
 25ðVð .1ðVð 6:ôVðr#°%ð #Ø.1ð#à8=ð#ð 14ð#ð 05ð	#ð
 05ð#ð 03ð#ð ,/ð#ð 49ô#ð8$°ð $Ø;@ð$à36ð$ð 38ð$ð 38ð	$ð
 36ð$ð /2ð$ð 49ð$ð >Cô$ô8IÐ 1õ Ir6   