static NTSTATUS gse_context_init(struct gensec_security *gensec_security,
bool do_sign, bool do_seal,
+ const struct gss_OID_desc_struct *mech,
uint32_t add_gss_c_flags,
struct gse_context **_gse_ctx)
{
gse_ctx->expire_time = GENSEC_EXPIRE_TIME_INFINITY;
gse_ctx->max_wrap_buf_size = UINT16_MAX;
- memcpy(&gse_ctx->gss_mech, gss_mech_krb5, sizeof(gss_OID_desc));
+ memcpy(&gse_ctx->gss_mech, mech, sizeof(gss_OID_desc));
gse_ctx->gss_want_flags = GSS_C_MUTUAL_FLAG |
GSS_C_DELEG_POLICY_FLAG |
static NTSTATUS gse_init_client(struct gensec_security *gensec_security,
bool do_sign, bool do_seal,
const char *ccache_name,
+ const struct gss_OID_desc_struct *mech,
uint32_t add_gss_c_flags,
struct gse_context **_gse_ctx)
{
krb5_error_code k5ret;
NTSTATUS status;
- status = gse_context_init(gensec_security, do_sign, do_seal,
+ status = gse_context_init(gensec_security,
+ do_sign,
+ do_seal,
+ mech,
add_gss_c_flags,
&gse_ctx);
if (!NT_STATUS_IS_OK(status)) {
static NTSTATUS gse_init_server(struct gensec_security *gensec_security,
bool do_sign, bool do_seal,
+ const struct gss_OID_desc_struct *mech,
uint32_t add_gss_c_flags,
struct gse_context **_gse_ctx)
{
krb5_error_code ret;
NTSTATUS status;
- status = gse_context_init(gensec_security, do_sign, do_seal,
- add_gss_c_flags, &gse_ctx);
+ status = gse_context_init(gensec_security,
+ do_sign,
+ do_seal,
+ mech,
+ add_gss_c_flags,
+ &gse_ctx);
if (!NT_STATUS_IS_OK(status)) {
return NT_STATUS_NO_MEMORY;
}
NTSTATUS nt_status;
OM_uint32 want_flags = 0;
bool do_sign = false, do_seal = false;
+ const char *ccache_name = NULL;
nt_status = gensec_kerberos_possible(gensec_security);
if (!NT_STATUS_IS_OK(nt_status)) {
}
#endif
- nt_status = gse_init_client(gensec_security, do_sign, do_seal, NULL,
- want_flags, &gse_ctx);
+ nt_status = gse_init_client(gensec_security,
+ do_sign,
+ do_seal,
+ ccache_name,
+ gss_mech_krb5,
+ want_flags,
+ &gse_ctx);
if (!NT_STATUS_IS_OK(nt_status)) {
return nt_status;
}
want_flags |= GSS_C_DCE_STYLE;
}
- nt_status = gse_init_server(gensec_security, do_sign, do_seal, want_flags,
+ nt_status = gse_init_server(gensec_security,
+ do_sign,
+ do_seal,
+ gss_mech_krb5,
+ want_flags,
&gse_ctx);
if (!NT_STATUS_IS_OK(nt_status)) {
return nt_status;