Commit 09ccfcdc authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

Markus Moeller's SPNEGO patch applied, with my edits, additions and minor

cleanups.
parent bbc01c36
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -6,6 +6,13 @@

                                  Changelog


Daniel (19 September)
- Applied Markus Moeller's patch that introduces SPNEGO support if libcurl
  is built with the FBopenssl libraries. curl_version_info() now returns
  info on SPNEGO availability. The patch also made the GSSAPI stuff work fine
  with the MIT GSS-library (the Heimdal one still works too).

Daniel (16 September)
- Doing PUT with --digest failed, as reported in bug report #805853.

+31 −1
Original line number Diff line number Diff line
@@ -457,6 +457,31 @@ else
  AC_MSG_RESULT(no)
fi

dnl **********************************************************************
dnl Check for FBopenssl(SPNEGO) libraries
dnl **********************************************************************

AC_ARG_WITH(spnego,
  AC_HELP_STRING([--with-spnego=DIR],
                 [Specify location of SPNEGO library fbopenssl]),
  [ SPNEGO_ROOT="$withval"
    want_spnego="yes" ]
)
AC_MSG_CHECKING([if SPNEGO support is requested])
if test x"$want_spnego" = xyes; then
 
  if test -z "$SPNEGO_LIB_DIR"; then
     LDFLAGS="$LDFLAGS -L$SPNEGO_ROOT $(wl)-R$SPNEGO_ROOT -lfbopenssl"
  else
     LDFLAGS="$LDFLAGS $SPNEGO_LIB_DIR"
  fi
 
  AC_DEFINE(HAVE_SPNEGO, 1, [Define this if you have the SPNEGO library fbopenssl])
  AC_MSG_RESULT(yes)
else
  AC_MSG_RESULT(no)
fi

dnl **********************************************************************
dnl Check for GSS-API libraries
dnl **********************************************************************
@@ -507,7 +532,12 @@ if test x"$want_gss" = xyes; then
  fi

  AC_MSG_RESULT(yes)
  AC_DEFINE(GSSAPI, 1, [if you have the gssapi libraries])
  AC_DEFINE(HAVE_GSSAPI, 1, [if you have the gssapi libraries])
  if test -f "$GSSAPI_INCS/gssapi.h"; then
      AC_DEFINE(HAVE_GSSHEIMDAL, 1, [if you have the Heimdal gssapi libraries])
  else
      AC_DEFINE(HAVE_GSSMIT, 1, [if you have the MIT gssapi libraries])
  fi
  
else
  AC_MSG_RESULT(no)
+5 −1
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@
.\" nroff -man [file]
.\" $Id$
.\"
.TH curl_version_info 3 "12 Aug 2003" "libcurl 7.10.7" "libcurl Manual"
.TH curl_version_info 3 "19 Sep 2003" "libcurl 7.10.8" "libcurl Manual"
.SH NAME
curl_version_info - returns run-time libcurl version info
.SH SYNOPSIS
@@ -84,6 +84,10 @@ interest for libcurl hackers. (added in 7.10.6)
libcurl was built with support for asynchronous name lookups, which allows
more exact timeouts (even on Windows) and less blocking when using the multi
interface. (added in 7.10.7)
.TP
.B CURL_VERSION_SPNEGO
libcurl was built with support for SPNEGO authentication (Simple and Protected
GSS-API Negotiation Mechanism, defined in RFC 2478.) (added in 7.10.8)
.PP
\fIssl_version\fP is an ascii string for the OpenSSL version used. If libcurl
has no SSL support, this is NULL.
+1 −0
Original line number Diff line number Diff line
@@ -1134,6 +1134,7 @@ typedef struct {
#define CURL_VERSION_GSSNEGOTIATE (1<<5)
#define CURL_VERSION_DEBUG     (1<<6) /* built with debug capabilities */
#define CURL_VERSION_ASYNCHDNS (1<<7)
#define CURL_VERSION_SPNEGO    (1<<8)

/*
 * NAME curl_version_info()
+2 −2
Original line number Diff line number Diff line
@@ -238,7 +238,7 @@ CURLcode http_auth_headers(struct connectdata *conn,
    }
    /* Send web authentication header if needed */
    if (data->state.authstage == 401) {
#ifdef GSSAPI
#ifdef HAVE_GSSAPI
      if((data->state.authwant == CURLAUTH_GSSNEGOTIATE) &&
         data->state.negotiate.context && 
         !GSS_ERROR(data->state.negotiate.status)) {
@@ -324,7 +324,7 @@ CURLcode Curl_http_auth(struct connectdata *conn,
  while(*start && isspace((int)*start))
    start++;

#ifdef GSSAPI
#ifdef HAVE_GSSAPI
  if (checkprefix("GSS-Negotiate", start) ||
      checkprefix("Negotiate", start)) {
    *availp |= CURLAUTH_GSSNEGOTIATE;
Loading