def auth_gssapi_keyex(self, username):
if (not self.active) or (not self.initial_kex_done):<EOL><INDENT>raise SSHException("<STR_LIT>")<EOL><DEDENT>my_event = threading.Event()<EOL>self.auth_handler = AuthHandler(self)<EOL>self.auth_handler.auth_gssapi_keyex(username, my_event)<EOL>return self.auth_handler.wait_for_response(my_event)<EOL>
Authenticate to the server with GSS-API/SSPI if GSS-API kex is in use.

:param str username: The username to authenticate as.
:returns:
    a list of auth types permissible for the next stage of
    authentication (normally empty)
:raises: `.BadAuthenticationType` --
    if GSS-API Key Exchange was not performed (and no event was passed
    in)
:raises: `.AuthenticationException` --
    if the authentication failed (and no event was passed in)
:raises: `.SSHException` -- if there was a network error