Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
git2
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
git2
Commits
315cb38e
Commit
315cb38e
authored
Jul 31, 2014
by
Edward Thomson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add GSSAPI support for SPNEGO/Kerberos auth over HTTP
parent
e003f83a
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
335 additions
and
0 deletions
+335
-0
CMakeLists.txt
+11
-0
cmake/Modules/FindGSSAPI.cmake
+324
-0
src/transports/http.c
+0
-0
No files found.
CMakeLists.txt
View file @
315cb38e
...
...
@@ -36,6 +36,7 @@ OPTION( ANDROID "Build for android NDK" OFF )
OPTION
(
USE_ICONV
"Link with and use iconv library"
OFF
)
OPTION
(
USE_SSH
"Link with libssh to enable SSH support"
ON
)
OPTION
(
USE_GSSAPI
"Link with libgssapi for SPNEGO auth"
ON
)
OPTION
(
VALGRIND
"Configure build for valgrind"
OFF
)
IF
(
${
CMAKE_SYSTEM_NAME
}
MATCHES
"Darwin"
)
...
...
@@ -208,6 +209,14 @@ IF (LIBSSH2_FOUND)
SET
(
SSH_LIBRARIES
${
LIBSSH2_LIBRARIES
}
)
ENDIF
()
# Optional external dependency: libgssapi
IF
(
USE_GSSAPI
)
FIND_PACKAGE
(
GSSAPI
)
ENDIF
()
IF
(
GSSAPI_FOUND
)
ADD_DEFINITIONS
(
-DGIT_GSSAPI
)
ENDIF
()
# Optional external dependency: iconv
IF
(
USE_ICONV
)
FIND_PACKAGE
(
Iconv
)
...
...
@@ -387,6 +396,7 @@ ENDIF()
ADD_LIBRARY
(
git2
${
SRC_H
}
${
SRC_GIT2
}
${
SRC_OS
}
${
SRC_ZLIB
}
${
SRC_HTTP
}
${
SRC_REGEX
}
${
SRC_SHA1
}
${
WIN_RC
}
)
TARGET_LINK_LIBRARIES
(
git2
${
SSL_LIBRARIES
}
)
TARGET_LINK_LIBRARIES
(
git2
${
SSH_LIBRARIES
}
)
TARGET_LINK_LIBRARIES
(
git2
${
GSSAPI_LIBRARIES
}
)
TARGET_LINK_LIBRARIES
(
git2
${
ICONV_LIBRARIES
}
)
TARGET_OS_LIBRARIES
(
git2
)
...
...
@@ -453,6 +463,7 @@ IF (BUILD_CLAR)
TARGET_LINK_LIBRARIES(libgit2_clar
${
SSL_LIBRARIES
}
)
TARGET_LINK_LIBRARIES(libgit2_clar
${
SSH_LIBRARIES
}
)
TARGET_LINK_LIBRARIES(libgit2_clar
${
GSSAPI_LIBRARIES
}
)
TARGET_LINK_LIBRARIES(libgit2_clar
${
ICONV_LIBRARIES
}
)
TARGET_OS_LIBRARIES(libgit2_clar)
MSVC_SPLIT_SOURCES(libgit2_clar)
...
...
cmake/Modules/FindGSSAPI.cmake
0 → 100644
View file @
315cb38e
# - Try to find GSSAPI
# Once done this will define
#
# KRB5_CONFIG - Path to krb5-config
# GSSAPI_ROOT_DIR - Set this variable to the root installation of GSSAPI
#
# Read-Only variables:
# GSSAPI_FLAVOR_MIT - set to TURE if MIT Kerberos has been found
# GSSAPI_FLAVOR_HEIMDAL - set to TRUE if Heimdal Keberos has been found
# GSSAPI_FOUND - system has GSSAPI
# GSSAPI_INCLUDE_DIR - the GSSAPI include directory
# GSSAPI_LIBRARIES - Link these to use GSSAPI
# GSSAPI_DEFINITIONS - Compiler switches required for using GSSAPI
#
#=============================================================================
# Copyright (c) 2013 Andreas Schneider <asn@cryptomilk.org>
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
#
find_path
(
GSSAPI_ROOT_DIR
NAMES
include/gssapi.h
include/gssapi/gssapi.h
HINTS
${
_GSSAPI_ROOT_HINTS
}
PATHS
${
_GSSAPI_ROOT_PATHS
}
)
mark_as_advanced
(
GSSAPI_ROOT_DIR
)
if
(
UNIX
)
find_program
(
KRB5_CONFIG
NAMES
krb5-config
PATHS
${
GSSAPI_ROOT_DIR
}
/bin
/opt/local/bin
)
mark_as_advanced
(
KRB5_CONFIG
)
if
(
KRB5_CONFIG
)
# Check if we have MIT KRB5
execute_process
(
COMMAND
${
KRB5_CONFIG
}
--vendor
RESULT_VARIABLE
_GSSAPI_VENDOR_RESULT
OUTPUT_VARIABLE
_GSSAPI_VENDOR_STRING
)
if
(
_GSSAPI_VENDOR_STRING MATCHES
".*Massachusetts.*"
)
set
(
GSSAPI_FLAVOR_MIT TRUE
)
else
()
execute_process
(
COMMAND
${
KRB5_CONFIG
}
--libs gssapi
RESULT_VARIABLE
_GSSAPI_LIBS_RESULT
OUTPUT_VARIABLE
_GSSAPI_LIBS_STRING
)
if
(
_GSSAPI_LIBS_STRING MATCHES
".*roken.*"
)
set
(
GSSAPI_FLAVOR_HEIMDAL TRUE
)
endif
()
endif
()
# Get the include dir
execute_process
(
COMMAND
${
KRB5_CONFIG
}
--cflags gssapi
RESULT_VARIABLE
_GSSAPI_INCLUDE_RESULT
OUTPUT_VARIABLE
_GSSAPI_INCLUDE_STRING
)
string
(
REGEX REPLACE
"(
\r
?
\n
)+$"
""
_GSSAPI_INCLUDE_STRING
"
${
_GSSAPI_INCLUDE_STRING
}
"
)
string
(
REGEX REPLACE
" *-I"
""
_GSSAPI_INCLUDEDIR
"
${
_GSSAPI_INCLUDE_STRING
}
"
)
endif
()
if
(
NOT GSSAPI_FLAVOR_MIT AND NOT GSSAPI_FLAVOR_HEIMDAL
)
# Check for HEIMDAL
find_package
(
PkgConfig
)
if
(
PKG_CONFIG_FOUND
)
pkg_check_modules
(
_GSSAPI heimdal-gssapi
)
endif
(
PKG_CONFIG_FOUND
)
if
(
_GSSAPI_FOUND
)
set
(
GSSAPI_FLAVOR_HEIMDAL TRUE
)
else
()
find_path
(
_GSSAPI_ROKEN
NAMES
roken.h
PATHS
${
GSSAPI_ROOT_DIR
}
/include
${
_GSSAPI_INCLUDEDIR
}
)
if
(
_GSSAPI_ROKEN
)
set
(
GSSAPI_FLAVOR_HEIMDAL TRUE
)
endif
()
endif
()
endif
()
endif
(
UNIX
)
find_path
(
GSSAPI_INCLUDE_DIR
NAMES
gssapi.h
gssapi/gssapi.h
PATHS
${
GSSAPI_ROOT_DIR
}
/include
${
_GSSAPI_INCLUDEDIR
}
)
if
(
GSSAPI_FLAVOR_MIT
)
find_library
(
GSSAPI_LIBRARY
NAMES
gssapi_krb5
PATHS
${
GSSAPI_ROOT_DIR
}
/lib
${
_GSSAPI_LIBDIR
}
)
find_library
(
KRB5_LIBRARY
NAMES
krb5
PATHS
${
GSSAPI_ROOT_DIR
}
/lib
${
_GSSAPI_LIBDIR
}
)
find_library
(
K5CRYPTO_LIBRARY
NAMES
k5crypto
PATHS
${
GSSAPI_ROOT_DIR
}
/lib
${
_GSSAPI_LIBDIR
}
)
find_library
(
COM_ERR_LIBRARY
NAMES
com_err
PATHS
${
GSSAPI_ROOT_DIR
}
/lib
${
_GSSAPI_LIBDIR
}
)
if
(
GSSAPI_LIBRARY
)
set
(
GSSAPI_LIBRARIES
${
GSSAPI_LIBRARIES
}
${
GSSAPI_LIBRARY
}
)
endif
(
GSSAPI_LIBRARY
)
if
(
KRB5_LIBRARY
)
set
(
GSSAPI_LIBRARIES
${
GSSAPI_LIBRARIES
}
${
KRB5_LIBRARY
}
)
endif
(
KRB5_LIBRARY
)
if
(
K5CRYPTO_LIBRARY
)
set
(
GSSAPI_LIBRARIES
${
GSSAPI_LIBRARIES
}
${
K5CRYPTO_LIBRARY
}
)
endif
(
K5CRYPTO_LIBRARY
)
if
(
COM_ERR_LIBRARY
)
set
(
GSSAPI_LIBRARIES
${
GSSAPI_LIBRARIES
}
${
COM_ERR_LIBRARY
}
)
endif
(
COM_ERR_LIBRARY
)
endif
(
GSSAPI_FLAVOR_MIT
)
if
(
GSSAPI_FLAVOR_HEIMDAL
)
find_library
(
GSSAPI_LIBRARY
NAMES
gssapi
PATHS
${
GSSAPI_ROOT_DIR
}
/lib
${
_GSSAPI_LIBDIR
}
)
find_library
(
KRB5_LIBRARY
NAMES
krb5
PATHS
${
GSSAPI_ROOT_DIR
}
/lib
${
_GSSAPI_LIBDIR
}
)
find_library
(
HCRYPTO_LIBRARY
NAMES
hcrypto
PATHS
${
GSSAPI_ROOT_DIR
}
/lib
${
_GSSAPI_LIBDIR
}
)
find_library
(
COM_ERR_LIBRARY
NAMES
com_err
PATHS
${
GSSAPI_ROOT_DIR
}
/lib
${
_GSSAPI_LIBDIR
}
)
find_library
(
HEIMNTLM_LIBRARY
NAMES
heimntlm
PATHS
${
GSSAPI_ROOT_DIR
}
/lib
${
_GSSAPI_LIBDIR
}
)
find_library
(
HX509_LIBRARY
NAMES
hx509
PATHS
${
GSSAPI_ROOT_DIR
}
/lib
${
_GSSAPI_LIBDIR
}
)
find_library
(
ASN1_LIBRARY
NAMES
asn1
PATHS
${
GSSAPI_ROOT_DIR
}
/lib
${
_GSSAPI_LIBDIR
}
)
find_library
(
WIND_LIBRARY
NAMES
wind
PATHS
${
GSSAPI_ROOT_DIR
}
/lib
${
_GSSAPI_LIBDIR
}
)
find_library
(
ROKEN_LIBRARY
NAMES
roken
PATHS
${
GSSAPI_ROOT_DIR
}
/lib
${
_GSSAPI_LIBDIR
}
)
if
(
GSSAPI_LIBRARY
)
set
(
GSSAPI_LIBRARIES
${
GSSAPI_LIBRARIES
}
${
GSSAPI_LIBRARY
}
)
endif
(
GSSAPI_LIBRARY
)
if
(
KRB5_LIBRARY
)
set
(
GSSAPI_LIBRARIES
${
GSSAPI_LIBRARIES
}
${
KRB5_LIBRARY
}
)
endif
(
KRB5_LIBRARY
)
if
(
HCRYPTO_LIBRARY
)
set
(
GSSAPI_LIBRARIES
${
GSSAPI_LIBRARIES
}
${
HCRYPTO_LIBRARY
}
)
endif
(
HCRYPTO_LIBRARY
)
if
(
COM_ERR_LIBRARY
)
set
(
GSSAPI_LIBRARIES
${
GSSAPI_LIBRARIES
}
${
COM_ERR_LIBRARY
}
)
endif
(
COM_ERR_LIBRARY
)
if
(
HEIMNTLM_LIBRARY
)
set
(
GSSAPI_LIBRARIES
${
GSSAPI_LIBRARIES
}
${
HEIMNTLM_LIBRARY
}
)
endif
(
HEIMNTLM_LIBRARY
)
if
(
HX509_LIBRARY
)
set
(
GSSAPI_LIBRARIES
${
GSSAPI_LIBRARIES
}
${
HX509_LIBRARY
}
)
endif
(
HX509_LIBRARY
)
if
(
ASN1_LIBRARY
)
set
(
GSSAPI_LIBRARIES
${
GSSAPI_LIBRARIES
}
${
ASN1_LIBRARY
}
)
endif
(
ASN1_LIBRARY
)
if
(
WIND_LIBRARY
)
set
(
GSSAPI_LIBRARIES
${
GSSAPI_LIBRARIES
}
${
WIND_LIBRARY
}
)
endif
(
WIND_LIBRARY
)
if
(
ROKEN_LIBRARY
)
set
(
GSSAPI_LIBRARIES
${
GSSAPI_LIBRARIES
}
${
WIND_LIBRARY
}
)
endif
(
ROKEN_LIBRARY
)
endif
(
GSSAPI_FLAVOR_HEIMDAL
)
include
(
FindPackageHandleStandardArgs
)
find_package_handle_standard_args
(
GSSAPI DEFAULT_MSG GSSAPI_LIBRARIES GSSAPI_INCLUDE_DIR
)
if
(
GSSAPI_INCLUDE_DIRS AND GSSAPI_LIBRARIES
)
set
(
GSSAPI_FOUND TRUE
)
endif
(
GSSAPI_INCLUDE_DIRS AND GSSAPI_LIBRARIES
)
# show the GSSAPI_INCLUDE_DIRS and GSSAPI_LIBRARIES variables only in the advanced view
mark_as_advanced
(
GSSAPI_INCLUDE_DIRS GSSAPI_LIBRARIES
)
src/transports/http.c
View file @
315cb38e
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment