hyb
2025-12-31 6cdcd01f77e11b72c323603e27ebdb85b15223c9
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
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
Ë
Wñúh ^ãó—dZddlZddlmZmZddlmZmZddlm    Z    m
Z
m Z m Z m Z mZddlmZddlmZddlmZmZdd    lmZdd
lmZdd lmZmZe    rd d lm Z     ddl!Z!ddl#m$Z$dZ%Gd„de$«Z&y#e"$r
ed«d‚wxYw)z LDAP SASL Authentication Plugin.éN)Ú    b64decodeÚ    b64encode)Úsha1Úsha256)Ú TYPE_CHECKINGÚAnyÚCallableÚListÚOptionalÚTuple)Úuuid4)Ú
ERR_STATUS)ÚInterfaceErrorÚProgrammingError)Úlogger)Ú
StrOrBytes)Únormalize_unicode_stringÚ"validate_normalized_unicode_stringé)Ú MySQLSocketzwModule gssapi is required for GSSAPI authentication mechanism but was not found. Unable to authenticate with the serveré)ÚMySQLAuthPluginÚMySQLLdapSaslPasswordAuthPlugincóx—eZdZUdZgd¢Zeeed<eZ    e
ed<dZ e eed<dZ eed<dZe eed<dZe eed    <d
Zeed <dZe eed <dZe ej,ed <dZej0ed<dZe eed<dZe eed<edededefd„«Zdededefd„Zdedededefd„Zededefd„«Z defd„Z!de efd„Z"de ede#e ee$ffd„Z%d edefd!„Z&d"ed#ede efd$„Z'defd%„Z(deddfd&„Z)d'edefd(„Z*d)e+de$fd*„Z,d+e+de$fd,„Z-e.defd-„«Z/e.de$fd.„«Z0d/d0d"ed#edefd1„Z1y)2ra5Class implementing the MySQL ldap sasl authentication plugin.
 
    The MySQL's ldap sasl authentication plugin support two authentication
    methods SCRAM-SHA-1 and GSSAPI (using Kerberos). This implementation only
    support SCRAM-SHA-1 and SCRAM-SHA-256.
 
    SCRAM-SHA-1 amd SCRAM-SHA-256
        This method requires 2 messages from client and 2 responses from
        server.
 
        The first message from client will be generated by prepare_password(),
        after receive the response from the server, it is required that this
        response is passed back to auth_continue() which will return the
        second message from the client. After send this second message to the
        server, the second server respond needs to be passed to auth_finalize()
        to finish the authentication process.
    )z SCRAM-SHA-1z SCRAM-SHA-256ÚGSSAPIÚsasl_mechanismsÚdef_digest_modeNÚ client_nonceÚ client_saltÚ server_saltÚkrb_service_principalrÚ
iterationsÚserver_auth_varÚ target_nameÚctxÚ servers_firstÚ server_nonceÚbytes1Úbytes2Úreturncód—tt||«Dcgc]
\}}||z ‘Œ c}}«Scc}}w©N)ÚbytesÚzip)r(r)Úb1Úb2s    únH:\Change_password\venv_build\Lib\site-packages\mysql/connector/aio/plugins/authentication_ldap_sasl_client.pyÚ_xorz$MySQLLdapSaslPasswordAuthPlugin._xoras*€ä¬C°¸Ó,?×@¡& " bb˜2“gÓ@ÓAÐAùÓ@s•,
ÚpasswordÚsaltcód—tj|||j«}|j«Sr,)ÚhmacÚnewrÚdigest)Úselfr3r4Ú digest_makers    r1Ú_hmacz%MySQLLdapSaslPasswordAuthPlugin._hmaces)€Ü—x‘x ¨$°×0DÑ0DÓEˆ Ø×"Ñ"Ó$Ð$óÚcountcó—|j«}|j||dz«}|}t|dz
«D]&}|j||«}|j||«}Œ(|S)zPrepares Hi
        Hi(password, salt, iterations) where Hi(p,s,i) is defined as
        PBKDF2 (HMAC, p, s, i, output length of H).
        sr)Úencoder;Úranger2)r9r3r4r=ÚpwÚhiÚauxÚ_s        r1Ú_hiz#MySQLLdapSaslPasswordAuthPlugin._hiisj€ð
