ó
    ð›‘hŠ  ã                   óº   • S SK r S SKJr  S SKJr  S SKrS SKJr  S SKJr  Sr	SS\
S\\   S	\4S
 jjrS\R                  R                  S	\4S jrS rS\
S	\4S jrg)é    N)ÚPopen)ÚOptional)Úsleep)ÚTransportDetails)r   Úpeer2strÚtransport_channel_idÚcreate_transport_detailsÚ	is_serverÚchannel_id_typeÚreturnc                 óv  • Uc  gUS;  a  [        SR                  U5      5      eU R                  S5      nUc  [        S5      e[        US5      (       d  [        S5      eUR	                  SS	9n[        U5      [        :w  a  g[        R                  " 5       nUR                  U5        UR                  5       nU$ )
a^  
Application-layer user authentication protocols are vulnerable to generic
credential forwarding attacks, where an authentication credential sent by
a client C to a server M may then be used by M to impersonate C at another
server S. To prevent such credential forwarding attacks, modern authentication
protocols rely on channel bindings. For example, WAMP-cryptosign can use
the tls-unique channel identifier provided by the TLS layer to strongly bind
authentication credentials to the underlying channel, so that a credential
received on one TLS channel cannot be forwarded on another.

:param transport: The asyncio TLS transport to extract the TLS channel ID from.
:param is_server: Flag indicating the transport is for a server.
:param channel_id_type: TLS channel ID type, currently only "tls-unique" is supported.
:returns: The TLS channel id (32 bytes).
s                                    )ú
tls-uniquezinvalid channel ID type {}Ú
ssl_objectzUTLS transport channel_id for tls-unique requested, but ssl_obj not found on transportÚget_channel_bindingz_TLS transport channel_id for tls-unique requested, but get_channel_binding not found on ssl_objr   )Úcb_type)Ú	ExceptionÚformatÚget_extra_infoÚhasattrr   ÚtypeÚbytesÚhashlibÚsha256ÚupdateÚdigest)Ú	transportr
   r   Ússl_objÚtls_finished_msgÚmÚ
channel_ids          ÚYC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\autobahn/asyncio/util.pyr   r   +   sº   € ð  ÑØð ˜nÓ,ÜÐ4×;Ñ;¸OÓLÓMÐMà×&Ñ& |Ó4€GØ�ÜÐoÓpÐpä�7Ð1×2Ñ2ÜÐyÓzÐzð &×9Ñ9À,Ð9ÐOÐäÐÓ¤Ó&Øä�NŠNÓˆØ	�‰Ð!Ô"Ø—X‘X“Zˆ
ØÐó    r   c                 óà  •  U R                  S5      n[        U[        5      (       a,  [        U5      S:X  a  SOSnSR	                  US   US   U5      $ [        U[
        5      (       a  SR	                  U5      $ S	R	                  U5      $ !    O= f U R                  S
5      nSR	                  UR                  5      $ !    O= f U R                  S5      nSR	                  U5      $ !    g= f)NÚpeernameé   é   é   ztcp{2}:{0}:{1}r   é   zunix:{0}z?:{0}Ú
subprocessz
process:{}Úpipezpipe:{}Úunknown)r   Ú
isinstanceÚtupleÚlenr   ÚstrÚpid)r   ÚpeerÚip_verÚprocr*   s        r!   r   r   V   sò   € ð
Ø×'Ñ'¨
Ó3ˆÜ�dœE×"Ñ"Ü˜d›) q›.‘Q¨aˆFØ#×*Ñ*¨4°©7°D¸±G¸VÓDÐDÜ˜œc×"Ñ"Ø×$Ñ$ TÓ*Ð*à—>‘> $Ó'Ð'øðÙúðØ×.Ñ.¨|Ó<ˆà×"Ñ" 4§8¡8Ó,Ð,øðÙúðØ×'Ñ'¨Ó/ˆØ×Ñ Ó%Ð%øðØð ús0   ‚AB Á%B Á:B ÂBÂ+B? Â?CÃ!C) Ã)C-c            	      ód   ^• SSK Jm  / SQn [        [        S [	        U4S jU 5      5      5      n U $ )Nr   )Ú
serializer)ÚCBORSerializerÚMsgPackSerializerÚUBJSONSerializerÚJsonSerializerc                 ó   • U $ ©N© )Úxs    r!   Ú<lambda>Ú!get_serializers.<locals>.<lambda>z   s   € ©r"   c                 óB   >• [        TU 5      (       a  [        TU 5      $ S $ r;   )r   Úgetattr)Úsr5   s    €r!   r>   r?   z   s(   ø€ ÔSZÐ[eÐgh×SiÑSi¼ÀÈQÓ9Oð :9Ø48ð:9r"   )Úautobahn.wampr5   ÚlistÚfilterÚmap)Úserializersr5   s    @r!   Úget_serializersrH   v   s6   ø€ Ý(â_€KÜ”v™k¬3ô 09Ø:Eó,Gó Hó I€KàÐr"   c           
      óð   • [        U 5      nU R                  SS 5      S LnU(       a!  S[        XS5      0n[        R                  nS nO0 n[        R
                  nS n[        R                  n[        XWX!UXFS9$ )NÚpeercertr   )Úchannel_typeÚchannel_framingr1   r
   Ú	is_securer    Ú	peer_cert)r   r   r   r   ÚCHANNEL_TYPE_TLSÚCHANNEL_TYPE_TCPÚCHANNEL_FRAMING_WEBSOCKET)r   r
   r1   rM   r    rK   rN   rL   s           r!   r	   r	      s‡   € ä�IÓ€Dð ×(Ñ(¨°TÓ:À$ÐF€IÞàÔ.¨yÀ\ÓRð
ˆ
ô (×8Ñ8ˆØ‰	àˆ
Ü'×8Ñ8ˆØˆ	Ü&×@Ñ@€Oä¨Ø!%ÀiØ'1ñHð Hr"   r;   )r   r)   r   Útypingr   Úasyncior   Úautobahn.wamp.typesr   Ú__allÚboolr/   r   r   Ú
transportsÚBaseTransportr   rH   r	   r<   r"   r!   Ú<module>rY      s|   ðó6 Ý Ý Û Ý å 0ð	€ñ(¨tð (ÀhÈsÁmð (Ð_dõ (ðV˜×*Ñ*×8Ñ8ð ¸Sô ò@ðH°4ð HÐ<Lõ Hr"   