curl_gssapi: Add macros for common mechs and pass them appropriately
Macros defined: KRB5_MECHANISM and SPNEGO_MECHANISM called from HTTP, FTP and SOCKS on Unix
This commit is contained in:

committed by
Daniel Stenberg

parent
a4cece3d47
commit
eda12bcff8
@@ -27,22 +27,21 @@
|
|||||||
#include "curl_gssapi.h"
|
#include "curl_gssapi.h"
|
||||||
#include "sendf.h"
|
#include "sendf.h"
|
||||||
|
|
||||||
static const char spnego_OID[] = "\x2b\x06\x01\x05\x05\x02";
|
static const char spengo_oid_bytes[] = "\x2b\x06\x01\x05\x05\x02";
|
||||||
static const gss_OID_desc gss_mech_spnego = {
|
gss_OID_desc spnego_mech_oid = { 6, &spengo_oid_bytes };
|
||||||
6,
|
static const char krb5_oid_bytes[] = "\x2a\x86\x48\x86\xf7\x12\x01\x02\x02";
|
||||||
&spnego_OID
|
gss_OID_desc krb5_mech_oid = { 9, &krb5_oid_bytes };
|
||||||
};
|
|
||||||
|
|
||||||
OM_uint32 Curl_gss_init_sec_context(
|
OM_uint32 Curl_gss_init_sec_context(
|
||||||
struct SessionHandle *data,
|
struct SessionHandle *data,
|
||||||
OM_uint32 * minor_status,
|
OM_uint32 *minor_status,
|
||||||
gss_ctx_id_t * context,
|
gss_ctx_id_t *context,
|
||||||
gss_name_t target_name,
|
gss_name_t target_name,
|
||||||
bool use_spnego,
|
gss_OID mech_type,
|
||||||
gss_channel_bindings_t input_chan_bindings,
|
gss_channel_bindings_t input_chan_bindings,
|
||||||
gss_buffer_t input_token,
|
gss_buffer_t input_token,
|
||||||
gss_buffer_t output_token,
|
gss_buffer_t output_token,
|
||||||
OM_uint32 * ret_flags)
|
OM_uint32 *ret_flags)
|
||||||
{
|
{
|
||||||
OM_uint32 req_flags = GSS_C_MUTUAL_FLAG | GSS_C_REPLAY_FLAG;
|
OM_uint32 req_flags = GSS_C_MUTUAL_FLAG | GSS_C_REPLAY_FLAG;
|
||||||
|
|
||||||
@@ -62,8 +61,7 @@ OM_uint32 Curl_gss_init_sec_context(
|
|||||||
GSS_C_NO_CREDENTIAL, /* cred_handle */
|
GSS_C_NO_CREDENTIAL, /* cred_handle */
|
||||||
context,
|
context,
|
||||||
target_name,
|
target_name,
|
||||||
use_spnego ? (gss_OID)&gss_mech_spnego :
|
mech_type,
|
||||||
GSS_C_NO_OID,
|
|
||||||
req_flags,
|
req_flags,
|
||||||
0, /* time_req */
|
0, /* time_req */
|
||||||
input_chan_bindings,
|
input_chan_bindings,
|
||||||
|
@@ -39,19 +39,27 @@
|
|||||||
# include <gssapi.h>
|
# include <gssapi.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef SPNEGO_MECHANISM
|
||||||
|
CURL_EXTERN gss_OID_desc spnego_mech_oid;
|
||||||
|
#define SPNEGO_MECHANISM &spnego_mech_oid
|
||||||
|
#endif
|
||||||
|
#ifndef KRB5_MECHANISM
|
||||||
|
CURL_EXTERN gss_OID_desc krb5_mech_oid;
|
||||||
|
#define KRB5_MECHANISM &krb5_mech_oid
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Common method for using gss api */
|
/* Common method for using GSS-API */
|
||||||
|
|
||||||
OM_uint32 Curl_gss_init_sec_context(
|
OM_uint32 Curl_gss_init_sec_context(
|
||||||
struct SessionHandle *data,
|
struct SessionHandle *data,
|
||||||
OM_uint32 * minor_status,
|
OM_uint32 *minor_status,
|
||||||
gss_ctx_id_t * context,
|
gss_ctx_id_t *context,
|
||||||
gss_name_t target_name,
|
gss_name_t target_name,
|
||||||
bool use_spnego,
|
gss_OID mech_type,
|
||||||
gss_channel_bindings_t input_chan_bindings,
|
gss_channel_bindings_t input_chan_bindings,
|
||||||
gss_buffer_t input_token,
|
gss_buffer_t input_token,
|
||||||
gss_buffer_t output_token,
|
gss_buffer_t output_token,
|
||||||
OM_uint32 * ret_flags);
|
OM_uint32 *ret_flags);
|
||||||
|
|
||||||
#endif /* HAVE_GSSAPI */
|
#endif /* HAVE_GSSAPI */
|
||||||
|
|
||||||
|
@@ -184,7 +184,7 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
|
|||||||
&minor_status,
|
&minor_status,
|
||||||
&neg_ctx->context,
|
&neg_ctx->context,
|
||||||
neg_ctx->server_name,
|
neg_ctx->server_name,
|
||||||
TRUE,
|
SPNEGO_MECHANISM,
|
||||||
GSS_C_NO_CHANNEL_BINDINGS,
|
GSS_C_NO_CHANNEL_BINDINGS,
|
||||||
&input_token,
|
&input_token,
|
||||||
&output_token,
|
&output_token,
|
||||||
|
@@ -236,7 +236,7 @@ krb5_auth(void *app_data, struct connectdata *conn)
|
|||||||
&min,
|
&min,
|
||||||
context,
|
context,
|
||||||
gssname,
|
gssname,
|
||||||
FALSE,
|
KRB5_MECHANISM,
|
||||||
&chan,
|
&chan,
|
||||||
gssresp,
|
gssresp,
|
||||||
&output_buffer,
|
&output_buffer,
|
||||||
|
@@ -181,7 +181,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
|
|||||||
&gss_minor_status,
|
&gss_minor_status,
|
||||||
&gss_context,
|
&gss_context,
|
||||||
server,
|
server,
|
||||||
FALSE,
|
KRB5_MECHANISM,
|
||||||
NULL,
|
NULL,
|
||||||
gss_token,
|
gss_token,
|
||||||
&gss_send_token,
|
&gss_send_token,
|
||||||
|
Reference in New Issue
Block a user