def _do_server_token(self, event):
client_final_no_proof = "c=%s,r=%s" % ( scram.standard_b64encode(b'n,,').decode() , self._server_nonce )
auth_msg = "%s,%s,%s" % ( self._client_second_msg, self._server_first_msg, client_final_no_proof )
client_key = hmac.new(unhexlify(scram.salted_password(self._server_salt, self._server_iterations, self._algorithm_name, self._session._password)), "Client Key".encode('UTF-8'), self._algorithm).hexdigest()
stored_key = scram._hash_sha256(unhexlify(client_key), self._algorithm)
client_signature = hmac.new( unhexlify(stored_key), auth_msg.encode('utf-8'), self._algorithm).hexdigest()
client_proof = scram._xor(client_key, client_signature)
client_proof_encode = b2a_base64(unhexlify(client_proof)).decode()
client_final = client_final_no_proof + ",p=" + client_proof_encode
client_final_base64 = scram.base64_no_padding(client_final)
final_msg = "scram handshaketoken=%s,data=%s" % (self._handshake_token , client_final_base64)
try:
self._session._get('%s/ui' % self._login_uri,
callback=self._validate_server_token,
headers={"Authorization": final_msg},
exclude_cookies=True,
exclude_headers=True, api=False)
except Exception as e:
self._state_machine.exception(result=AsynchronousException())
评论列表
文章目录