zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
U
Z±dþ¾ã@s ddlZddlZddlZddlZddlZddlZddlZddlm    Z    ddl
m Z ddl m Z ddlZddlmZddlZddlmZddlmZmZdd    lmZdd
lmZmZdd lmZdd lmZdd lmZm Z m!Z!m"Z"ddl#m$Z$ddl%m&Z&ddl'm(Z(m)Z)m*Z*m+Z+m,Z,e -¡Z.e. /d¡Z0e 1ej2j3¡Z4e5edƒrRe4j6ej7M_6e0 8e4¡ej9dddgddd„ƒZ:ddœdd„Z;edd„ƒZ<edd „ƒZ=Gd!d"„d"ƒZ>d#d$„Z?e    d%d&„ƒZ@iid'œd(d)„ZAd*d+„ZBd,d-„ZCd.d/„ZDd0d1„ZEd2d3„ZFd4d5„ZGd6d7„ZHe&d8d9„ƒZId:d;„ZJd<d=„ZKejLjMejNd>ko<ejOd?kd@dAdBdC„ƒZPdDdE„ZQejL RdFddGg¡dHdI„ƒZSdJdK„ZTdLdM„ZUdNdO„ZVdPdQ„ZWdRdS„ZXdTdU„ZYdVdW„ZZdXdY„Z[dZd[„Z\d\d]„Z]d^d_„Z^d`da„Z_dbdc„Z`ddde„Zadfdg„ZbejL cdhdi¡djdk„ƒZddldm„Zedndo„Zfdpdq„Zgdrds„ZhdS)téN)Úcontextmanager)Úpartial)ÚSSL)Úasynccontextmanageré)Ú_core)Ú SocketStreamÚSocketListener)Úaclose_forcefully)ÚClosedResourceErrorÚBrokenResourceError)Úopen_tcp_stream)Úsocket)Ú    SSLStreamÚ SSLListenerÚNeedHandshakeErrorÚ_is_eof)ÚConflictDetector)Úslow)Úassert_checkpointsÚ    SequencerÚmemory_stream_pairÚlockstep_stream_pairÚcheck_two_way_streamútrio-test-1.example.orgÚOP_IGNORE_UNEXPECTED_EOFÚmoduleÚtls13Útls12)ZscopeÚparamscCs`t ¡}ttdƒr$|jtjM_t |¡|jdkr<|S|jdkrTtjj    |_
|Sds\t ‚dS)Nr)ÚdefaultrrF) ÚsslÚcreate_default_contextÚhasattrÚoptionsrÚ TRIO_TEST_CAZconfigure_trustÚparamÚ
TLSVersionÚTLSv1_2Úmaximum_versionÚAssertionError)ÚrequestÚctx©r-úJd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\trio/tests/test_ssl.pyÚ
client_ctxGs
 
 
 
 
r/F©Ú expect_failc
Cs>z,zºtj|ddd}|œ| ¡| d¡}|s¦ttjf}z | ¡WnH|k
r\Yn6tj    k
rt
j j dks‚t
j dkrŒt d¡YnXW5QR£WW¢ŽdS| |¡q$W5QRXWn^ttfk
rÜYW¢XdStk
r}z"|rtd|ƒn td    |ƒ‚W5d}~XYnX|r,td
ƒ‚W5| ¡XdS) NTF)Ú server_sideÚsuppress_ragged_eofsiÚcpython)ééz\still an issue on recent python versions add a comment to https://bugs.python.org/issue32219z*ssl_echo_serve_sync got error as expected:z)ssl_echo_serve_sync got unexpected error:zfailed to fail?)ÚcloseÚ
SERVER_CTXÚ wrap_socketÚ do_handshakeÚrecvÚBrokenPipeErrorr!ÚSSLZeroReturnErrorÚunwrapÚSSLWantWriteErrorÚsysÚimplementationÚnameÚ version_infoÚpytestZfailÚsendallÚConnectionResetErrorÚConnectionAbortedErrorÚ    ExceptionÚprintÚ RuntimeError)Úsockr1ÚwrappedÚdataÚ
exceptionsÚexcr-r-r.Ússl_echo_serve_syncYsFÿ
 
 
ÿþÿ
 
 
 rPc Ks|t ¡\}}t ¡4IdHšP}|@|0| tjjtt|f|Ž¡t    t
  |¡ƒVW5QRXW5QRXW5QIdHRXdS©N) Ú stdlib_socketÚ
