#include "gssapiP_eap.h"
static OM_uint32
-gssEapExportPartialContext(OM_uint32 *minor,
+exportPartialRadiusContext(OM_uint32 *minor,
gss_ctx_id_t ctx,
gss_buffer_t token)
{
OM_uint32
gssEapExportSecContext(OM_uint32 *minor,
gss_ctx_id_t ctx,
- gss_buffer_t token,
- OM_uint32 flags)
+ gss_buffer_t token)
{
OM_uint32 major, tmpMinor;
size_t length;
key.value = KRB_KEY_DATA(&ctx->rfc3961Key);
if (ctx->initiatorName != GSS_C_NO_NAME) {
- OM_uint32 nameFlags = EXPORT_NAME_FLAG_COMPOSITE;
-
- if (flags & EXPORT_CTX_FLAG_DISABLE_LOCAL_ATTRS)
- nameFlags |= EXPORT_NAME_FLAG_DISABLE_LOCAL_ATTRS;
-
major = gssEapExportNameInternal(minor, ctx->initiatorName,
- &initiatorName, nameFlags);
+ &initiatorName,
+ EXPORT_NAME_FLAG_COMPOSITE);
if (GSS_ERROR(major))
goto cleanup;
}
length += 4 + acceptorName.length; /* acceptorName.value */
length += 24 + sequenceSize(ctx->seqState); /* seqState */
+ if (!CTX_IS_INITIATOR(ctx) && !CTX_IS_ESTABLISHED(ctx))
+ length += 4 + ctx->conversation.length;
+
if (partialCtx.value != NULL)
length += 4 + partialCtx.length; /* partialCtx.value */
if (GSS_ERROR(major))
goto cleanup;
+ if (!CTX_IS_INITIATOR(ctx) && !CTX_IS_ESTABLISHED(ctx))
+ p = store_buffer(&ctx->conversation, &p, FALSE);
+
if (partialCtx.value != NULL)
p = store_buffer(&partialCtx, p, FALSE);
GSSEAP_MUTEX_LOCK(&ctx->mutex);
- major = gssEapExportSecContext(minor, ctx, interprocess_token, 0);
+ major = gssEapExportSecContext(minor, ctx, interprocess_token);
if (GSS_ERROR(major)) {
GSSEAP_MUTEX_UNLOCK(&ctx->mutex);
return major;