_‰_Ó ˆØ Z‰Z˜˜DÐ#6Ñ6Ó 7ˆØˆÜu˜q‘yÓ!ò    $ˆAØ—*‘*˜R Ó%ˆCØ—‘˜2˜sÓ#‰Bð    $ðˆ    r<ÚstringcóR—t|«}t|«}|td|›«‚|S)Nz broken_rule: )Ú    norm_ustrÚ
valid_normr)rFÚnorm_strÚ broken_rules   r1Ú
_normalizez*MySQLLdapSaslPasswordAuthPlugin._normalizevs3€ä˜VÓ$ˆÜ  Ó*ˆ Ø Ð "Ü  =°° Ð!>Ó?Ð ?؈r<có—d}tt««jdd«|_|j    |j |j «|j¬«}t|t«r|jd«}|S)aqThis method generates the first message to the server to start the
 
        The client-first message consists of a gs2-header,
        the desired username, and a randomly generated client nonce cnonce.
 
        The first message from the server has the form:
            b'n,a=<user_name>,n=<user_name>,r=<client_nonce>
 
        Returns client's first message
        z.n,a={user_name},n={user_name},r={client_nonce}ú-Ú)Ú    user_namerÚutf8)    Ústrr ÚreplacerÚformatrLÚ    _usernameÚ
isinstancer?)r9Ú
cfm_fprnatÚcfms   r1Ú_first_messagez.MySQLLdapSaslPasswordAuthPlugin._first_message~sr€ðFˆ
ܤ£›L×0Ñ0°°bÓ9ˆÔØ$×+Ñ+Ø—o‘o d§n¡nÓ5Ø×*Ñ*ð,ó
ˆô
cœ3Ô Ø—*‘*˜VÓ$ˆC؈
r<cóV—tjjj|jj d«tj j¬«}    tj«}tjd«    |j    tj,j.tj,j0tj,j2f}|j4r |j4}nd }tjd|«tj6|tj j8¬«}||_tj<||t?|«d    ¬«|_     |j@jC«}    tjd|    «|    S#tjjj$r;}tjd|«|j|«t!d|›«|‚d}~wwxYw#tjj"j$$r»}|j&st!d|›«|‚    tjd«tjj)||j&j d«d    ¬
«}|d }n>#tjj"j$$r}t+d |›«|‚d}~wwxYwYd}~ŒPd}~wwxYw#tjj"j$$r}t!d|›«|‚d}~wwxYw)z–Get a TGT Authentication request and initiates security context.
 
        This method will contact the Kerberos KDC in order of obtain a TGT.
        rQ)Ú    name_typezE# Stored credentials found, if password was given it will be ignored.z Credentials has expired: %szCredentials has expired: Nz-Unable to retrieve stored credentials error: z5# Attempt to retrieve credentials with given passwordÚinitiate)Úusagerz8Unable to retrieve credentials with the given password: z ldap/ldapauthz# service principal: %s)ÚnameÚcredsÚflagsr]z%Unable to initiate security context: z# initial client token: %s)"ÚgssapiÚrawÚnamesÚ import_namerUr?ÚNameTypeÚuserÚ CredentialsrÚdebugÚlifetimeÚ
exceptionsÚExpiredCredentialsErrorÚwarningÚacquirerÚmiscÚGSSErrorÚ    _passwordÚacquire_cred_with_passwordrÚRequirementFlagÚmutual_authenticationÚextended_errorÚdelegate_to_peerr!ÚNameÚkerberos_principalr$ÚSecurityContextÚsumr%Ústep)
r9rPÚcredÚerrÚacquire_cred_resultÚerr2Úflags_lÚservice_principalÚservkÚinitial_client_tokens
          r1Ú_first_message_krbz2MySQLLdapSaslPasswordAuthPlugin._first_message_krb”s¤€ô