socketpairÚtrioÚ open_nurseryÚ
start_soonZ    to_threadZrun_syncrrPrÚtsocketÚfrom_stdlib_socket)ÚkwargsÚaÚbÚnurseryr-r-r.Ússl_echo_server_raws   ÿr]c
Ks8tf|Ž4IdHš}t||ddVW5QIdHRXdS©Nr©Úserver_hostname)r]r)r/rYrKr-r-r.Ússl_echo_server®srac@sHeZdZddd„Zdd„Zdd„Zdd    „Zd
d „Zd d „Zddd„Z    dS)ÚPyOpenSSLEchoStreamNcCs°t tj¡}ddlm}|ƒ}t|jdƒr8| |jj¡ttdƒrFt    ‚t
  |¡t  |d¡|_ |j  ¡t ¡|_tƒ|_tdƒ|_tdƒ|_|dkr¦dd„}||_n||_dS)    Nr)ÚBindingÚSSL_OP_NO_TLSv1_3Z OP_NO_TLSv1_4z2simultaneous calls to PyOpenSSLEchoStream.send_allz6simultaneous calls to PyOpenSSLEchoStream.receive_somecÓsdSrQr-©Ú_r-r-r.Ú no_op_sleeperêsz3PyOpenSSLEchoStream.__init__.<locals>.no_op_sleeper)rÚContextZ SSLv23_METHODZ,cryptography.hazmat.bindings.openssl.bindingrcr#ÚlibZ set_optionsrdr*ÚTRIO_TEST_1_CERTÚconfigure_certÚ
ConnectionÚ_connZset_accept_staterZ
ParkingLotÚ_lotÚ    bytearrayÚ_pending_cleartextrÚ_send_all_conflict_detectorÚ_receive_some_conflict_detectorÚsleeper)Úselfrsr,rcr[rgr-r-r.Ú__init__¸s*   
 
 
ÿÿzPyOpenSSLEchoStream.__init__cÃs|j ¡dSrQ)rmZ bio_shutdown©rtr-r-r.ÚacloseñszPyOpenSSLEchoStream.aclosecCs
|j ¡SrQ)rmÚrenegotiate_pendingrvr-r-r.rxôsz'PyOpenSSLEchoStream.renegotiate_pendingcCs|j ¡st‚dSrQ)rmÚ renegotiater*rvr-r-r.ry÷szPyOpenSSLEchoStream.renegotiatec    ÃsB|j2t ¡IdHt ¡IdH| d¡IdHW5QRXdS)NÚwait_send_all_might_not_block)rqrÚ
checkpointrsrvr-r-r.rzüsz1PyOpenSSLEchoStream.wait_send_all_might_not_blockc    Ãsötdƒ|jÞt ¡IdHt ¡IdH| d¡IdH|j |¡| d¡IdHz|j d¡}WnLtj    k
rœ|j 
¡td|j  ¡ƒYqÆYqHtj k
r´YqÆYqHX|j |7_ qH|j ¡| d¡IdHtdƒW5QRXdS)Nz  --> transport_stream.send_allÚsend_allézrenegotiations:z(  <-- transport_stream.send_all finished)rIrqrr{rsrmZ    bio_writer;rZZeroReturnErrorÚshutdownZtotal_renegotiationsÚ WantReadErrorrprnZ
unpark_all)rtrMr-r-r.r|s& 
 
 
zPyOpenSSLEchoStream.send_allcÃs„tdƒ|dkrd}|j^z:t ¡IdHt ¡IdH| d¡IdHz |j |¡WW¢úW5QR£Stjk
rT|j    r8td|j    ƒz"|j    dd…}|j 
t |ƒ¡Wnptjk
r(z&|j |¡WYYW¢vW5QR£Stjk
r"tdƒ|j   ¡IdHYnXYnX|j    dd…=ntd    ƒ|j   ¡IdHYq>Xq>W5| d¡IdHtdƒXW5QRXdS)
Nz#  --> transport_stream.receive_someiÚ receive_somez,  <-- transport_stream.receive_some finishedz
    tryingrr}z parking (a)z parking (b))rIrrrsrr{rmZbio_readrrrpÚsendÚbytesrnZpark)rtÚnbytesZ    next_byter-r-r.r€s6
  &z PyOpenSSLEchoStream.receive_some)N)N)
