Skip to content

Commit bfc7232

Browse files
Amandeep Gautamsimo5
authored andcommitted
add support for getting session key
Return seesion key when gssntlm_inquire_sec_context_by_oid is called witth GSS_C_INQ_SSPI_SESSION_KEY.
1 parent b3484a6 commit bfc7232

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

src/gss_sec_ctx.c

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1264,6 +1264,29 @@ static uint32_t gssntlm_sasl_ssf(uint32_t *minor_status,
12641264
return GSSERRS(retmin, retmaj);
12651265
}
12661266

1267+
static uint32_t gssntlm_sspi_session_key(uint32_t *minor_status,
1268+
struct gssntlm_ctx *ctx,
1269+
gss_buffer_set_t *data_set)
1270+
{
1271+
uint32_t retmin;
1272+
uint32_t retmaj;
1273+
uint32_t tmpmin;
1274+
gss_buffer_desc session_key_buf;
1275+
1276+
if (ctx->exported_session_key.length == 0) {
1277+
return GSSERRS(ERR_NOTAVAIL, GSS_S_UNAVAILABLE);
1278+
}
1279+
1280+
session_key_buf.length = ctx->exported_session_key.length;
1281+
session_key_buf.value = ctx->exported_session_key.data;
1282+
1283+
retmaj = gss_add_buffer_set_member(&retmin, &session_key_buf, data_set);
1284+
if (retmaj != GSS_S_COMPLETE) {
1285+
(void)gss_release_buffer_set(&tmpmin, data_set);
1286+
}
1287+
return GSSERRS(retmin, retmaj);
1288+
}
1289+
12671290
uint32_t gssntlm_inquire_sec_context_by_oid(uint32_t *minor_status,
12681291
const gss_ctx_id_t context_handle,
12691292
const gss_OID desired_object,
@@ -1290,6 +1313,8 @@ uint32_t gssntlm_inquire_sec_context_by_oid(uint32_t *minor_status,
12901313
return gssntlm_spnego_req_mic(minor_status, ctx, data_set);
12911314
} else if (gss_oid_equal(desired_object, &sasl_ssf_oid)){
12921315
return gssntlm_sasl_ssf(minor_status, ctx, data_set);
1316+
} else if (gss_oid_equal(desired_object, GSS_C_INQ_SSPI_SESSION_KEY)) {
1317+
return gssntlm_sspi_session_key(minor_status, ctx, data_set);
12931318
}
12941319

12951320
return GSSERRS(ERR_NOTSUPPORTED, GSS_S_UNAVAILABLE);

0 commit comments

Comments
 (0)