—J‘J×$Ñ$×0Ñ0Ø N‰N× !Ñ ! &Ó )´V·_±_×5IÑ5Ið1ó
ˆ    ð    Ü×*Ñ*Ó,ˆDÜ L‰LØWô ð Qà— “ ô0 × "Ñ "× 8Ñ 8Ü × "Ñ "× 1Ñ 1Ü × "Ñ "× 3Ñ 3ð
ˆð × %Ò %Ø $× :Ñ :Ñ à /Р܏ ‰ Ð.Ð0AÔBÜ— ‘ Ø ¬¯©×)KÑ)Kô
ˆð!ˆÔÜ×)Ñ)ؘd¬#¨g«,¸jô
ˆŒð    Yð
$(§8¡8§=¡=£?Ð  ô     ‰ Ð1Ð3GÔHØ#Ð#øôg—:‘:×(Ñ(×@Ñ@ò QÜ—‘Ð=¸sÔCØ— ‘ ˜YÔ'Ü$Ð'@ÀÀÐ%FÓGÈSÐPûð Qûôz‰z‰×'Ñ'ò    Ø—>’>Ü$ØCÀCÀ5ÐIóàðð Ü— ‘ ÐTÔUÜ&,§j¡j×&KÑ&KØØ—N‘N×)Ñ)¨&Ó1Ø$ð'Ló'Ð#ð
+¨1Ñ-‘øÜ—:‘:—?‘?×+Ñ+ò Ü&ØNÈtÈfÐUóàðûð úõûð    ûôVz‰z‰×'Ñ'ò    YÜ Ð#HÈÈÐ!NÓOÐUXÐ Xûð    YússÁ)H F#Å1K-Æ#'HÇ
6HÈHÈHÈ'K*È/K%É AJ!Ê K%Ê!'KËKËKËK%Ë%K*Ë-'L(ÌL#Ì#L(Útgt_auth_challengecó—tjd|«|jj|«}tjd|«tjd|jj«||jjfS)a Continue with the Kerberos TGT service request.
 
        With the TGT authentication service given response generate a TGT
        service request. This method must be invoked sequentially (in a loop)
        until the security context is completed and an empty response needs to
        be send to acknowledge the server.
 
        Args:
            tgt_auth_challenge the challenge for the negotiation.
 
        Returns: tuple (bytearray TGS service request,
                        bool True if context is completed otherwise False).
        ztgt_auth challenge: %sz# context step response: %sz# context completed?: %s)rrhr%rzÚcomplete)r9r„Úresps   r1Úauth_continue_krbz1MySQLLdapSaslPasswordAuthPlugin.auth_continue_krbÝsd€ô      ‰ Ð-Ð/AÔBàx‰x}‰}Ð/Ó0ˆÜ ‰ Ð2°DÔ9܏ ‰ Ð/°·±×1BÑ1BÔCàT—X‘X×&Ñ&Ð&Ð&r<Úmessagecó°—|jjs td«‚tjd|«tjd|jj
«    |jj |«}tjd|«tjd|«td«}tjd    |«|jj|d
¬ «}tjd |d t|d ««|jS#tjjj$r}td|›«|‚d}~wwxYw)aPAccept handshake and generate closing handshake message for server.
 
        This method verifies the server authenticity from the given message
        and included signature and generates the closing handshake for the
        server.
 
        When this method is invoked the security context is already established
        and the client and server can send GSSAPI formated secure messages.
 
        To finish the authentication handshake the server sends a message
        with the security layer availability and the maximum buffer size.
 
        Since the connector only uses the GSSAPI authentication mechanism to
        authenticate the user with the server, the server will verify clients
        message signature and terminate the GSSAPI authentication and send two
        messages; an authentication acceptance b'' and a
        OK packet (that must be received after sent the returned message from
        this method).
 
        Args:
            message a wrapped hssapi message from the server.
 
        Returns: bytearray closing handshake message to be send to the server.
        z"Security context is not completed.z# servers message: %sz# GSSAPI flags in use: %sz# unwraped: %sz!Unable to unwrap server message: Nz# unwrapped server message: %ssz# message response: %sF)Úencryptz*# wrapped message response: %s, length: %dr)r%r†rrrhÚ actual_flagsÚunwraprarbrjÚ BadMICErrorrÚ    bytearrayÚwrapÚlenr‰)r9r‰Úunwrapedr|ÚresponseÚwrapeds      r1Úauth_accept_close_handshakez;MySQLLdapSaslPasswordAuthPlugin.auth_accept_close_handshakeõs€ð2x‰x× Ò Ü"Ð#GÓHÐ H܏ ‰ Ð,¨gÔ6܏ ‰ Ð0°$·(±(×2GÑ2GÔHð    UØ—x‘x—‘ wÓ/ˆHÜ L‰LÐ)¨8Ô 4ô     ‰ Ð5°xÔ@ô