Ú__name__Ú
__module__Ú __qualname__rurwrxryrzr|r€r-r-r-r.rb·s
9rbc Ãsºtƒ}t tj¡D}t ¡4IdHš"}| |jd¡| |jd¡W5QIdHRXW5QRXdt|j    ƒksnt
‚tƒ}t tj¡B}t ¡4IdHš }| |jd¡| |j ¡W5QIdHRXW5QRXdt|j    ƒksÚt
‚tƒ}t tj¡@}t ¡4IdHš}| |j ¡| |j ¡W5QIdHRXW5QRXdt|j    ƒksFt
‚tƒ}t tj¡D}t ¡4IdHš"}| |j d¡| |j d¡W5QIdHRXW5QRXdt|j    ƒks¶t
‚dS)NóxZ simultaneousr}) rbrDÚraisesrÚBusyResourceErrorrUrVr|ÚstrÚvaluer*rzr€)ÚsÚexcinfor\r-r-r.Ú3test_PyOpenSSLEchoStream_gives_resource_busy_errorsQs0(& &(rŽckstf|Ž}t||ddVdSr^)rbr)r/rYZfakesockr-r-r.Úvirtual_ssl_echo_serverus
r©Ú client_kwargsÚ server_kwargscCs4t||fddi|—Ž}t|tfddi|—Ž}||fS)Nr`rr2T)rr8)r/Úclient_transportÚserver_transportr‘r’Ú
client_sslÚ
server_sslr-r-r.Ú ssl_wrap_pair{s"þýüÿÿÿr—cKstƒ\}}t|||f|ŽSrQ)rr—©r/rYr“r”r-r-r.Ússl_memory_stream_pairs
r™cKstƒ\}}t|||f|ŽSrQ)rr—r˜r-r-r.Ússl_lockstep_stream_pair”s
ršc
Ãs^t|ƒ4IdHšF}|jrt‚| d¡IdH| d¡IdHdksDt‚| ¡IdHW5QIdHRXtdd4IdHš`}t ¡}t    ||dd}|jr–t‚t
  t ¡}| d¡IdHW5QRXt |jjtjƒsÐt‚W5QIdHRXtdd4IdHš\}t    ||dd}|jrt‚t
  t ¡}| d¡IdHW5QRXt |jjtjƒsJt‚W5QIdHRXdS)Nr‡r}Tr0rr_ztrio-test-2.example.org)rar2r*r|r€rwr]r!r"rrDrˆr Ú
isinstancer‹Ú    __cause__ÚSSLErrorÚCertificateError)r/rŒrKZbad_client_ctxrr-r-r.Útest_ssl_client_basicsœs$
 
 $  rŸc
ƒsæt ¡\‰}ˆÌ|¼t |¡}tt|ƒtdd}|js>t‚‡‡fdd„}t    j
|d}|  ¡|  d¡IdHdksxt‚|  d¡IdH|  d¡IdHd    ks t‚|  d¡IdHd
ks¸t‚| ¡IdH| ¡W5QRXW5QRXdS) NT©r2c    sLˆjˆdd4}| d¡| d¡dks,t‚| d¡| ¡W5QRXdS)Nrr_r‡r}óyóz)r9rEr;r*r>)Z client_sock©rZr/r-r.Úclient¿sÿ
 
