Commit eda12bcf authored by Michael Osipov's avatar Michael Osipov Committed by Daniel Stenberg
Browse files

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
parent a4cece3d
Loading
Loading
Loading
Loading
+9 −11
Original line number Diff line number Diff line
@@ -27,18 +27,17 @@
#include "curl_gssapi.h"
#include "sendf.h"

static const char spnego_OID[] = "\x2b\x06\x01\x05\x05\x02";
static const gss_OID_desc gss_mech_spnego = {
  6,
  &spnego_OID
};
static const char spengo_oid_bytes[] = "\x2b\x06\x01\x05\x05\x02";
gss_OID_desc spnego_mech_oid = { 6, &spengo_oid_bytes };
static const char krb5_oid_bytes[] = "\x2a\x86\x48\x86\xf7\x12\x01\x02\x02";
gss_OID_desc krb5_mech_oid = { 9, &krb5_oid_bytes };

OM_uint32 Curl_gss_init_sec_context(
    struct SessionHandle *data,
    OM_uint32 *minor_status,
    gss_ctx_id_t *context,
    gss_name_t target_name,
    bool use_spnego,
    gss_OID mech_type,
    gss_channel_bindings_t input_chan_bindings,
    gss_buffer_t input_token,
    gss_buffer_t output_token,
@@ -62,8 +61,7 @@ OM_uint32 Curl_gss_init_sec_context(
                              GSS_C_NO_CREDENTIAL, /* cred_handle */
                              context,
                              target_name,
                              use_spnego ? (gss_OID)&gss_mech_spnego :
                              GSS_C_NO_OID,
                              mech_type,
                              req_flags,
                              0, /* time_req */
                              input_chan_bindings,
+13 −5
Original line number Diff line number Diff line
@@ -39,15 +39,23 @@
#  include <gssapi.h>
#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(
    struct SessionHandle *data,
    OM_uint32 *minor_status,
    gss_ctx_id_t *context,
    gss_name_t target_name,
    bool use_spnego,
    gss_OID mech_type,
    gss_channel_bindings_t input_chan_bindings,
    gss_buffer_t input_token,
    gss_buffer_t output_token,
+1 −1
Original line number Diff line number Diff line
@@ -184,7 +184,7 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
                                           &minor_status,
                                           &neg_ctx->context,
                                           neg_ctx->server_name,
                                           TRUE,
                                           SPNEGO_MECHANISM,
                                           GSS_C_NO_CHANNEL_BINDINGS,
                                           &input_token,
                                           &output_token,
+1 −1
Original line number Diff line number Diff line
@@ -236,7 +236,7 @@ krb5_auth(void *app_data, struct connectdata *conn)
                                      &min,
                                      context,
                                      gssname,
                                      FALSE,
                                      KRB5_MECHANISM,
                                      &chan,
                                      gssresp,
                                      &output_buffer,
+1 −1
Original line number Diff line number Diff line
@@ -181,7 +181,7 @@ CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
                                                 &gss_minor_status,
                                                 &gss_context,
                                                 server,
                                                 FALSE,
                                                 KRB5_MECHANISM,
                                                 NULL,
                                                 gss_token,
                                                 &gss_send_token,