Ð/Ó0ˆä ‰ Ð-¨xÔ8Ø—‘—‘˜x°Ó7ˆÜ ‰ Ø 8Ø 1‰IÜ q‘    ‹Nô    
ð ~‰~Ðøô%z‰z×$Ñ$×0Ñ0ò    UÜ Ð#DÀSÀEÐ!JÓKÐQTÐ Tûð    UúsÁ#1DÄ'EÅEÅEÚ    auth_dataÚkwargsc     óœ—||_|jj«}tjd|«||jvr@dj |jdd«}t d|›d|›d|jd›d«‚d    |jvr|j«S|jd
k(r t|_    |j«S) z„This method will prepare the fist message to the server.
 
        Returns bytes to send to the server as the first message.
        z read_method_name_from_server: %sz", "Néÿÿÿÿz The sasl authentication method "z4" requested from the server is not supported. Only "z" and "z" are supportedóGSSAPIs SCRAM-SHA-256) Ú
_auth_dataÚdecoderrhrÚjoinrrƒrrrY)r9r–r—Úauth_mechanismÚauth_mechanismss     r1Ú auth_responsez-MySQLLdapSaslPasswordAuthPlugin.auth_response)sրð$ˆŒàŸ™×/Ñ/Ó1ˆÜ ‰ Ð7¸ÔHØ  ×!5Ñ!5Ñ 5Ø$Ÿk™k¨$×*>Ñ*>¸sÀÐ*CÓDˆOÜ Ø2°>Ð2BðC;Ø;JÐ:KðLØ×,Ñ,¨RÑ0Ð1°ðBóð 𠘟™Ñ 'Ø×*Ñ*Ó,Ð ,à ?‰?Ð.Ò .Ü#)ˆDÔ  à×"Ñ"Ó$Ð$r<có—|js td«‚|j|j«}|j    |t |j «|j«}tjdt|«j««|j|d«}tjdt|«j««|j|«j«}tjdt|«j««|j|d«}tjdt|«j««djd    |j|j «›d
|j"›g«}tjd |«td |j|j «›dj%««j«}dj||j&d |›d
|j(›g«}tjd|«|j||j%««}    tjdt|    «j««|j+||    «}
tjdt|
«j««t|j||j%«««j«|_tjd|j,«djd |›d
|j(›dt|
«j«›g«} tjd| «| j%«S)a¥This method generates the second message to the server
 
        Second message consist on the concatenation of the client and the
        server nonce, and cproof.
 
        c=<n,a=<user_name>>,r=<server_nonce>,p=<client_proof>
        where:
            <client_proof>: xor(<client_key>, <client_signature>)
 
            <client_key>: hmac(salted_password, b"Client Key")
            <client_signature>: hmac(<stored_key>, <auth_msg>)
            <stored_key>: h(<client_key>)
            <auth_msg>: <client_first_no_header>,<servers_first>,
                        c=<client_header>,r=<server_nonce>
            <client_first_no_header>: n=<username>r=<client_nonce>
        z"Missing authentication data (seed)zsalted_password: %ss