z&test_ssl_server_basics.<locals>.client)Útargetr}r‡r¡r¢ó)rRrSrWrXrrr8r2r*Ú    threadingÚThreadÚstartr€r|rwÚjoin)r/r[Z server_sockr”r¤Útr-r£r.Útest_ssl_server_basics¶s$  
ÿ
     r¬c
Ãs>tdd4IdHš}|}t ¡}t||dd}|j|ks>t‚|j|ksLt‚|jdksZt‚|jdksht‚t     
t ¡ |j W5QRXdt |ƒks”t‚dt |ƒks¤t‚t     
t ¡ d|_W5QRXt     
t ¡ d|_W5QRX||_|j|ksðt‚t     
t¡}| ¡IdHW5QRXt|jjtjƒs*t‚W5QIdHRXdS)    NTr0rr_FÚtransport_streamÚcontextZasdf)r]r!r"rr­r*r®r2r`rDrˆÚAttributeErrorZ
asfdasdfsaÚdirr r:r›r‹rœr)r/rKZgood_ctxZbad_ctxrŒrr-r-r.Útest_attributesÔs*    r±c ƒsðd‰d‰ˆˆ‰tƒ‰tƒ‰‡‡‡fdd„}‡‡‡fdd„}t|ƒ4IdHšf}t ¡4IdHš6}| ||¡| ||¡| |j¡| |j¡W5QIdHRX| ¡IdHW5QIdHRXtˆƒtˆƒkrڈksànt‚ˆˆksìt‚dS)Néi€c“s@tˆƒD]2}t|ƒt|gˆƒ}ˆ|7‰| |¡IdHqdSrQ)ÚrangerIr‚r|)rŒÚiÚchunk)ÚCHUNKSÚ
CHUNK_SIZEÚsentr-r.Úsender!s
 z'test_full_duplex_basics.<locals>.senderc“s.tˆƒˆkr*| ˆd¡IdH}ˆ|7‰qdS)Nr)Úlenr€)rŒrµ)r·ÚEXPECTEDÚreceivedr-r.Úreceiver)s z)test_full_duplex_basics.<locals>.receiver)    rorarrUrVr:rwrºr*)r/r¹r½rŒr\r-)r¶r·r»r¼r¸r.Útest_full_duplex_basicss    "r¾c    ÃsŽt|ƒ|}| ¡IdH|j ¡| d¡IdH| d¡IdHdksJt‚| d¡IdH| d¡IdHdksrt‚| ¡IdHW5QRXdS)Nóar}ób)rr:r­ryr|r€r*rw©r/rŒr-r-r.Útest_renegotiation_simple>s
 
rÂc ƒs d|_ddl}| d¡‰‡fdd„}‡‡‡fdd„}‡fdd„‰‡fdd    „‰t||d
š‰ˆ ¡IdHˆd ƒIdHˆj ¡ˆd ƒIdH|ƒIdHtd ƒD]®}t|d gƒ}td|d gƒ}ˆj ¡t     
¡4IdHš}|  ˆ|¡|  ˆ|¡W5QIdHRXt     
¡4IdHš}|  ˆ|¡|  ˆ|¡W5QIdHRX|ƒIdHq¤td ƒD]’}t|d gƒ}td|d gƒ}ˆ|ƒIdHˆj ¡ˆ|ƒIdHt     
¡4IdHš}|  ˆ|¡|  ˆ|¡W5QIdHRX|ƒIdHq\W5QRXdd„}    ‡fdd„}
t||    d
p‰ˆdƒIdHˆj ¡t     
¡4IdHš}|  ˆd¡|  |
¡W5QIdHRX|ƒIdHˆ  ¡IdHW5QRXdd„} t|| d
r‰ˆdƒIdHˆj ¡t     
¡4IdHš}|  ˆd¡|  ˆj ¡W5QIdHRX|ƒIdHˆ  ¡IdHW5QRXdS)Nrc“st ˆ dd¡¡IdHdS)Nré
)rTÚsleepÚuniformre)Úrr-r.rsZsz.test_renegotiation_randomized.<locals>.sleeperc    “sXˆj ¡rLtƒˆdƒIdHW5QRXtƒˆdƒIdHW5QRXqtdƒdS)Nó-z -- clear --)r­rxrrIr-)ÚexpectrŒrr-r.Úclear]s 
z,test_renegotiation_randomized.<locals>.clearc    “sBˆj d¡IdHtd|ƒtƒˆ |¡IdHW5QRXdS)Nz
outer sendzcalling SSLStream.send_all)r­rsrIrr|)Úbyte©rŒr-r.res
z+test_renegotiation_randomized.<locals>.sendc    “sZˆj d¡IdHtd|ƒt|ƒdks,t‚tƒˆ d¡IdH|ksLt‚W5QRXdS)NrÈz)calling SSLStream.receive_some, expectingr})r­rsrIrºr*rr€)ÚexpectedrËr-r.rÈks
 
