int zmq::plain_mechanism_t::next_handshake_command (msg_t *msg_) { int rc = 0; switch (state) { case sending_hello: rc = produce_hello (msg_); if (rc == 0) state = waiting_for_welcome; break; case sending_welcome: rc = produce_welcome (msg_); if (rc == 0) state = waiting_for_initiate; break; case sending_initiate: rc = produce_initiate (msg_); if (rc == 0) state = waiting_for_ready; break; case sending_ready: rc = produce_ready (msg_); if (rc == 0) state = ready; break; default: errno = EAGAIN; rc = -1; } return rc; }
int produce_initiate (void *data_, size_t size_, const uint64_t cn_nonce_, const uint8_t *metadata_plaintext_, const size_t metadata_length_) { return produce_initiate (data_, size_, cn_nonce_, server_key, public_key, secret_key, cn_public, cn_secret, cn_server, cn_cookie, metadata_plaintext_, metadata_length_); }
int zmq::gssapi_server_t::produce_next_token (msg_t *msg_) { if (send_tok.length != 0) { // Client expects another token if (produce_initiate(msg_, send_tok.value, send_tok.length) < 0) return -1; gss_release_buffer(&min_stat, &send_tok); } if (maj_stat != GSS_S_COMPLETE && maj_stat != GSS_S_CONTINUE_NEEDED) { gss_release_name(&min_stat, &target_name); if (context != GSS_C_NO_CONTEXT) gss_delete_sec_context(&min_stat, &context, GSS_C_NO_BUFFER); return -1; } return 0; }
int zmq::curve_client_t::next_handshake_command (msg_t *msg_) { int rc = 0; switch (state) { case send_hello: rc = produce_hello (msg_); if (rc == 0) state = expect_welcome; break; case send_initiate: rc = produce_initiate (msg_); if (rc == 0) state = expect_ready; break; default: errno = EAGAIN; rc = -1; } return rc; }