Client Keyzclient_key: %szstored_key: %ss
Server Keyzserver_key: %sú,zn=úr=zclient_first_no_header: %szn,a=zc=z auth_msg: %szclient_signature: %szclient_proof: %szserver_auth_var: %szp=zsecond_message: %s)r›rrLrprErr r"rrhrrœr;rr8rrUrr?r&r'r2r#) r9ÚpasswÚsalted_passwordÚ
client_keyÚ
stored_keyÚ
server_keyÚclient_first_no_headerÚ client_headerÚauth_msgÚclient_signatureÚ client_proofÚmsgs             r1Ú_second_messagez/MySQLLdapSaslPasswordAuthPlugin._second_messageGsÔ€ð"ŠÜ Ð!EÓFÐ Fà—‘ §¡Ó/ˆØŸ(™( 5¬)°D×4DÑ4DÓ*EÀtÇÁÓWˆÜ ‰ Ð*¬I°oÓ,F×,MÑ,MÓ,OÔPà—Z‘Z °Ó?ˆ
܏ ‰ Ð%¤y°Ó'<×'CÑ'CÓ'EÔFà×)Ñ)¨*Ó5×<Ñ<Ó>ˆ
܏ ‰ Ð%¤y°Ó'<×'CÑ'CÓ'EÔFà—Z‘Z °Ó?ˆ
܏ ‰ Ð%¤y°Ó'<×'CÑ'CÓ'EÔFà!$§¡àT—_‘_ T§^¡^Ó4Ð5Ð6ؐT×&Ñ&Ð'Ð(ð ó"
Ðô      ‰ Ð1Ð3IÔJä!ؐ4—?‘? 4§>¡>Ó2Ð3°1Ð 5× <Ñ <Ó >ó
ç
‰&‹(ð    ð—8‘8à&Ø×"Ñ"ؐ]OÐ$ؐT×&Ñ&Ð'Ð(ð     ó
ˆô     ‰ ^ XÔ.àŸ:™: j°(·/±/Ó2CÓDÐ܏ ‰ Ð+¬YÐ7GÓ-H×-OÑ-OÓ-QÔRà—y‘y Ð-=Ó>ˆ ܏ ‰ Ð'¬°<Ó)@×)GÑ)GÓ)IÔJä(Ø J‰Jz 8§?¡?Ó#4Ó 5ó 
ç
‰&‹(ð     Ôô     ‰ Ð*¨D×,@Ñ,@ÔAàh‰hà]OÐ$ؐT×&Ñ&Ð'Ð(Ø”Y˜|Ó,×3Ñ3Ó5Ð6Ð7ð ó
ˆô     ‰ Ð)¨3Ô/؏z‰z‹|Ðr<có—|rt|ttf«stdt    |«›«‚    |j «}||_|jd«\}}}|jd«r"|jd«r|jd«std|›«‚|j|vr+|dd|_ tjd    |j«ntd
|›«‚|dd|_tjd |jt|j««    |dd}tjd |«t!|«|_y#t$rtd›«d‚wxYw#t$$r}td |›«|‚d}~wwxYw)zâValidates first message from the server.
 
        Extracts the server's salt and iterations from the servers 1st response.
        First message from the server is in the form:
            <server_salt>,i=<iterations>
        zUnexpected server message: r¢Nr£zs=zi=z$Incomplete reponse from the server: rzserver_nonce: %sz:Unable to authenticate response: response not well formed zserver_salt: %s length: %sziterations: %sz-Unable to authenticate: iterations not found )rVrr-rÚreprrœr&ÚsplitÚ
ValueErrorÚ
startswithrr'rrhr r‘Úintr"Ú    Exception)r9r&Úservers_first_strÚr_server_nonceÚs_saltÚ    i_counterr|s       r1Ú_validate_first_reponsez7MySQLLdapSaslPasswordAuthPlugin._validate_first_reponse“s¯€ñ¤J¨}¼yÌ%Ð>PÔ$QÜ Ð#>¼tÀMÓ?RÐ>SÐ!TÓUÐ Uð    Ø -× 4Ñ 4Ó 6Ð Ø!2ˆDÔ Ø0A×0GÑ0GÈÓ0LÑ -ˆN˜F Ið ×)Ñ)¨$Ô/Ø×$Ñ$ TÔ*Ø×'Ñ'¨Ô-ä Ø6Ð7HÐ6IÐJóð ð × Ñ  Ñ .Ø .¨q¨rР2ˆDÔ Ü L‰LÐ+¨T×->Ñ->Õ ?ä ØLØ$Ð%ð'óð ð" ! "˜:ˆÔ܏ ‰ Ø (Ø × Ñ Ü × Ñ Ó !ô    
ð
    Ø! ! "˜ ˆIÜ L‰LÐ)¨9Ô 5Ü! )›nˆDOøô;ò    Ü Ø-Ð.?Ð-@ÐAóàð ð    ûô<ò    Ü Ø?Ð@QÐ?RÐSóàð ûð    ús#±,EÄ$+E,ÅE)Å,    F    Å5FÆF    Úservers_first_responsecóD—|j|«|j«S)zwreturn the second message from the client.
 
        Returns bytes to send to the server as the second message.
        )r»r¯)r9r¼s  r1Ú auth_continuez-MySQLLdapSaslPasswordAuthPlugin.auth_continueÃs"€ð
     ×$Ñ$Ð%;Ô<Ø×#Ñ#Ó%Ð%r<Úservers_secondcóê—|r/t|t«rt|«dks|jd«s t    d«‚|ddj «}t jd|«|j|k(S)aXValidates second message from the server.
 
        The client and the server prove to each other they have the same Auth
        variable.
 
        The second message from the server consist of the server's proof:
            server_proof = HMAC(<server_key>, <auth_msg>)
            where:
                <server_key>: hmac(<salted_password>, b"Server Key")
                <auth_msg>: <client_first_no_header>,<servers_first>,
                            c=<client_header>,r=<server_nonce>
 
        Our server_proof must be equal to the Auth variable send on this second
        response.
        rsv=z'The server's proof is not well formatedNzserver auth variable: %s)    rVrr‘r´rrœrrhr#)r9r¿Ú