z-test_renegotiation_randomized.<locals>.expect)rsr¿édéÿrcÓs|dkrt d¡IdHdS)Nr|順©rTrÄ©Úmethodr-r-r.Úsleeper_with_slow_send_all™szAtest_renegotiation_randomized.<locals>.sleeper_with_slow_send_allc“s"t d¡IdHˆ ¡IdHdS)Néè)rTrÄrzr-rËr-r.Úsleep_then_wait_writableŸsz?test_renegotiation_randomized.<locals>.sleep_then_wait_writabler‡cÓs6|dkrt d¡IdHn|dkr2t d¡IdHdS)NrzrÏrÈrÔrÐrÑr-r-r.Ú*sleeper_with_slow_wait_writable_and_expect±szQtest_renegotiation_randomized.<locals>.sleeper_with_slow_wait_writable_and_expect)Zautojump_thresholdÚrandomÚRandomrr:r­ryr³r‚rrUrVrwrz) Z
mock_clockr/r×rsrÉr´Zb1Zb2r\rÓrÕrÖr-)rÈrÆrŒrr.Útest_renegotiation_randomizedPsr
 
 
 
      
  ÿ
  rÙc ƒs܇fdd„}‡fdd„}‡fdd„}t|ƒ\‰}t tj¡<}t ¡4IdHš}| |¡| |¡W5QIdHRXW5QRXdt|jƒkst    ‚t|ƒ\‰}t tj¡<}t ¡4IdHš}| |¡| |¡W5QIdHRXW5QRXdt|jƒksüt    ‚t|ƒ\‰}t tj¡<}t ¡4IdHš}| |¡| |¡W5QIdHRXW5QRXdt|jƒksjt    ‚t|ƒ\‰}t tj¡<}t ¡4IdHš}| |¡| |¡W5QIdHRXW5QRXdt|jƒksØt    ‚dS)Nc    “s&tƒˆ d¡IdHW5QRXdS)Nr‡)rr|r-rËr-r.Ú do_send_allÆsz.test_resource_busy_errors.<locals>.do_send_allc    “s&tƒˆ d¡IdHW5QRXdS©Nr})rr€r-rËr-r.Údo_receive_someÊsz2test_resource_busy_errors.<locals>.do_receive_somec    “s$tƒˆ ¡IdHW5QRXdSrQ)rrzr-rËr-r.Ú do_wait_send_all_might_not_blockÎszCtest_resource_busy_errors.<locals>.do_wait_send_all_might_not_blockz another task)
ršrDrˆrr‰rUrVrŠr‹r*)r/rÚrÜrÝrfrr\r-rËr.Útest_resource_busy_errorsÅs6    
$ 
$ 
$ 
$rÞcƒsNg‰G‡fdd„dƒ}t ¡}t|ƒ|dd}| ¡IdHˆdgksJt‚dS)NcseZdZ‡fdd„ZdS)zEtest_wait_writable_calls_underlying_wait_writable.<locals>.NotAStreamc“sˆ d¡dS)NÚok)Úappendrv©Úrecordr-r.rzószctest_wait_writable_calls_underlying_wait_writable.<locals>.NotAStream.wait_send_all_might_not_blockN)r„r…r†rzr-rár-r.Ú
NotAStreamòsrãÚxr_rß)r!r"rrzr*)rãr,rŒr-rár.Ú1test_wait_writable_calls_underlying_wait_writableïs råÚnt)r5rÃz)frequently fails on Windows + Python 3.10)Úreasonc
Ãs€t|ƒ4IdHš}tƒ| ¡IdHW5QRXtƒ| ¡IdHW5QRXtƒ| ¡IdHW5QRXtƒ| d¡IdHW5QRXtƒ| d¡IdHW5QRXtƒ| d¡IdHW5QRXtƒ| d¡IdHW5QRXtƒ| ¡IdHW5QRXW5QIdHRXt|ƒ4IdHš4}| ¡IdHtƒ| ¡IdHW5QRXW5QIdHRXdS)Nsxxxr})rarr:rzr|r€r>rwrÁr-r-r.Útest_checkpointsüs*(rèc
Ãs®t|ƒ4IdHšŽ}| ¡IdHtƒ| d¡IdHW5QRXtƒ| d¡IdHW5QRX| d¡IdH| d¡IdHdksŒt‚| ¡IdHW5QIdHRXdS)Nr¦r‡r})rar:rr|r€r*rwrÁr-r-r.Útest_send_all_empty_stringsréÚhttps_compatibleTcƒs.‡‡fdd„}‡fdd„}t||ƒIdHdS)Nc“stˆdˆidˆidS)Nrêr)r™r-©r/rêr-r.Ú stream_maker/s
ýz,test_SSLStream_generic.<locals>.stream_makerc
“sNtˆƒ\}}t ¡4IdHš}| |j¡| |j¡W5QIdHRX||fSrQ)ršrrUrVr:)r¤Úserverr\©r/r-r.Úclogged_stream_maker6s
  z4test_SSLStream_generic.<locals>.clogged_stream_maker)r)r/rêrìrïr-rër.Útest_SSLStream_generic-s rðc
