krb5: port MIT Linux keyring credentials cache (#166)
This commit is contained in:
@@ -10,7 +10,7 @@ env:
|
|||||||
|
|
||||||
before_install:
|
before_install:
|
||||||
- if [ $TRAVIS_OS_NAME = linux ]; then sudo apt-get update -qq; fi
|
- if [ $TRAVIS_OS_NAME = linux ]; then sudo apt-get update -qq; fi
|
||||||
- if [ $TRAVIS_OS_NAME = linux ]; then sudo apt-get install -qq bison comerr-dev flex libcap-ng-dev libdb-dev libedit-dev libjson-perl libldap2-dev libncurses5-dev libperl4-corelibs-perl libsqlite3-dev pkg-config python ss-dev texinfo unzip netbase; fi
|
- if [ $TRAVIS_OS_NAME = linux ]; then sudo apt-get install -qq bison comerr-dev flex libcap-ng-dev libdb-dev libedit-dev libjson-perl libldap2-dev libncurses5-dev libperl4-corelibs-perl libsqlite3-dev libkeyutils-dev pkg-config python ss-dev texinfo unzip netbase keyutils; fi
|
||||||
- if [ $TRAVIS_OS_NAME = osx ]; then brew update; fi
|
- if [ $TRAVIS_OS_NAME = osx ]; then brew update; fi
|
||||||
- if [ $TRAVIS_OS_NAME = osx ]; then brew install cpanm bison flex berkeley-db lmdb openldap openssl; fi
|
- if [ $TRAVIS_OS_NAME = osx ]; then brew install cpanm bison flex berkeley-db lmdb openldap openssl; fi
|
||||||
- if [ $TRAVIS_OS_NAME = osx ]; then sudo cpanm install JSON; fi
|
- if [ $TRAVIS_OS_NAME = osx ]; then sudo cpanm install JSON; fi
|
||||||
|
22
configure.ac
22
configure.ac
@@ -349,6 +349,7 @@ AC_CHECK_HEADERS([\
|
|||||||
fnmatch.h \
|
fnmatch.h \
|
||||||
inttypes.h \
|
inttypes.h \
|
||||||
io.h \
|
io.h \
|
||||||
|
keyutils.h \
|
||||||
libutil.h \
|
libutil.h \
|
||||||
limits.h \
|
limits.h \
|
||||||
maillock.h \
|
maillock.h \
|
||||||
@@ -547,7 +548,28 @@ if test "$enable_kcm" = yes; then
|
|||||||
fi
|
fi
|
||||||
AM_CONDITIONAL(KCM, test "$enable_kcm" = yes)
|
AM_CONDITIONAL(KCM, test "$enable_kcm" = yes)
|
||||||
|
|
||||||
|
dnl detect keyring on Linux
|
||||||
|
if test "$ac_cv_header_keyutils_h" = yes; then
|
||||||
|
AC_CHECK_SIZEOF([key_serial_t],,[
|
||||||
|
#ifdef HAVE_INTTYPES_H
|
||||||
|
#include <inttypes.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SYS_TYPES_H
|
||||||
|
#include <sys/types.h>
|
||||||
|
#endif
|
||||||
|
#include <keyutils.h>
|
||||||
|
])
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_FIND_FUNC_NO_LIBS(add_key, keyutils)
|
||||||
|
if test -n "$LIB_add_key"; then
|
||||||
|
saved_LIBS="$LIBS"
|
||||||
|
LIBS="$LIBS $LIB_add_key"
|
||||||
|
AC_CHECK_FUNCS(keyctl_get_persistent)
|
||||||
|
LIBS="$saved_LIBS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_CHECK_SIZEOF([time_t])
|
||||||
|
|
||||||
dnl Cray stuff
|
dnl Cray stuff
|
||||||
AC_CHECK_FUNCS(getudbnam setlim)
|
AC_CHECK_FUNCS(getudbnam setlim)
|
||||||
|
@@ -67,6 +67,7 @@ CLEANFILES = \
|
|||||||
hx509.h \
|
hx509.h \
|
||||||
hx509_err.h \
|
hx509_err.h \
|
||||||
k524_err.h \
|
k524_err.h \
|
||||||
|
k5e1_err.h \
|
||||||
kafs.h \
|
kafs.h \
|
||||||
kcm-protos.h \
|
kcm-protos.h \
|
||||||
kdc-private.h \
|
kdc-private.h \
|
||||||
|
@@ -1425,6 +1425,13 @@ static const char *const rcsid[] = { (const char *)rcsid, "@(#)" msg }
|
|||||||
/* Used with login -p */
|
/* Used with login -p */
|
||||||
/* #undef LOGIN_ARGS */
|
/* #undef LOGIN_ARGS */
|
||||||
|
|
||||||
|
/* The size of `time_t', as computed by sizeof. */
|
||||||
|
#if defined (_USE_64BIT_TIME_T) || !defined( _USE_32BIT_TIME_T)
|
||||||
|
#define SIZEOF_TIME_T 8
|
||||||
|
#else
|
||||||
|
#define SIZEOF_TIME_T 4
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef ROKEN_RENAME
|
#ifdef ROKEN_RENAME
|
||||||
#include "roken_rename.h"
|
#include "roken_rename.h"
|
||||||
#endif
|
#endif
|
||||||
|
@@ -451,6 +451,9 @@ void heim_w32_service_thread_detach(void *);
|
|||||||
#define heim_base_exchange_pointer(t,v) __sync_lock_test_and_set((t), (v))
|
#define heim_base_exchange_pointer(t,v) __sync_lock_test_and_set((t), (v))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define heim_base_exchange_32(t,v) heim_base_exchange_pointer((t), (v))
|
||||||
|
#define heim_base_exchange_64(t,v) heim_base_exchange_pointer((t), (v))
|
||||||
|
|
||||||
#elif defined(__sun)
|
#elif defined(__sun)
|
||||||
|
|
||||||
#include <sys/atomic.h>
|
#include <sys/atomic.h>
|
||||||
@@ -461,6 +464,8 @@ void heim_w32_service_thread_detach(void *);
|
|||||||
#define heim_base_atomic_max UINT_MAX
|
#define heim_base_atomic_max UINT_MAX
|
||||||
|
|
||||||
#define heim_base_exchange_pointer(t,v) atomic_swap_ptr((volatile void *)(t), (void *)(v))
|
#define heim_base_exchange_pointer(t,v) atomic_swap_ptr((volatile void *)(t), (void *)(v))
|
||||||
|
#define heim_base_exchange_32(t,v) atomic_swap_32((volatile uint32_t *)(t), (v))
|
||||||
|
#define heim_base_exchange_64(t,v) atomic_swap_64((volatile uint64_t *)(t), (v))
|
||||||
|
|
||||||
#elif defined(_AIX)
|
#elif defined(_AIX)
|
||||||
|
|
||||||
@@ -482,6 +487,28 @@ heim_base_exchange_pointer(void *p, void *newval)
|
|||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline uint32_t
|
||||||
|
heim_base_exchange_32(uint32_t *p, uint32_t newval)
|
||||||
|
{
|
||||||
|
uint32_t val = *p;
|
||||||
|
|
||||||
|
while (!compare_and_swap((atomic_p)p, (int *)&val, (int)newval))
|
||||||
|
;
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint64_t
|
||||||
|
heim_base_exchange_64(uint64_t *p, uint64_t newval)
|
||||||
|
{
|
||||||
|
uint64_t val = *p;
|
||||||
|
|
||||||
|
while (!compare_and_swaplp((atomic_l)p, (long *)&val, (long)newval))
|
||||||
|
;
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
|
|
||||||
#define heim_base_atomic_inc(x) InterlockedIncrement(x)
|
#define heim_base_atomic_inc(x) InterlockedIncrement(x)
|
||||||
@@ -490,6 +517,8 @@ heim_base_exchange_pointer(void *p, void *newval)
|
|||||||
#define heim_base_atomic_max MAXLONG
|
#define heim_base_atomic_max MAXLONG
|
||||||
|
|
||||||
#define heim_base_exchange_pointer(t,v) InterlockedExchangePointer((PVOID volatile *)(t), (PVOID)(v))
|
#define heim_base_exchange_pointer(t,v) InterlockedExchangePointer((PVOID volatile *)(t), (PVOID)(v))
|
||||||
|
#define heim_base_exchange_32(t,v) ((ULONG)InterlockedExchange((LONG volatile *)(t), (LONG)(v)))
|
||||||
|
#define heim_base_exchange_64(t,v) ((ULONG64)InterlockedExchange64((LONG64 violatile *)(t), (LONG64)(v)))
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
@@ -535,4 +564,12 @@ heim_base_exchange_pointer(void *target, void *value)
|
|||||||
|
|
||||||
#endif /* defined(__GNUC__) && defined(HAVE___SYNC_ADD_AND_FETCH) */
|
#endif /* defined(__GNUC__) && defined(HAVE___SYNC_ADD_AND_FETCH) */
|
||||||
|
|
||||||
|
#if SIZEOF_TIME_T == 8
|
||||||
|
#define heim_base_exchange_time_t(t,v) heim_base_exchange_64((t), (v))
|
||||||
|
#elif SIZEOF_TIME_T == 4
|
||||||
|
#define heim_base_exchange_time_t(t,v) heim_base_exchange_32((t), (v))
|
||||||
|
#else
|
||||||
|
#error set SIZEOF_TIME_T for your platform
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* HEIM_BASE_H */
|
#endif /* HEIM_BASE_H */
|
||||||
|
@@ -79,6 +79,7 @@ libkrb5_la_LIBADD = \
|
|||||||
$(LIB_libintl) \
|
$(LIB_libintl) \
|
||||||
$(LIBADD_roken) \
|
$(LIBADD_roken) \
|
||||||
$(PTHREAD_LIBADD) \
|
$(PTHREAD_LIBADD) \
|
||||||
|
$(LIB_add_key) \
|
||||||
$(LIB_door_create) \
|
$(LIB_door_create) \
|
||||||
$(LIB_dlopen)
|
$(LIB_dlopen)
|
||||||
|
|
||||||
@@ -93,12 +94,13 @@ librfc3961_la_LIBADD = \
|
|||||||
$(LIB_libintl) \
|
$(LIB_libintl) \
|
||||||
$(LIBADD_roken) \
|
$(LIBADD_roken) \
|
||||||
$(PTHREAD_LIBADD) \
|
$(PTHREAD_LIBADD) \
|
||||||
|
$(LIB_add_key) \
|
||||||
$(LIB_door_create) \
|
$(LIB_door_create) \
|
||||||
$(LIB_dlopen)
|
$(LIB_dlopen)
|
||||||
|
|
||||||
lib_LTLIBRARIES = libkrb5.la
|
lib_LTLIBRARIES = libkrb5.la
|
||||||
|
|
||||||
ERR_FILES = krb5_err.c krb_err.c heim_err.c k524_err.c
|
ERR_FILES = krb5_err.c krb_err.c heim_err.c k524_err.c k5e1_err.c
|
||||||
|
|
||||||
libkrb5_la_CPPFLAGS = \
|
libkrb5_la_CPPFLAGS = \
|
||||||
-DBUILD_KRB5_LIB \
|
-DBUILD_KRB5_LIB \
|
||||||
@@ -183,6 +185,7 @@ dist_libkrb5_la_SOURCES = \
|
|||||||
keytab_memory.c \
|
keytab_memory.c \
|
||||||
krb5_locl.h \
|
krb5_locl.h \
|
||||||
krb5-v4compat.h \
|
krb5-v4compat.h \
|
||||||
|
krcache.c \
|
||||||
krbhst.c \
|
krbhst.c \
|
||||||
kuserok.c \
|
kuserok.c \
|
||||||
kuserok_plugin.h \
|
kuserok_plugin.h \
|
||||||
@@ -276,7 +279,7 @@ ALL_OBJECTS += $(test_renew_OBJECTS)
|
|||||||
ALL_OBJECTS += $(test_rfc3961_OBJECTS)
|
ALL_OBJECTS += $(test_rfc3961_OBJECTS)
|
||||||
|
|
||||||
$(ALL_OBJECTS): $(srcdir)/krb5-protos.h $(srcdir)/krb5-private.h
|
$(ALL_OBJECTS): $(srcdir)/krb5-protos.h $(srcdir)/krb5-private.h
|
||||||
$(ALL_OBJECTS): krb5_err.h heim_err.h k524_err.h krb5_err.h krb_err.h k524_err.h
|
$(ALL_OBJECTS): krb5_err.h heim_err.h k524_err.h k5e1_err.h krb_err.h k524_err.h
|
||||||
|
|
||||||
librfc3961_la_SOURCES = \
|
librfc3961_la_SOURCES = \
|
||||||
crc.c \
|
crc.c \
|
||||||
@@ -380,7 +383,7 @@ dist_include_HEADERS = \
|
|||||||
noinst_HEADERS = $(srcdir)/krb5-private.h
|
noinst_HEADERS = $(srcdir)/krb5-private.h
|
||||||
|
|
||||||
|
|
||||||
nodist_include_HEADERS = krb5_err.h heim_err.h k524_err.h
|
nodist_include_HEADERS = krb5_err.h heim_err.h k524_err.h k5e1_err.h
|
||||||
|
|
||||||
# XXX use nobase_include_HEADERS = krb5/locate_plugin.h
|
# XXX use nobase_include_HEADERS = krb5/locate_plugin.h
|
||||||
krb5dir = $(includedir)/krb5
|
krb5dir = $(includedir)/krb5
|
||||||
@@ -396,9 +399,10 @@ CLEANFILES = \
|
|||||||
krb5_err.c krb5_err.h \
|
krb5_err.c krb5_err.h \
|
||||||
krb_err.c krb_err.h \
|
krb_err.c krb_err.h \
|
||||||
heim_err.c heim_err.h \
|
heim_err.c heim_err.h \
|
||||||
k524_err.c k524_err.h
|
k524_err.c k524_err.h \
|
||||||
|
k5e1_err.c k5e1_err.h
|
||||||
|
|
||||||
$(libkrb5_la_OBJECTS): krb5_err.h krb_err.h heim_err.h k524_err.h
|
$(libkrb5_la_OBJECTS): krb5_err.h krb_err.h heim_err.h k524_err.h k5e1_err.h
|
||||||
|
|
||||||
test_config_strings.out: test_config_strings.cfg
|
test_config_strings.out: test_config_strings.cfg
|
||||||
$(CP) $(srcdir)/test_config_strings.cfg test_config_strings.out
|
$(CP) $(srcdir)/test_config_strings.cfg test_config_strings.out
|
||||||
@@ -413,6 +417,7 @@ EXTRA_DIST = \
|
|||||||
krb_err.et \
|
krb_err.et \
|
||||||
heim_err.et \
|
heim_err.et \
|
||||||
k524_err.et \
|
k524_err.et \
|
||||||
|
k5e1_err.et \
|
||||||
$(man_MANS) \
|
$(man_MANS) \
|
||||||
version-script.map \
|
version-script.map \
|
||||||
test_config_strings.cfg \
|
test_config_strings.cfg \
|
||||||
@@ -429,3 +434,5 @@ krb_err.h: krb_err.et
|
|||||||
heim_err.h: heim_err.et
|
heim_err.h: heim_err.et
|
||||||
|
|
||||||
k524_err.h: k524_err.et
|
k524_err.h: k524_err.et
|
||||||
|
|
||||||
|
k5e1_err.h: k5e1_err.et
|
||||||
|
@@ -166,11 +166,13 @@ libkrb5_gen_OBJS= \
|
|||||||
$(OBJ)\krb5_err.obj \
|
$(OBJ)\krb5_err.obj \
|
||||||
$(OBJ)\krb_err.obj \
|
$(OBJ)\krb_err.obj \
|
||||||
$(OBJ)\heim_err.obj \
|
$(OBJ)\heim_err.obj \
|
||||||
$(OBJ)\k524_err.obj
|
$(OBJ)\k524_err.obj \
|
||||||
|
$(OBJ)\k5e1_err.obj
|
||||||
|
|
||||||
INCFILES= \
|
INCFILES= \
|
||||||
$(INCDIR)\heim_err.h \
|
$(INCDIR)\heim_err.h \
|
||||||
$(INCDIR)\k524_err.h \
|
$(INCDIR)\k524_err.h \
|
||||||
|
$(INCDIR)\k5e1_err.h \
|
||||||
$(INCDIR)\kcm.h \
|
$(INCDIR)\kcm.h \
|
||||||
$(INCDIR)\krb_err.h \
|
$(INCDIR)\krb_err.h \
|
||||||
$(INCDIR)\krb5.h \
|
$(INCDIR)\krb5.h \
|
||||||
@@ -346,6 +348,11 @@ $(OBJ)\k524_err.c $(OBJ)\k524_err.h: k524_err.et
|
|||||||
$(BINDIR)\compile_et.exe $(SRCDIR)\k524_err.et
|
$(BINDIR)\compile_et.exe $(SRCDIR)\k524_err.et
|
||||||
cd $(SRCDIR)
|
cd $(SRCDIR)
|
||||||
|
|
||||||
|
$(OBJ)\k5e1_err.c $(OBJ)\k5e1_err.h: k5e1_err.et
|
||||||
|
cd $(OBJ)
|
||||||
|
$(BINDIR)\compile_et.exe $(SRCDIR)\k5e1_err.et
|
||||||
|
cd $(SRCDIR)
|
||||||
|
|
||||||
#----------------------------------------------------------------------
|
#----------------------------------------------------------------------
|
||||||
# libkrb5
|
# libkrb5
|
||||||
|
|
||||||
|
@@ -64,3 +64,4 @@ KRB5_LIB_VARIABLE const char *krb5_cc_type_memory = "MEMORY";
|
|||||||
KRB5_LIB_VARIABLE const char *krb5_cc_type_kcm = "KCM";
|
KRB5_LIB_VARIABLE const char *krb5_cc_type_kcm = "KCM";
|
||||||
KRB5_LIB_VARIABLE const char *krb5_cc_type_scc = "SCC";
|
KRB5_LIB_VARIABLE const char *krb5_cc_type_scc = "SCC";
|
||||||
KRB5_LIB_VARIABLE const char *krb5_cc_type_dcc = "DIR";
|
KRB5_LIB_VARIABLE const char *krb5_cc_type_dcc = "DIR";
|
||||||
|
KRB5_LIB_VARIABLE const char *krb5_cc_type_keyring = "KEYRING";
|
||||||
|
@@ -290,6 +290,9 @@ cc_ops_register(krb5_context context)
|
|||||||
krb5_cc_register(context, &krb5_akcm_ops, TRUE);
|
krb5_cc_register(context, &krb5_akcm_ops, TRUE);
|
||||||
#endif
|
#endif
|
||||||
krb5_cc_register(context, &krb5_kcm_ops, TRUE);
|
krb5_cc_register(context, &krb5_kcm_ops, TRUE);
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_KEYUTILS_H)
|
||||||
|
krb5_cc_register(context, &krb5_krcc_ops, TRUE);
|
||||||
#endif
|
#endif
|
||||||
_krb5_load_ccache_plugins(context);
|
_krb5_load_ccache_plugins(context);
|
||||||
return 0;
|
return 0;
|
||||||
@@ -1116,6 +1119,7 @@ krb5_init_ets(krb5_context context)
|
|||||||
krb5_add_et_list(context, initialize_heim_error_table_r);
|
krb5_add_et_list(context, initialize_heim_error_table_r);
|
||||||
|
|
||||||
krb5_add_et_list(context, initialize_k524_error_table_r);
|
krb5_add_et_list(context, initialize_k524_error_table_r);
|
||||||
|
krb5_add_et_list(context, initialize_k5e1_error_table_r);
|
||||||
|
|
||||||
#ifdef COM_ERR_BINDDOMAIN_krb5
|
#ifdef COM_ERR_BINDDOMAIN_krb5
|
||||||
bindtextdomain(COM_ERR_BINDDOMAIN_krb5, HEIMDAL_LOCALEDIR);
|
bindtextdomain(COM_ERR_BINDDOMAIN_krb5, HEIMDAL_LOCALEDIR);
|
||||||
|
13
lib/krb5/k5e1_err.et
Normal file
13
lib/krb5/k5e1_err.et
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
id "$Id$"
|
||||||
|
|
||||||
|
error_table k5e1
|
||||||
|
|
||||||
|
index 4
|
||||||
|
|
||||||
|
prefix KRB5_DCC
|
||||||
|
error_code CANNOT_CREATE, "Can't create new subsidiary cache"
|
||||||
|
|
||||||
|
prefix KRB5_KCC
|
||||||
|
error_code INVALID_ANCHOR, "Invalid keyring anchor name"
|
||||||
|
error_code UNKNOWN_VERSION, "Unknown keyring collection version"
|
||||||
|
error_code INVALID_UID, "Invalid UID in persistent keyring name"
|
@@ -45,6 +45,7 @@
|
|||||||
#include <krb5_err.h>
|
#include <krb5_err.h>
|
||||||
#include <heim_err.h>
|
#include <heim_err.h>
|
||||||
#include <k524_err.h>
|
#include <k524_err.h>
|
||||||
|
#include <k5e1_err.h>
|
||||||
|
|
||||||
#include <krb5_asn1.h>
|
#include <krb5_asn1.h>
|
||||||
|
|
||||||
@@ -961,6 +962,7 @@ extern KRB5_LIB_VARIABLE const krb5_cc_ops krb5_mcc_ops;
|
|||||||
extern KRB5_LIB_VARIABLE const krb5_cc_ops krb5_kcm_ops;
|
extern KRB5_LIB_VARIABLE const krb5_cc_ops krb5_kcm_ops;
|
||||||
extern KRB5_LIB_VARIABLE const krb5_cc_ops krb5_akcm_ops;
|
extern KRB5_LIB_VARIABLE const krb5_cc_ops krb5_akcm_ops;
|
||||||
extern KRB5_LIB_VARIABLE const krb5_cc_ops krb5_scc_ops;
|
extern KRB5_LIB_VARIABLE const krb5_cc_ops krb5_scc_ops;
|
||||||
|
extern KRB5_LIB_VARIABLE const krb5_cc_ops krb5_krcc_ops;
|
||||||
|
|
||||||
extern KRB5_LIB_VARIABLE const krb5_kt_ops krb5_fkt_ops;
|
extern KRB5_LIB_VARIABLE const krb5_kt_ops krb5_fkt_ops;
|
||||||
extern KRB5_LIB_VARIABLE const krb5_kt_ops krb5_wrfkt_ops;
|
extern KRB5_LIB_VARIABLE const krb5_kt_ops krb5_wrfkt_ops;
|
||||||
@@ -975,6 +977,7 @@ extern KRB5_LIB_VARIABLE const char *krb5_cc_type_memory;
|
|||||||
extern KRB5_LIB_VARIABLE const char *krb5_cc_type_kcm;
|
extern KRB5_LIB_VARIABLE const char *krb5_cc_type_kcm;
|
||||||
extern KRB5_LIB_VARIABLE const char *krb5_cc_type_scc;
|
extern KRB5_LIB_VARIABLE const char *krb5_cc_type_scc;
|
||||||
extern KRB5_LIB_VARIABLE const char *krb5_cc_type_dcc;
|
extern KRB5_LIB_VARIABLE const char *krb5_cc_type_dcc;
|
||||||
|
extern KRB5_LIB_VARIABLE const char *krb5_cc_type_keyring;
|
||||||
|
|
||||||
#endif /* __KRB5_H__ */
|
#endif /* __KRB5_H__ */
|
||||||
|
|
||||||
|
@@ -142,6 +142,7 @@ struct _krb5_krb_auth_data;
|
|||||||
|
|
||||||
#include <krb5.h>
|
#include <krb5.h>
|
||||||
#include <krb5_err.h>
|
#include <krb5_err.h>
|
||||||
|
#include <k5e1_err.h>
|
||||||
#include <asn1_err.h>
|
#include <asn1_err.h>
|
||||||
#ifdef PKINIT
|
#ifdef PKINIT
|
||||||
#include <hx509.h>
|
#include <hx509.h>
|
||||||
|
2034
lib/krb5/krcache.c
Normal file
2034
lib/krb5/krcache.c
Normal file
File diff suppressed because it is too large
Load Diff
@@ -717,6 +717,8 @@ EXPORTS
|
|||||||
initialize_heim_error_table
|
initialize_heim_error_table
|
||||||
initialize_k524_error_table_r
|
initialize_k524_error_table_r
|
||||||
initialize_k524_error_table
|
initialize_k524_error_table
|
||||||
|
initialize_k5e1_error_table_r
|
||||||
|
initialize_k5e1_error_table
|
||||||
|
|
||||||
; variables
|
; variables
|
||||||
krb5_mcc_ops DATA
|
krb5_mcc_ops DATA
|
||||||
@@ -727,6 +729,9 @@ EXPORTS
|
|||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_KCM
|
#ifdef HAVE_KCM
|
||||||
krb5_kcm_ops DATA
|
krb5_kcm_ops DATA
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_KEYUTILS
|
||||||
|
krb5_krcc_ops DATA
|
||||||
#endif
|
#endif
|
||||||
krb5_wrfkt_ops DATA
|
krb5_wrfkt_ops DATA
|
||||||
krb5_mkt_ops DATA
|
krb5_mkt_ops DATA
|
||||||
@@ -740,6 +745,7 @@ EXPORTS
|
|||||||
krb5_cc_type_file DATA
|
krb5_cc_type_file DATA
|
||||||
krb5_cc_type_memory DATA
|
krb5_cc_type_memory DATA
|
||||||
krb5_cc_type_kcm DATA
|
krb5_cc_type_kcm DATA
|
||||||
|
krb5_cc_type_keyring DATA
|
||||||
krb5_cc_type_scc DATA
|
krb5_cc_type_scc DATA
|
||||||
|
|
||||||
; Shared with GSSAPI krb5
|
; Shared with GSSAPI krb5
|
||||||
|
@@ -391,6 +391,7 @@ test_cache_iter(krb5_context context, const char *type, int destroy)
|
|||||||
krb5_principal principal;
|
krb5_principal principal;
|
||||||
char *name;
|
char *name;
|
||||||
|
|
||||||
|
heim_assert(id != NULL, "credentials cache is non-NULL");
|
||||||
if (debug_flag)
|
if (debug_flag)
|
||||||
printf("name: %s\n", krb5_cc_get_name(context, id));
|
printf("name: %s\n", krb5_cc_get_name(context, id));
|
||||||
ret = krb5_cc_get_principal(context, id, &principal);
|
ret = krb5_cc_get_principal(context, id, &principal);
|
||||||
@@ -683,6 +684,9 @@ main(int argc, char **argv)
|
|||||||
#ifdef USE_SQLITE
|
#ifdef USE_SQLITE
|
||||||
test_cache_remove(context, krb5_cc_type_scc);
|
test_cache_remove(context, krb5_cc_type_scc);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_KEYUTILS_H
|
||||||
|
test_cache_remove(context, krb5_cc_type_keyring);
|
||||||
|
#endif
|
||||||
|
|
||||||
test_default_name(context);
|
test_default_name(context);
|
||||||
test_mcache(context);
|
test_mcache(context);
|
||||||
@@ -693,6 +697,9 @@ main(int argc, char **argv)
|
|||||||
#endif
|
#endif
|
||||||
test_init_vs_destroy(context, krb5_cc_type_scc);
|
test_init_vs_destroy(context, krb5_cc_type_scc);
|
||||||
test_init_vs_destroy(context, krb5_cc_type_dcc);
|
test_init_vs_destroy(context, krb5_cc_type_dcc);
|
||||||
|
#ifdef HAVE_KEYUTILS_H
|
||||||
|
test_init_vs_destroy(context, krb5_cc_type_keyring);
|
||||||
|
#endif
|
||||||
test_mcc_default();
|
test_mcc_default();
|
||||||
test_def_cc_name(context);
|
test_def_cc_name(context);
|
||||||
|
|
||||||
@@ -722,6 +729,10 @@ main(int argc, char **argv)
|
|||||||
test_cache_iter(context, krb5_cc_type_dcc, 0);
|
test_cache_iter(context, krb5_cc_type_dcc, 0);
|
||||||
test_cache_iter(context, krb5_cc_type_dcc, 1);
|
test_cache_iter(context, krb5_cc_type_dcc, 1);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_KEYUTILS_H
|
||||||
|
test_cache_iter(context, krb5_cc_type_keyring, 0);
|
||||||
|
test_cache_iter(context, krb5_cc_type_keyring, 1);
|
||||||
|
#endif
|
||||||
|
|
||||||
test_copy(context, krb5_cc_type_file, krb5_cc_type_file);
|
test_copy(context, krb5_cc_type_file, krb5_cc_type_file);
|
||||||
test_copy(context, krb5_cc_type_memory, krb5_cc_type_memory);
|
test_copy(context, krb5_cc_type_memory, krb5_cc_type_memory);
|
||||||
@@ -736,6 +747,34 @@ main(int argc, char **argv)
|
|||||||
test_copy(context, krb5_cc_type_dcc, krb5_cc_type_file);
|
test_copy(context, krb5_cc_type_dcc, krb5_cc_type_file);
|
||||||
test_copy(context, krb5_cc_type_dcc, krb5_cc_type_scc);
|
test_copy(context, krb5_cc_type_dcc, krb5_cc_type_scc);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_KEYUTILS_H
|
||||||
|
test_copy(context, krb5_cc_type_keyring, krb5_cc_type_file);
|
||||||
|
test_copy(context, krb5_cc_type_file, krb5_cc_type_file);
|
||||||
|
test_copy(context, "KEYRING:", "KEYRING:bar");
|
||||||
|
test_copy(context, "KEYRING:bar", "KEYRING:baz");
|
||||||
|
# ifdef HAVE_KEYCTL_GET_PERSISTENT
|
||||||
|
test_copy(context, krb5_cc_type_file, "KEYRING:persistent");
|
||||||
|
test_copy(context, "KEYRING:persistent:", krb5_cc_type_file);
|
||||||
|
test_copy(context, krb5_cc_type_file, "KEYRING:persistent:foo");
|
||||||
|
test_copy(context, "KEYRING:persistent:foo", krb5_cc_type_file);
|
||||||
|
# endif
|
||||||
|
test_copy(context, krb5_cc_type_memory, "KEYRING:process:");
|
||||||
|
test_copy(context, "KEYRING:process:", krb5_cc_type_memory);
|
||||||
|
test_copy(context, krb5_cc_type_memory, "KEYRING:process:foo");
|
||||||
|
test_copy(context, "KEYRING:process:foo", krb5_cc_type_memory);
|
||||||
|
test_copy(context, krb5_cc_type_memory, "KEYRING:thread:");
|
||||||
|
test_copy(context, "KEYRING:thread:", krb5_cc_type_memory);
|
||||||
|
test_copy(context, krb5_cc_type_memory, "KEYRING:thread:foo");
|
||||||
|
test_copy(context, "KEYRING:thread:foo", krb5_cc_type_memory);
|
||||||
|
test_copy(context, krb5_cc_type_memory, "KEYRING:session:");
|
||||||
|
test_copy(context, "KEYRING:session:", krb5_cc_type_memory);
|
||||||
|
test_copy(context, krb5_cc_type_memory, "KEYRING:session:foo");
|
||||||
|
test_copy(context, "KEYRING:session:foo", krb5_cc_type_memory);
|
||||||
|
test_copy(context, krb5_cc_type_file, "KEYRING:user:");
|
||||||
|
test_copy(context, "KEYRING:user:", krb5_cc_type_file);
|
||||||
|
test_copy(context, krb5_cc_type_file, "KEYRING:user:foo");
|
||||||
|
test_copy(context, "KEYRING:user:foo", krb5_cc_type_memory);
|
||||||
|
#endif /* HAVE_KEYUTILS_H */
|
||||||
|
|
||||||
test_move(context, krb5_cc_type_file);
|
test_move(context, krb5_cc_type_file);
|
||||||
test_move(context, krb5_cc_type_memory);
|
test_move(context, krb5_cc_type_memory);
|
||||||
@@ -746,6 +785,21 @@ main(int argc, char **argv)
|
|||||||
#if 0
|
#if 0
|
||||||
test_move(context, krb5_cc_type_dcc);
|
test_move(context, krb5_cc_type_dcc);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_KEYUTILS_H
|
||||||
|
test_move(context, krb5_cc_type_keyring);
|
||||||
|
# ifdef HAVE_KEYCTL_GET_PERSISTENT
|
||||||
|
test_move(context, "KEYRING:persistent:");
|
||||||
|
test_move(context, "KEYRING:persistent:foo");
|
||||||
|
# endif
|
||||||
|
test_move(context, "KEYRING:process:");
|
||||||
|
test_move(context, "KEYRING:process:foo");
|
||||||
|
test_move(context, "KEYRING:thread:");
|
||||||
|
test_move(context, "KEYRING:thread:foo");
|
||||||
|
test_move(context, "KEYRING:session:");
|
||||||
|
test_move(context, "KEYRING:session:foo");
|
||||||
|
test_move(context, "KEYRING:user:");
|
||||||
|
test_move(context, "KEYRING:user:foo");
|
||||||
|
#endif /* HAVE_KEYUTILS_H */
|
||||||
|
|
||||||
test_prefix_ops(context, "FILE:/tmp/foo", &krb5_fcc_ops);
|
test_prefix_ops(context, "FILE:/tmp/foo", &krb5_fcc_ops);
|
||||||
test_prefix_ops(context, "FILE", &krb5_fcc_ops);
|
test_prefix_ops(context, "FILE", &krb5_fcc_ops);
|
||||||
@@ -760,6 +814,10 @@ main(int argc, char **argv)
|
|||||||
test_prefix_ops(context, "DIR:", &krb5_dcc_ops);
|
test_prefix_ops(context, "DIR:", &krb5_dcc_ops);
|
||||||
test_prefix_ops(context, "DIR:tkt1", &krb5_dcc_ops);
|
test_prefix_ops(context, "DIR:tkt1", &krb5_dcc_ops);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_KEYUTILS_H
|
||||||
|
test_prefix_ops(context, "KEYRING:", &krb5_krcc_ops);
|
||||||
|
test_prefix_ops(context, "KEYRING:foo", &krb5_krcc_ops);
|
||||||
|
#endif /* HAVE_KEYUTILS_H */
|
||||||
|
|
||||||
krb5_cc_destroy(context, id1);
|
krb5_cc_destroy(context, id1);
|
||||||
krb5_cc_destroy(context, id2);
|
krb5_cc_destroy(context, id2);
|
||||||
|
@@ -709,12 +709,15 @@ HEIMDAL_KRB5_2.0 {
|
|||||||
initialize_heim_error_table;
|
initialize_heim_error_table;
|
||||||
initialize_k524_error_table_r;
|
initialize_k524_error_table_r;
|
||||||
initialize_k524_error_table;
|
initialize_k524_error_table;
|
||||||
|
initialize_k5e1_error_table_r;
|
||||||
|
initialize_k5e1_error_table;
|
||||||
|
|
||||||
# variables
|
# variables
|
||||||
krb5_dcc_ops;
|
krb5_dcc_ops;
|
||||||
krb5_mcc_ops;
|
krb5_mcc_ops;
|
||||||
krb5_acc_ops;
|
krb5_acc_ops;
|
||||||
krb5_fcc_ops;
|
krb5_fcc_ops;
|
||||||
|
krb5_krcc_ops;
|
||||||
krb5_scc_ops;
|
krb5_scc_ops;
|
||||||
krb5_kcm_ops;
|
krb5_kcm_ops;
|
||||||
krb5_wrfkt_ops;
|
krb5_wrfkt_ops;
|
||||||
@@ -730,6 +733,7 @@ HEIMDAL_KRB5_2.0 {
|
|||||||
krb5_cc_type_file;
|
krb5_cc_type_file;
|
||||||
krb5_cc_type_memory;
|
krb5_cc_type_memory;
|
||||||
krb5_cc_type_kcm;
|
krb5_cc_type_kcm;
|
||||||
|
krb5_cc_type_keyring;
|
||||||
krb5_cc_type_scc;
|
krb5_cc_type_scc;
|
||||||
|
|
||||||
# shared with HDB
|
# shared with HDB
|
||||||
|
@@ -73,6 +73,7 @@ INCFILES=\
|
|||||||
$(SDKINCDIR)\krb5\asn1_err.h \
|
$(SDKINCDIR)\krb5\asn1_err.h \
|
||||||
$(SDKINCDIR)\krb5\heim_err.h \
|
$(SDKINCDIR)\krb5\heim_err.h \
|
||||||
$(SDKINCDIR)\krb5\k524_err.h \
|
$(SDKINCDIR)\krb5\k524_err.h \
|
||||||
|
$(SDKINCDIR)\krb5\k5e1_err.h \
|
||||||
$(SDKINCDIR)\krb5\krb5-protos.h \
|
$(SDKINCDIR)\krb5\krb5-protos.h \
|
||||||
$(SDKINCDIR)\krb5\krb5-types.h \
|
$(SDKINCDIR)\krb5\krb5-types.h \
|
||||||
$(SDKINCDIR)\krb5\krb5-v4compat.h \
|
$(SDKINCDIR)\krb5\krb5-v4compat.h \
|
||||||
@@ -105,6 +106,7 @@ INCFILES=\
|
|||||||
$(SDKINCDIR)\heimdal\asn1_err.h \
|
$(SDKINCDIR)\heimdal\asn1_err.h \
|
||||||
$(SDKINCDIR)\heimdal\heim_err.h \
|
$(SDKINCDIR)\heimdal\heim_err.h \
|
||||||
$(SDKINCDIR)\heimdal\k524_err.h \
|
$(SDKINCDIR)\heimdal\k524_err.h \
|
||||||
|
$(SDKINCDIR)\heimdal\k5e1_err.h \
|
||||||
$(SDKINCDIR)\heimdal\krb5-protos.h \
|
$(SDKINCDIR)\heimdal\krb5-protos.h \
|
||||||
$(SDKINCDIR)\heimdal\krb5-types.h \
|
$(SDKINCDIR)\heimdal\krb5-types.h \
|
||||||
$(SDKINCDIR)\heimdal\krb5-v4compat.h \
|
$(SDKINCDIR)\heimdal\krb5-v4compat.h \
|
||||||
|
Reference in New Issue
Block a user