server_vars   r1Ú_validate_second_reponsez8MySQLLdapSaslPasswordAuthPlugin._validate_second_reponseËsm€ñ"ܘn¬iÔ8ܐ>Ó" aÒ'Ø!×,Ñ,¨UÔ3ä Ð!JÓKÐ KØ# A BÐ'×.Ñ.Ó0ˆ
܏ ‰ Ð/°Ô<Ø×#Ñ# zÑ1Ð1r<Úservers_second_responsecó<—|j|«s td«‚y)zºfinalize the authentication process.
 
        Raises InterfaceError if the ervers_second_response is invalid.
 
        Returns True in successful authentication False otherwise.
        z6Authentication failed: Unable to proof server identityT)rÂr)r9rÃs  r1Ú auth_finalizez-MySQLLdapSaslPasswordAuthPlugin.auth_finalizeæs(€ð×,Ñ,Ð-DÔEÜ ØHóð ðr<có—y)zPlugin official name.Úauthentication_ldap_sasl_client©©r9s r1r^z$MySQLLdapSaslPasswordAuthPlugin.nameós€ð1r<có—y)z'Signals whether or not SSL is required.FrÈrÉs r1Ú requires_sslz,MySQLLdapSaslPasswordAuthPlugin.requires_ssløs€ðr<Úsockrc‹óTK—tjd|«|jd«|_|j|fi|¤Ž}|€ t d«‚tjd|t |««|j|«ƒd{–—†|j«ƒd{–—†}tjd|«t |«dk\r¡|dd    k(r™|dd
k(r‘|dd}|j|«}|j|«ƒd{–—†|j«ƒd{–—†}|dd k(r^|dd
k(rU|j|dd«r@|j«ƒd{–—†}t|«S|d k(r|d tk7r
d}tjd«tjd|d|dz«tjdt |««tjd«d}    d}
|    sÁ|
dkr¼tjdd|
dzd«tjd|«tjd|d|dz«|j||d«\} }    tjd| «|j| xsd«ƒd{–—†|j«ƒd{–—†}|
dz }
|    s|
dkrŒ¼|    st d|
›d|›«‚tjd|t |««|j||d«} tjd| t | ««|j| «ƒd{–—†|j«ƒd{–—†}tjd|«|j«ƒd{–—†}tjd |«t|«S7Œ
7Œõ7Œ•7Œ€7ŒD7Œ 7Œ 7Œ€7Œj7Œ>­w)!aSHandles server's `auth switch request` response.
 
        Args:
            sock: Pointer to the socket connection.
            auth_data: Plugin provided data (extracted from a packet
                       representing an `auth switch request` response).
            kwargs: Custom configuration to be passed to the auth plugin
                    when invoked. The parameters defined here will override the ones
                    defined in the auth plugin itself.
 
        Returns:
            packet: Last server's response after back-and-forth
                    communication.
        z# auth_data: %sr!NzGot a NULL auth responsez# request: %s size: %sz# server response packet: %séééré=évršéz*# Continue with sasl GSSAPI authenticationz# response header: %srz# response size: %sz# Negotiate a service requestFrz%s Attempt %s %sz--------------------z<< server response: %sz# response code: %sz >> response to server: %sr<z'Unable to fulfill server request after z! attempts. Last server response: z0 last GSSAPI response from server: %s length: %dz* >> last response to server: %s length: %dz"<< final handshake from server: %sz<< ok packet from server: %s)rrhÚgetr!r rr‘ÚwriteÚreadr¾rÅrrˆr•r-) r9rÌr–r—r“ÚpacketÚ dec_responseÚ    cresponseÚ