ƒsxt|ƒ\‰‰ˆj‰ˆj‰tƒ‰‡‡‡fdd„}‡‡‡fdd„}t ¡4IdHš}| |¡| |¡W5QIdHRXdS)Nc
“sˆ ¡IdHˆ d¡IdHˆ d¡IdHdks6t‚ˆ d¡IdHˆdƒ4IdHšˆjj}dˆj_W5QIdHRXˆ d¡IdHdkst‚ˆjˆksžt‚ˆ ¡IdH\}}|ˆks¼t‚|dksÈt‚ˆjdksÖt‚| d¡IdH|ˆj_ˆj ¡IdHdS)Nr‡r}r¡r¢rr¦ótrailing)r:r|r€r*Ú send_streamÚ send_all_hookr­r>)róÚrawÚtrailing)r•r“Úseqr-r.r¤Ms   ztest_unwrap.<locals>.clientc
“s¬ˆ ¡IdHˆ d¡IdHdks&t‚ˆ d¡IdHˆ d¡IdHdksNt‚ˆdƒ4IdHšˆ ¡IdH\}}W5QIdHRX|ˆksŽt‚|dksšt‚ˆjdks¨t‚dS)Nr}r‡r¡r¢rñ)r:r€r*r|r>r­)rôrõ)rör–r”r-r.ríhs"  ztest_unwrap.<locals>.server)r™r­rrrUrV©r/r¤rír\r-)r•r“rör–r”r.Ú test_unwrapFs 
røc
ƒs²t|ƒ\‰‰ˆj}‡fdd„}‡fdd„}t ¡4IdHš}| |¡| |¡W5QIdHRXt t¡| d¡IdHW5QRXt    ƒˆ 
¡IdHW5QRXt    ƒˆ 
¡IdHW5QRXt t¡ˆ d¡IdHW5QRXt t¡ˆ  d¡IdHdkW5QRXt t¡ˆ  ¡IdHW5QRXt t¡ˆ  ¡IdHW5QRXt|ƒ\‰‰‡fdd    „}t ¡4IdHš}| ˆj
¡| |¡W5QIdHRXdS)
Nc    “s$tƒˆ ¡IdHW5QRXdSrQ)rrwr-)r•r-r.Ú client_closer„sz-test_closing_nice_case.<locals>.client_closerc    “sTˆ d¡IdHdkst‚ˆ d¡IdHdks0t‚tƒˆ ¡IdHW5QRXdS©NrÃr¦)r€r*rrwr-©r–r-r.Ú server_closerˆsz-test_closing_nice_case.<locals>.server_closers123rÃr¦c    “sNtƒˆ d¡IdHdks t‚W5QRXtƒˆ ¡IdHW5QRXdSrú)rr€r*rwr-rûr-r.Úexpect_eof_server¯s"z1test_closing_nice_case.<locals>.expect_eof_server)r™r­rrUrVrDrˆr r|rrwr€r>r:)r/r“rùrür\rýr-)r•r–r.Útest_closing_nice_case|s4   
        rþc
ƒsät|ƒ\}}t ¡4IdHš}| |j¡| |j¡W5QIdHRXdd„}||jj_t     t
¡|  d¡IdHW5QRXt     t ¡|  ¡IdHW5QRXd‰‡fdd„}||jj_||jj_| ¡IdHˆdksàt‚dS)NcÓst‚dSrQ©ÚKeyErrorr-r-r-r.Úbad_hookÁsz3test_send_all_fails_in_the_middle.<locals>.bad_hookr‡rcs ˆd7‰dSrÛr-r-©Úclosedr-r.Ú
close_hookÎsz5test_send_all_fails_in_the_middle.<locals>.close_hookr)r™rrUrVr:r­ròrórDrˆrr|r rzrÚreceive_streamrwr*)r/r¤rír\rrr-rr.Ú!test_send_all_fails_in_the_middleºs   
 
 
rc
ƒs”tƒ\}}t||dd}t|tdd}t||dd‰t|tdd‰‡fdd„}‡fdd„}t ¡4IdHš}| |¡| |¡W5QIdHRXdS)    Nrr_Tr c“s,ˆ d¡IdHˆ d¡IdHdks(t‚dS)NóhirÃóbye)r|r€r*r-)Úclient_2r-r.r¤æsz!test_ssl_over_ssl.<locals>.clientc“s,ˆ d¡IdHdkst‚ˆ d¡IdHdS)NrÃrr)r€r*r|r-)Úserver_2r-r.ríêsz!test_ssl_over_ssl.<locals>.server)rrr8rrUrV)r/Zclient_0Zserver_0Zclient_1Zserver_1r¤rír\r-)r    r
r.Útest_ssl_over_sslÙs$
ÿÿ  
r c
Ãs´t|ƒ\}}t ¡4IdHš}| |j¡| |j¡W5QIdHRXt |¡IdHt t    ¡| 
d¡IdHW5QRXt t    ¡|  d¡IdHW5QRX|  ¡IdHdS)NrÃó
xxxxxxxxxx) r™rrUrVr:rTr
rDrˆr r€r|rwr÷r-r-r.Útest_ssl_bad_shutdownós    r c
Ãs´t|ddiddid\}}t ¡4IdHš}| |j¡| |j¡W5QIdHRXt |¡IdH| d¡IdHdks|t‚t     
t ¡|  d¡IdHW5QRX|  ¡IdHdS)NrêT©r’r‘rÃr¦r )r™rrUrVr:rTr
r€r*rDrˆr r|rwr÷r-r-r.Ú test_ssl_bad_shutdown_but_its_oksý
  rc
