(conn, pkt)
| 156 | |
| 157 | |
| 158 | def 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 | |
| 191 | def scramble_caching_sha2(password, nonce): |
nothing calls this directly
no test coverage detected