MCPcopy Create free account
hub / github.com/PyMySQL/PyMySQL / sha256_password_auth

Function sha256_password_auth

pymysql/_auth.py:158–188  ·  view source on GitHub ↗
(conn, pkt)

Source from the content-addressed store, hash-verified

156
157
158def sha256_password_auth(conn, pkt):
159 if conn._secure:
160 if DEBUG:
161 print("sha256: Sending plain password")
162 data = conn.password + b"\0"
163 return _roundtrip(conn, data)
164
165 if pkt.is_auth_switch_request():
166 conn.salt = pkt.read_all()
167 if conn.salt.endswith(b"\0"):
168 conn.salt = conn.salt[:-1]
169 if not conn.server_public_key and conn.password:
170 # Request server public key
171 if DEBUG:
172 print("sha256: Requesting server public key")
173 pkt = _roundtrip(conn, b"\1")
174
175 if pkt.is_extra_auth_data():
176 conn.server_public_key = pkt._data[1:]
177 if DEBUG:
178 print("Received public key:\n", conn.server_public_key.decode("ascii"))
179
180 if conn.password:
181 if not conn.server_public_key:
182 raise OperationalError("Couldn't receive server's public key")
183
184 data = sha2_rsa_encrypt(conn.password, conn.salt, conn.server_public_key)
185 else:
186 data = b""
187
188 return _roundtrip(conn, data)
189
190
191def scramble_caching_sha2(password, nonce):

Callers

nothing calls this directly

Calls 6

_roundtripFunction · 0.85
OperationalErrorClass · 0.85
sha2_rsa_encryptFunction · 0.85
read_allMethod · 0.80
is_extra_auth_dataMethod · 0.80

Tested by

no test coverage detected