Ãsbtdd4IdHš@}t ¡}t||dd}t t¡| ¡IdHW5QRXW5QIdHRXdS)NTr0rr_)r]r!r"rrDrˆr rw)rKr/rŒr-r-r.Ú(test_ssl_handshake_failure_during_acloses
 rc
ƒs t|ƒ\}}t ¡4IdHš}| |j¡| |j¡W5QIdHRX|jjj‰d‰‡‡fdd„}||jj_t     t
¡|  ¡IdHW5QRXˆdksœt ‚dS)Nrcsˆƒˆd7‰t‚dSrÛrÿr-©Zclient_orig_close_hookZtransport_close_countr-r.r7sz4test_ssl_only_closes_stream_once.<locals>.close_hookr}) r™rrUrVr:r­ròrrDrˆrrwr*)r/r¤rír\rr-rr.Ú test_ssl_only_closes_stream_once+s  
 
 rc
ƒsœt|ddiddid\}‰t ¡4IdHš}| |j¡| ˆj¡W5QIdHRX‡fdd„}t ¡4IdHš}| |j¡| |¡W5QIdHRXdS)NrêFTrc    “s:t t¡}ˆ d¡IdHW5QRXt|jjƒs6t‚dS)NrÃ)rDrˆr r€rr‹rœr*)r©rír-r.Úreceive_and_expect_errorQs zKtest_ssl_https_compatibility_disagreement.<locals>.receive_and_expect_error)r™rrUrVr:rw)r/r¤r\rr-rr.Ú)test_ssl_https_compatibility_disagreementDsý
   rc
ƒsbt|ddiddid\}‰‡fdd„}t ¡4IdHš}| |j¡| |¡W5QIdHRXdS)NrêTrc“sˆ d¡IdHdkst‚dSrú)r€r*r-rr-r.Úserver_expect_clean_eofcszEtest_https_mode_eof_before_handshake.<locals>.server_expect_clean_eof)r™rrUrVrw)r/r¤rr\r-rr.Ú$test_https_mode_eof_before_handshake\sý
  rc
ÃsŽt|ƒ\}}dd„}||jj_t t¡&tƒ| ¡IdHW5QRXW5QRXt t    ¡&tƒ| ¡IdHW5QRXW5QRXdS)NcÓst‚dSrQrÿr-r-r-r.rnsz2test_send_error_during_handshake.<locals>.bad_hook)
r™r­ròrórDrˆrrr:r )r/r¤rírr-r-r.Ú test_send_error_during_handshakeks 
 " rc
ƒs t|ƒ\‰}dd„}|ˆjj_‡fdd„}t ¡4IdHš }| ||j¡| |j¡W5QIdHRXt     
t ¡&t ƒˆ ¡IdHW5QRXW5QRXdS)NcÓst‚dSrQrÿr-r-r-r.rsz5test_receive_error_during_handshake.<locals>.bad_hookc
“sBt t¡&tƒˆ ¡IdHW5QRXW5QRX| ¡dSrQ)rDrˆrrr:Úcancel)Ú cancel_scope©r¤r-r.Ú client_side„s "z8test_receive_error_during_handshake.<locals>.client_side) r™r­rZreceive_some_hookrrUrVrr:rDrˆr r)r/rírrr\r-rr.Ú#test_receive_error_during_handshake|s 
  rc    ÃsLt|ƒ\}}t t¡| ¡W5QRXt t¡| ¡W5QRXdSrQ)r™rDrˆrÚselected_alpn_protocol©r/r¤rír-r-r.Ú,test_selected_alpn_protocol_before_handshake“s
   r c
