Added gss produce/process routines.

For exchanging tokens.
This commit is contained in:
Mike Gatny
2013-10-02 22:09:36 -05:00
committed by Chris Busbey
parent c00b8c347b
commit 6290ba168f
5 changed files with 96 additions and 24 deletions

View File

@@ -58,7 +58,7 @@ int zmq::gssapi_server_t::next_handshake_command (msg_t *msg_)
state = waiting_for_initiate;
break;
case sending_token:
rc = produce_token (msg_);
rc = produce_token (msg_, 0, (char *) "kthx! bye!", 10);
if (rc == 0)
state = waiting_for_token; //state = expecting_another_token? waiting_for_token: waiting_for_ready;
break;
@@ -77,6 +77,10 @@ int zmq::gssapi_server_t::next_handshake_command (msg_t *msg_)
int zmq::gssapi_server_t::process_handshake_command (msg_t *msg_)
{
int rc = 0;
int flags = 0;
gss_buffer_desc buf;
buf.value = NULL;
buf.length = 0;
switch (state) {
case waiting_for_hello:
@@ -90,7 +94,7 @@ int zmq::gssapi_server_t::process_handshake_command (msg_t *msg_)
state = sending_token;
break;
case waiting_for_token:
rc = process_token (msg_);
rc = process_token (msg_, flags, &buf.value, buf.length);
if (rc == 0)
state = sending_ready; // state = expecting_another_token? sending_token: sending_ready;
break;
@@ -99,12 +103,18 @@ int zmq::gssapi_server_t::process_handshake_command (msg_t *msg_)
rc = -1;
break;
}
if (buf.value) {
free (buf.value);
}
if (rc == 0) {
rc = msg_->close ();
errno_assert (rc == 0);
rc = msg_->init ();
errno_assert (rc == 0);
}
return rc;
}