OM_uint32 timeReq,
gss_channel_bindings_t chanBindings,
gss_buffer_t inputToken,
- gss_buffer_t outputToken)
+ gss_buffer_t outputToken,
+ int *transitionState)
{
OM_uint32 major;
unsigned char *p;
OM_uint32 timeReq,
gss_channel_bindings_t chanBindings,
gss_buffer_t inputToken,
- gss_buffer_t outputToken)
+ gss_buffer_t outputToken,
+ int *transitionState)
{
OM_uint32 major, tmpMinor;
gss_name_t mechTarget = GSS_C_NO_NAME;
if (GSS_ERROR(major))
goto cleanup;
ctx->state = GSSEAP_STATE_NEGO_EXT; /* skip */
- } else {
- major = GSS_S_COMPLETE; /* advance state */
}
+ *transitionState = 1;
+
cleanup:
gssReleaseName(&tmpMinor, &mechTarget);
OM_uint32 timeReq,
gss_channel_bindings_t chanBindings,
gss_buffer_t inputToken,
- gss_buffer_t outputToken)
+ gss_buffer_t outputToken,
+ int *transitionState)
{
OM_uint32 major;
int initialContextToken;
outputToken->value = NULL;
*minor = 0;
- return GSS_S_COMPLETE; /* advance state */
+ *transitionState = 1;
+
+ return GSS_S_COMPLETE;
}
static struct wpabuf emptyWpaBuffer;
OM_uint32 timeReq,
gss_channel_bindings_t chanBindings,
gss_buffer_t inputToken,
- gss_buffer_t outputToken)
+ gss_buffer_t outputToken,
+ int *transitionState)
{
OM_uint32 major;
OM_uint32 tmpMinor;
ctx->flags |= CTX_FLAG_EAP_REQ; /* we have a Request from the acceptor */
+ major = GSS_S_CONTINUE_NEEDED;
+
wpabuf_set(&ctx->initiatorCtx.reqData,
inputToken->value, inputToken->length);
ctx->flags &= ~(CTX_FLAG_EAP_RESP);
resp = eap_get_eapRespData(ctx->initiatorCtx.eap);
- major = GSS_S_CONTINUE_NEEDED;
} else if (ctx->flags & CTX_FLAG_EAP_SUCCESS) {
major = initReady(minor, ctx, reqFlags);
if (GSS_ERROR(major))
goto cleanup;
ctx->flags &= ~(CTX_FLAG_EAP_SUCCESS);
- major = GSS_S_COMPLETE; /* advance state */
+ *transitionState = 1;
} else if (ctx->flags & CTX_FLAG_EAP_FAIL) {
major = GSS_S_DEFECTIVE_CREDENTIAL;
*minor = GSSEAP_PEER_AUTH_FAILURE;
} else if (code == 0 && initialContextToken) {
- major = GSS_S_CONTINUE_NEEDED;
+ /* */
} else {
major = GSS_S_DEFECTIVE_TOKEN;
*minor = GSSEAP_PEER_BAD_MESSAGE;
OM_uint32 timeReq,
gss_channel_bindings_t chanBindings,
gss_buffer_t inputToken,
- gss_buffer_t outputToken)
+ gss_buffer_t outputToken,
+ int *transitionState)
{
OM_uint32 major;
gss_buffer_desc buffer = GSS_C_EMPTY_BUFFER;
OM_uint32 timeReq,
gss_channel_bindings_t chanBindings,
gss_buffer_t inputToken,
- gss_buffer_t outputToken)
+ gss_buffer_t outputToken,
+ int *transitionState)
{
OM_uint32 major;
OM_uint32 timeReq,
gss_channel_bindings_t chanBindings,
gss_buffer_t inputToken,
- gss_buffer_t outputToken)
+ gss_buffer_t outputToken,
+ int *transitionState)
{
*minor = 0;
- return GSS_S_COMPLETE; /* advance state */
+ *transitionState = 1;
+ return GSS_S_COMPLETE;
}
static struct gss_eap_sm eapGssInitiatorSm[] = {
eapGssSmInitGssReauth,
},
#endif
- /* first-leg extensions go here, they should return GSS_S_CONTINUE_NEEDED */
{
ITOK_TYPE_NONE,
ITOK_TYPE_NONE,