Ãs~t|ƒ\}}t ¡4IdHš}| |j¡| |j¡W5QIdHRX| ¡dksVt‚| ¡dksft‚| ¡| ¡kszt‚dSrQ)r™rrUrVr:rr*r÷r-r-r.Ú(test_selected_alpn_protocol_when_not_sets  r!c    ÃsLt|ƒ\}}t t¡| ¡W5QRXt t¡| ¡W5QRXdSrQ)r™rDrˆrÚselected_npn_protocolrr-r-r.Ú+test_selected_npn_protocol_before_handshake¬s
   r#zCignore: ssl module. NPN is deprecated, use ALPN instead:UserWarningzAignore:ssl NPN is deprecated, use ALPN instead:DeprecationWarningc
Ãs~t|ƒ\}}t ¡4IdHš}| |j¡| |j¡W5QIdHRX| ¡dksVt‚| ¡dksft‚| ¡| ¡kszt‚dSrQ)r™rrUrVr:r"r*r÷r-r-r.Ú'test_selected_npn_protocol_when_not_set¶s  r$c    ÃsLt|ƒ\}}t t¡| ¡W5QRXt t¡| ¡W5QRXdSrQ)r™rDrˆrÚget_channel_bindingrr-r-r.Ú)test_get_channel_binding_before_handshakeÉs
   r&c
Ãs~t|ƒ\}}t ¡4IdHš}| |j¡| |j¡W5QIdHRX| ¡dk    sVt‚| ¡dk    sft‚| ¡| ¡kszt‚dSrQ)r™rrUrVr:r%r*r÷r-r-r.Ú(test_get_channel_binding_after_handshakeÓs  r'c
Ãszt|ƒ\}}t ¡4IdHš}| |j¡| |j¡W5QIdHRX| ¡dksVt‚t| ¡ƒd| ¡dksvt‚dS)N)ÚDNSrÚsubjectAltName)r™rrUrVr:Ú getpeercertr*rIr÷r-r-r.Útest_getpeercertàs   r+c ƒs&‡fdd„}|ƒIdH\}}}|4IdHš”| ¡IdH}|4IdHšJ|jrRt‚t ¡4IdHš}| |j¡| |j¡W5QIdHRXW5QIdHRX| ¡IdH| ¡dksºt‚W5QIdHRX|ddIdH\}}}| ¡IdH}|jsøt‚t    |ƒIdHt    |ƒIdHt    |ƒIdHdS)Nc›sbt ¡}| d¡IdH| d¡t|ƒ}t|tf|Ž}t| ¡ŽIdH}t    |ˆdd}|||fS)N)z    127.0.0.1rr}rr_)
rWrÚbindÚlistenr    rr8r Ú getsocknamer)rYÚ listen_sockZsocket_listenerÚ ssl_listenerZtransport_clientÚ
ssl_clientrîr-r.Úsetupîs
ÿztest_SSLListener.<locals>.setupéÿÿÿÿT)rê)
ÚacceptZ_https_compatibler*rrUrVr:rwÚfilenor
)r/r2r/r0r1Z
ssl_serverr\rfr-rîr.Útest_SSLListenerís" 
 , 
r6)iÚosÚrer@rDr§rrRr!Ú
contextlibrÚ    functoolsrZOpenSSLrZtrustmeÚasync_generatorrrTÚrZ_highlevel_socketrr    Z_highlevel_genericr
r r Z_highlevel_open_tcp_streamr rWÚ_sslrrrrZ_utilrZ_core.tests.tutilrZtestingrrrrrÚCAr%Zissue_server_certrjr"ÚPurposeÚ CLIENT_AUTHr8r#r$rrkZfixturer/rPr]rarbrŽrr—r™ršrŸr¬r±r¾rÂrÙrÞråÚmarkZskipifrBrCrèréZ parametrizerðrørþrr r rrrrrrrr r!r#Úfilterwarningsr$r&r'r+r6r-r-r-r.Ú<module>s¬          
 
    
D
 
$
 
ú E%
t* þ
 
6>
 
þ