rcode_sizer†ÚtriesrzÚ    last_steps              r1Úauth_switch_responsez4MySQLLdapSaslPasswordAuthPlugin.auth_switch_responseýsUèø€ô"     ‰ Ð&¨    Ô2Ø%+§Z¡ZÐ0GÓ%HˆÔ"à%4×%Ñ% iÑ:°6Ñ:ˆØ Ð Ü Ð!;Ó<Ð <ä ‰ Ð-¨x¼¸X»ÔG؏j‰j˜Ó"×"Ð"à—y‘y“{×"ˆÜ ‰ Ð3°VÔ<ä ˆv‹;˜!Ò   q¡    ¨SÒ 0°V¸A±YÀ"²_à! ! "˜:ˆLØ×*Ñ*¨<Ó8ˆIØ—*‘*˜YÓ'× 'Ð 'ØŸ9™9›;×&ˆFؐa‰y˜CÓ F¨1¡I°£OØ×%Ñ% f¨Q¨R jÕ1à#'§9¡9£;×.FôXV‹}ÐðW˜)Ó #¨¨q©    ´ZÓ(?؈JÜ L‰LÐEÔ FÜ L‰LÐ0°&Ð9I¸:ȹ>Ð2JÔ KÜ L‰LÐ.´°F³ Ô <ä L‰LÐ8Ô 9؈H؈EÙ 5¨1¢9Ü— ‘ Ð/°¸5À1¹9ÀhÔOÜ— ‘ Ð5°vÔ>Ü— ‘ Ð2°FÐ;K¸ZÈ!¹^Ð4LÔMØ!%×!7Ñ!7¸¸z¸{Ð8KÓ!L‘hÜ— ‘ Ð9¸4Ô@Ø—j‘j ¢¨Ó-×-Ð-Ø#Ÿy™y›{×*Ø˜‘
ñ 5¨1£9ñÜ$Ø=¸e¸WðE7Ø7=°hð@óðô L‰LØBØÜF“ ô ð
×8Ñ8¸À
À Ð9LÓMˆIÜ L‰LØ<ØÜI“ô ð
—*‘*˜YÓ'× 'Ð 'àŸ9™9›;×&ˆFÜ L‰LÐ=¸vÔ Fð Ÿ9™9›;×&ˆFÜ L‰LÐ7¸Ô @äV‹}Ððu    #ùà"ùð (ùØ&ùð/ùð .ùØ*ùð$ (øà&øð'ús½‚BN(ÂN ÂN(ÂNÂA"N(Ã>NÃ?N(ÄNÄ>N(ÅNÅD&N(É<NÉ=N(ÊNÊN(Ê&A;N(Ì!N"Ì"N(Ì9N$Ì:-N(Í'N&Í(&N(ÎN(ÎN(ÎN(ÎN(ÎN(ÎN(Î"N(Î$N(Î&N()2Ú__name__Ú
__module__Ú __qualname__Ú__doc__rr
rRÚ__annotations__rrr    rr rrr r!r"rµr#r$rarvr%rxr&r'Ú staticmethodr-r2r;rErLrYrƒr Úboolrˆr•r r¯r»r¾rrÂrÅÚpropertyr^rËrÝrÈr<r1rrAsr…ñò$"L€OT˜#‘YÓKØ $€OXÓ$Ø"&€L(˜3‘-Ó&Ø€KÓØ!%€K˜#‘Ó%Ø+/И8 C™=Ó/Ø€JÓØ%)€OX˜c‘]Ó)Ø)-€K˜&Ÿ+™+Ñ&Ó-Ø"&€Cˆ×    Ñ    Ó&Ø#'€M8˜C‘=Ó'Ø"&€L(˜3‘-Ó&àðBUðB EðB¨eòBóðBð%˜eð%¨5ð%°Uó%ð ˜Cð  uð °Sð ¸Uó ðð˜3ð 3òóðð óð,G$ H¨U¡OóG$ðR'Ø"*¨5¡/ð'à    ˆx˜‰ Ð$Ñ    %ó'ð02°5ð2¸Uó2ðh%àð%ðð%ð
%‰ó    %ð<J óJðX.°Uð.¸tó.ð`&°Eð&¸eó&ð2°yð2ÀTó2ð6 °Yð À4ó ðð1cò1óð1ðð˜dòóððSØ!ðSØ.3ðSØ?BðSà    ôSr<)'rár6Úbase64rrÚhashlibrrÚtypingrrr    r
r r Úuuidr Úmysql.connector.authenticationrÚmysql.connector.errorsrrÚmysql.connector.loggerrÚmysql.connector.typesrÚmysql.connector.utilsrrHrrIÚnetworkrraÚ ImportErrorrOrÚAUTHENTICATION_PLUGIN_CLASSrrÈr<r1ú<module>ròs~ðñ:'ã ç'ß ßF×FÝå5ßCÝ)Ý,÷ñ
Ý%ðÛõà?ÐôO oõOøðòÙ
ð    ó ð ð    ðús ÁA0Á0A?