pam_pkcs11-0.6.12/0000755000175000017500000000000014367517111010546 500000000000000pam_pkcs11-0.6.12/config.h.in0000644000175000017500000001301114367211505012503 00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* directory containing pam_pkcs11.conf (default /etc/pam_pkcs11) */ #undef CONFDIR /* Define to 1 if you want to include debugging code. */ #undef DEBUG /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS /* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework. */ #undef HAVE_CFLOCALECOPYCURRENT /* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework. */ #undef HAVE_CFPREFERENCESCOPYAPPVALUE /* Define to 1 if you have the header file. */ #undef HAVE_CURL_CURL_H /* Define to 1 if you have the `daemon' function. */ #undef HAVE_DAEMON /* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the `dlopen' function. */ #undef HAVE_DLOPEN /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ #undef HAVE_DOPRNT /* Define to 1 if you have the header file. */ #undef HAVE_ERROR_H /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define if you have the iconv() function and it works. */ #undef HAVE_ICONV /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the `ldap_get_option' function. */ #undef HAVE_LDAP_GET_OPTION /* Define to 1 if you have the header file. */ #undef HAVE_LDAP_H /* Define to 1 if you have the `ldap_init' function. */ #undef HAVE_LDAP_INIT /* Define to 1 if you have the `ldap_initialize' function. */ #undef HAVE_LDAP_INITIALIZE /* Define to 1 if you have the `ldap_set_option' function. */ #undef HAVE_LDAP_SET_OPTION /* Define to 1 if you have the `ldap_start_tls' function. */ #undef HAVE_LDAP_START_TLS /* Define to 1 if you have the `ldap_start_tls_s' function. */ #undef HAVE_LDAP_START_TLS_S /* Define to 1 if you have the header file. */ #undef HAVE_LIBP11_H /* Define to 1 if you have the `pam' library (-lpam). */ #undef HAVE_LIBPAM /* Define to 1 if your system has a GNU libc compatible `malloc' function, and to 0 otherwise. */ #undef HAVE_MALLOC /* Define to 1 if you have the `memset' function. */ #undef HAVE_MEMSET /* Define if you have POSIX threads libraries and header files. */ #undef HAVE_PTHREAD /* Have PTHREAD_PRIO_INHERIT. */ #undef HAVE_PTHREAD_PRIO_INHERIT /* Define to 1 if your system has a GNU libc compatible `realloc' function, and to 0 otherwise. */ #undef HAVE_REALLOC /* Define to 1 if you have the header file. */ #undef HAVE_SECURITY_PAM_EXT_H /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ #undef HAVE_STAT_EMPTY_STRING_BUG /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDIO_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP /* Define to 1 if you have the `strerror' function. */ #undef HAVE_STRERROR /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strndup' function. */ #undef HAVE_STRNDUP /* Define to 1 if you have the header file. */ #undef HAVE_SYSLOG_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the `vprintf' function. */ #undef HAVE_VPRINTF /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ #undef LSTAT_FOLLOWS_SLASHED_SYMLINK /* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to necessary symbol if this constant uses a non-standard name on your system. */ #undef PTHREAD_CREATE_JOINABLE /* Define to 1 if all of the C90 standard headers exist (not just the ones required in a freestanding environment). This macro is provided for backward compatibility; new code need not use it. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a `char[]'. */ #undef YYTEXT_POINTER /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to rpl_malloc if the replacement function should be used. */ #undef malloc /* Define to rpl_realloc if the replacement function should be used. */ #undef realloc /* Define to `unsigned int' if does not define. */ #undef size_t pam_pkcs11-0.6.12/tools/0000755000175000017500000000000014367517111011706 500000000000000pam_pkcs11-0.6.12/tools/Makefile.in0000644000175000017500000004066414367517060013710 00000000000000# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # $Id$ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = tools ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/aclocal/ax_pthread.m4 \ $(top_srcdir)/aclocal/gettext.m4 \ $(top_srcdir)/aclocal/iconv.m4 \ $(top_srcdir)/aclocal/intlmacosx.m4 \ $(top_srcdir)/aclocal/lib-ld.m4 \ $(top_srcdir)/aclocal/lib-link.m4 \ $(top_srcdir)/aclocal/lib-prefix.m4 \ $(top_srcdir)/aclocal/libtool.m4 \ $(top_srcdir)/aclocal/ltoptions.m4 \ $(top_srcdir)/aclocal/ltsugar.m4 \ $(top_srcdir)/aclocal/ltversion.m4 \ $(top_srcdir)/aclocal/lt~obsolete.m4 \ $(top_srcdir)/aclocal/nls.m4 $(top_srcdir)/aclocal/po.m4 \ $(top_srcdir)/aclocal/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(bindir)" SCRIPTS = $(bin_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CRYPTO_CFLAGS = @CRYPTO_CFLAGS@ CRYPTO_LIBS = @CRYPTO_LIBS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CURL_CFLAGS = @CURL_CFLAGS@ CURL_LIBS = @CURL_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDAP_CFLAGS = @LDAP_CFLAGS@ LDAP_LIBS = @LDAP_LIBS@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBDL = @LIBDL@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ NSS_CFLAGS = @NSS_CFLAGS@ NSS_LIBS = @NSS_LIBS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PCSC_CFLAGS = @PCSC_CFLAGS@ PCSC_LIBS = @PCSC_LIBS@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XSLTPROC = @XSLTPROC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ confdir = @confdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ MAINTAINERCLEANFILES = Makefile.in bin_SCRIPTS = pkcs11_make_hash_link EXTRA_DIST = $(bin_SCRIPTS) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign tools/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binSCRIPTS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-binSCRIPTS install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-binSCRIPTS .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: pam_pkcs11-0.6.12/tools/pkcs11_make_hash_link0000755000175000017500000000433614367517037015710 00000000000000#!/bin/bash # # Shell-Script which creates a symbolic hash-link for each CA certificate # and each CRL in the given directory. # Copyright (C) 2003 Mario Strasser # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 2 of the License, or (at your # option) any later version. See . # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License # for more details. # # $Id$ # OPENSSL="openssl" # function to create the hash link function mk_link() { nr=0 while [ -e $hash$nr ]; do if [ $file -ef $hash$nr ] || [ -h $file ]; then break; fi nr=`expr $nr + 1` done if [ ! $file -ef $hash$nr ] && [ ! -h $file ]; then ln -s $file $hash$nr fi } # change to the target directory if [ $1 ]; then if [ -d $1 ]; then cd $1 else echo "Error: $1 is not a valid directory!" exit -1 fi fi # test the presence of openssl if [ -z "`$OPENSSL version 2> /dev/null`" ] then echo "$OPENSSL not found! install openssl first" exit -1 fi # process all files for file in *; do hash=`$OPENSSL x509 -inform pem -in $file -noout -hash 2> /dev/null` if [ ! -z "$hash" ]; then is_ca=`$OPENSSL x509 -inform pem -in $file -noout -text | grep 'CA:TRUE'` if [ ! -z "$is_ca" ]; then hash=$hash. mk_link fi continue fi hash=`$OPENSSL x509 -inform der -in $file -noout -hash 2> /dev/null` if [ ! -z "$hash" ]; then is_ca=`$OPENSSL x509 -inform der -in $file -noout -text | grep 'CA:TRUE'` if [ ! -z "$is_ca" ]; then hash=$hash. mk_link fi continue fi hash=`$OPENSSL crl -inform pem -in $file -noout -hash 2> /dev/null` if [ ! -z "$hash" ]; then hash=$hash.r mk_link continue fi hash=`$OPENSSL crl -inform der -in $file -noout -hash 2> /dev/null` if [ ! -z "$hash" ]; then hash=$hash.r mk_link continue fi # nothing can be done with the file echo "we got a problem with: $file" done exit 0 pam_pkcs11-0.6.12/tools/Makefile.am0000644000175000017500000000015613553631313013661 00000000000000# $Id$ MAINTAINERCLEANFILES = Makefile.in bin_SCRIPTS = pkcs11_make_hash_link EXTRA_DIST = $(bin_SCRIPTS) pam_pkcs11-0.6.12/Makefile.in0000644000175000017500000006667314367517060012560 00000000000000# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # $Id$ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/aclocal/ax_pthread.m4 \ $(top_srcdir)/aclocal/gettext.m4 \ $(top_srcdir)/aclocal/iconv.m4 \ $(top_srcdir)/aclocal/intlmacosx.m4 \ $(top_srcdir)/aclocal/lib-ld.m4 \ $(top_srcdir)/aclocal/lib-link.m4 \ $(top_srcdir)/aclocal/lib-prefix.m4 \ $(top_srcdir)/aclocal/libtool.m4 \ $(top_srcdir)/aclocal/ltoptions.m4 \ $(top_srcdir)/aclocal/ltsugar.m4 \ $(top_srcdir)/aclocal/ltversion.m4 \ $(top_srcdir)/aclocal/lt~obsolete.m4 \ $(top_srcdir)/aclocal/nls.m4 $(top_srcdir)/aclocal/po.m4 \ $(top_srcdir)/aclocal/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir distdir-am dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \ config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL NEWS README TODO \ ar-lib compile config.guess config.rpath config.sub install-sh \ ltmain.sh missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip # Exists only to be overridden by the user if desired. AM_DISTCHECK_DVI_TARGET = dvi distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CRYPTO_CFLAGS = @CRYPTO_CFLAGS@ CRYPTO_LIBS = @CRYPTO_LIBS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CURL_CFLAGS = @CURL_CFLAGS@ CURL_LIBS = @CURL_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDAP_CFLAGS = @LDAP_CFLAGS@ LDAP_LIBS = @LDAP_LIBS@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBDL = @LIBDL@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ NSS_CFLAGS = @NSS_CFLAGS@ NSS_LIBS = @NSS_LIBS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PCSC_CFLAGS = @PCSC_CFLAGS@ PCSC_LIBS = @PCSC_LIBS@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XSLTPROC = @XSLTPROC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ confdir = @confdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = . po doc etc src tools DIST_SUBDIRS = . po doc etc src tools EXTRA_DIST = config.rpath ChangeLog COPYING INSTALL \ NEWS README TODO bootstrap pam_pkcs11.spec ChangeLog.git MAINTAINERCLEANFILES = \ Makefile.in config.h.in configure \ install-sh ltmain.sh missing mkinstalldirs \ compile depcomp config.log config.status \ config.guess config.sub acinclude.m4 aclocal.m4 DEPCLEANFILES = config.log configure AUTOMAKE_OPTIONS = foreign ACLOCAL_AMFLAGS = -I aclocal all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-zstd: distdir tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ *.tar.zst*) \ zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile config.h installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) all install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ clean-libtool cscope cscopelist-am ctags ctags-am dist \ dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ dist-xz dist-zip dist-zstd distcheck distclean \ distclean-generic distclean-hdr distclean-libtool \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile ChangeLog.git: git log --stat --decorate=short > $@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: pam_pkcs11-0.6.12/compile0000755000175000017500000001635014215102164012037 00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2018-03-07.03; # UTC # Copyright (C) 1999-2021 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN* | MSYS*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/* | msys/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: pam_pkcs11-0.6.12/aclocal/0000755000175000017500000000000014367517107012151 500000000000000pam_pkcs11-0.6.12/aclocal/gettext.m40000644000175000017500000003561513553631313014021 00000000000000# gettext.m4 serial 66 (gettext-0.18.2) dnl Copyright (C) 1995-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2006, 2008-2010. dnl Macro to add for using GNU gettext. dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The dnl default (if it is not specified or empty) is 'no-libtool'. dnl INTLSYMBOL should be 'external' for packages with no intl directory, dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. dnl If INTLSYMBOL is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library dnl $(top_builddir)/intl/libintl.a will be created. dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. If NEEDSYMBOL is specified and is dnl 'need-formatstring-macros', then GNU gettext implementations that don't dnl support the ISO C 99 formatstring macros will be ignored. dnl INTLDIR is used to find the intl libraries. If empty, dnl the value '$(top_builddir)/intl/' is used. dnl dnl The result of the configuration is one of three cases: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled dnl and used. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 2) GNU gettext has been found in the system's C library. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 3) No internationalization, always use English msgid. dnl Catalog format: none dnl Catalog extension: none dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. dnl The use of .gmo is historical (it was needed to avoid overwriting the dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl AC_DEFUN([AM_GNU_GETTEXT], [ dnl Argument checking. ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ])])])])]) ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])])]) define([gt_included_intl], ifelse([$1], [external], ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), [yes])) define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) gt_NEEDS_INIT AM_GNU_GETTEXT_NEED([$2]) AC_REQUIRE([AM_PO_SUBDIRS])dnl ifelse(gt_included_intl, yes, [ AC_REQUIRE([AM_INTL_SUBDIR])dnl ]) dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Sometimes libintl requires libiconv, so first search for libiconv. dnl Ideally we would do this search only after the dnl if test "$USE_NLS" = "yes"; then dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT dnl the configure script would need to contain the same shell code dnl again, outside any 'if'. There are two solutions: dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not dnl documented, we avoid it. ifelse(gt_included_intl, yes, , [ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ]) dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation. gt_INTL_MACOSX dnl Set USE_NLS. AC_REQUIRE([AM_NLS]) ifelse(gt_included_intl, yes, [ BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no ]) LIBINTL= LTLIBINTL= POSUB= dnl Add a version number to the cache macros. case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" dnl If we use NLS figure out what method if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no ifelse(gt_included_intl, yes, [ AC_MSG_CHECKING([whether included gettext is requested]) AC_ARG_WITH([included-gettext], [ --with-included-gettext use the GNU gettext library included here], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ]) dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If GNU gettext is available we use this. Else we have dnl to fall back to GNU NLS library. if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], [AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; ]], [[ bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings ]])], [eval "$gt_func_gnugettext_libc=yes"], [eval "$gt_func_gnugettext_libc=no"])]) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl Sometimes libintl requires libiconv, so first search for libiconv. ifelse(gt_included_intl, yes, , [ AM_ICONV_LINK ]) dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) dnl because that would add "-liconv" to LIBINTL and LTLIBINTL dnl even if libiconv doesn't exist. AC_LIB_LINKFLAGS_BODY([intl]) AC_CACHE_CHECK([for GNU gettext in libintl], [$gt_func_gnugettext_libintl], [gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" dnl Now see whether libintl exists and does not depend on libiconv. AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); ]], [[ bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ]])], [eval "$gt_func_gnugettext_libintl=yes"], [eval "$gt_func_gnugettext_libintl=no"]) dnl Now see whether libintl exists and depends on libiconv. if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); ]], [[ bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ]])], [LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" ]) fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS"]) fi dnl If an already present or preinstalled GNU gettext() is found, dnl use it. But if this macro is used in GNU gettext, and GNU dnl gettext is already preinstalled in libintl, we update this dnl libintl. (Cf. the install rule in intl/Makefile.in.) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else dnl Reset the values set by searching for libintl. LIBINTL= LTLIBINTL= INCINTL= fi ifelse(gt_included_intl, yes, [ if test "$gt_use_preinstalled_gnugettext" != "yes"; then dnl GNU gettext is not found in the C library. dnl Fall back on included GNU gettext library. nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions used to generate GNU NLS library. BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi CATOBJEXT= if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions to use GNU gettext tools. CATOBJEXT=.gmo fi ]) if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Some extra flags are needed during linking. LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then AC_DEFINE([ENABLE_NLS], [1], [Define to 1 if translation of program messages to the user's native language is requested.]) else USE_NLS=no fi fi AC_MSG_CHECKING([whether to use NLS]) AC_MSG_RESULT([$USE_NLS]) if test "$USE_NLS" = "yes"; then AC_MSG_CHECKING([where the gettext function comes from]) if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi AC_MSG_RESULT([$gt_source]) fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then AC_MSG_CHECKING([how to link with libintl]) AC_MSG_RESULT([$LIBINTL]) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) fi dnl For backward compatibility. Some packages may be using this. AC_DEFINE([HAVE_GETTEXT], [1], [Define if the GNU gettext() function is already present or preinstalled.]) AC_DEFINE([HAVE_DCGETTEXT], [1], [Define if the GNU dcgettext() function is already present or preinstalled.]) fi dnl We need to process the po/ directory. POSUB=po fi ifelse(gt_included_intl, yes, [ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL dnl to 'yes' because some of the testsuite requires it. if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then BUILD_INCLUDED_LIBINTL=yes fi dnl Make all variables we use known to autoconf. AC_SUBST([BUILD_INCLUDED_LIBINTL]) AC_SUBST([USE_INCLUDED_LIBINTL]) AC_SUBST([CATOBJEXT]) dnl For backward compatibility. Some configure.ins may be using this. nls_cv_header_intl= nls_cv_header_libgt= dnl For backward compatibility. Some Makefiles may be using this. DATADIRNAME=share AC_SUBST([DATADIRNAME]) dnl For backward compatibility. Some Makefiles may be using this. INSTOBJEXT=.mo AC_SUBST([INSTOBJEXT]) dnl For backward compatibility. Some Makefiles may be using this. GENCAT=gencat AC_SUBST([GENCAT]) dnl For backward compatibility. Some Makefiles may be using this. INTLOBJS= if test "$USE_INCLUDED_LIBINTL" = yes; then INTLOBJS="\$(GETTOBJS)" fi AC_SUBST([INTLOBJS]) dnl Enable libtool support if the surrounding package wishes it. INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) ]) dnl For backward compatibility. Some Makefiles may be using this. INTLLIBS="$LIBINTL" AC_SUBST([INTLLIBS]) dnl Make all documented variables known to autoconf. AC_SUBST([LIBINTL]) AC_SUBST([LTLIBINTL]) AC_SUBST([POSUB]) ]) dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. m4_define([gt_NEEDS_INIT], [ m4_divert_text([DEFAULTS], [gt_needs=]) m4_define([gt_NEEDS_INIT], []) ]) dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) AC_DEFUN([AM_GNU_GETTEXT_NEED], [ m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) ]) dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) pam_pkcs11-0.6.12/aclocal/lt~obsolete.m40000644000175000017500000001400714367517057014713 00000000000000# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007, 2009, 2011-2019, 2021-2022 Free # Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) pam_pkcs11-0.6.12/aclocal/lib-ld.m40000644000175000017500000000714313553631313013473 00000000000000# lib-ld.m4 serial 6 dnl Copyright (C) 1996-2003, 2009-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Subroutines of libtool.m4, dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid dnl collision with libtool.m4. dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no. AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], [# I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 /dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL([acl_cv_path_LD], [if test -z "$LD"; then acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$acl_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 . ]) # serial 59 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_PREPARE_CC_BASENAME # ----------------------- m4_defun([_LT_PREPARE_CC_BASENAME], [ # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in @S|@*""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } ])# _LT_PREPARE_CC_BASENAME # _LT_CC_BASENAME(CC) # ------------------- # It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, # but that macro is also expanded into generated libtool script, which # arranges for $SED and $ECHO to be set by different means. m4_defun([_LT_CC_BASENAME], [m4_require([_LT_PREPARE_CC_BASENAME])dnl AC_REQUIRE([_LT_DECL_SED])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl func_cc_basename $1 cc_basename=$func_cc_basename_result ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_DECL_FILECMD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl m4_require([_LT_CMD_TRUNCATE])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC and # ICC, which need '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from 'configure', and 'config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # 'config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain=$ac_aux_dir/ltmain.sh ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the 'libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to 'config.status' so that its # declaration there will have the same value as in 'configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags='_LT_TAGS'dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into 'config.status', and then the shell code to quote escape them in # for loops in 'config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # '#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test 0 = "$lt_write_fail" && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ '$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test 0 != $[#] do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try '$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try '$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test yes = "$silent" && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 _LT_COPYING _LT_LIBTOOL_TAGS # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE _LT_PREPARE_MUNGE_PATH_LIST _LT_PREPARE_CC_BASENAME # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? $SED '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS=$save_LDFLAGS ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR $AR_FLAGS libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR $AR_FLAGS libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) case $MACOSX_DEPLOYMENT_TARGET,$host in 10.[[012]],*|,*powerpc*-darwin[[5-8]]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; *) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test yes = "$lt_cv_ld_force_load"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" _LT_TAGVAR(module_expsym_cmds, $1)="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" m4_if([$1], [CXX], [ if test yes != "$lt_cv_apple_cc_single_mod"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script that will find a shell with a builtin # printf (that we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case $ECHO in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [m4_require([_LT_DECL_SED])dnl AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], [Search for dependent libraries within DIR (or the compiler's sysroot if not specified).])], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([$with_sysroot]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and where our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `$FILECMD conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test yes = "$lt_cv_prog_gnu_ld"; then case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then emul=elf case `$FILECMD conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `$FILECMD conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `$FILECMD conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `$FILECMD conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `$FILECMD conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `$FILECMD conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} _LT_DECL([], [AR], [1], [The archiver]) # Use ARFLAGS variable as AR's operation code to sync the variable naming with # Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have # higher priority because thats what people were doing historically (setting # ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS # variable obsoleted/removed. test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} lt_ar_flags=$AR_FLAGS _LT_DECL([], [lt_ar_flags], [0], [Flags to create an archive (by configure)]) # Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override # by AR_FLAGS because that was never working and AR_FLAGS is about to die. _LT_DECL([], [AR_FLAGS], [\@S|@{ARFLAGS-"\@S|@lt_ar_flags"}], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test yes = "[$]$2"; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ]) if test yes = "[$]$2"; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n "$lt_cv_sys_max_cmd_len"; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes = "$cross_compiling"; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen=shl_load], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen=dlopen], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) ]) ]) ]) ]) ]) ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links=nottested if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test no = "$hard_links"; then AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", [Define to the sub-directory where libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then # We can hardcode non-existent directories. if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -z "$STRIP"; then AC_MSG_RESULT([no]) else if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else case $host_os in darwin*) # FIXME - insert some real tests, host_os isn't really good enough striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) ;; freebsd*) if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_PREPARE_MUNGE_PATH_LIST # --------------------------- # Make sure func_munge_path_list() is defined correctly. m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], [[# func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x@S|@2 in x) ;; *:) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" ;; x:*) eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; *::*) eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" ;; *) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; esac } ]])# _LT_PREPARE_PATH_LIST # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown AC_ARG_VAR([LT_SYS_LIBRARY_PATH], [User-defined run-time library search path.]) case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a[(]lib.so.V[)]' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl* | *,icl*) # Native MSVC or ICC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC and ICC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly* | midnightbsd*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], [Detected run-time system search path for libraries]) _LT_DECL([], [configure_time_lt_sys_library_path], [2], [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program that can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$1"; then lt_cv_path_MAGIC_CMD=$ac_dir/"$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac]) MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program that can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test no = "$withval" || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], [if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi]) rm -f conftest.i conftest2.i conftest.out]) ])# _LT_PATH_DD # _LT_CMD_TRUNCATE # ---------------- # find command to truncate a binary pipe m4_defun([_LT_CMD_TRUNCATE], [m4_require([_LT_PATH_DD]) AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], [printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) _LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], [Command to truncate a binary pipe]) ])# _LT_CMD_TRUNCATE # _LT_CHECK_MAGIC_METHOD # ---------------------- # how to check for library dependencies # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_MAGIC_METHOD], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) AC_CACHE_CHECK([how to recognize dependent libraries], lt_cv_deplibs_check_method, [lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[[4-9]]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[[45]]*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='$FILECMD -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly* | midnightbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=$FILECMD case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi]) if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # _LT_DLL_DEF_P([FILE]) # --------------------- # True iff FILE is a Windows DLL '.def' file. # Keep in sync with func_dll_def_p in the libtool script AC_DEFUN([_LT_DLL_DEF_P], [dnl test DEF = "`$SED -n dnl -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl -e q dnl Only consider the first "real" line $1`" dnl ])# _LT_DLL_DEF_P # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM=-lm) ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test yes = "$GCC"; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++ or ICC, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&AS_MESSAGE_LOG_FD if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&AS_MESSAGE_LOG_FD && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], [Transform the output of nm into a list of symbols to manually relocate]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([nm_interface], [lt_cv_nm_interface], [1], [The name lister interface]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly* | midnightbsd*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test yes = "$GCC"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # flang / f18. f95 an alias for gfortran or flang on Debian flang* | f18* | f95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl* | icl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/([[^)]]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl* | icl*) # Native MSVC or ICC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC and ICC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly* | midnightbsd*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS=$save_LDFLAGS]) if test yes = "$lt_cv_irix_exported_symbol"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi _LT_TAGVAR(link_all_deplibs, $1)=no else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(ld_shlibs, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; esac ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' ;; osf3*) if test yes = "$GCC"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test yes = "$GCC"; then wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test yes,yes = "$GCC,$enable_shared"; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting $shlibpath_var if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC=$CC AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report what library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC=$lt_save_CC ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test yes = "$GXX"; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test yes = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GXX"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag=$shared_flag' $wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. # The "-G" linker flag allows undefined symbols. _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl* | ,icl* | no,icl*) # Native MSVC or ICC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly* | midnightbsd*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(GCC, $1)=$GXX _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test yes != "$_lt_caught_CXX_error" AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case @S|@2 in .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)=$prev$p else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)=$p else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)=$p else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test no = "$F77"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_F77"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$G77 _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_F77" AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test no = "$FC"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_FC"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_FC" AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code=$lt_simple_compile_test_code # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_FILECMD # ---------------- # Check for a file(cmd) program that can be used to detect file type and magic m4_defun([_LT_DECL_FILECMD], [AC_CHECK_TOOL([FILECMD], [file], [:]) _LT_DECL([], [FILECMD], [1], [A file(cmd) program that detects file types]) ])# _LD_DECL_FILECMD # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f "$lt_ac_sed" && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test 10 -lt "$lt_ac_count" && break lt_ac_count=`expr $lt_ac_count + 1` if test "$lt_ac_count" -gt "$lt_ac_max"; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine what file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS pam_pkcs11-0.6.12/aclocal/ltoptions.m40000644000175000017500000003427514367517057014405 00000000000000# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004-2005, 2007-2009, 2011-2019, 2021-2022 Free # Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 8 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option '$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl 'shared' nor 'disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], [_LT_WITH_AIX_SONAME([aix])]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the 'shared' and # 'disable-shared' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the 'static' and # 'disable-static' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the 'fast-install' # and 'disable-fast-install' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_AIX_SONAME([DEFAULT]) # ---------------------------------- # implement the --with-aix-soname flag, and support the `aix-soname=aix' # and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT # is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. m4_define([_LT_WITH_AIX_SONAME], [m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[[5-9]]*,yes) AC_MSG_CHECKING([which variant of shared library versioning to provide]) AC_ARG_WITH([aix-soname], [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], [case $withval in aix|svr4|both) ;; *) AC_MSG_ERROR([Unknown argument to --with-aix-soname]) ;; esac lt_cv_with_aix_soname=$with_aix_soname], [AC_CACHE_VAL([lt_cv_with_aix_soname], [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) with_aix_soname=$lt_cv_with_aix_soname]) AC_MSG_RESULT([$with_aix_soname]) if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac _LT_DECL([], [shared_archive_member_spec], [0], [Shared archive member basename, for filename based shared library versioning on AIX])dnl ])# _LT_WITH_AIX_SONAME LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the 'pic-only' and 'no-pic' # LT_INIT options. # MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac], [pic_mode=m4_default([$1], [default])]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) pam_pkcs11-0.6.12/aclocal/ltsugar.m40000644000175000017500000001045314367517057014023 00000000000000# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007-2008, 2011-2019, 2021-2022 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59, which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) pam_pkcs11-0.6.12/aclocal/ltversion.m40000644000175000017500000000131214367517057014361 00000000000000# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004, 2011-2019, 2021-2022 Free Software Foundation, # Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 4245 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4.7]) m4_define([LT_PACKAGE_REVISION], [2.4.7]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.7' macro_revision='2.4.7' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) pam_pkcs11-0.6.12/aclocal/intlmacosx.m40000644000175000017500000000456513553631313014516 00000000000000# intlmacosx.m4 serial 1 (gettext-0.17) dnl Copyright (C) 2004-2007 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Checks for special options needed on MacOS X. dnl Defines INTL_MACOSX_LIBS. AC_DEFUN([gt_INTL_MACOSX], [ dnl Check for API introduced in MacOS X 10.2. AC_CACHE_CHECK([for CFPreferencesCopyAppValue], gt_cv_func_CFPreferencesCopyAppValue, [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_TRY_LINK([#include ], [CFPreferencesCopyAppValue(NULL, NULL)], [gt_cv_func_CFPreferencesCopyAppValue=yes], [gt_cv_func_CFPreferencesCopyAppValue=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1, [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) fi dnl Check for API introduced in MacOS X 10.3. AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent, [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_TRY_LINK([#include ], [CFLocaleCopyCurrent();], [gt_cv_func_CFLocaleCopyCurrent=yes], [gt_cv_func_CFLocaleCopyCurrent=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFLocaleCopyCurrent = yes; then AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1, [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi AC_SUBST([INTL_MACOSX_LIBS]) ]) pam_pkcs11-0.6.12/aclocal/lib-prefix.m40000644000175000017500000002042213553631313014364 00000000000000# lib-prefix.m4 serial 7 (gettext-0.18) dnl Copyright (C) 2001-2005, 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't dnl require excessive bracketing. ifdef([AC_HELP_STRING], [AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], [AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed dnl to access previously installed libraries. The basic assumption is that dnl a user will want packages to use other packages he previously installed dnl with the same --prefix option. dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate dnl libraries, but is otherwise very convenient. AC_DEFUN([AC_LIB_PREFIX], [ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib-prefix], [ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib --without-lib-prefix don't search for libraries in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" fi fi ]) if test $use_additional = yes; then dnl Potentially add $additional_includedir to $CPPFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's already present in $CPPFLAGS, dnl 3. if it's /usr/local/include and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= for x in $CPPFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $CPPFLAGS. CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" fi fi fi fi dnl Potentially add $additional_libdir to $LDFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's already present in $LDFLAGS, dnl 3. if it's /usr/local/lib and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= for x in $LDFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LDFLAGS. LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" fi fi fi fi fi ]) dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, dnl acl_final_exec_prefix, containing the values to which $prefix and dnl $exec_prefix will expand at the end of the configure script. AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ dnl Unfortunately, prefix and exec_prefix get only finally determined dnl at the end of configure. if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" ]) dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the dnl variables prefix and exec_prefix bound to the values they will have dnl at the end of the configure script. AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" $1 exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" ]) dnl AC_LIB_PREPARE_MULTILIB creates dnl - a variable acl_libdirstem, containing the basename of the libdir, either dnl "lib" or "lib64" or "lib/64", dnl - a variable acl_libdirstem2, as a secondary possible value for dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or dnl "lib/amd64". AC_DEFUN([AC_LIB_PREPARE_MULTILIB], [ dnl There is no formal standard regarding lib and lib64. dnl On glibc systems, the current practice is that on a system supporting dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine dnl the compiler's default mode by looking at the compiler's library search dnl path. If at least one of its elements ends in /lib64 or points to a dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI. dnl Otherwise we use the default, namely "lib". dnl On Solaris systems, the current practice is that on a system supporting dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. AC_REQUIRE([AC_CANONICAL_HOST]) acl_libdirstem=lib acl_libdirstem2= case "$host_os" in solaris*) dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment dnl . dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the dnl symlink is missing, so we set acl_libdirstem2 too. AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit], [AC_EGREP_CPP([sixtyfour bits], [ #ifdef _LP64 sixtyfour bits #endif ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no]) ]) if test $gl_cv_solaris_64bit = yes; then acl_libdirstem=lib/64 case "$host_cpu" in sparc*) acl_libdirstem2=lib/sparcv9 ;; i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; esac fi ;; *) searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; */../ | */.. ) # Better ignore directories of this form. They are misleading. ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib64 ) acl_libdirstem=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" fi ;; esac test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" ]) pam_pkcs11-0.6.12/aclocal/lib-link.m40000644000175000017500000010044313553631313014026 00000000000000# lib-link.m4 serial 26 (gettext-0.18.2) dnl Copyright (C) 2001-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_PREREQ([2.54]) dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and dnl augments the CPPFLAGS variable. dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) pushdef([Name],[m4_translit([$1],[./+-], [____])]) pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ AC_LIB_LINKFLAGS_BODY([$1], [$2]) ac_cv_lib[]Name[]_libs="$LIB[]NAME" ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" ac_cv_lib[]Name[]_cppflags="$INC[]NAME" ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX" ]) LIB[]NAME="$ac_cv_lib[]Name[]_libs" LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" INC[]NAME="$ac_cv_lib[]Name[]_cppflags" LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) AC_SUBST([LIB]NAME[_PREFIX]) dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the dnl results of this search when this library appears as a dependency. HAVE_LIB[]NAME=yes popdef([NAME]) popdef([Name]) ]) dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message]) dnl searches for libname and the libraries corresponding to explicit and dnl implicit dependencies, together with the specified include files and dnl the ability to compile and link the specified testcode. The missing-message dnl defaults to 'no' and may contain additional hints for the user. dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) pushdef([Name],[m4_translit([$1],[./+-], [____])]) pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME dnl accordingly. AC_LIB_LINKFLAGS_BODY([$1], [$2]) dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, dnl because if the user has installed lib[]Name and not disabled its use dnl via --without-lib[]Name-prefix, he wants to use it. ac_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ ac_save_LIBS="$LIBS" dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS, dnl because these -l options might require -L options that are present in dnl LIBS. -l options benefit only from the -L options listed before it. dnl Otherwise, add it to the front of LIBS, because it may be a static dnl library that depends on another static library that is present in LIBS. dnl Static libraries benefit only from the static libraries listed after dnl it. case " $LIB[]NAME" in *" -l"*) LIBS="$LIBS $LIB[]NAME" ;; *) LIBS="$LIB[]NAME $LIBS" ;; esac AC_LINK_IFELSE( [AC_LANG_PROGRAM([[$3]], [[$4]])], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])']) LIBS="$ac_save_LIBS" ]) if test "$ac_cv_lib[]Name" = yes; then HAVE_LIB[]NAME=yes AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.]) AC_MSG_CHECKING([how to link with lib[]$1]) AC_MSG_RESULT([$LIB[]NAME]) else HAVE_LIB[]NAME=no dnl If $LIB[]NAME didn't lead to a usable library, we don't need dnl $INC[]NAME either. CPPFLAGS="$ac_save_CPPFLAGS" LIB[]NAME= LTLIB[]NAME= LIB[]NAME[]_PREFIX= fi AC_SUBST([HAVE_LIB]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) AC_SUBST([LIB]NAME[_PREFIX]) popdef([NAME]) popdef([Name]) ]) dnl Determine the platform dependent parameters needed to use rpath: dnl acl_libext, dnl acl_shlibext, dnl acl_libname_spec, dnl acl_library_names_spec, dnl acl_hardcode_libdir_flag_spec, dnl acl_hardcode_libdir_separator, dnl acl_hardcode_direct, dnl acl_hardcode_minus_L. AC_DEFUN([AC_LIB_RPATH], [ dnl Tell automake >= 1.10 to complain if config.rpath is missing. m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done ]) wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" dnl Determine whether the user wants rpath handling at all. AC_ARG_ENABLE([rpath], [ --disable-rpath do not hardcode runtime library paths], :, enable_rpath=yes) ]) dnl AC_LIB_FROMPACKAGE(name, package) dnl declares that libname comes from the given package. The configure file dnl will then not have a --with-libname-prefix option but a dnl --with-package-prefix option. Several libraries can come from the same dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar dnl macro call that searches for libname. AC_DEFUN([AC_LIB_FROMPACKAGE], [ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) define([acl_frompackage_]NAME, [$2]) popdef([NAME]) pushdef([PACK],[$2]) pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) define([acl_libsinpackage_]PACKUP, m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1]) popdef([PACKUP]) popdef([PACK]) ]) dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) dnl Autoconf >= 2.61 supports dots in --with options. pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[m4_translit(PACK,[.],[_])],PACK)]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_ARG_WITH(P_A_C_K[-prefix], [[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && ! test -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi ]) dnl Search the library and its dependencies in $additional_libdir and dnl $LDFLAGS. Using breadth-first-seach. LIB[]NAME= LTLIB[]NAME= INC[]NAME= LIB[]NAME[]_PREFIX= dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been dnl computed. So it has to be reset here. HAVE_LIB[]NAME= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='$1 $2' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" dnl See if it was already located by an earlier AC_LIB_LINKFLAGS dnl or AC_LIB_HAVE_LINKFLAGS call. uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" else dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined dnl that this library doesn't exist. So just drop it. : fi else dnl Search the library lib$name in $additional_libdir and $LDFLAGS dnl and the already constructed $LIBNAME/$LTLIBNAME. found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" dnl The same code as in the loop below: dnl First look for a shared library. if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi dnl Then look for a static library. if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` dnl First look for a shared library. if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi dnl Then look for a static library. if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then dnl Found the library. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then dnl Linking with a shared library. We attempt to hardcode its dnl directory into the executable's runpath, unless it's the dnl standard /usr/lib. if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then dnl No hardcoding is needed. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl Use an explicit option to hardcode DIR into the resulting dnl binary. dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi dnl The hardcoding into $LIBNAME is system dependent. if test "$acl_hardcode_direct" = yes; then dnl Using DIR/libNAME.so during linking hardcodes DIR into the dnl resulting binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then dnl Use an explicit option to hardcode DIR into the resulting dnl binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else dnl Rely on "-L$found_dir". dnl But don't add it if it's already contained in the LDFLAGS dnl or the already constructed $LIBNAME haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH dnl here, because this doesn't fit in flags passed to the dnl compiler. So give up. No hardcoding. This affects only dnl very old systems. dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then dnl Linking with a static library. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" else dnl We shouldn't come here, but anyway it's good to have a dnl fallback. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" fi fi dnl Assume the include files are nearby. additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = '$1'; then LIB[]NAME[]_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = '$1'; then LIB[]NAME[]_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then dnl Potentially add $additional_includedir to $INCNAME. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's /usr/local/include and we are using GCC on Linux, dnl 3. if it's already present in $CPPFLAGS or the already dnl constructed $INCNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INC[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $INCNAME. INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" fi fi fi fi fi dnl Look for dependencies. if test -n "$found_la"; then dnl Read the .la file. It defines the variables dnl dlname, library_names, old_library, dependency_libs, current, dnl age, revision, installed, dlopen, dlpreopen, libdir. save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" dnl We use only dependency_libs. for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's /usr/local/lib and we are using GCC on Linux, dnl 3. if it's already present in $LDFLAGS or the already dnl constructed $LIBNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LIBNAME. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LTLIBNAME. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) dnl Handle this in the next round. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) dnl Handle this in the next round. Throw away the .la's dnl directory; it is already contained in a preceding -L dnl option. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) dnl Most likely an immediate library name. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ;; esac done fi else dnl Didn't find the library; assume it is in the system directories dnl known to the linker and runtime loader. (All the system dnl directories known to the linker should also be known to the dnl runtime loader, otherwise the system is severely misconfigured.) LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user must dnl pass all path elements in one option. We can arrange that for a dnl single library, but not when more than one $LIBNAMEs are used. alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" else dnl The -rpath options are cumulative. for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then dnl When using libtool, the option that works for both libraries and dnl executables is -R. The -R options are cumulative. for found_dir in $ltrpathdirs; do LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" done fi popdef([P_A_C_K]) popdef([PACKLIBS]) popdef([PACKUP]) popdef([PACK]) popdef([NAME]) ]) dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, dnl unless already present in VAR. dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes dnl contains two or three consecutive elements that belong together. AC_DEFUN([AC_LIB_APPENDTOVAR], [ for element in [$2]; do haveit= for x in $[$1]; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then [$1]="${[$1]}${[$1]:+ }$element" fi done ]) dnl For those cases where a variable contains several -L and -l options dnl referring to unknown libraries and directories, this macro determines the dnl necessary additional linker options for the runtime path. dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) dnl sets LDADDVAR to linker options needed together with LIBSVALUE. dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, dnl otherwise linking without libtool is assumed. AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], [ AC_REQUIRE([AC_LIB_RPATH]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) $1= if test "$enable_rpath" != no; then if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then dnl Use an explicit option to hardcode directories into the resulting dnl binary. rpathdirs= next= for opt in $2; do if test -n "$next"; then dir="$next" dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem" \ && test "X$dir" != "X/usr/$acl_libdirstem2"; then rpathdirs="$rpathdirs $dir" fi next= else case $opt in -L) next=yes ;; -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem" \ && test "X$dir" != "X/usr/$acl_libdirstem2"; then rpathdirs="$rpathdirs $dir" fi next= ;; *) next= ;; esac fi done if test "X$rpathdirs" != "X"; then if test -n ""$3""; then dnl libtool is used for linking. Use -R options. for dir in $rpathdirs; do $1="${$1}${$1:+ }-R$dir" done else dnl The linker is used for linking directly. if test -n "$acl_hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user dnl must pass all path elements in one option. alldirs= for dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="$flag" else dnl The -rpath options are cumulative. for dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="${$1}${$1:+ }$flag" done fi fi fi fi fi AC_SUBST([$1]) ]) pam_pkcs11-0.6.12/aclocal/ax_pthread.m40000644000175000017500000003267613553631313014460 00000000000000# =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_pthread.html # =========================================================================== # # SYNOPSIS # # AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) # # DESCRIPTION # # This macro figures out how to build C programs using POSIX threads. It # sets the PTHREAD_LIBS output variable to the threads library and linker # flags, and the PTHREAD_CFLAGS output variable to any special C compiler # flags that are needed. (The user can also force certain compiler # flags/libs to be tested by setting these environment variables.) # # Also sets PTHREAD_CC to any special C compiler that is needed for # multi-threaded programs (defaults to the value of CC otherwise). (This # is necessary on AIX to use the special cc_r compiler alias.) # # NOTE: You are assumed to not only compile your program with these flags, # but also link it with them as well. e.g. you should link with # $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS # # If you are only building threads programs, you may wish to use these # variables in your default LIBS, CFLAGS, and CC: # # LIBS="$PTHREAD_LIBS $LIBS" # CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # CC="$PTHREAD_CC" # # In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant # has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name # (e.g. PTHREAD_CREATE_UNDETACHED on AIX). # # Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the # PTHREAD_PRIO_INHERIT symbol is defined when compiling with # PTHREAD_CFLAGS. # # ACTION-IF-FOUND is a list of shell commands to run if a threads library # is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it # is not found. If ACTION-IF-FOUND is not specified, the default action # will define HAVE_PTHREAD. # # Please let the authors know if this macro fails on any platform, or if # you have any other suggestions or comments. This macro was based on work # by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help # from M. Frigo), as well as ac_pthread and hb_pthread macros posted by # Alejandro Forero Cuervo to the autoconf macro repository. We are also # grateful for the helpful feedback of numerous users. # # Updated for Autoconf 2.68 by Daniel Richard G. # # LICENSE # # Copyright (c) 2008 Steven G. Johnson # Copyright (c) 2011 Daniel Richard G. # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation, either version 3 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 21 AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) AC_DEFUN([AX_PTHREAD], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_LANG_PUSH([C]) ax_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes]) AC_MSG_RESULT([$ax_pthread_ok]) if test x"$ax_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all, and "pthread-config" # which is a program returning the flags for the Pth emulation library. ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # ... -mt is also the pthreads flag for HP/aCC # pthread: Linux, etcetera # --thread-safe: KAI C++ # pthread-config: use pthread-config program (for GNU Pth library) case ${host_os} in solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthreads/-mt/ # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags" ;; darwin*) ax_pthread_flags="-pthread $ax_pthread_flags" ;; esac # Clang doesn't consider unrecognized options an error unless we specify # -Werror. We throw in some extra Clang-specific options to ensure that # this doesn't happen for GCC, which also accepts -Werror. AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags]) save_CFLAGS="$CFLAGS" ax_pthread_extra_flags="-Werror" CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])], [AC_MSG_RESULT([yes])], [ax_pthread_extra_flags= AC_MSG_RESULT([no])]) CFLAGS="$save_CFLAGS" if test x"$ax_pthread_ok" = xno; then for flag in $ax_pthread_flags; do case $flag in none) AC_MSG_CHECKING([whether pthreads work without any flags]) ;; -*) AC_MSG_CHECKING([whether pthreads work with $flag]) PTHREAD_CFLAGS="$flag" ;; pthread-config) AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no]) if test x"$ax_pthread_config" = xno; then continue; fi PTHREAD_CFLAGS="`pthread-config --cflags`" PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" ;; *) AC_MSG_CHECKING([for the pthreads library -l$flag]) PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. AC_LINK_IFELSE([AC_LANG_PROGRAM([#include static void routine(void *a) { a = 0; } static void *start_routine(void *a) { return a; }], [pthread_t th; pthread_attr_t attr; pthread_create(&th, 0, start_routine, 0); pthread_join(th, 0); pthread_attr_init(&attr); pthread_cleanup_push(routine, 0); pthread_cleanup_pop(0) /* ; */])], [ax_pthread_ok=yes], []) LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" AC_MSG_RESULT([$ax_pthread_ok]) if test "x$ax_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$ax_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. AC_MSG_CHECKING([for joinable pthread attribute]) attr_name=unknown for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ], [int attr = $attr; return attr /* ; */])], [attr_name=$attr; break], []) done AC_MSG_RESULT([$attr_name]) if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name], [Define to necessary symbol if this constant uses a non-standard name on your system.]) fi AC_MSG_CHECKING([if more special flags are required for pthreads]) flag=no case ${host_os} in aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";; osf* | hpux*) flag="-D_REENTRANT";; solaris*) if test "$GCC" = "yes"; then flag="-D_REENTRANT" else # TODO: What about Clang on Solaris? flag="-mt -D_REENTRANT" fi ;; esac AC_MSG_RESULT([$flag]) if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], [ax_cv_PTHREAD_PRIO_INHERIT], [ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[int i = PTHREAD_PRIO_INHERIT;]])], [ax_cv_PTHREAD_PRIO_INHERIT=yes], [ax_cv_PTHREAD_PRIO_INHERIT=no]) ]) AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"], [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])]) LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" # More AIX lossage: compile with *_r variant if test "x$GCC" != xyes; then case $host_os in aix*) AS_CASE(["x/$CC"], [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6], [#handle absolute path differently from PATH based program lookup AS_CASE(["x$CC"], [x/*], [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])], [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])]) ;; esac fi fi test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" AC_SUBST([PTHREAD_LIBS]) AC_SUBST([PTHREAD_CFLAGS]) AC_SUBST([PTHREAD_CC]) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$ax_pthread_ok" = xyes; then ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1]) : else ax_pthread_ok=no $2 fi AC_LANG_POP ])dnl AX_PTHREAD pam_pkcs11-0.6.12/aclocal/progtest.m40000644000175000017500000000604013553631313014172 00000000000000# progtest.m4 serial 7 (gettext-0.18.2) dnl Copyright (C) 1996-2003, 2005, 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1996. AC_PREREQ([2.50]) # Search path for a program which passes the given test. dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL([ac_cv_path_$1], [case "[$]$1" in [[\\/]]* | ?:[[\\/]]*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in ifelse([$5], , $PATH, [$5]); do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$][$1]) else AC_MSG_RESULT([no]) fi AC_SUBST([$1])dnl ]) pam_pkcs11-0.6.12/aclocal/iconv.m40000644000175000017500000002162013553631313013442 00000000000000# iconv.m4 serial 18 (gettext-0.18.2) dnl Copyright (C) 2000-2002, 2007-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], [ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_LIB_LINKFLAGS_BODY([iconv]) ]) AC_DEFUN([AM_ICONV_LINK], [ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and dnl those with the standalone portable GNU libiconv installed). AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) dnl Add $INCICONV to CPPFLAGS before performing the following checks, dnl because if the user has installed libiconv and not disabled its use dnl via --without-libiconv-prefix, he wants to use it. The first dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed. am_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [ am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #include ]], [[iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);]])], [am_cv_func_iconv=yes]) if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #include ]], [[iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);]])], [am_cv_lib_iconv=yes] [am_cv_func_iconv=yes]) LIBS="$am_save_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11, dnl Solaris 10. am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include int main () { int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static const char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 1; iconv_close (cd_utf8_to_88591); } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static const char input[] = "\263"; char buf[10]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 2; iconv_close (cd_ascii_to_88591); } } /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ { iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static const char input[] = "\304"; static char buf[2] = { (char)0xDE, (char)0xAD }; const char *inptr = input; size_t inbytesleft = 1; char *outptr = buf; size_t outbytesleft = 1; size_t res = iconv (cd_88591_to_utf8, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) result |= 4; iconv_close (cd_88591_to_utf8); } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) result |= 8; iconv_close (cd_88591_to_utf8); } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ if (/* Try standardized names. */ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) /* Try IRIX, OSF/1 names. */ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) /* Try AIX names. */ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) /* Try HP-UX names. */ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) result |= 16; return result; }]])], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no], [ changequote(,)dnl case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac changequote([,])dnl ]) LIBS="$am_save_LIBS" ]) case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then AC_DEFINE([HAVE_ICONV], [1], [Define if you have the iconv() function and it works.]) fi if test "$am_cv_lib_iconv" = yes; then AC_MSG_CHECKING([how to link with libiconv]) AC_MSG_RESULT([$LIBICONV]) else dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV dnl either. CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi AC_SUBST([LIBICONV]) AC_SUBST([LTLIBICONV]) ]) dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to dnl avoid warnings like dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". dnl This is tricky because of the way 'aclocal' is implemented: dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN. dnl Otherwise aclocal's initial scan pass would miss the macro definition. dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions. dnl Otherwise aclocal would emit many "Use of uninitialized value $1" dnl warnings. m4_define([gl_iconv_AC_DEFUN], m4_version_prereq([2.64], [[AC_DEFUN_ONCE( [$1], [$2])]], [m4_ifdef([gl_00GNULIB], [[AC_DEFUN_ONCE( [$1], [$2])]], [[AC_DEFUN( [$1], [$2])]])])) gl_iconv_AC_DEFUN([AM_ICONV], [ AM_ICONV_LINK if test "$am_cv_func_iconv" = yes; then AC_MSG_CHECKING([for iconv declaration]) AC_CACHE_VAL([am_cv_proto_iconv], [ AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif ]], [[]])], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"]) am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` AC_MSG_RESULT([ $am_cv_proto_iconv]) AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], [Define as const if the declaration of iconv() needs const.]) dnl Also substitute ICONV_CONST in the gnulib generated . m4_ifdef([gl_ICONV_H_DEFAULTS], [AC_REQUIRE([gl_ICONV_H_DEFAULTS]) if test -n "$am_cv_proto_iconv_arg1"; then ICONV_CONST="const" fi ]) fi ]) pam_pkcs11-0.6.12/aclocal/nls.m40000644000175000017500000000231513553631313013120 00000000000000# nls.m4 serial 5 (gettext-0.18) dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ([2.50]) AC_DEFUN([AM_NLS], [ AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE([nls], [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT([$USE_NLS]) AC_SUBST([USE_NLS]) ]) pam_pkcs11-0.6.12/aclocal/po.m40000644000175000017500000004503713553631313012752 00000000000000# po.m4 serial 22 (gettext-0.19) dnl Copyright (C) 1995-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ([2.60]) dnl Checks for all prerequisites of the po subdirectory. AC_DEFUN([AM_PO_SUBDIRS], [ AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl AC_REQUIRE([AC_PROG_SED])dnl AC_REQUIRE([AM_NLS])dnl dnl Release version of the gettext macros. This is used to ensure that dnl the gettext macros and po/Makefile.in.in are in sync. AC_SUBST([GETTEXT_MACRO_VERSION], [0.19]) dnl Perform the following tests also if --disable-nls has been given, dnl because they are needed for "make dist" to work. dnl Search for GNU msgfmt in the PATH. dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. dnl The second test excludes FreeBSD msgfmt. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT]) dnl Test whether it is GNU msgfmt >= 0.15. changequote(,)dnl case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; *) MSGFMT_015=$MSGFMT ;; esac changequote([,])dnl AC_SUBST([MSGFMT_015]) changequote(,)dnl case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac changequote([,])dnl AC_SUBST([GMSGFMT_015]) dnl Search for GNU xgettext 0.12 or newer in the PATH. dnl The first test excludes Solaris xgettext and early GNU xgettext versions. dnl The second test excludes FreeBSD xgettext. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po dnl Test whether it is GNU xgettext >= 0.15. changequote(,)dnl case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac changequote([,])dnl AC_SUBST([XGETTEXT_015]) dnl Search for GNU msgmerge 0.11 or newer in the PATH. AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) dnl Installation directories. dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we dnl have to define it here, so that it can be used in po/Makefile. test -n "$localedir" || localedir='${datadir}/locale' AC_SUBST([localedir]) dnl Support for AM_XGETTEXT_OPTION. test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) AC_CONFIG_COMMANDS([po-directories], [[ for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" gt_tab=`printf '\t'` cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assignment from automake < 1.5. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. # Hide the ALL_LINGUAS assignment from automake < 1.5. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done]], [# Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake < 1.5. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" ]) ]) dnl Postprocesses a Makefile in a directory containing PO files. AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], [ # When this code is run, in config.status, two variables have already been # set: # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, # - LINGUAS is the value of the environment variable LINGUAS at configure # time. changequote(,)dnl # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Find a way to echo strings without interpreting backslash. if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then gt_echo='echo' else if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then gt_echo='printf %s\n' else echo_func () { cat < "$ac_file.tmp" tab=`printf '\t'` if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` cat >> "$ac_file.tmp" < /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` cat >> "$ac_file.tmp" <> "$ac_file.tmp" <&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = etc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/aclocal/ax_pthread.m4 \ $(top_srcdir)/aclocal/gettext.m4 \ $(top_srcdir)/aclocal/iconv.m4 \ $(top_srcdir)/aclocal/intlmacosx.m4 \ $(top_srcdir)/aclocal/lib-ld.m4 \ $(top_srcdir)/aclocal/lib-link.m4 \ $(top_srcdir)/aclocal/lib-prefix.m4 \ $(top_srcdir)/aclocal/libtool.m4 \ $(top_srcdir)/aclocal/ltoptions.m4 \ $(top_srcdir)/aclocal/ltsugar.m4 \ $(top_srcdir)/aclocal/ltversion.m4 \ $(top_srcdir)/aclocal/lt~obsolete.m4 \ $(top_srcdir)/aclocal/nls.m4 $(top_srcdir)/aclocal/po.m4 \ $(top_srcdir)/aclocal/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = pam.d_login.example pam_pkcs11.conf.example CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(docdir)" DATA = $(doc_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in \ $(srcdir)/pam.d_login.example.in \ $(srcdir)/pam_pkcs11.conf.example.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CRYPTO_CFLAGS = @CRYPTO_CFLAGS@ CRYPTO_LIBS = @CRYPTO_LIBS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CURL_CFLAGS = @CURL_CFLAGS@ CURL_LIBS = @CURL_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDAP_CFLAGS = @LDAP_CFLAGS@ LDAP_LIBS = @LDAP_LIBS@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBDL = @LIBDL@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ NSS_CFLAGS = @NSS_CFLAGS@ NSS_LIBS = @NSS_LIBS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PCSC_CFLAGS = @PCSC_CFLAGS@ PCSC_LIBS = @PCSC_LIBS@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XSLTPROC = @XSLTPROC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ confdir = @confdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ MAINTAINERCLEANFILES = Makefile.in TO_INSTALL = \ subject_mapping.example \ mail_mapping.example \ digest_mapping.example \ pkcs11_eventmgr.conf.example \ card_eventmgr.conf.example EXTRA_DIST = $(TO_INSTALL) \ pam.d_login.example.in \ pam_pkcs11.conf.example.in doc_DATA = $(TO_INSTALL) \ pam_pkcs11.conf.example \ pam.d_login.example \ pam.d_ignore_no_card.example all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign etc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign etc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): pam.d_login.example: $(top_builddir)/config.status $(srcdir)/pam.d_login.example.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ pam_pkcs11.conf.example: $(top_builddir)/config.status $(srcdir)/pam_pkcs11.conf.example.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-docDATA: $(doc_DATA) @$(NORMAL_INSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done uninstall-docDATA: @$(NORMAL_UNINSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(docdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-docDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-docDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-docDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-docDATA .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: pam_pkcs11-0.6.12/etc/Makefile.am0000644000175000017500000000066514367517037013313 00000000000000# Process this file with automake to create Makefile.in MAINTAINERCLEANFILES = Makefile.in TO_INSTALL = \ subject_mapping.example \ mail_mapping.example \ digest_mapping.example \ pkcs11_eventmgr.conf.example \ card_eventmgr.conf.example EXTRA_DIST = $(TO_INSTALL) \ pam.d_login.example.in \ pam_pkcs11.conf.example.in doc_DATA = $(TO_INSTALL) \ pam_pkcs11.conf.example \ pam.d_login.example \ pam.d_ignore_no_card.example pam_pkcs11-0.6.12/etc/subject_mapping.example0000644000175000017500000000030513553631311015761 00000000000000# Mapping file for Certificate Subject # format: Certificate Subject -> login # #/C=ES/O=FNMT/OU=FNMT Clase 2 CA/OU=500051483/CN=NOMBRE MARTINEZ CASTA\xF1O JUAN ANTONIO - NIF 50431138G -> jantonio pam_pkcs11-0.6.12/etc/pam_pkcs11.conf.example.in0000644000175000017500000002637314367517037016130 00000000000000# # Configuration file for pam_pkcs11 module # # Version 0.4 # Author: Juan Antonio Martinez # pam_pkcs11 { # Allow empty passwords nullok = true; # Enable debugging support. debug = true; # Do not prompt the user for the passwords but take them from the # PAM_ items instead. use_first_pass = false; # Do not prompt the user for the passwords unless PAM_(OLD)AUTHTOK # is unset. try_first_pass = false; # Like try_first_pass, but fail if the new PAM_AUTHTOK has not been # previously set (intended for stacking password modules only). use_authtok = false; # card_only means: # 1) always get the userid from the certificate. # 2) don't prompt for the user name if the card is present. # 3) if the token is present, then we must use the cardAuth mechanism. card_only = false; # wait_for_card means: # 1) nothing if card_only isn't set # 2) if logged in, block in pam conversation until the token used for login # is inserted # 3) if not logged in, block until a token that could be used for logging in # is inserted # right now, logged in means PKC11_LOGIN_TOKEN_NAME is set, # but we could something else later (like set some per-user state in # a pam session module keyed off uid) wait_for_card = false; # List of screen saver services. # This list is only parsed if card_only is set. Basically the screen saver # will bypass pam_pkcs11 if a token was not used to login (The basic idea is # you always unlock the screen saver with the same mechanism you used to # login). screen_savers = xfce4-screensaver, mate-screensaver, gnome-screensaver, kde4-kscreensaver, kscreensaver, xscreensaver; # Filename of the PKCS #11 module. The default value is "default" use_pkcs11_module = opensc; pkcs11_module opensc { module = /usr/lib/opensc-pkcs11.so; description = "OpenSC PKCS#11 module"; # Which slot to use? # You can use "slot_num" or "slot_description", but not both, to specify # the slot to use. Using "slot_description" is preferred because the # PKCS#11 specification does not guarantee slot ordering. "slot_num" should # only be used with those PKCS#11 implementations that guarantee # constant slot numbering. # # slot_description = "xxxx" # The slot is specified by the slot description, for example, # slot_description = "Sun Crypto Softtoken". The default value is # "none" which means to use the first slot with an available token. # # slot_num = a_number # The slot is specified by the slot number, for example, slot_num = 1. # The default value is zero which means to use the first slot with an # available token. # slot_description = "none"; # Where are CA certificates stored? # You can setup this value to: # 1- A directory with openssl hash-links to all certificates # 2- A CA file in PEM (.pem) or ASN1 (.cer) format, # containing all allowed CA certs # The default value is /etc/pam_pkcs11/cacerts. ca_dir = /etc/pam_pkcs11/cacerts; # Path to the directory where the local (offline) CRLs are stored. # Same convention as above is applied: you can choose either # hash-link directory or CRL file # The default value is /etc/pam_pkcs11/crls. crl_dir = /etc/pam_pkcs11/crls; # Some pcks#11 libraries can handle multithreading. So # set it to true to properly call C_Initialize() support_threads = false; # Sets the Certificate verification policy. # "none" Performs no verification # "ca" Does CA check # "crl_online" Downloads the CRL form the location given by the # CRL distribution point extension of the certificate # "crl_offline" Uses the locally stored CRLs # "crl_auto" Is a combination of online and offline; it first # tries to download the CRL from a possibly given CRL # distribution point and if this fails, uses the local # CRLs # "signature" Does also a signature check to ensure that private # and public key matches # You can use a combination of ca,crl, and signature flags, or just # use "none". cert_policy = ca,signature; # What kind of token? # The value of the token_type parameter will be used in the user prompt # messages. The default value is "Smart card". token_type = "Smart card"; } # Aladdin eTokenPRO 32 pkcs11_module etoken { module = /usr/local/lib/libetpkcs11.so description = "Aladdin eTokenPRO-32"; slot_num = 0; support_threads = true; ca_dir = /etc/pam_pkcs11/cacerts; crl_dir = /etc/pam_pkcs11/crls; cert_policy = ca,signature; } # NSS (Network Security Service) config pkcs11_module nss { nss_dir = /etc/ssl/nssdb; crl_policy = none; } # Default pkcs11 module pkcs11_module default { module = @libdir@/pam_pkcs11/pkcs11_module.so; description = "Default pkcs#11 module"; slot_num = 0; support_threads = false; ca_dir = /etc/pam_pkcs11/cacerts; crl_dir = /etc/pam_pkcs11/crls; cert_policy = none; } # Which mappers ( Cert to login ) to use? # you can use several mappers: # # subject - Cert Subject to login file based mapper # pwent - CN to getpwent() login or gecos fields mapper # ldap - LDAP mapper # opensc - Search certificate in ${HOME}/.eid/authorized_certificates # openssh - Search certificate public key in ${HOME}/.ssh/authorized_keys # mail - Compare email fields from certificate # ms - Use Microsoft Universal Principal Name extension # krb - Compare againts Kerberos Principal Name # cn - Compare Common Name (CN) # uid - Compare Unique Identifier # digest - Certificate digest to login (mapfile based) mapper # generic - User defined certificate contents mapped # null - blind access/deny mapper # # You can select a comma-separated mapper list. # If used null mapper should be the last in the list :-) # Also you should select at least one mapper, otherwise # certificate will not match :-) use_mappers = digest, cn, pwent, uid, mail, subject, null; # When no absolute path or module info is provided, use this # value as module search path # TODO: # This is not still functional: use absolute pathnames or LD_LIBRARY_PATH mapper_search_path = @libdir@/pam_pkcs11; # # Generic certificate contents mapper mapper generic { debug = true; #module = @libdir@/pam_pkcs11/generic_mapper.so; module = internal; # ignore letter case on match/compare ignorecase = false; # Use one of "cn" , "subject" , "kpn" , "email" , "upn" , "uid" or "serial" cert_item = cn; # Define mapfile if needed, else select "none" mapfile = file:///etc/pam_pkcs11/generic_mapping; # Decide if use getpwent() to map login use_getpwent = false; } # Certificate Subject to login based mapper # provided file stores one or more "Subject -> login" lines mapper subject { debug = false; # module = @libdir@/pam_pkcs11/subject_mapper.so; module = internal; ignorecase = false; mapfile = file:///etc/pam_pkcs11/subject_mapping; } # Search public keys from $HOME/.ssh/authorized_keys to match users mapper openssh { debug = false; module = @libdir@/pam_pkcs11/openssh_mapper.so; } # Search certificates from $HOME/.eid/authorized_certificates to match users mapper opensc { debug = false; module = @libdir@/pam_pkcs11/opensc_mapper.so; } # Certificate Common Name ( CN ) to getpwent() mapper mapper pwent { debug = false; ignorecase = false; module = internal; # module = @libdir@/pam_pkcs11/pwent_mapper.so; } # Null ( no map ) mapper. when user as finder matchs to NULL or "nobody" mapper null { debug = false; # module = @libdir@/pam_pkcs11/null_mapper.so; module = internal ; # select behavior: always match, or always fail default_match = false; # on match, select returned user default_user = nobody ; } # Directory ( ldap style ) mapper mapper ldap { debug = false; module = @libdir@/pam_pkcs11/ldap_mapper.so; # hostname of ldap server (use LDAP-URI for more then one) ldaphost = ""; # Port on ldap server to connect, this is also the default # if no port is given in URI below # if empty, then 389 for TLS and 636 for SSL is used ldapport = ; # space separted list of LDAP URIs (URIs are used by given order) URI = ""; # Scope of search: 0-2 # Default is 1 = "one", meaning the set of records one # level below the basedn. # 0 = "base" means search only the basedn, and # 2 = "sub" means the union of entries at the "base" level # and ? all or "one" level below ??? FIXME scope = 2; # DN to bind with. Must have read-access for user entries # under "base" binddn = "cn=pam,o=example,c=com"; # Password for above DN passwd = ""; # Searchbase for user entries base = "ou=People,o=example,c=com"; # Attribute of user entry which contains the certificate attribute = "userCertificate"; # Searchfilter for user entry. Must only let pass user entry # for the login user. filter = "(&(objectClass=posixAccount)(uid=%s))" # SSL/TLS-Switch # This is a global switch, you can't switch between # SSL or TLS and non secured connections per URI! # values: off (standard), tls or on (ssl) or ssl ssl = tls # SSL specific settings # tls_randfile = ... tls_cacertfile = /etc/ssl/cacert.pem # tls_cacertdir = ... tls_checkpeer = 0 #tls_ciphers = ... #tls_cert = ... #tls_key = ... } # Assume common name (CN) to be the login mapper cn { debug = false; module = internal; # module = @libdir@/pam_pkcs11/cn_mapper.so; ignorecase = true; # mapfile = file:///etc/pam_pkcs11/cn_map; mapfile = "none"; } # mail - Compare email field from certificate mapper mail { debug = false; module = internal; # module = @libdir@/pam_pkcs11/mail_mapper.so; # Declare mapfile or # leave empty "" or "none" to use no map mapfile = file:///etc/pam_pkcs11/mail_mapping; # Some certs store email in uppercase. take care on this ignorecase = true; # Also check that host matches mx domain # when using mapfile this feature is ignored ignoredomain = false; } # ms - Use Microsoft Universal Principal Name extension # UPN is in format login@ADS_Domain. No map is needed, just # check domain name. mapper ms { debug = false; module = internal; # module = @libdir@/pam_pkcs11/ms_mapper.so; ignorecase = false; ignoredomain = false; domainname = "domain.com"; } # krb - Compare againts Kerberos Principal Name mapper krb { debug = false; module = internal; # module = @libdir@/pam_pkcs11/krb_mapper.so; ignorecase = false; mapfile = "none"; } # uid - Maps Subject Unique Identifier field (if exist) to login mapper uid { debug = false; module = internal; # module = @libdir@/pam_pkcs11/uid_mapper.so; ignorecase = false; mapfile = "none"; } # digest - elaborate certificate digest and map it into a file mapper digest { debug = false; module = internal; # module = @libdir@/pam_pkcs11/digest_mapper.so; # algorithm used to evaluate certificate digest # Select one of: # "null","md2","md4","md5","sha","sha1","dss","dss1","ripemd160" algorithm = "sha1"; mapfile = file:///etc/pam_pkcs11/digest_mapping; # mapfile = "none"; } } pam_pkcs11-0.6.12/etc/pkcs11_eventmgr.conf.example0000644000175000017500000000200713553631311016545 00000000000000# Sample pkcs11_eventmgr configuration file # pkcs11_eventmgr { # Run in background? Implies debug=false if true daemon = true; # show debug messages? debug = false; # polling time in seconds polling_time = 1; # expire time in seconds # default = 0 ( no expire ) expire_time = 0; # pkcs11 module to use pkcs11_module = /usr/lib/opensc-pkcs11.so; # # list of events and actions # Card inserted event card_insert { # what to do if an action fail? # ignore : continue to next action # return : end action sequence # quit : end program on_error = ignore ; # You can enter several, comma-separated action entries # they will be executed in turn action = "play /usr/share/sounds/warning.wav", "xscreensaver-command -deactivate"; } # Card has been removed event card_remove { on_error = ignore; action = "play /usr/share/sounds/error.wav", "xscreensaver-command -lock"; } # Too much time card removed event expire_time { on_error = ignore; action = "/bin/false"; } } pam_pkcs11-0.6.12/etc/mail_mapping.example0000644000175000017500000000027513553631311015252 00000000000000# mapping file for Certificate E-email # format: email -> login # #jantonio@dit.upm.es -> jantonio #juan_a_mtnez@yahoo.es -> jantonio #jonsito@terra.es -> jantonio #pjpg@dit.upm.es -> pjpg pam_pkcs11-0.6.12/etc/digest_mapping.example0000644000175000017500000000023613553631311015604 00000000000000# Mapping for certificate sha1 digest # Format: Cert SHA1 digest (hexdot) -> login # #90:17:64:09:4C:42:D6:9C:91:52:7F:1C:86:00:23:DC:BB:5D:27:50 -> jantonio pam_pkcs11-0.6.12/Makefile.am0000644000175000017500000000103713553631313012520 00000000000000# $Id$ SUBDIRS = . po doc etc src tools DIST_SUBDIRS = . po doc etc src tools EXTRA_DIST = config.rpath ChangeLog COPYING INSTALL \ NEWS README TODO bootstrap pam_pkcs11.spec ChangeLog.git MAINTAINERCLEANFILES = \ Makefile.in config.h.in configure \ install-sh ltmain.sh missing mkinstalldirs \ compile depcomp config.log config.status \ config.guess config.sub acinclude.m4 aclocal.m4 DEPCLEANFILES = config.log configure AUTOMAKE_OPTIONS = foreign ACLOCAL_AMFLAGS = -I aclocal ChangeLog.git: git log --stat --decorate=short > $@ pam_pkcs11-0.6.12/doc/0000755000175000017500000000000014367517111011313 500000000000000pam_pkcs11-0.6.12/doc/pkcs11_setup.10000644000175000017500000000130313553631305013632 00000000000000.TH "pkcs11_setup" "1" .SH "NAME" .LP pkcs11_setup \- SmartCard PKCS#11 setup .SH "SYNTAX" .LP pkcs11_setup .RB [ list_modules ] .RB [ debug ] .RB [ use_module [\fI=\fP]] .RB [ ins_action [\fI=\fP]] .RB [ rm_action [\fI=\fP]] .SH "DESCRIPTION" .LP pkcs11_setup display all the certificates. .SH "OPTIONS" .LP .TP .B debug Enable debugging output. .TP .B list_modules List the modules available and configured in \fI/etc/pam_pkcs11/pam_pkcs11.conf\fP. .TP .B use_module Display the module used by pam_pkcs11. .SH "AUTHORS" .LP Juan Antonio Martinez .SH "SEE ALSO" .LP pam_pkcs11(8) .br PAM\-PKCS11 User Manual pam_pkcs11-0.6.12/doc/pam_pkcs11.css0000644000175000017500000000062213553631310013676 00000000000000.screen { background-color: #f0f0f0; cellspacing: 1; cellpadding: 1; margin: 1em; padding: 1em; border: 1px solid; } .prompt, .command { background-color: #e0e0e0; } .token, .option { font-family: monospace; background-color: #ffe0e0; } .filename, .application { font-family: monospace; background-color: #ffffe0; } .code { background-color: #e0ffe0; } a:hover { background:#ff0; } pam_pkcs11-0.6.12/doc/Makefile.in0000644000175000017500000004745614367517060013323 00000000000000# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Process this file with automake to create Makefile.in VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/aclocal/ax_pthread.m4 \ $(top_srcdir)/aclocal/gettext.m4 \ $(top_srcdir)/aclocal/iconv.m4 \ $(top_srcdir)/aclocal/intlmacosx.m4 \ $(top_srcdir)/aclocal/lib-ld.m4 \ $(top_srcdir)/aclocal/lib-link.m4 \ $(top_srcdir)/aclocal/lib-prefix.m4 \ $(top_srcdir)/aclocal/libtool.m4 \ $(top_srcdir)/aclocal/ltoptions.m4 \ $(top_srcdir)/aclocal/ltsugar.m4 \ $(top_srcdir)/aclocal/ltversion.m4 \ $(top_srcdir)/aclocal/lt~obsolete.m4 \ $(top_srcdir)/aclocal/nls.m4 $(top_srcdir)/aclocal/po.m4 \ $(top_srcdir)/aclocal/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = pam_pkcs11.8 doxygen.conf CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man8dir)" man8dir = $(mandir)/man8 NROFF = nroff MANS = $(man_MANS) DATA = $(noinst_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/doxygen.conf.in \ $(srcdir)/pam_pkcs11.8.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CRYPTO_CFLAGS = @CRYPTO_CFLAGS@ CRYPTO_LIBS = @CRYPTO_LIBS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CURL_CFLAGS = @CURL_CFLAGS@ CURL_LIBS = @CURL_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDAP_CFLAGS = @LDAP_CFLAGS@ LDAP_LIBS = @LDAP_LIBS@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBDL = @LIBDL@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ NSS_CFLAGS = @NSS_CFLAGS@ NSS_LIBS = @NSS_LIBS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PCSC_CFLAGS = @PCSC_CFLAGS@ PCSC_LIBS = @PCSC_LIBS@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XSLTPROC = @XSLTPROC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ confdir = @confdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ MAINTAINERCLEANFILES = Makefile.in $(HTMLFILES) api/* DISTCLEANFILES = doxygen.conf HTMLFILES = pam_pkcs11.html mappers_api.html XMLFILES = pam_pkcs11.xml mappers_api.xml \ pam_pkcs11.xsl export-wiki.xsl \ pam_pkcs11.css MANSRC = \ pam_pkcs11.8 card_eventmgr.1 pklogin_finder.1 \ pkcs11_eventmgr.1 pkcs11_inspect.1 \ pkcs11_setup.1 pkcs11_listcerts.1 pkcs11_make_hash_link.1 man_MANS = $(MANSRC) noinst_DATA = $(HTMLFILES) doxygen.conf EXTRA_DIST = $(MANSRC) $(XMLFILES) $(HTMLFILES) doxygen.conf.in \ README.mappers README.autologin README.eventmgr \ README.ldap_mapper export-wiki.sh generate-api.sh \ api/index.html $(shell ls api/*) STYLESHEET = $(srcdir)/pam_pkcs11.xsl all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign doc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): pam_pkcs11.8: $(top_builddir)/config.status $(srcdir)/pam_pkcs11.8.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ doxygen.conf: $(top_builddir)/config.status $(srcdir)/doxygen.conf.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man1: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) install-man8: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man8dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man8dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man8dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.8[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \ done; } uninstall-man8: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man8dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.8[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man8dir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(MANS) $(DATA) installdirs: for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man8dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man1 install-man8 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-man uninstall-man: uninstall-man1 uninstall-man8 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man1 install-man8 install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-man uninstall-man1 uninstall-man8 .PRECIOUS: Makefile %.html: %.xml $(STYLESHEET) @HAVE_DOCBOOK_TRUE@ $(XSLTPROC) \ @HAVE_DOCBOOK_TRUE@ --stringparam section.autolabel 1 \ @HAVE_DOCBOOK_TRUE@ --stringparam section.label.includes.component.label 1 \ @HAVE_DOCBOOK_TRUE@ -o $@ $(STYLESHEET) $< #tidy -im -utf8 -xml $@ || true @HAVE_DOCBOOK_FALSE@ @echo "Docbook support disabled, not building $@" >&2 api/index.html: doxygen.conf sh $(srcdir)/generate-api.sh $(srcdir) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: pam_pkcs11-0.6.12/doc/generate-api.sh0000755000175000017500000000034113553631305014127 00000000000000#!/bin/bash set -e SRCDIR=. if test -n "$1" then SRCDIR="$1" fi test -f "$SRCDIR"/`basename $0` if ! test -w "$SRCDIR" then exit 0 fi rm -rf "$SRCDIR"/api mkdir "$SRCDIR"/api cd "$SRCDIR"/.. doxygen doc/doxygen.conf pam_pkcs11-0.6.12/doc/export-wiki.xsl0000644000175000017500000000272613553631310014246 00000000000000 <xsl:value-of select="/html:html/html:head/html:title" /> Wiki Index

Index of Wiki Pages

  • pam_pkcs11-0.6.12/doc/README.autologin0000644000175000017500000000502514367517037014124 00000000000000EXTRACTING LOGIN FROM CERTIFICATE HOWTO --------------------------------------- Starting at pam_pkcs11-0.4.2 a new feature is provided: pam-pkcs11 can deduce user name from certificate, without login prompt. This is done when pam_get_user() call returns null or empty string. In this case, pam-pcks11 use the module mapper "find" feature instead of normal "match". If the finder list returns ok, evaluated user is set to pam via pam_set_item(PAM_USER) call, and PAM_AUTH_OK is returned. So there are no longer need to enter user name if a certificate is provided and can be mapped to an user. There are to ways to use this feature: a) Patch "gdm" and "login" programs to detect card presence and return null as user name, without prompt for an user login. This is a work to be done :-( b) Use unpatched versions, and do the following procedures: b.1) When login from console, just enter " " (space) + Enter. b.2) When login from gdm, just key Enter at login prompt. In both cases the procedure continues as: - If a card is not present, login will ask for password, and gdm will prompt again for user login - If a card is present, pam-pkcs11 will ask for the PIN, and then invoke finder in module mapper list. When a user is found, this user becomes the logged user This feature can be used with pam-mkhomedir.so PAM Session module. In this case, you can create on-the-fly accounts. This scenario is ideal for centralized auth services (Winbind, ldap, kerberos, RDBMS auth...) As example, here comes my tested /etc/pam.d/gdm file: #%PAM-1.0 auth sufficient pam_pkcs11.so debug config_file=/etc/pam_pkcs11/pam_pkcs11.conf auth required pam_env.so auth required pam_stack.so service=system-auth auth required pam_nologin.so account required pam_stack.so service=system-auth password required pam_stack.so service=system-auth session required pam_stack.so service=system-auth session optional pam_mkhomedir.so skel=/etc/skel umask=0022 session optional pam_console.so IMPORTANT NOTES: For pam_set_item(PAM_USER) success, application using pam must have enough permissions. If this condition is not met, setting user process will fail and proper log message registered. So this feature is mainly provided for logging processes running as root. Improper mapper chain configurations with unauthorized certificates can lead in the creation of fake accounts in the system if pam_mkhomedir.so module is used. So be really carefull when authenticating users directly from certificates. Enjoy! pam_pkcs11-0.6.12/doc/Makefile.am0000644000175000017500000000213313553631310013260 00000000000000# Process this file with automake to create Makefile.in MAINTAINERCLEANFILES = Makefile.in $(HTMLFILES) api/* DISTCLEANFILES = doxygen.conf XSLTPROC = @XSLTPROC@ HTMLFILES = pam_pkcs11.html mappers_api.html XMLFILES = pam_pkcs11.xml mappers_api.xml \ pam_pkcs11.xsl export-wiki.xsl \ pam_pkcs11.css MANSRC = \ pam_pkcs11.8 card_eventmgr.1 pklogin_finder.1 \ pkcs11_eventmgr.1 pkcs11_inspect.1 \ pkcs11_setup.1 pkcs11_listcerts.1 pkcs11_make_hash_link.1 man_MANS = $(MANSRC) noinst_DATA = $(HTMLFILES) doxygen.conf EXTRA_DIST = $(MANSRC) $(XMLFILES) $(HTMLFILES) doxygen.conf.in \ README.mappers README.autologin README.eventmgr \ README.ldap_mapper export-wiki.sh generate-api.sh \ api/index.html $(shell ls api/*) STYLESHEET = $(srcdir)/pam_pkcs11.xsl %.html: %.xml $(STYLESHEET) if HAVE_DOCBOOK $(XSLTPROC) \ --stringparam section.autolabel 1 \ --stringparam section.label.includes.component.label 1 \ -o $@ $(STYLESHEET) $< #tidy -im -utf8 -xml $@ || true else @echo "Docbook support disabled, not building $@" >&2 endif api/index.html: doxygen.conf sh $(srcdir)/generate-api.sh $(srcdir) pam_pkcs11-0.6.12/doc/pam_pkcs11.8.in0000644000175000017500000000303613553631305013670 00000000000000.\" . .TH "pam_pkcs11" "8" "15-Feb-2005" "Mario Strasser" "System Administration tools" .SH "NAME" pam_pkcs11 \- PAM Authentication Module for PKCS#11 token libraries .SH "SYNOPSIS" .B pam_pkcs11.so .RB [ debug ] .RB [ configfile= \fI "" ] .SH "DESCRIPTION" This Linux\-PAM login module allows a X.509 certificate based user login. The certificate and its dedicated private key are thereby accessed by means of an appropriate PKCS #11 module. For the verification of the users' certificates, locally stored CA certificates as well as either online or locally accessible CRLs are used. .SH "CONFIGURATION" The program that needs a PAM service should be configured in .I /etc/pam.conf or .IR /etc/pam.d/ . .P .B pam_pkcs11 can be used in the PAM chain. .P For details on how to configure PAM services, see the PAM documentation for your system. This manual does not cover PAM configuration details. The existing PAM service definitions for other applications on your system is also a good source for examples on how to configure a PAM service. .SH "FILES" \fI@confdir@/pam_pkcs11.conf\fP .br \fI/usr/lib/pam_pkcs11/*_mapper.so\fP .SH "AUTHOR" Original PAM\-pkcs11 was written by Mario Strasser . Newer versions are from Juan Antonio Martinez . .SH "REPORTING BUGS" Report bugs ideas, comments, bug\-fixes and so to: .I Juan Antonio Martinez .SH "SEE ALSO" .BR pam (8), .BR pam_pkcs11.conf (5), PAM Systems Administrator Guide, .I README.mappers file, PAM\-PKCS#11 User Manual. pam_pkcs11-0.6.12/doc/pam_pkcs11.html0000644000175000017500000025754314367517110014077 00000000000000 PAM-PKCS11 User Manual

    PAM-PKCS11 User Manual

    Juan Antonio Martinez

    Mario Strasser

    Antti Tapaninen

    Timo Sirainen

    Ludovic Rousseau

    Release 0.5beta2, 27 Sep 2005


    Table of Contents

    1. Copyright License
    2. Introduction
    3. Fundamentals
    3.1. PKCS #11 Module Requirements
    3.2. User Matching
    4. Installation
    5. Configuring pam-pkcs11
    5.1. Setting up Configuration file
    5.2. Setting up CRL's and CA's lists
    5.3. Create map files
    6. PAM Configuration
    6.1. Configuring pam.d files
    6.2. Sample pam.d/ entries
    7. Using Login auto-detect features
    8. Using the Event Manager Tools
    8.1. Using the Card Event Manager
    8.1.1. Structure of configuration file
    8.2. Using the PKCS#11 Event Manager
    8.3. Security issues
    8.4. Example: use xscreensaver to lock screen on card removal
    9. Using the Login Finder Tool
    10. Using the PKCS#11 CertInspect tool
    11. HOWTO install pam_pkcs11
    11.1. Install the software
    11.2. Configure pam_pkcs11
    11.2.1. Create the needed directories
    11.2.2. Copy and install the root CA certificate
    11.2.3. Configure pam_pkcs11
    11.2.4. Configure the subject mapper
    11.3. Install and test your PAM configuration
    11.4. Secure your PAM configuration
    11.5. Using card_eventmgr
    11.5.1. Configuring and testing card_eventmgr
    11.5.2. Starting card_eventmgr
    12. What is a cert mapper?
    12.1. Fundamentals
    12.2. Implementation of cert mappers in pam-pkcs11
    12.3. How to use mapfiles
    12.4. Mappers provided by Pam-pkcs11
    12.4.1. Common Name (CN) mapper
    12.4.2. Subject mapper
    12.4.3. Getpwent() CN to login mapper
    12.4.4. LDAP (lightweight directory access protocol) mapper
    12.4.5. OpenSC library mapper
    12.4.6. OpenSSH library mapper
    12.4.7. Email Cert to login mapper
    12.4.8. Microsoft Universal Principal Name mapper
    12.4.9. Kerberos mapper
    12.4.10. Unique ID to login mapper
    12.4.11. Certificate Digest to login mapper
    12.4.12. Generic mapper
    12.4.13. Null mapper
    12.5. Adding new mappers
    13. Wish list
    14. Contact

    Abstract

    PAM-PKCS#11 is a PAM (Pluggable Authentication Module) library and related tools to perform login into Linux/UNIX systems by mean of X509 Certificates through any PKCS #11 compliant library.

    This manual describes how to compile, install, configure and use pam-pkcs11 PAM module and related tools.

    Chapter 1. Copyright License

    Copyright (C) 2005 Juan Antonio Martinez

    Copyright (C) 2003-2004 of Mario Strasser

    ScConf library Copyright (C) Antti Tapaninen and Timo Sirainen

    This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

    Chapter 2. Introduction

    pam_pkcs11 is a set of libraries and tools to controls the login process using a PKCS#11 token.

    The Linux-PAM login module allows a X.509 certificate based user login. The certificate and its dedicated private key are thereby accessed by means of an appropriate PKCS #11 module. For the verification of the users' certificates, locally stored CA certificates as well as either online or locally accessible CRLs are used.

    pkcs11_eventmgr is a tool to execute commands at insert or removal of a smart card from the reader. Alternatively, you can use the pcsc-lite's based version: card_eventmgr.

    pkcs11_inspect tool allows you to look at the content of a certificate, in order to help you in the process of Certificate-to-User mapping configuration.

    pklogin_finder tool can be used to check the PAM module without need to do the entire login process, just verifying that login names are properly found and matched.

    Detailed information about the Linux-PAM system can be found in The Linux-PAM System Administrators' Guide, The Linux-PAM Module Writers' Guide and The Linux-PAM Application Developers' Guide.

    The specification of the Cryptographic Token Interface Standard (PKCS #11) is available at PKCS #11 - Cryptographic Token Interface Standard.

    Chapter 3. Fundamentals

    Pam-pkcs11 is a PAM (Pluggable Authentication Module) pluggin to allow logging into a UNIX/Linux System that supports PAM by mean of use Digital Certificates stored in a smart card.

    To do this, a PKCS #11 library is needed to access the Cards. Details on how certificates are stored/retrieved, etc are hidden to pam-pkcs11 and handled by PKCS #11 library. This allows independence of the module from a specific card.

    3.1. PKCS #11 Module Requirements

    The PKCS #11 modules must full-fit the requirements given by the RSA Asymmetric Client Signing Profile, which has been specified in the PKCS #11: Conformance Profile Specification by RSA Laboratories.

    3.2. User Matching

    To approve the ownership of a certificate, that is, to allow the owner of a certificate to login as a particular user, pam-pkcs11 uses several modules called mappers that perform cert-to-login mapping. See Chapter 12, What is a cert mapper? section.

    [Note: This is still a work in progress, any suggestions for improvements or alternative matching algorithms are welcome.]

    Chapter 4. Installation

    1. Download source code from the official site.
    2. Unpack source tarball:
      tar xvzf pam_pkcs11-X.Y.Z.tar.gz
      cd pam_pkcs11-X.Y.Z
      
    3. If using SVN tree, re-create environment:
      ./bootstrap
      
    4. Execute the "standard" install sequence :-)
      ./configure
      make
      make install
      
    5. Alternatively, on RedHat Linux systems, you can use rpmbuild tools and the provided .spec file to create and install RPM packages:
      rpmbuild -ta /path/to/pam_pkcs11.X.Y.tar.gz
      rpm -v -i /usr/src/redhat/RPMS/i386/pam_pkcs11-X.Y-Z.i386.rpm
      rpm -v -i /usr/src/redhat/RPMS/i386/pam_pkcs11-tools-X.Y-Z.i386.rpm
      
    6. Configure package:
      1. Create the base configuration directory: /etc/pam_pkcs11/
      2. Copy ${base}/etc/pam_pkcs11.conf.example to /etc/pam_pkcs11/, rename it to /etc/pam_pkcs11/pam_pkcs11.conf and personalize it
      3. Create /etc/pam_pkcs11/crls/ and /etc/pam_pkcs11/cacerts/ directories corresponding to the configuration file, and fill them with proper data. The tools/ directory provides a tool pkcs11_make_hash_link that can be used to create hash files on every valid Cert and CRL file.
      4. Choose one or more mappers to install, set up configuration file, and if needed configure mappers. File /etc/pam_pkcs11.conf is documented to allow an easy editing
      5. Edit and configure /etc/pam.d/xxx entries. See instructions bellow
      6. Use pkcs11_inspect and pklogin_finder provided tools to see if you can read certificate data and perform correct user mapping
      7. Try to log in. For instance, switch to a new tty console
    7. If things go wrong:
      • Ensure that the PKCS #11 library works properly. You can, for instance, try to use the PKCS #11 module as an engine for OpenSSL or Mozilla/Firefox
      • Re-check the configuration
      • If a mapping file is used, check it. There are some known problems on some certificates that uses obscure character encodings (non utf-8), that makes CN mappings fail

    NOTES

    • To avoid locking the computer, it is recommended to try to configure only one non-critical service the first time (e.g. /etc/pam.d/xscreensaver), and allow normal login on the other services (/etc/pam.d/gdm).
    • PAM modules used for remote authentication (e.g. /etc/pam.d/sshd) cannot be used with pam-pkcs11 since there is no local smart card on the server. To do remote logging, you should use a kind of Single Sign On (SSO) service (Kerberos, winbind, etc.) and authenticate against a local (client) smart card. This is a job in progress.

    Chapter 5.  Configuring pam-pkcs11

    Configuration of pam-pkcs11 involves two steps:

    1. Configure pam-pkcs11
    2. Configure global PAM options

    This chapter explains pam-pkcs11 configuration-related issues. Next chapter deals with generic PAM options. You should read this manual and study the provided configuration sample files before doing any change.

    You must know:

    • Which PKCS #11 module you are going to use, and its filename
    • Which mapper(s) module(s) you need, and if needed, how to create and edit related mapping files
    • You'll also need the root Certificate Authority files, and if required, the Certificate Revocation Lists ones
    • Of course, the list of authorized users to login, and their corresponding certificates. When a remote certificate authentication is performed (e.g., via LDAP, ADS or NSS), this information must reside on, or be accessible by the server

    5.1. Setting up Configuration file

    The configuration file uses the scconf library.

    Parameters and data are grouped into blocks. Blocks can be nested in a tree.

    A pam-pkcs11 configuration file looks like:

    pam-pkcs11 {
    	global options
    	...
    	use_pkcs11_module = pkcs11 module to be used
    
    	pkcs11_module module1 {
    		module1 specific options
    	}
    
    	pkcs11_module module2 {
    		module2 specific options
    	}
    
    	[...]
    
    	use_mappers = mapper1, mapper2,... ; 
    
    	mapper mapper1 {
    		mapper1 specific options
    	}
    
    	mapper mapper2 {
    		mapper2 specific options
    	}
    
    	[...]
    	mapper mapperN {
    		mapperN specific options
    	}
    }
    

    For detailed description see the pam_pkcs11.conf.example file.

    Details on scconf syntax and API are provided in the src/scconf/README.scconf file.

    5.2. Setting up CRL's and CA's lists

    pam-pkcs11 needs a list of recognized Certificate Authorities, to properly validate user certificates. The same applies to Certificate Revocation Lists (if configured to be used).

    So the process to setup ca and crl entries is:

    1. Create ca_dir and crl_dir directory entries, according to configuration file
    2. Copy CA Certificates (either DER or PEM format) to the ca_dir directory
    3. Create hash links to CA certificates with provided pkcs11_make_hash_link. Note that OpenSSL must be installed
      cd /etc/pam_pkcs11/cacerts
      /usr/bin/pkcs11_make_hash_link
      
    4. Repeat above procedure for CRL entries (if used)
    5. Select your Certificate verification policy ("cert_policy" option in "module" entry)

    NOTE: Due to OpenSSL library limitations, CA root certificate entries must reside in the local file system, and cannot be accessed from a remote server. So although user auth can be done in a remote way, certificate trust chain validation must be done locally.

    5.3. Create map files

    If your selected mapper module(s) use(s) login mapping, you'll need to create and setup mapping files. Some examples are provided with the source code.

    As a general rule, a mapping file has a new line terminated list of certificate contents -> login entries:

    Certificate1 data -> login1
    Certificate2 data -> login2
    Certificate2 data -> login3
    

    Remember that this file is parsed from the first line to the end, and returns on the first match.

    As you can see bellow, mapfile specification doesn't need to be a regular file: you can retrieve data from any legal URL. Anyway, data format must be preserved. See Section 12.3, “How to use mapfiles” for additional info.

    Chapter 6. PAM Configuration

    6.1. Configuring pam.d files

    To make use of the PKCS #11 login module add the line

    auth	sufficient	pam_pkcs11.so	...
    

    in the /etc/pam.d/serviceXXX configuration file.

    Some mappers doesn't map to an existing user. To allow correct login, you may need to install also pam-mkhomedir in session PAM stack See http://www.kernel.org/pub/linux/libs/pam for details.

    The following options are recognized by pam-pkcs11.so:

    debug
    Enable debugging support.
    err_display_time
    Seconds to wait after error message is shown to give users a chance to read the message.
    config_file
    To specify up configuration file (default /etc/pam_pkcs11/pam_pkcs11.conf)

    The next options should be taken from the configuration file (default /etc/pam_pkcs11/pam_pkcs11.conf), but is up to the user to specify them in the command line. If so, it takes precedence over the configuration file.

    nullok
    Allow empty passwords.
    use_first_pass
    Do not prompt the user for the passwords but take them from the PAM_ items instead.
    try_first_pass
    Do not prompt the user for the passwords unless PAM_(OLD)AUTHTOK is unset.
    use_authtok
    Like try_first_pass, but fail if the new PAM_AUTHTOK has not been previously set (intended for stacking password modules only).

    Next options are PKCS #11 module specific:

    pkcs11_module=<file>

    Filename of the PKCS #11 module. The default value is /etc/pam_pkcs11/pkcs11_module.so

    Note that this option takes precedence over "module" entry in proper pkcs11_module section, but this section is still needed

    slot_num=<nr>

    Slot-number to use: 1 for the first, 2 for the second and so on. The default value is 0, which means to use the first slot with an available token.

    ca_dir=<path>

    Path to the directory where the CA certificates are stored. The directory must contain an OpenSSL hash-link to each certificate. The default value is /etc/pam_pkcs11/cacerts/.

    Pam-pkcs11 provides a utility: pkcs11_make_hash_link that can be used to create hash links to certificate files. Hashes are used to check certification validity and revocation.

    crl_dir=<path>

    Path to the directory where the CRLs are stored. The directory must contain an openssl hash-link to each CRL. The default value is /etc/pam_pkcs11/crls/.

    cert_policy={none, ca, signature, crl_online, crl_offline, crl_auto}

    Sets the Certificate verification policy:

    • none: Performs no verification at all
    • ca: Checks that Certificate has a recognized CA from ca_dir
    • signature>: Does a signature check to ensure that private and public key matches
    • crl_online: Downloads the CRL from the location given by the CRL distribution point extension of the certificate
    • crl_offline: Uses the locally stored CRLs.
    • crl_auto: Is a combination of online and offline: it first tries to download the CRL from a possibly given CRL distribution point and if this fails it uses the local CRLs.

    You can use a comma-separated list to specify all desired options, eg ca,crl_offline,signature. The default setting is none.

    6.2. Sample pam.d/ entries

    Here is the normal way to use pam-pkcs11 into the PAM stack. Only the first auth line is added. You configuration may be different depending on your Unix system.

    #%PAM-1.0
    auth       sufficient   pam_pkcs11.so
    auth       required     pam_securetty.so
    auth       required     pam_stack.so service=system-auth
    auth       required     pam_nologin.so
    account    required     pam_stack.so service=system-auth
    password   required     pam_stack.so service=system-auth
    session    required     pam_stack.so service=system-auth
    session    optional     pam_console.so
    

    An alternate way is to use explicit options. This is not recommended, but still possible:

    #%PAM-1.0
    auth       sufficient    pam_pkcs11.so	nullok debug try_first_pass \
                 config_file=/etc/pam_pkcs11/pam_pkcs11.conf \
                 pkcs11_module=/usr/lib/pkcs11/pkcs11_module.so \
                 ca_dir=/etc/cacerts/ crl_dir=/etc/cacerts/ cert_policy=none
    auth       required     pam_securetty.so
    auth       required     pam_stack.so service=system-auth
    auth       required     pam_nologin.so
    account    required     pam_stack.so service=system-auth
    password   required     pam_stack.so service=system-auth
    session    required     pam_stack.so service=system-auth
    session    optional     pam_console.so
    

    In this second example the configuration file is still needed to get the mapper module options and flags.

    Chapter 7. Using Login auto-detect features

    Starting at pam_pkcs11-0.4.2 a new feature is provided: pam-pkcs11 can deduce the username from the user certificate without using the login prompt.

    This is done when pam_get_user() call returns null or an empty string. In this case, pam-pcks11 uses the module mapper "find" feature instead of normal "match".

    If the finder returns with success, the found username is set to PAM using pam_set_item(PAM_USER) call, and PAM_AUTH_OK is returned.

    So it is no longer needed to enter the login name if a certificate is provided and can be mapped to a user.

    There are to ways for using this feature:

    1. Patch "gdm" and "login" programs to detect card presence and return null as user name, without prompt for a user login. This is a work to be done :-(
    2. Use unpatched versions, and do the following procedures:
      1. When login from console, just enter " " (space) + Enter.
      2. When login from gdm, just key Enter at login prompt.

    In both cases the procedure follows as:

    1. If a card is not present, "login" will ask for a password and then fail; "gdm" will prompt again for a user login
    2. If a card is present, pam-pkcs11 will ask for the PIN, and then invoke finder in module mapper list. When a user is found, this user become the logged user

    This feature can be used with pam-mkhomedir.so PAM session module. In this case, you can create on-the-fly accounts. This scenario is ideal for centralized auth services (Winbind, LDAP, Kerberos, RDBMS auth...).

    As example, here comes my tested /etc/pam.d/gdm file:

    #%PAM-1.0
    auth       sufficient   pam_pkcs11.so debug config_file=/etc/pam_pkcs11/pam_pkcs11.conf
    auth       required     pam_env.so
    auth       required     pam_stack.so service=system-auth
    auth       required     pam_nologin.so
    account    required     pam_stack.so service=system-auth
    password   required     pam_stack.so service=system-auth
    session    required     pam_stack.so service=system-auth
    session    optional     pam_mkhomedir.so skel=/etc/skel umask=0022
    session    optional     pam_console.so
    

    IMPORTANT NOTES: For pam_set_item(PAM_USER) to succeed, the application using PAM must have enough permission. If this condition is not met, setting user process will fail and proper log message registered. So this feature is mainly provided for logging processes running as root.

    Improper mapper chain' configurations with unauthorized certificates can lead to the creation of fake accounts in the system if pam_mkhomedir.so module is used. So be really careful when authenticate users directly from certificates.

    Chapter 8. Using the Event Manager Tools

    PAM-PKCS11 includes several tools: card_eventmgr and pkcs11_eventmgr that can be used to monitor the status of the card reader and dispatch actions on several events. These programs can be used to several actions, like lock screen on card removal.

    Note that these programs have no direct interaction with pam-pkcs11 module: they are just card status monitors. It is the system administrator job to define and configure actions to take on events.

    8.1. Using the Card Event Manager

    card_eventmgr is a card status monitor based on the PCSC-Lite library.

    To invoke the program, just type card_eventmgr. Several command lines options are recognized:

    • debug to enable debugging. Default is no debug
    • daemon to run as a daemon in the background. If debug is unset, also detach from the tty. Default is to run in the foreground
    • timeout=<msecs> time in milliseconds between two consecutive status poll. Defaults is 1000 (1 second)
    • config_file=<file> configuration file to use. Default is /etc/pam_pkcs11/card_eventmgr.conf

    8.1.1. Structure of configuration file

    Here is an example of configuration file. It is auto-descriptive:

    card_eventmgr {
    
    	# Run in background? Implies debug=false if set to true
    	daemon = false;
    
    	# show debug messages?
    	debug = false;
    
    	# polling time in milliseconds
    	timeout = 1000;
    
    	#
    	# list of events and actions
    
    	# Card inserted
    	event card_insert {
    		# what to do if an action fail?
    		# ignore  : continue to next action
    		# return  : end action sequence
    		# quit    : end program
    		on_error = ignore ;
    
    		# You can enter several, comma-separated action entries
    		# they will be executed in turn
    		action = "/usr/bin/play /usr/share/sounds/warning.wav",
    			"/usr/X11R6/bin/xscreensaver-command -deactivate";
    	}
    
    	# Card has been removed
    	event card_remove { 
    		on_error = ignore;
    		action = "/usr/bin/play /usr/share/sounds/error.wav",
    			"/usr/X11R6/bin/xscreensaver-command -lock";
    	}
    }
    

    8.2. Using the PKCS#11 Event Manager

    pkcs11_eventmgr is very similar to card_eventmgr, with some improvements:

    1. It uses the PKCS#11 library, instead the low-level PCSC-Lite API
    2. Polling time, and expire time unit is the second, not the millisecond
    3. New command line options:
      • [no]debug to enable/disable debugging. Defaults to "nodebug"
      • [no]daemon to run as daemon or foreground. If debug is unset, daemon mode also detaches from tty. Default to "nodaemon"
      • polling_time=<secs> time in seconds between two consecutive status poll. Defaults to 1 second
      • expire_time=<secs> time in second on card removed to trigger "expire_time" event. Default to 0 (no expire)
      • config_file=<file> configuration file to use. Defaults to /etc/pam_pkcs11/card_eventmgr.conf
      • pkcs11_module=<file> PKCS #11 dynamic library to use. Defaults to /usr/lib/pkcs11/opensc-pkcs11.so
    4. Expire time on card removal is now supported
    5. Configuration file is slightly different. See provided example

    Here is a pkcs11_cardmgr sample file, with defaults

    # Sample pkcs11_eventmgr configuration file
    #
    pkcs11_eventmgr {
    
    	# Run in background? Implies debug=false if true
    	daemon = true;
    
    	# show debug messages?
    	debug = false;
    	
    	# polling time in seconds
    	polling_time = 1;
    
    	# expire time in seconds
    	# default = 0 (no expire)
    	expire_time = 0;
    	
    	# pkcs11 module to use
    	pkcs11_module = /usr/lib/opensc-pkcs11.so;
    
    	#
    	# list of events and actions
    
    	# Card inserted
    	event card_insert {
    		# what to do if an action fail?
    		# ignore  : continue to next action
    		# return  : end action sequence
    		# quit    : end program
    		on_error = ignore ;
    
    		# You can enter several, comma-separated action entries
    		# they will be executed in turn
    		action = "/usr/bin/play /usr/share/sounds/warning.wav",
    			 "/usr/X11R6/bin/xscreensaver-command -deactivate";
    	}
    
    	# Card has been removed
    	event card_remove { 
    		on_error = ignore;
    		action = "/usr/bin/play /usr/share/sounds/error.wav",
    			 "/usr/X11R6/bin/xscreensaver-command -lock";
    	}
    
    	# Too much time card removed
    	event expire_time { 
    		on_error = ignore;
    		action = "/bin/false";
    	}
    }
    

    As you can see, on each event you can define a list of actions, and what to do if an action fails.

    8.3.  Security issues

    The best way to start card monitoring is at user login. If so, note that all event commands will be executed with user privileges. So it is up to the user to take care that he has permissions to execute the desired actions.

    Special checks should be done when invoking setuid/segid programs: these commands usually ignore the user environment and set up their own. So these applications may not work as expected.

    Command actions are executed via execve("/bin/sh","-c","provided command",null,environ) in order to avoid security risks if using system() library call.

    8.4.  Example: use xscreensaver to lock screen on card removal

    Just add to your ~/.xsession or KDE/GNOME Autostart directory an invocation to card_eventmgr in daemon mode. Your ~/.xsession should look like: FIXME

    Additionally you can add this line to /etc/pam.d/xscreensaver configuration file:

    auth       sufficient   pam_pkcs11.so
    

    In this case, when card is removed the X screen will lock. When card is re-inserted, screen will prompt for the card PIN, check it and if access granted the screen will unlock

    NOTES:

    1. Starting pam_pkcs11-0.4.4, card_eventmgr tool is no longer supported by pam-pkcs11, and may be removed in newer versions on the package. Users are encouraged to upgrade to pkcs11_eventmgr. This is done to avoid dependencies on low level card management routines
    2. Some PKCS#11 implementations do not properly support C_WaitForSlotEvent() function as defined in PKCS #11 v2.1 API. So current pkcs11_eventmgr doesn't use it at all, just sleep+rescan tokens. This is a time-consuming behavior, and may change in future versions of the tool

    Chapter 9. Using the Login Finder Tool

    PAM-PKCS#11 provides another tool: pklogin-finder that can be used to find Cert-to-login maps, outside the PAM environment. This tool can be used to create and test map files, or to check environment and configuration files, without need to use PAM related tools.

    pklogin_finder uses the same structure and configuration than pam-pkcs11 module. It reads certificate, and try all specified mappers to find a user match. When found, login name is displayed on stdout.

    To invoke, just type from console:

    pklogin_finder [[no]debug] [config_file=<file>]
    

    By default, debug is set to false, and config_file to /etc/pam_pkcs11/pam-pkcs11.conf. All PAM related options (nullok, try_first_pass, and so) in configuration file are ignored

    Return values are:

    • 0 0n success, and login name displayed on stdout
    • 1 On no login match found
    • 2 On process error

    Chapter 10. Using the PKCS#11 CertInspect tool

    Starting at version 0.5 a new tool pkcs11_inspect is provided.

    pkcs11_inspect is a PKCS #11 based tool to explore certificate contents. It's similar to pklogin_finder, but no mapping is done at all: just load mappers' chains, and in turn, try to get proper data from certificate (i.e.: cn_mapper looks for CN entries, and so).

    When desired info is found, pkcs11_inspect print found data to stdout, without doing any mapping, that is, mapfile entries in configuration file are ignored.

    The reason to exist for this tool is to ease the making of mapping files:

    • Insert your smart card
    • Invoke pkcs11_inspect
    • Store result as "left side" of mapfile
    • Edit mapfile and assign contents to a login

    Same command line options and configuration file than pklogin_finder applies to pkcs11_inspect command, but note that mapping and ignorecase options will be ignored. See the manual page for details.

    Chapter 11. HOWTO install pam_pkcs11

    We will now describe a complete installation of pam_pkcs11 as an example case. This configuration will use a local root CA certificate and the subject mapper. Many other configurations are also possible.

    11.1.  Install the software

    You should install pre-compiled binaries since that is the easiest way to install a software. See the documentation of your distribution to know how to install RPM, DEB or whatever packages.

    If you want to recompile from source read Chapter 4, Installation.

    11.2.  Configure pam_pkcs11

    11.2.1.  Create the needed directories

    mkdir /etc/pam_pkcs11
    mkdir /etc/pam_pkcs11/cacerts
    mkdir /etc/pam_pkcs11/crls
    

    11.2.2.  Copy and install the root CA certificate

    I used tinyCA to generate the root CA and the user certificates. Your root CA certificate name may be different. Make sure that all the files in /etc/pam_pkcs11/cacerts/ can be read by any user.

    cp testCA-cacert.der /etc/pam_pkcs11/cacerts/
    cd /etc/pam_pkcs11/cacerts
    chmod a+r *
    pkcs11_make_hash_link
    

    11.2.3.  Configure pam_pkcs11

    Copy the sample file:

    cp /usr/share/doc/pam-pkcs11/examples/pam_pkcs11.conf.example.gz /etc/pam_pkcs11/
    cd /etc/pam_pkcs11/
    gunzip pam_pkcs11.conf.example.gz
    mv pam_pkcs11.conf.example pam_pkcs11.conf
    

    The sample file uses the OpenSC PKCS#11 library. You may need to edit /etc/pam_pkcs11/pam_pkcs11.conf if you want to use another PKCS#11 library.

    11.2.4.  Configure the subject mapper

    Copy the sample file:

    cp /usr/share/doc/pam-pkcs11/examples/subject_mapping.example /etc/pam_pkcs11/subject_mapping
    

    Then use pkcs11_inspect to get the information you need for the mapper. In our case you are looking for something like:

    Printing data for mapper subject: /C=ES/O=FNMT/OU=FNMT Clase 2
     CA/OU=500051483/CN=NOMBRE MARTINEZ CASTA\xF1O JUAN ANTONIO
     - NIF 50431138G
    

    Note that this is one line but it is wrapped to be displayed here in the form of three lines.

    Then edit /etc/pam_pkcs11/subject_mapping to add the strings above followed by -> login name. The file should then contain something like:

    # Mapping file for Certificate Subject
    # format: Certificate Subject -> login
    #
    /C=ES/O=FNMT/OU=FNMT Clase 2 CA/OU=500051483/CN=NOMBRE MARTINEZ
    CASTA\xF1O JUAN ANTONIO - NIF 50431138G -> jantonio
    

    Again note that the two last lines displayed should be only one.

    11.3.  Install and test your PAM configuration

    You will now configure your PAM system to use pam_pkcs11. We recommend you to start with an easy-to-debug application like login. The advantage of login is that you can see the debug messages from pam_pkcs11.

    Edit /etc/pam.d/login and add, at the beginning of the file, the lines:

    # pam_pkcs11: smart card login
    auth       sufficient pam_pkcs11.so
    

    Since /etc/pam_pkcs11/pam_pkcs11.conf has "debug = true" you should see lots of debug on the console you use to log in. You should also see any error that would occur. If everything works correctly you can change the configuration file and use "debug = false".

    Once your PAM configuration is tested and working you can configure all the PAM applications you want to use with a smart card. A possible list is:

    • gdm (Gnome Display Manager)
    • kdm (KDE Display Manager)
    • xdm (X11 display manager)
    • login (text console login)
    • xscreensaver (X11 screen saver)
    • etc.

    11.4.  Secure your PAM configuration

    We used "sufficient" in the PAM configuration file. If the pam_pkcs11 module fails to authenticate the user the PAM system will go on with the next PAM module, the next PAM module should ask for a password. If you want to use the smart card only and not the password any more just replace "sufficient" by "required". The authentication process will then fail if pam_pkcs11 fails.

    Note: with the "required" option, if there is a bug in any smart card related software you will not be able to log in even as root. It should be safer to keep the possibility to log in using a password but at the same time disable password login for normal users. So you will still be able to login as root with the root password.

    11.5.  Using card_eventmgr

    card_eventmgr is a helper tool to automatically launch an application to lock or unlock the screen when the card is removed or inserted. A natural application is to lock the X11 screen when the card is removed.

    11.5.1.  Configuring and testing card_eventmgr

    Copy the sample file:

    cp /usr/share/doc/pam-pkcs11/examples/card_eventmgr.conf.example /etc/pam_pkcs11/card_eventmgr.conf
    

    Edit the configuration file to set the actions to be processes when the card is removed and inserted. You may have to change the command to play a sound.

    You can now test your card_eventmgr configuration file by executing

    card_eventmgr debug nodaemon
    

    You will see some debug messages and, possibly, why the command you configured as action does not work properly.

    11.5.2.  Starting card_eventmgr

    After debugging your card_eventmgr configuration file you can start it automatically. One solution is to create a ~/.xsession file containing:

    # start the card autolock
    card_eventmgr pidfile=$HOME/.card_eventmgr.pid
    
    # start Gnome or something else
    /usr/bin/x-session-manager
    
    # kill the card autolock
    card_eventmgr kill pidfile=$HOME/.card_eventmgr.pid
    

    Chapter 12. What is a cert mapper?

    12.1.  Fundamentals

    When a X509 Certificate is provided, there are no direct ways to map a cert to a login. With a certificate we can check validity and revocation, but user mapping depends entirely on certificate contents.

    So we need a configurable, stackable, and definable way to specify cert-to-user mapping.

    pam-pkcs11 cert mappers provides several functions to:

    1. Search an specific item in certificate
    2. Deduce a login from certificate
    3. Test if a login and a certificate matches

    Normal pam-pkcs11 login process involves following procedures:

    1. Enter login
    2. Ask for PIN
    3. Open and validate certificate
    4. Map certificate into an user (*)
    5. Check if login and user matches (**)

    An alternate way of working is by mean of not providing user name:

    1. Detect if a card is inserted
    2. Ask for PIN
    3. Open and validate certificate
    4. Map certificate into an user (*)
    5. Open session for deduced login

    Last way needs an additional pam-mkhomedir.so PAM module, which can dynamically create an account.

    Operations (*) and (**) are the reason for cert-mappers to exist.

    12.2. Implementation of cert mappers in pam-pkcs11

    pam-pkcs11 implements cert mapper in form of dynamic loaded modules. Additionally, most of simplest mappers doesn't need to be dynamically loaded, as they are already statically linked with pam-pkcs11. You can add as many modules as desired, and the system will try all of them in turn, until match is done, or end of list get reached.

    The mapper list is defined in the configuration file:

    pam-pkcs11 {
    ....
        use_mappers = mapper1 [ [[,] mapper2 ] ... ] ;
        ....
        mapper mapper1 {
    	debug = false;
    	# When the mapper module is to be dynamically loaded, specify path
    	module = /path/to/module.so;
    	# When the mapper module is statically linked set to "internal"
    	# module = internal;
    	[ additional mapper dependent options ]
        }
        ....
    }
    

    "module" option is mandatory: says pam_pkcs11 where to find dynamic library. Additional entries can be defined but are module dependent

    12.3. How to use mapfiles

    Most of mappers supports the concept of mapfile, that is, a system to convert a given certificate data item to a user login. The reasons are simple:

    • Most certificate contents are no valid for use as login name, and need some way to manage it
    • We can store and manage a list of authorized certificates in a centralized way

    The mapfile scheme used in pam-pkcs11 is powerful: it's not only restricted to files, so we can specify HTTP, LDAP, FTP and so connections, to retrieve mapfile. So this scheme is ideal for centralized accounting systems.

    The common structure of all mapfiles is:

    Certificate 1 entry data -> login1
    Cert 2 data -> login2
    string from -> string to
    

    That is: a string, the sequence " -> " (space, dash, greater, space) and a login

    NOTE: It's syntactically correct to specify more than one word in the right side of a map entry. But be aware that most mappers expect to be returned a single word that provides a user login. Otherwise a strange behavior may occur. See specific notes on mappers.

    When a mapper module uses mapfiles, has a structure like:

    ...
    mapper my_mapper {
    	...
    	mapfile = URL;
    }
    ...
    

    URL is a Universal Resource Locator as defined in corresponding RFC:

    • ftp://user:password@my.host.com/file
    • file:///path/to/local/file
    • https://www.weirdserver.com:8000/
    • ldap://ldap.frontec.se/o=frontec??sub?mail=*sth.frontec.se

    Note that depending on compile time options pam-pkcs11 may not support all URL syntax. See Install section and use of --use-curl configure option

    Provided source code includes several example mapping files

    12.4. Mappers provided by Pam-pkcs11

    The standard pam-pkcs11 provides following mapper modules:

    12.4.1. Common Name (CN) mapper

    Assumes CN field on certificate to be the login name.

    • When used as finder, module returns the first CN field found or NULL
    • When used as matcher, it parses certificate and compare all CN fields found against provided login name, returning OK if match found

    In either case, if a mapfile is used, the mapper will try to map CN into a login and use it.

    Configuration entry is as follow:

      # Common Name (CN) to login mapper
      mapper cn {
            debug = false;
    	module = internal;
            # module = /usr/lib/pam_pkcs11/cn_mapper.so;
    	# mapfile = "file:///etc/pam_pkcs11/cn_mapfile;
    	ignorecase = false;
    	mapfile = "none"
      }
    

    Starting pam-pkcs11-0.5.3 this module is now statically linked, so no need to provide library pathname

    12.4.2. Subject mapper

    Extract Certificate Subject and assume it as login.

    • When used as finder, returns mapped login, or assume login=subject if no map found or provided
    • When used as matcher, try to match provided login, with result obtained by previous find operation

    In either case, if a mapfile is used, the mapper will try to map subject into a login and use it.

    Configuration file is like:

     # Certificate Subject to login mapper
      mapper file {
            debug = false;
    	module = internal;
            # module = /usr/lib/pam_pkcs11/subject_mapper.so;
    	ignorecase = true;
    	# mapfile = file:///etc/pam_pkcs11/subject_map;
            mapfile = "none";
      }
    

    The mapping file must follow this structure:

    ....
    Certificate Subject -> login
    ....
    

    Note that some certificates handle strange char mappings (non utf-8) so you must ensure correct byte-to-byte match. You can use provided pkcs11_inspect tool to get and store correct data from certificate

    Starting pam-pkcs11-0.5.3 this module is now statically linked, so no need to provide library pathname

    12.4.3. Getpwent() CN to login mapper

    Compare CN against getpwent() library call login or gecos returned values to match user login

    • When used as finder use getpwent() system call to retrieve every users on the system. If pw_name or pw_gecos fields match with CN, pw_name is returned as login name
    • When used as matcher, maps CN to an user with via the finder and matches result with login name provided by PAM, returning the result (match or no)

    Note: newer implementations of getpwent() libraries, use an additional Name Service Swicth (NSS) infrastructure, that allows administrators to specify how to obtain requested data. This means you can setup /etc/nsswitch.conf password entries to lookup in to /etc/passwd, or LDAP/Kerberos/NIS+/YP services

    pw_mapper configuration file shows like:

      mapper pw {
            debug = true;
            ignorecase = false;
    	module = internal;
            # module = /usr/lib/pam_pkcs11/pw_mapper.so;
      }
    

    Starting pam-pkcs11-0.5.3 this module is now statically linked, so no need to provide library pathname

    12.4.4. LDAP (lightweight directory access protocol) mapper

    Uses an LDAP server to retrieve user name. An additional file tells module the mapping between Cert fields and LDAP entries.

    This mapper is still under development.

    ldap_mapper configuration file shows like:

      # Directory ( ldap style ) mapper
      mapper ldap {
            debug = false;
            module = /usr/lib/pam_pkcs11/ldap_mapper.so;
            ldaphost = "";
            ldapport = ;
            URI = "";
            scope = 2;
            binddn = "cn=pam,o=example,c=com";
            passwd = "";
            base = "ou=People,o=example,c=com";
            attribute = "userCertificate";
            filter = "(&(objectClass=posixAccount)(uid=%s))"
            uid_attribute = "uid";
            attribute_map = "uid=uid&mail=email", "krbprincipalname=upn";
            # SSL/TLS-Settings
            ssl = tls
            # tls_randfile = ...
            tls_cacertfile = /etc/ssl/cacert.pem
            # tls_cacertdir = ...
            tls_checkpeer = 0
            #tls_ciphers = ...
            #tls_cert = ...
            #tls_key = ...
      }
    

    The following options are recognized by

    ldaphost
    The FQDN (hostname) oder IP-address of the ldap server.
    URI
    A space separated list of LDAP URIs. The URIs are used in the given order. If a ldaphost is also submitted, it will be appended to the URI list.
    ldapport
    The LDAP Port on the server (default: 389 for LDAP and LDAP-TLS and 636 for SSL)
    scope
    Scope of search: 0-2
    • 0 "base", search only the basedn
    • 1 "one", only the set of records one level below the basedn is searched (default)
    • 2 "sub" means the union of entries at the "base" level and all levels below are searched
    binddn
    The bind-DN if needed.
    passwd
    Password for bind-DN
    base
    The DN of the searchbase (see scope)
    attribute
    The user attribute in LDAP entry, which contains the certificate. This can be an multi-value attribute. That implies you can store more than one certificate under this attribute. All certificates are utilized.
    uid_attribute
    The attribute in an LDAP entry which contains the user's login name. When the module needs to determine the user's login name from the information in the certificate, if this option is set, the module can search for an LDAP entry which contains the certificate that was read from the card in the attribute named by the attribute setting and read the user's login name from this attribute. If not, the module must iterate through all known users, checking for each user if the certificate on the card matches that user.
    attribute_map
    A list of sets of conditions which can specify how the module should locate an entry which corresponds to the user. Each list item consists of a set of one or more conditions consisting of an LDAP attribute and a certificate attribute, with conditions in the same set being separated by a & character. An LDAP entry is considered to match a user if all of the conditions are met. The recognized certificate attributes include
    • "cn" a commonName attribute value from the certificate's subject
    • "subject" the certificate's entire subject name
    • "kpn" a Kerberos principal name subjectAltName value
    • "email" an rfc822Name subjectAltName value
    • "upn" a Microsoft Universal Principal Name subjectAltName value
    • "uid" a UID attribute value from the certificate's subject
    • "cert" the entire certificate
    If no attribute_map is specified, the default method is to search for entries which contain the card certificate in the attribute named by the attribute setting.
    filter
    LDAP filter string. You can use ist to restrict the entries returned by the LDAP server, e.g. by checking other attributes of the user entry. %s is substituted by the user name. (&(objectClass=posixAccount)(uid=%s)) means, only that LDAP entry is returned which has an objectClass "posixAccount" and the uid with the user name. IMPORTANT NOTE: The filter string must be choosen in such a way that only one entry for the user is returned. If an user has more certifactes than these should be collected under the attribute.
    ssl
    Enable or disable the usage of TLS or SSL
    • off TLS/SSL off(default)
    • tls enable TLS
    • on|ssl enable SSL
    tls_randfile
    Specifies the path to an entropy source.
    tls_cacertfile
    Specifies the path to the X.509 certificate for peer authentication.
    tls_cacertdir
    Specifies the directory containing X.509 certificates for peer authentication.
    tls_checkpeer
    Specifies whether to require and verify the server certificate or not. 1 check the certificate 0 off (default)
    tls_ciphers
    Specifies the ciphers to use.
    tls_cert
    Specifies the path to the file containing the local certificate for client TLS authentication if required.
    tls_key
    Specifies the path to the file containing the private key for client TLS authentication.

    12.4.5. OpenSC library mapper

    Search certificate in ${HOME}/.eid/autorized_certificates in a similar way as OpenSC does. When used as login finder, returns the user that owns ${HOME} directory where certificate is found.

    This mapper is still under development.

    12.4.6. OpenSSH library mapper

    Search certificate public key in ${HOME}/.ssh/authorized_keys in a similar way as OpenSSH does. The openssh mapper uses Naming Service Switch (NSS) via getpwent() to get the list of users and home directories

    When used as login finder, returns the user that owns the authorized_keys file where the public key is found. If several users share the same public key, returns first found login. On no public key match returns NULL

    When used as matcher, the module uses getpwnam() to evaluate user home directory, then tries to open ${HOME}/.ssh/authorized_keys file and finally tries to find a public key that matches with public keys found in certificate. Returns ok if match found, or fail on no match ( or process error )

    Configuration file entry looks like:

      mapper openssh {
            debug = false;
            module = /usr/lib/pam_pkcs11/openssh_mapper.so;
      }
    

    NOTE: This mapper is still under development.

    12.4.7. Email Cert to login mapper

    Email mapper tries to extract an e-mail from certificate. If found does following procedures:

    • if mapfile option is set and file is provided, the module tries to map email field from the certificate to a user (or an alternate email).
    • if mapfile is not set, just use email address from certificate to perform find/match

    Once we have a mapped user, module does:

    • When used as finder, just return email or mapped email/user (see above)
    • When used as matcher, compare found email/user against provided by PAM.

    Additionally you can set ignorecase or ignoredomain flags:

    Domain check (if set) is done by testing if provided email domain part (@ie.this.domain) matches host domain.

    E.g. user@my.company.com email in host host.in.my.company.com host matches domain.

    Configuration file entry looks like:

      mapper mail {
            debug = false;
    	module = internal;
            # module = /usr/lib/pam_pkcs11/mail_mapper.so;
            # MapFile to use
            mapfile = file:///etc/pam_pkcs11/mail_mapping;
            # Some certs store email in uppercase. Take care on this
            ignorecase = true;
            # Also check that host matches mx domain
            ignoredomain = false;
      }
    

    Starting pam-pkcs11-0.5.3 this module is now statically linked, so no need to provide library pathname

    12.4.8. Microsoft Universal Principal Name mapper

    Try to find and use Microsoft Universal Principal Name (UPN) extension to evaluate login name.

    Microsoft Universal Principal Name is a ASN1-encoded UTF8 string with the syntax login@ADS_Domain. When an UPN is found, the mapper extracts login part as login user. Then, if ignoredomain is unset, try to match domain.

    • When used as finder, returns UPN login as login name (or NULL on fail)
    • When used as matcher compares UPN login against PAM provided login

    Configuration file entry looks like:

      mapper ms {
            debug = false;
    	module = internal;
            # module = /usr/lib/pam_pkcs11/ms_mapper.so;
            ignorecase = false;
            ignoredomain = false;
    	domainname = "domain.com";
      }
    

    Starting pam-pkcs11-0.5.3 this module is now statically linked, so no need to provide library pathname

    12.4.9. Kerberos mapper

    Try to find and use Kerberos Principal Name as login name. if mapfile is specified, maps KPN into a login.

    NOTES:

    • Kerberos V5 Principal name syntax is assumed: component/component@realm. It's supposed to be stored in ASN1String format in the certificate
    • This mapper does not perform PKINIT Kerberos authentication, just retrieve and use KPN to map login name. (PKINIT auth is still a work in progress)

    Configuration entry:

      mapper krb {
            debug = false;
    	module = internal;
            # module = /usr/lib/pam_pkcs11/krb_mapper.so;
    	ignorecase = false;
    	mapfile = "none";
      }
    

    Starting pam-pkcs11-0.5.3 this module is now statically linked, so no need to provide library pathname

    12.4.10.  Unique ID to login mapper

    Use Unique ID (UID) field as login name.

    Similar to CN mapper, but using UID as field to find/match.

    Configuration entry:

      mapper uid {
            debug = false;
    	module = internal;
            # module = /usr/lib/pam_pkcs11/uid_mapper.so;
    	ignorecase = false;
    	mapfile = "none";
      }
    

    Starting pam-pkcs11-0.5.3 this module is now statically linked, so no need to provide library pathname

    12.4.11.  Certificate Digest to login mapper

    Evaluates a certificate digest, and try to map result into a login by using a mapfile.

    Configuration file should provide the digest algorithm. Depending on OpenSSL configuration all of listed bellow may or not be present in your system.

    Configuration entry:

      mapper digest {
            debug = false;
    	module = internal;
            # module = /usr/lib/pam_pkcs11/digest_mapper.so;
    	# Algorithm used to evaluate certificate digest
            # Select one of:
            # "null","md2","md4","md5","sha","sha1","dss","dss1","ripemd160"
            algorithm = "sha1";
            mapfile = file:///etc/pam_pkcs11/digest_map;
      }
    

    Starting pam-pkcs11-0.5.3 this module is now statically linked, so no need to provide library pathname

    12.4.12. Generic mapper

    This mapper groups several mappers in one. You can select which certificate content should be used to deduce/match login, optionally perform a file mapping, and, if desired consult mapped string to NSS services to get final user login.

    Three arguments are needed:

    • The certificate field to be used. Allowed values are:
      • "cn" To use Certificate CommonName
      • "subject" To use Certificate Subject
      • "kpn" To use Kerberos PrincipalName
      • "email" To use Certificate Email
      • "upn" To use Microsoft Universal Principal Name
      • "uid" To use Certificate UniqueID
      • "serial" To use Certificate SerialNumber
    • A map file name or "none" if no mapping is desired
    • A "use_getpwent" flag, to decide if NSS services are required

    Note that fields are taken literally: i.e. no post-processing is done, just take string "as is", and pass it to next step. So if you need some data processing (i.e. use ADS name field in upn) this mapper is not for you.

    The first step is extract string from certificate. If a mapping file is required, the string is mapped against mapfile, obtaining a new string. If use_pwent is also required, the mapper compare last one against pw_login or pw_gecos. If a match is done, the pw_login is returned as user login.

    When module is user as login finder, returns result of above operations. When user as login matcher, compares provided login with above result.

    generic_mapper configuration file shows like:

      mapper generic {
            debug = true;
    	module = internal;
            # module = /usr/lib/pam_pkcs11/generic_mapper.so;
    	# ignore letter case on match/compare
            ignorecase = false;
    	# Use one of "cn" , "subject" , "kpn" , "email" , "upn" , "uid" or "serial"
    	cert_item  = cn;
    	# Declare mapfile if needed, else select "none"
    	mapfile = file:///etc/pam_pkcs11/generic_mapfile
    	# Decide if use getpwent() to map login
    	use_getpwent = false;
      }
    

    Note:

    As for every other mappers, pklogin_finder tool, doesn't perform the entire process, just returns certificate contents.

    Starting pam-pkcs11-0.5.3 this module is now statically linked, so no need to provide library pathname

    12.4.13. Null mapper

    Blind access/deny mapper.

    If default_match is set to true:

    • When used as finder always returns configuration provided default_user (default: "nobody")
    • When used as matcher always returns OK

    If default_match is set to false:

    • When used as finder always returns NULL
    • When used as matcher always returns FAIL

    Configuration entry:

      mapper null {
            debug = false;
    	module = internal;
            # module = /usr/lib/pam_pkcs11/null_mapper.so;
            # select behaviour: always match, or always fail
            default_match = false;
    	# on match, select returned user
    	default_user = nobody;
      }
    

    NOTE: This mapper should be the last one in the mapper chain, as it always return valid -- although meaningless -- data

    Starting pam-pkcs11-0.5.3 this module is now statically linked, so no need to provide library pathname

    12.5. Adding new mappers

    Creating new mappers is easy: just retrieve and study the PAM-PKCS#11 Mapper API reference Manual

    You'll find sample code, compiling instructions, and a complete list of provided library calls

    Chapter 13. Wish list

    1. Make all mappers to use an unified library
    2. Only ask for PIN only when needed (to extract private key for signature verification or pkinit challenge process)
    3. Check that certificate is valid for authentication instead of using first found cert
    4. Finish coding all mappers (OpenSSH, OpenSSL, LDAP to be done)
    5. Implement pkinit to talk Kerberos server
    6. Debug. I cannot test all cases
    7. Lots of docs and samples needs to be written
    8. Check data types on same certificate contents instead of assume utf8or asn1string
    9. Define and document a mapper API. Create pam_pkcs11-devel package

    Chapter 14. Contact

    Any comments, suggestions and bug reports are welcome. Please, mention the keywords 'pkcs' and 'pam' in the subject.

    Juan Antonio Martinez

    Mario Strasser

    pam_pkcs11-0.6.12/doc/README.ldap_mapper0000644000175000017500000000662213553631305014402 00000000000000Sample config ============= pam_pkcs11.conf: ---------------- (...) # Directory ( ldap style ) mapper mapper ldap { debug = false; module = /usr/lib/pam_pkcs11/ldap_mapper.so; # where base directory resides basedir = /etc/pam_pkcs11/mapdir; # hostname of ldap server ldaphost = "localhost"; # Port on ldap server to connect ldapport = 389; # Scope of search: 0 = x, 1 = y, 2 = z scope = 2; # DN to bind with. Must have read-access for user entries under "base" binddn = "cn=pam,o=example,c=com"; # Password for above DN passwd = "test"; # Searchbase for user entries base = "ou=People,o=example,c=com"; # Attribute of user entry which contains the certificate attribute = "userCertificate"; # Searchfilter for user entry. Must only let pass user entry for the login user. filter = "(&(objectClass=posixAccount)(uid=%s))" # Attribute of user entry which contains the user's login name (optional) uid_attribute = "uid"; # List of sets of ldap attribute / cert attribute pairs (optional) attribute_map = "uid=uid&mail=email", "krbprincipalname=upn", "userCertificate;binary=cert"; } (...) Sample structure of the LDAP entries ==================================== /etc/openldap/slapd.conf: ------------------------- include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schema allow bind_v2 pidfile /var/run/slapd.pid argsfile /var/run/slapd.args access to dn.base="" by * read access to dn.base="ou=People" by dn=cn=pam,o=example,c=com read access to * by self write by users read by anonymous auth database bdb suffix "o=example,c=com" rootdn "cn=root,o=example,c=com" rootpw {SSHA}**** directory /var/lib/ldap index objectClass eq,pres index ou,cn,mail,surname,givenname eq,pres,sub index uidNumber,gidNumber,loginShell eq,pres index uid,memberUid eq,pres,sub index nisMapName,nisMapEntry eq,pres,sub initial.ldif: ------------- dn: o=example,c=com objectClass: dcObject objectClass: organization o: example dc: example dn: ou=People,o=example,c=com ou: People objectclass: organizationalUnit dn: ou=Groups,o=example,c=com ou: Groups objectclass: organizationalUnit pam.user.ldif: -------------- dn: uid=pam,o=example,c=com uid: pam givenName: Pamela sn: Anderson userPassword: pam loginShell: /bin/false uidNumber: 999999 gidNumber: 999999 homeDirectory: /tmp shadowMin: -1 shadowMax: 999999 shadowWarning: 7 shadowInactive: -1 shadowExpire: -1 shadowFlag: 0 objectClass: top objectClass: person objectClass: posixAccount objectClass: shadowAccount objectClass: inetOrgPerson cn: pam sample.user.ldif: ----------------- dn: uid=testuser,ou=People,o=example,c=com uid: testuser givenName: Test sn: User cn: Test User userPassword: abcde loginShell: /bin/bash uidNumber: 1000 gidNumber: 1000 homeDirectory: /home/testuser shadowMin: -1 shadowMax: 999999 shadowWarning: 7 shadowInactive: -1 shadowExpire: -1 shadowFlag: 0 objectClass: top objectClass: person objectClass: posixAccount objectClass: shadowAccount objectClass: inetOrgPerson userCertificate;binary:: MIIELD (...) Bg== pam_pkcs11-0.6.12/doc/pklogin_finder.10000644000175000017500000000301713553631310014302 00000000000000.TH pklogin_finder 1 "Aug 2005" "Juan Antonio Martinez" PAM-PKCS#11 .SH NAME pklogin_finder \- maps certificates into a user .SH SYNTAX .B pklogin_finder .RB [ debug ] .RB [ config_file=\fI\fP ] .SH DESCRIPTION .B pklogin_finder uses the pam_pkcs11 library infrastructure to interactively map a PKCS#11 provided certificate to a user. .P .B pklogin_finder uses the the same configuration file and arguments than .BR pam_pkcs11 (8) PAM module. Load defined mapper modules, and try to find a map between found certificates and a user login. .SH OPTIONS .LP .TP .B debug Enable debugging output. Default is no debug. .TP .BI config_file= "" Sets the configuration file to use. Default value is .IR /etc/pam_pkcs11/pam_pkcs11.conf . .P As it uses the same configuration file than pam_pkcs11, all pam_pkcs11 options are also available. Note that some of them has no sense in a non\-PAM environment, so they will be ignored. .SH "RETURN VALUE" On success .B pklogin_finder prints on stdout the login name and exits returns 0. .P On user mapping error it returns 1. .P On no user match it prints nothing and returns 2. .SH FILES .I /etc/pam_pkcs11/pam_pkcs11.conf .SH EXAMPLES To run this program the standard way, insert a smart card into the reader and type: pklogin_finder .P Alternatively you can specify options: pklogin_finder debug config_file=${HOME}/.pam_pkcs11.conf .SH AUTHORS .LP Juan Antonio Martinez .SH "SEE ALSO" .BR pam_pkcs11 (8), .BR pkcs11_inspect (1), PAM\-PKCS11 User Manual pam_pkcs11-0.6.12/doc/README.mappers0000644000175000017500000001507514367517037013600 00000000000000What is a cert mapper? ---------------------- When an X509 Certificate is provided, there are no direct way to map a cert to a login. With a certificate we can check validity and revocation, but user mapping depends entirely on the certificate content. So we need a configurable, stackable, and definable way to specify cert-to-user mapping. pam-pkcs11 cert mappers provides several functions: 1- Deduce a login from certificate 2- Test if a login and a certificate match 3- Look into the certificate for an specific data Normal pam-pkcs11 login process involves the following procedures - Enter login - Ask for PIN - Open and validate certificate - Map certificate into an user (*) - Check if login and user matches (**) An alternate way of working is by mean of not providing user name: - Detect if a card is inserted - Ask for PIN - Open and validate certificate - Map certificate into an user (*) - open session for deduced login Last way needs an aditional pam-mkhomedir.so PAM module, that can dinamically create an account. Operations (*) and (**) are the reason for cert-mappers to exist. Implementation of cert mappers in pam-pkcs11 -------------------------------------------- pam-pkcs11 implements cert mapper in form of several stackable modules. Most of them are statically linked; those that depends on external libraries are provided as dynamic loadable ones You can add as many modules as desired, and the system will try all of them in turn, until a match succeed, or end of list is reached. the mapper list is defined in the configuration file: pam-pkcs11 { .... mapper_list = mapper1 [ [[,] mapper2 ] ... ] ; mapper mapper1 { module = /path/to/module.so; [ additional mapper dependent options ] } } Unless you are going to use an internal (static) module with default values, you should provide a entry for every declared mapper "module" entry is mandatory: is tells pam_pkcs11 where to find the dynamic library (or equals to "internal" if static module is used). Additional entries can be defined but are module dependent. Provided Mappers ---------------- Actually pam_opensc provides the following mapper modules: cn - Assumes CN field on certificate to be the login name * When used as finder, the module returns the first CN field found or NULL * When used as matcher, it parses the certificate and compare all CN fields found against the provided login name, returning OK if a match is found file - Parse a file to get a list of CN -> login pairs * When used as finder, retrieve first CN field on certificate, and use it to read provided file to get a CN to login mapping * When used as matcher, maps every CN entry on the certificate to a login, and compare this login with provided by PAM pw - Compare CN against getpwent() "login" or "gecos" fields to match user login * When used as finder use getpwent() system call to retrieve every users on the system. if pw_name or pw_gecos fields match with CN pw_name is returned as login name * When used as matcher, maps CN to an user with via the finder and matches result with login name provided by PAM, returning the result (match or not) Note: newer implementations of getpwent() libraries, use an additional Name Service Switch (NSS) infrastructure, that allows admins to specify how to obtain the requested data. This means you can setup /etc/nsswitch.conf password entries to lookup in to /etc/passwd, or ldap/kerberos/NIS+/YP services ldap - Uses an ldap server to retrieve user name. An aditional file tells module the mapping between Cert fields and LDAP entries This mapper is still under development. Provided one just search for certificates, incoming one will ask for "any" certificate content opensc - Search the certificate ${HOME}/.ssh/autorized_certificates in a similar way as OpenSC does. openssh - Search the certificate public key in ${HOME}/.ssh/autorized_keys in a similar way as OpenSSH does. mail - Try to extract an e-mail from the certificate. If found, analyze it against an "aliases" (email to login) list if "use_alias" is set an aliases file is provided, the module tries to map the email field from the certificate to a user (or alternate email). if use_alias is not set, just use email addres from certificate to perform find/match. * When used as finder, just return email or mapped email/user (see above) * When used as matcher, compare found email/user against provided by pam. Additionaly you can set "ignorecase" or "ignoredomain" flags domain check (if set) is done by testing if provided email domain part (@ie.this.domain) matches host domain. Eg "user@my.company.com" email in host "ahost.in.my.company.com" host matches domain (NOTE: at version 0.4.1 use_alias is still under development) ms - Try to find and use Microsoft Universal Principal Name extension as login name * When used as finder, returns UPN as login name * when used as matcher compares UPN against PAM provided login krb - Try to find and use Kerberos Principal Name as login name uid - Use Unique ID field (if found) as login name Similar to CN mapper, but using UID as field to find/match null - blind access/deny mapper. If "always_match" is set to true: * When used as finder always returns "nobody" * When used as matcher always returns OK If "always_match" is set to false: * When used as finder always returns NULL * When used as matcher always returns FAIL See the provided pam_pkcs11.conf.example file to see module flags Adding new mappers ------------------ Creating new mappers is easy: just read provided Mapper API file, edit skeleton sample files and follow instructions on how to compile and link Mapper.h provides default implementation for required some functions. They should be overriden by user code, but can be used for testing purposes Wish list --------- - Implement PKINIT draft protocol for talking to a kerberos server - Use MS Universal Principal Name to autenticate against an MS Active directory server - Implement mail_aliases parsing for mail mapper module Further information ------------------- Please, send mail with patches, comments and suggestions to Juan Antonio Martinez or even better, to OpenSC development mailing list opensc-devel@list.opensc-project.org pam_pkcs11-0.6.12/doc/pam_pkcs11.xsl0000644000175000017500000000057613553631305013730 00000000000000 pam_pkcs11-0.6.12/doc/pkcs11_inspect.10000644000175000017500000000334013553631310014136 00000000000000.TH pkcs11_inspect 1 "Aug 2005" "Juan Antonio Martinez" "PAM PKCS#11" .SH NAME pkcs11_inspect \- print certificate contents .SH SYNOPSIS .B pkcs11_inspect .RB [ debug ] .RB [ config_file=\fI\fP ] .SH DESCRIPTION .B pkcs11_inspect uses the pam_pkcs11 library infrastructure to get the content of a certificate and display it. .P .B pkcs11_inspect uses the same configuration file and arguments than .BR pam_pkcs11 (8) PAM module. It loads defined mapper modules, and use them to look into the certificate for required entries (ie: ms_mapper looks for ms UPN entries, and so on). .P When a mapper module finds a proper entry in the certificate, it converts to UTF\-8 and print it to stdout. .SH OPTIONS .TP .B debug Enable debugging output. .TP .B config_file=\fI\fP Sets the configuration file to use. Default value is .IR /etc/pam_pkcs11/pam_pkcs11.conf . .P As it uses the same configuration file as pam_pkcs11, all pam_pkcs11 options are also available. Note that some of them have no sense in a non\-PAM environment, so they will be ignored. Some mapper options (mapfile, ignorecase) have no effect on certificate contents, so they will be ignored too. .SH "RETURN VALUE" On success .B pkcs11_inspect prints on stdout all certificate contents that are found for mappers and returns 0. .P On error it returns 1. .SH FILES .LP \fI/etc/pam_pkcs11/pam_pkcs11.conf\fP .SH EXAMPLES To run this program the standard way, insert a smart card in the reader and type: .P pkcs11_inspect .P Alternatively you can specify options: .P pkcs11_inspect debug config_file=${HOME}/.pam_pkcs11.conf .SH AUTHORS .LP Juan Antonio Martinez .SH "SEE ALSO" \fBpam_pkcs11\fP(8), \fBpklogin_finder\fP(1) .br PAM\-PKCS11 User Manual pam_pkcs11-0.6.12/doc/pkcs11_make_hash_link.10000644000175000017500000000134513553631310015431 00000000000000.TH "pkcs11_make_hash_link" "1" .SH "NAME" .LP pkcs11_make_hash_link \- SmartCard PKCS#11 create a CA certificate link .SH "SYNTAX" .LP pkcs11_make_hash_link .SH "DESCRIPTION" .LP pkcs11_make_hash_link creates a symbolic hash-link for each CA certificate and each CRL in the given directory. .SH "EXAMPLE" .nf $ cd /etc/pam_pkcs11/cacerts $ ls \-l total 4 \-rw\-r\-\-r\-\- 1 root root 985 avr 4 2007 testCA\-cacert.der $ sudo pkcs11_make_hash_link $ ls \-l total 4 lrwxrwxrwx 1 root root 17 déc 17 11:27 d0e0e6f3.0 \-> testCA\-cacert.der \-rw\-r\-\-r\-\- 1 root root 985 avr 4 2007 testCA\-cacert.der .fi .SH "AUTHORS" .LP Juan Antonio Martinez .SH "SEE ALSO" .LP pam_pkcs11(8) .br PAM\-PKCS11 User Manual pam_pkcs11-0.6.12/doc/pkcs11_eventmgr.10000644000175000017500000000425214367517037014340 00000000000000.TH "pkcs11_eventmgr" "1" "0.4.4" "Juan Antonio Martinez" "PAM-pkcs11 tools" .SH "NAME" .LP pkcs11_eventmgr \- SmartCard PKCS#11 Event Manager .SH "SYNTAX" .LP pkcs11_eventmgr [\fI[no]debug\fP] [\fI[no]daemon\fP] [\fIpolling_time=\fP ] [\fIexpire_time=\fP] [\fIpkcs11_module=\fP ] [\fIconfig_file=\fP] .SH "DESCRIPTION" .LP card_eventmgr is a SmartCard Monitoring that listen to the status of the card reader and dispatch actions on several events. card_eventmgr can be used to several actions, like lock screen on card removal .br Three events are supported: card insert, card removal and timeout on removed card. Actions to take are specified in the configuration file .SH "OPTIONS" .LP .TP \fB[no]debug\fR Enable debugging output. Default is no debug .TP \fB[no]daemon\fR Runs in background. If debug is unset, dettach also from tty. Default: no daemon .TP \fBpolling_time=\fR Set polling timeout in secs. Defaults to 1 sec .TP \fBexpire_time=\fR Set timeout on card removed. Defaults to 0 (never) .TP \fBconfig_file=\fR Sets de configuration file. Defaults to /etc/pam_pkcs11/card_eventmgr.conf .TP \fBpkcs11_module=\fR Sets the pkcs#11 library module to use. Defaults to /usr/lib/pkcs11/opensc\-pkcs11.so .SH "FILES" .LP \fI/etc/pam_pkcs11/card_eventmgr.conf\fP .LP \fI/usr/lib/pkcs11/opensc\-pkcs11.so\fP .SH "EXAMPLES" .LP To run this program the standard way type: .LP pkcs11_eventmgr .LP Alternatively you can specify options: .LP pkcs11_eventmgr nodebug nodaemon polling_time=5 config_file=${HOME}/.pkcs11_eventmgr.conf .SH "BUGS" .br Some PKCS#11 Libraries fails on card removal and re\-insert. to avoid this, pkcs11_eventmgr try to re\-initialize stuff by calling C_Finalize() and C_Initialize() on card removal .br Some apps like [\fIxscreensaver\-command\fP] may fail due to external events ( eg: try to unlock an unlocked session ). In this case, command incorrectly returns error code. .br User shoult take care on this circumstance .SH "AUTHORS" .LP Juan Antonio Martinez .SH "SEE ALSO" .LP pam_pkcs11(8), card_eventmgr(5) .br README.eventmgr .br PAM\-PKCS11 User Manual pam_pkcs11-0.6.12/doc/api/0000755000175000017500000000000014367517111012064 500000000000000pam_pkcs11-0.6.12/doc/api/alg__st_8h.html0000644000175000017500000003146614367517110014712 00000000000000 pam_pkcs11: alg_st.h File Reference
    pam_pkcs11 0.6.12
    alg_st.h File Reference
    #include <openssl/evp.h>

    Go to the source code of this file.

    Macros

    #define ALGORITHM_SHA512   "sha512"
     
    #define ALGORITHM_SHA384   "sha384"
     
    #define ALGORITHM_SHA256   "sha256"
     
    #define ALGORITHM_SHA1   "sha1"
     
    #define ALGORITHM_MD5   "md5"
     
    #define ALGORITHM_MD2   "md2"
     

    Typedefs

    typedef EVP_MD ALGDIGEST
     

    Functions

    ALGORITHM_TYPE Alg_get_alg_from_string (const char *)
     
    const ALGDIGESTAlg_get_digest_by_name (ALGORITHM_TYPE hash)
     

    Macro Definition Documentation

    ◆ ALGORITHM_MD2

    #define ALGORITHM_MD2   "md2"

    Definition at line 45 of file alg_st.h.

    ◆ ALGORITHM_MD5

    #define ALGORITHM_MD5   "md5"

    Definition at line 44 of file alg_st.h.

    ◆ ALGORITHM_SHA1

    #define ALGORITHM_SHA1   "sha1"

    Definition at line 43 of file alg_st.h.

    ◆ ALGORITHM_SHA256

    #define ALGORITHM_SHA256   "sha256"

    Definition at line 42 of file alg_st.h.

    ◆ ALGORITHM_SHA384

    #define ALGORITHM_SHA384   "sha384"

    Definition at line 41 of file alg_st.h.

    ◆ ALGORITHM_SHA512

    #define ALGORITHM_SHA512   "sha512"

    Definition at line 40 of file alg_st.h.

    Typedef Documentation

    ◆ ALGDIGEST

    typedef EVP_MD ALGDIGEST

    Definition at line 39 of file alg_st.h.

    Function Documentation

    ◆ Alg_get_alg_from_string()

    ALGORITHM_TYPE Alg_get_alg_from_string ( const char *  )

    ◆ Alg_get_digest_by_name()

    const ALGDIGEST * Alg_get_digest_by_name ( ALGORITHM_TYPE  hash)
    pam_pkcs11-0.6.12/doc/api/struct__scconf__parser.html0000644000175000017500000003571614367517110017436 00000000000000 pam_pkcs11: _scconf_parser Struct Reference
    pam_pkcs11 0.6.12
    _scconf_parser Struct Reference

    #include <internal.h>

    Data Fields

    scconf_contextconfig
     
    scconf_blockblock
     
    scconf_itemlast_item
     
    scconf_itemcurrent_item
     
    char * key
     
    scconf_listname
     
    int state
     
    int last_token_type
     
    int line
     
    unsigned int error:1
     
    unsigned int warnings:1
     
    char emesg [256]
     

    Detailed Description

    Definition at line 34 of file internal.h.

    Field Documentation

    ◆ block

    scconf_block* block

    Definition at line 37 of file internal.h.

    ◆ config

    scconf_context* config

    Definition at line 35 of file internal.h.

    ◆ current_item

    scconf_item * current_item

    Definition at line 38 of file internal.h.

    ◆ emesg

    char emesg[256]

    Definition at line 49 of file internal.h.

    ◆ error

    unsigned int error

    Definition at line 47 of file internal.h.

    ◆ key

    char* key

    Definition at line 40 of file internal.h.

    ◆ last_item

    scconf_item* last_item

    Definition at line 38 of file internal.h.

    ◆ last_token_type

    int last_token_type

    Definition at line 44 of file internal.h.

    ◆ line

    int line

    Definition at line 45 of file internal.h.

    ◆ name

    scconf_list* name

    Definition at line 41 of file internal.h.

    ◆ state

    int state

    Definition at line 43 of file internal.h.

    ◆ warnings

    unsigned int warnings

    Definition at line 48 of file internal.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/NSPRerrs_8h.html0000644000175000017500000006163214367517110014756 00000000000000 pam_pkcs11: NSPRerrs.h File Reference
    pam_pkcs11 0.6.12
    NSPRerrs.h File Reference

    Go to the source code of this file.

    Functions

     ER2 (PR_FIND_SYMBOL_ERROR, "Symbol not found in any of the loaded dynamic libraries.") ER2(PR_DIRECTORY_LOOKUP_ERROR
     
    A directory lookup on a network address has failed ER2 (PR_TPD_RANGE_ERROR, "Attempt to access a TPD key that is out of range.") ER2(PR_NOT_SOCKET_ERROR
     
    A directory lookup on a network address has failed Network operation attempted on non network file descriptor ER2 (PR_NOT_TCP_SOCKET_ERROR, "TCP-specific function attempted on a non-TCP file descriptor.") ER2(PR_OPERATION_NOT_SUPPORTED_ERROR
     
    A directory lookup on a network address has failed Network operation attempted on non network file descriptor The requested operation is not supported by the platform ER2 (PR_PROTOCOL_NOT_SUPPORTED_ERROR, "The host operating system does not support the protocol requested.") ER2(PR_BUFFER_OVERFLOW_ERROR
     
    A directory lookup on a network address has failed Network operation attempted on non network file descriptor The requested operation is not supported by the platform The value requested is too large to be stored in the data buffer provided ER2 (PR_FILE_TOO_BIG_ERROR, "Write would result in file larger than the system allows.") ER2(PR_IS_DIRECTORY_ERROR
     
    A directory lookup on a network address has failed Network operation attempted on non network file descriptor The requested operation is not supported by the platform The value requested is too large to be stored in the data buffer provided Cannot perform a normal file operation on a directory ER2 (PR_NOT_DIRECTORY_ERROR, "Cannot perform directory operation on a normal file.") ER2(PR_READ_ONLY_FILESYSTEM_ERROR
     
    A directory lookup on a network address has failed Network operation attempted on non network file descriptor The requested operation is not supported by the platform The value requested is too large to be stored in the data buffer provided Cannot perform a normal file operation on a directory Cannot write to a read only file system ER2 (PR_DIRECTORY_NOT_EMPTY_ERROR, "Cannot delete a directory that is not empty.") ER2(PR_FILESYSTEM_MOUNTED_ERROR
     
    A directory lookup on a network address has failed Network operation attempted on non network file descriptor The requested operation is not supported by the platform The value requested is too large to be stored in the data buffer provided Cannot perform a normal file operation on a directory Cannot write to a read only file system Cannot delete or rename a file object while the file system is busy ER2 (PR_NOT_SAME_DEVICE_ERROR, "Cannot rename a file to a file system on another device.") ER2(PR_DIRECTORY_CORRUPTED_ERROR
     
    A directory lookup on a network address has failed Network operation attempted on non network file descriptor The requested operation is not supported by the platform The value requested is too large to be stored in the data buffer provided Cannot perform a normal file operation on a directory Cannot write to a read only file system Cannot delete or rename a file object while the file system is busy The directory object in the file system is corrupted ER2 (PR_FILE_EXISTS_ERROR, "Cannot create or rename a filename that already exists.") ER2(PR_MAX_DIRECTORY_ENTRIES_ERROR
     
    A directory lookup on a network address has failed Network operation attempted on non network file descriptor The requested operation is not supported by the platform The value requested is too large to be stored in the data buffer provided Cannot perform a normal file operation on a directory Cannot write to a read only file system Cannot delete or rename a file object while the file system is busy The directory object in the file system is corrupted Directory is full No additional filenames may be added ER2 (PR_INVALID_DEVICE_STATE_ERROR, "The required device was in an invalid state.") ER2(PR_IN_PROGRESS_ERROR
     
    A directory lookup on a network address has failed Network operation attempted on non network file descriptor The requested operation is not supported by the platform The value requested is too large to be stored in the data buffer provided Cannot perform a normal file operation on a directory Cannot write to a read only file system Cannot delete or rename a file object while the file system is busy The directory object in the file system is corrupted Directory is full No additional filenames may be added Operation is still in progress (probably a non-blocking connect)." ) ER2( PR_ALREADY_INITIATED_ERROR
     

    Function Documentation

    ◆ ER2() [1/10]

    A directory lookup on a network address has failed Network operation attempted on non network file descriptor The requested operation is not supported by the platform The value requested is too large to be stored in the data buffer provided Cannot perform a normal file operation on a directory Cannot write to a read only file system ER2 ( PR_DIRECTORY_NOT_EMPTY_ERROR  ,
    "Cannot delete a directory that is not empty."   
    )

    ◆ ER2() [2/10]

    A directory lookup on a network address has failed Network operation attempted on non network file descriptor The requested operation is not supported by the platform The value requested is too large to be stored in the data buffer provided Cannot perform a normal file operation on a directory Cannot write to a read only file system Cannot delete or rename a file object while the file system is busy The directory object in the file system is corrupted ER2 ( PR_FILE_EXISTS_ERROR  ,
    "Cannot create or rename a filename that already exists."   
    )

    ◆ ER2() [3/10]

    A directory lookup on a network address has failed Network operation attempted on non network file descriptor The requested operation is not supported by the platform The value requested is too large to be stored in the data buffer provided ER2 ( PR_FILE_TOO_BIG_ERROR  ,
    "Write would result in file larger than the system allows."   
    )

    ◆ ER2() [4/10]

    ER2 ( PR_FIND_SYMBOL_ERROR  ,
    "Symbol not found in any of the loaded dynamic libraries."   
    )

    ◆ ER2() [5/10]

    A directory lookup on a network address has failed Network operation attempted on non network file descriptor The requested operation is not supported by the platform The value requested is too large to be stored in the data buffer provided Cannot perform a normal file operation on a directory Cannot write to a read only file system Cannot delete or rename a file object while the file system is busy The directory object in the file system is corrupted Directory is full No additional filenames may be added ER2 ( PR_INVALID_DEVICE_STATE_ERROR  ,
    "The required device was in an invalid state."   
    )

    ◆ ER2() [6/10]

    A directory lookup on a network address has failed Network operation attempted on non network file descriptor The requested operation is not supported by the platform The value requested is too large to be stored in the data buffer provided Cannot perform a normal file operation on a directory ER2 ( PR_NOT_DIRECTORY_ERROR  ,
    "Cannot perform directory operation on a normal file."   
    )

    ◆ ER2() [7/10]

    A directory lookup on a network address has failed Network operation attempted on non network file descriptor The requested operation is not supported by the platform The value requested is too large to be stored in the data buffer provided Cannot perform a normal file operation on a directory Cannot write to a read only file system Cannot delete or rename a file object while the file system is busy ER2 ( PR_NOT_SAME_DEVICE_ERROR  ,
    "Cannot rename a file to a file system on another device."   
    )

    ◆ ER2() [8/10]

    A directory lookup on a network address has failed Network operation attempted on non network file descriptor ER2 ( PR_NOT_TCP_SOCKET_ERROR  ,
    "TCP-specific function attempted on a non-TCP file descriptor."   
    )

    ◆ ER2() [9/10]

    A directory lookup on a network address has failed Network operation attempted on non network file descriptor The requested operation is not supported by the platform ER2 ( PR_PROTOCOL_NOT_SUPPORTED_ERROR  ,
    "The host operating system does not support the protocol requested."   
    )

    ◆ ER2() [10/10]

    A directory lookup on a network address has failed ER2 ( PR_TPD_RANGE_ERROR  ,
    "Attempt to access a TPD key that is out of range."   
    )

    ◆ progress()

    A directory lookup on a network address has failed Network operation attempted on non network file descriptor The requested operation is not supported by the platform The value requested is too large to be stored in the data buffer provided Cannot perform a normal file operation on a directory Cannot write to a read only file system Cannot delete or rename a file object while the file system is busy The directory object in the file system is corrupted Directory is full No additional filenames may be added Operation is still in progress ( probably a non-blocking  connect)
    pam_pkcs11-0.6.12/doc/api/structCK__SSL3__KEY__MAT__PARAMS.html0000644000175000017500000002311314367517110020307 00000000000000 pam_pkcs11: CK_SSL3_KEY_MAT_PARAMS Struct Reference
    pam_pkcs11 0.6.12
    CK_SSL3_KEY_MAT_PARAMS Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_ULONG ulMacSizeInBits
     
    CK_ULONG ulKeySizeInBits
     
    CK_ULONG ulIVSizeInBits
     
    CK_BBOOL bIsExport
     
    CK_SSL3_RANDOM_DATA RandomInfo
     
    CK_SSL3_KEY_MAT_OUT_PTR pReturnedKeyMaterial
     

    Detailed Description

    Definition at line 1353 of file pkcs11t.h.

    Field Documentation

    ◆ bIsExport

    CK_BBOOL bIsExport

    Definition at line 1357 of file pkcs11t.h.

    ◆ pReturnedKeyMaterial

    CK_SSL3_KEY_MAT_OUT_PTR pReturnedKeyMaterial

    Definition at line 1359 of file pkcs11t.h.

    ◆ RandomInfo

    CK_SSL3_RANDOM_DATA RandomInfo

    Definition at line 1358 of file pkcs11t.h.

    ◆ ulIVSizeInBits

    CK_ULONG ulIVSizeInBits

    Definition at line 1356 of file pkcs11t.h.

    ◆ ulKeySizeInBits

    CK_ULONG ulKeySizeInBits

    Definition at line 1355 of file pkcs11t.h.

    ◆ ulMacSizeInBits

    CK_ULONG ulMacSizeInBits

    Definition at line 1354 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/alg__st_8h_source.html0000644000175000017500000003061014367517110016260 00000000000000 pam_pkcs11: alg_st.h Source File
    pam_pkcs11 0.6.12
    alg_st.h
    Go to the documentation of this file.
    1/*
    2 * PKCS #11 PAM Login Module
    3 * Copyright (C) 2003-2004 Mario Strasser <mast@gmx.net>
    4 * Copyright (C) 2005 Juan Antonio Martinez <jonsito@teleline.es>
    5 *
    6 * This library is free software; you can redistribute it and/or
    7 * modify it under the terms of the GNU Lesser General Public
    8 * License as published by the Free Software Foundation; either
    9 * version 2.1 of the License, or (at your option) any later version.
    10 *
    11 * This library is distributed in the hope that it will be useful,
    12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14 * Lesser General Public License for more details.
    15 *
    16 * $Id$
    17 */
    18
    19#ifndef _ALG_ST_H
    20#define _ALG_ST_H
    21
    22#ifdef HAVE_CONFIG_H
    23#include <config.h>
    24#endif
    25
    26
    27#ifdef HAVE_NSS
    28#include <secoid.h>
    29#include <sechash.h>
    30typedef SECHashObject ALGDIGEST;
    31#define ALGORITHM_SHA512 SEC_OID_SHA512
    32#define ALGORITHM_SHA384 SEC_OID_SHA385
    33#define ALGORITHM_SHA256 SEC_OID_SHA256
    34#define ALGORITHM_SHA1 SEC_OID_SHA1
    35#define ALGORITHM_MD5 SEC_OID_MD5
    36#define ALGORITHM_MD2 SEC_OID_MD2
    37#else
    38#include <openssl/evp.h>
    39typedef EVP_MD ALGDIGEST;
    40#define ALGORITHM_SHA512 "sha512"
    41#define ALGORITHM_SHA384 "sha384"
    42#define ALGORITHM_SHA256 "sha256"
    43#define ALGORITHM_SHA1 "sha1"
    44#define ALGORITHM_MD5 "md5"
    45#define ALGORITHM_MD2 "md2"
    46#endif
    47
    49/* EVP_get_digestbyname */
    51
    52#endif /* _ALG_ST_H */
    EVP_MD ALGDIGEST
    Definition: alg_st.h:39
    const ALGDIGEST * Alg_get_digest_by_name(ALGORITHM_TYPE hash)
    ALGORITHM_TYPE Alg_get_alg_from_string(const char *)
    const char * ALGORITHM_TYPE
    Definition: cert_st.h:38
    pam_pkcs11-0.6.12/doc/api/globals_func_m.html0000644000175000017500000000451514367517110015650 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - m -

    pam_pkcs11-0.6.12/doc/api/functions_vars_h.html0000644000175000017500000000633614367517110016253 00000000000000 pam_pkcs11: Data Fields - Variables
    pam_pkcs11 0.6.12
     

    - h -

    pam_pkcs11-0.6.12/doc/api/globals_i.html0000644000175000017500000000562714367517110014636 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:

    - i -

    pam_pkcs11-0.6.12/doc/api/functions_vars_d.html0000644000175000017500000000551214367517110016242 00000000000000 pam_pkcs11: Data Fields - Variables
    pam_pkcs11 0.6.12
     

    - d -

    pam_pkcs11-0.6.12/doc/api/pam__config_8h_source.html0000644000175000017500000005536314367517110017125 00000000000000 pam_pkcs11: pam_config.h Source File
    pam_pkcs11 0.6.12
    pam_config.h
    Go to the documentation of this file.
    1/*
    2 * PKCS #11 PAM Login Module
    3 * Copyright (C) 2003 Mario Strasser <mast@gmx.net>,
    4 * config mgmt copyright (c) 2005 Juan Antonio Martinez <jonsito@teleline.es>
    5 *
    6 * This library is free software; you can redistribute it and/or
    7 * modify it under the terms of the GNU Lesser General Public
    8 * License as published by the Free Software Foundation; either
    9 * version 2.1 of the License, or (at your option) any later version.
    10 *
    11 * This library is distributed in the hope that it will be useful,
    12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14 * Lesser General Public License for more details.
    15 *
    16 * $Id$
    17 */
    18
    19/*
    20* configuration related functions
    21*/
    22#ifndef _PAM_CONFIG_H_
    23#define _PAM_CONFIG_H_
    24
    25#include "../scconf/scconf.h"
    26#include "../common/cert_vfy.h"
    27
    29 const char *config_file;
    31 int debug;
    32 int nullok;
    38 const char *pkcs11_module;
    39 const char *pkcs11_modulepath;
    40 const char **screen_savers;
    41 const char *slot_description;
    45 const char *token_type;
    46 const char *username; /* provided user name */
    47 int quiet;
    49};
    50
    51struct configuration_st *pk_configure( int argc, const char **argv );
    52
    53#endif
    struct configuration_st * pk_configure(int argc, const char **argv)
    const char * token_type
    Definition: pam_config.h:45
    const char * pkcs11_modulepath
    Definition: pam_config.h:39
    const char ** screen_savers
    Definition: pam_config.h:40
    cert_policy policy
    Definition: pam_config.h:44
    const char * slot_description
    Definition: pam_config.h:41
    const char * username
    Definition: pam_config.h:46
    const char * pkcs11_module
    Definition: pam_config.h:38
    const char * config_file
    Definition: pam_config.h:29
    scconf_context * ctx
    Definition: pam_config.h:30
    pam_pkcs11-0.6.12/doc/api/mapper__mgr_8h.html0000644000175000017500000003167114367517110015570 00000000000000 pam_pkcs11: mapper_mgr.h File Reference
    pam_pkcs11 0.6.12
    mapper_mgr.h File Reference

    Go to the source code of this file.

    Data Structures

    struct  mapper_instance
     
    struct  mapper_listitem
     

    Functions

    struct mapper_instanceload_module (scconf_context *ctx, const char *name)
     
    void unload_module (struct mapper_instance *module)
     Unload a module. More...
     
    struct mapper_listitemload_mappers (scconf_context *ctx)
     compose mapper module chain More...
     
    void unload_mappers (void)
     unload mapper module chain More...
     
    char * find_user (X509 *x509)
     
    int match_user (X509 *x509, const char *login)
     This function search mapper module list until find a module that match provided login name if login is null, call find_user and returns 1,or 0 depending on user found. More...
     
    void inspect_certificate (X509 *x509)
     

    Function Documentation

    ◆ find_user()

    char * find_user ( X509 *  x509)

    ◆ inspect_certificate()

    void inspect_certificate ( X509 *  x509)

    ◆ load_mappers()

    struct mapper_listitem * load_mappers ( scconf_context ctx)

    compose mapper module chain

    ◆ load_module()

    struct mapper_instance * load_module ( scconf_context ctx,
    const char *  name 
    )

    ◆ match_user()

    int match_user ( X509 *  x509,
    const char *  login 
    )

    This function search mapper module list until find a module that match provided login name if login is null, call find_user and returns 1,or 0 depending on user found.

    Returns
    1 if match 0 on no match -1 on error

    ◆ unload_mappers()

    void unload_mappers ( void  )

    unload mapper module chain

    ◆ unload_module()

    void unload_module ( struct mapper_instance module)

    Unload a module.

    pam_pkcs11-0.6.12/doc/api/internal_8h.html0000644000175000017500000003214414367517110015110 00000000000000 pam_pkcs11: internal.h File Reference
    pam_pkcs11 0.6.12
    internal.h File Reference

    Go to the source code of this file.

    Data Structures

    struct  _scconf_parser
     

    Macros

    #define TOKEN_TYPE_COMMENT   0
     
    #define TOKEN_TYPE_NEWLINE   1
     
    #define TOKEN_TYPE_STRING   2
     
    #define TOKEN_TYPE_PUNCT   3
     

    Typedefs

    typedef struct _scconf_parser scconf_parser
     

    Functions

    int scconf_lex_parse (scconf_parser *parser, const char *filename)
     
    int scconf_lex_parse_string (scconf_parser *parser, const char *config_string)
     
    void scconf_parse_token (scconf_parser *parser, int token_type, const char *token)
     

    Macro Definition Documentation

    ◆ TOKEN_TYPE_COMMENT

    #define TOKEN_TYPE_COMMENT   0

    Definition at line 29 of file internal.h.

    ◆ TOKEN_TYPE_NEWLINE

    #define TOKEN_TYPE_NEWLINE   1

    Definition at line 30 of file internal.h.

    ◆ TOKEN_TYPE_PUNCT

    #define TOKEN_TYPE_PUNCT   3

    Definition at line 32 of file internal.h.

    ◆ TOKEN_TYPE_STRING

    #define TOKEN_TYPE_STRING   2

    Definition at line 31 of file internal.h.

    Typedef Documentation

    ◆ scconf_parser

    typedef struct _scconf_parser scconf_parser

    Function Documentation

    ◆ scconf_lex_parse()

    int scconf_lex_parse ( scconf_parser parser,
    const char *  filename 
    )

    ◆ scconf_lex_parse_string()

    int scconf_lex_parse_string ( scconf_parser parser,
    const char *  config_string 
    )

    ◆ scconf_parse_token()

    void scconf_parse_token ( scconf_parser parser,
    int  token_type,
    const char *  token 
    )
    pam_pkcs11-0.6.12/doc/api/structcert__policy__st.html0000644000175000017500000002277614367517110017474 00000000000000 pam_pkcs11: cert_policy_st Struct Reference
    pam_pkcs11 0.6.12
    cert_policy_st Struct Reference

    #include <cert_vfy.h>

    Data Fields

    int ca_policy
     
    int crl_policy
     
    int signature_policy
     
    const char * ca_dir
     
    const char * crl_dir
     
    const char * nss_dir
     
    int ocsp_policy
     

    Detailed Description

    Definition at line 48 of file cert_vfy.h.

    Field Documentation

    ◆ ca_dir

    const char* ca_dir

    Definition at line 52 of file cert_vfy.h.

    ◆ ca_policy

    int ca_policy

    Definition at line 49 of file cert_vfy.h.

    ◆ crl_dir

    const char* crl_dir

    Definition at line 53 of file cert_vfy.h.

    ◆ crl_policy

    int crl_policy

    Definition at line 50 of file cert_vfy.h.

    ◆ nss_dir

    const char* nss_dir

    Definition at line 54 of file cert_vfy.h.

    ◆ ocsp_policy

    int ocsp_policy

    Definition at line 55 of file cert_vfy.h.

    ◆ signature_policy

    int signature_policy

    Definition at line 51 of file cert_vfy.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/globals_f.html0000644000175000017500000000674714367517110014637 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:

    - f -

    pam_pkcs11-0.6.12/doc/api/error_8h.html0000644000175000017500000002127614367517110014431 00000000000000 pam_pkcs11: error.h File Reference
    pam_pkcs11 0.6.12
    error.h File Reference
    #include <config.h>
    #include <stdarg.h>
    #include <openssl/err.h>
    #include <errno.h>

    Go to the source code of this file.

    Macros

    #define ERROR_BUFFER_SIZE   512
     Default error message buffer size. More...
     
    #define ERROR_EXTERN   extern
     

    Functions

    ERROR_EXTERN void set_error (const char *format,...)
     store an error message into a temporary buffer, in a similar way as sprintf does More...
     
    ERROR_EXTERN const char * get_error (void)
     Retrieve error message string from buffer. More...
     

    Macro Definition Documentation

    ◆ ERROR_BUFFER_SIZE

    #define ERROR_BUFFER_SIZE   512

    Default error message buffer size.

    Definition at line 33 of file error.h.

    ◆ ERROR_EXTERN

    #define ERROR_EXTERN   extern

    Definition at line 36 of file error.h.

    Function Documentation

    ◆ get_error()

    ERROR_EXTERN const char * get_error ( void  )

    Retrieve error message string from buffer.

    Returns
    Error message

    ◆ set_error()

    ERROR_EXTERN void set_error ( const char *  format,
      ... 
    )

    store an error message into a temporary buffer, in a similar way as sprintf does

    Parameters
    formatString to be stored
    ...Additional parameters
    pam_pkcs11-0.6.12/doc/api/SSLerrs_8h.html0000644000175000017500000112205514367517110014633 00000000000000 pam_pkcs11: SSLerrs.h File Reference
    pam_pkcs11 0.6.12
    SSLerrs.h File Reference

    Go to the source code of this file.

    Functions

     ER3 (SSL_ERROR_EXPORT_ONLY_SERVER, SSL_ERROR_BASE+0, "Unable to communicate securely. Peer does not support high-grade encryption.") ER3(SSL_ERROR_US_ONLY_SERVER
     
    Unable to communicate securely Peer grade encryption which is not supported ER3 (SSL_ERROR_NO_CYPHER_OVERLAP, SSL_ERROR_BASE+2, "Cannot communicate securely with peer: no common encryption algorithm(s).") ER3(SSL_ERROR_NO_CERTIFICATE
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication ER3 (SSL_ERROR_BAD_CERTIFICATE, SSL_ERROR_BASE+4, "Unable to communicate securely with peer: peers's certificate was rejected.") ER3(SSL_ERROR_BAD_CLIENT
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client ER3 (SSL_ERROR_BAD_SERVER, SSL_ERROR_BASE+7, "The client has encountered bad data from the server.") ER3(SSL_ERROR_UNSUPPORTED_CERTIFICATE_TYPE
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type ER3 (SSL_ERROR_UNSUPPORTED_VERSION, SSL_ERROR_BASE+9, "Peer using unsupported version of security protocol.") ER3(SSL_ERROR_WRONG_CERTIFICATE
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled ER3 (SSL_ERROR_BAD_MAC_READ,(SSL_ERROR_BASE+15), "SSL received a record with an incorrect Message Authentication Code.") ER3(SSL_ERROR_BAD_MAC_ALERT
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code ER3 (SSL_ERROR_BAD_CERT_ALERT,(SSL_ERROR_BASE+17), "SSL peer cannot verify your certificate.") ER3(SSL_ERROR_REVOKED_CERT_ALERT
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked ER3 (SSL_ERROR_EXPIRED_CERT_ALERT,(SSL_ERROR_BASE+19), "SSL peer rejected your certificate as expired.") ER3(SSL_ERROR_SSL_DISABLED
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested ER3 (SSL_ERROR_NO_CIPHERS_SUPPORTED,(SSL_ERROR_BASE+23), "No cipher suites are present and enabled in this program.") ER3(SSL_ERROR_BAD_BLOCK_PADDING
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding ER3 (SSL_ERROR_RX_RECORD_TOO_LONG,(SSL_ERROR_BASE+25), "SSL received a record that exceeded the maximum permissible length.") ER3(SSL_ERROR_TX_RECORD_TOO_LONG
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length ER3 (SSL_ERROR_RX_MALFORMED_HELLO_REQUEST,(SSL_ERROR_BASE+27), "SSL received a malformed Hello Request handshake message.") ER3(SSL_ERROR_RX_MALFORMED_CLIENT_HELLO
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message ER3 (SSL_ERROR_RX_MALFORMED_SERVER_HELLO,(SSL_ERROR_BASE+29), "SSL received a malformed Server Hello handshake message.") ER3(SSL_ERROR_RX_MALFORMED_CERTIFICATE
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message ER3 (SSL_ERROR_RX_MALFORMED_SERVER_KEY_EXCH,(SSL_ERROR_BASE+31), "SSL received a malformed Server Key Exchange handshake message.") ER3(SSL_ERROR_RX_MALFORMED_CERT_REQUEST
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message ER3 (SSL_ERROR_RX_MALFORMED_HELLO_DONE,(SSL_ERROR_BASE+33), "SSL received a malformed Server Hello Done handshake message.") ER3(SSL_ERROR_RX_MALFORMED_CERT_VERIFY
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message ER3 (SSL_ERROR_RX_MALFORMED_CLIENT_KEY_EXCH,(SSL_ERROR_BASE+35), "SSL received a malformed Client Key Exchange handshake message.") ER3(SSL_ERROR_RX_MALFORMED_FINISHED
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message ER3 (SSL_ERROR_RX_MALFORMED_CHANGE_CIPHER,(SSL_ERROR_BASE+37), "SSL received a malformed Change Cipher Spec record.") ER3(SSL_ERROR_RX_MALFORMED_ALERT
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record ER3 (SSL_ERROR_RX_MALFORMED_HANDSHAKE,(SSL_ERROR_BASE+39), "SSL received a malformed Handshake record.") ER3(SSL_ERROR_RX_MALFORMED_APPLICATION_DATA
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record ER3 (SSL_ERROR_RX_UNEXPECTED_HELLO_REQUEST,(SSL_ERROR_BASE+41), "SSL received an unexpected Hello Request handshake message.") ER3(SSL_ERROR_RX_UNEXPECTED_CLIENT_HELLO
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message ER3 (SSL_ERROR_RX_UNEXPECTED_SERVER_HELLO,(SSL_ERROR_BASE+43), "SSL received an unexpected Server Hello handshake message.") ER3(SSL_ERROR_RX_UNEXPECTED_CERTIFICATE
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message ER3 (SSL_ERROR_RX_UNEXPECTED_SERVER_KEY_EXCH,(SSL_ERROR_BASE+45), "SSL received an unexpected Server Key Exchange handshake message.") ER3(SSL_ERROR_RX_UNEXPECTED_CERT_REQUEST
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message ER3 (SSL_ERROR_RX_UNEXPECTED_HELLO_DONE,(SSL_ERROR_BASE+47), "SSL received an unexpected Server Hello Done handshake message.") ER3(SSL_ERROR_RX_UNEXPECTED_CERT_VERIFY
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message ER3 (SSL_ERROR_RX_UNEXPECTED_CLIENT_KEY_EXCH,(SSL_ERROR_BASE+49), "SSL received an unexpected Cllient Key Exchange handshake message.") ER3(SSL_ERROR_RX_UNEXPECTED_FINISHED
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message ER3 (SSL_ERROR_RX_UNEXPECTED_CHANGE_CIPHER,(SSL_ERROR_BASE+51), "SSL received an unexpected Change Cipher Spec record.") ER3(SSL_ERROR_RX_UNEXPECTED_ALERT
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record ER3 (SSL_ERROR_RX_UNEXPECTED_HANDSHAKE,(SSL_ERROR_BASE+53), "SSL received an unexpected Handshake record.") ER3(SSL_ERROR_RX_UNEXPECTED_APPLICATION_DATA
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record ER3 (SSL_ERROR_RX_UNKNOWN_RECORD_TYPE,(SSL_ERROR_BASE+55), "SSL received a record with an unknown content type.") ER3(SSL_ERROR_RX_UNKNOWN_HANDSHAKE
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type ER3 (SSL_ERROR_RX_UNKNOWN_ALERT,(SSL_ERROR_BASE+57), "SSL received an alert record with an unknown alert description.") ER3(SSL_ERROR_CLOSE_NOTIFY_ALERT
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection ER3 (SSL_ERROR_HANDSHAKE_UNEXPECTED_ALERT,(SSL_ERROR_BASE+59), "SSL peer was not expecting a handshake message it received.") ER3(SSL_ERROR_DECOMPRESSION_FAILURE_ALERT
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received ER3 (SSL_ERROR_HANDSHAKE_FAILURE_ALERT,(SSL_ERROR_BASE+61), "SSL peer was unable to negotiate an acceptable set of security parameters.") ER3(SSL_ERROR_ILLEGAL_PARAMETER_ALERT
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content ER3 (SSL_ERROR_UNSUPPORTED_CERT_ALERT,(SSL_ERROR_BASE+63), "SSL peer does not support certificates of the type it received.") ER3(SSL_ERROR_CERTIFICATE_UNKNOWN_ALERT
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received ER3 (SSL_ERROR_GENERATE_RANDOM_FAILURE,(SSL_ERROR_BASE+65), "SSL experienced a failure of its random number generator.") ER3(SSL_ERROR_SIGN_HASHES_FAILURE
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate ER3 (SSL_ERROR_EXTRACT_PUBLIC_KEY_FAILURE,(SSL_ERROR_BASE+67), "SSL was unable to extract the public key from the peer's certificate.") ER3(SSL_ERROR_SERVER_KEY_EXCHANGE_FAILURE
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake ER3 (SSL_ERROR_CLIENT_KEY_EXCHANGE_FAILURE,(SSL_ERROR_BASE+69), "Unspecified failure while processing SSL Client Key Exchange handshake.") ER3(SSL_ERROR_ENCRYPTION_FAILURE
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite ER3 (SSL_ERROR_DECRYPTION_FAILURE,(SSL_ERROR_BASE+71), "Bulk data decryption algorithm failed in selected cipher suite.") ER3(SSL_ERROR_SOCKET_WRITE_FAILURE
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed ER3 (SSL_ERROR_MD5_DIGEST_FAILURE,(SSL_ERROR_BASE+73), "MD5 digest function failed.") ER3(SSL_ERROR_SHA_DIGEST_FAILURE
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed ER3 (SSL_ERROR_MAC_COMPUTATION_FAILURE,(SSL_ERROR_BASE+75), "MAC computation failed.") ER3(SSL_ERROR_SYM_KEY_CONTEXT_FAILURE
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context ER3 (SSL_ERROR_SYM_KEY_UNWRAP_FAILURE,(SSL_ERROR_BASE+77), "Failure to unwrap the Symmetric key in Client Key Exchange message.") ER3(SSL_ERROR_PUB_KEY_SIZE_LIMIT_EXCEEDED
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite ER3 (SSL_ERROR_IV_PARAM_FAILURE,(SSL_ERROR_BASE+79), "PKCS11 code failed to translate an IV into a param.") ER3(SSL_ERROR_INIT_CIPHER_SUITE_FAILURE
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite ER3 (SSL_ERROR_SESSION_KEY_GEN_FAILURE,(SSL_ERROR_BASE+81), "Client failed to generate session keys for SSL session.") ER3(SSL_ERROR_NO_SERVER_KEY_FOR_ALG
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm ER3 (SSL_ERROR_TOKEN_INSERTION_REMOVAL,(SSL_ERROR_BASE+83), "PKCS#11 token was inserted or removed while operation was in progress.") ER3(SSL_ERROR_TOKEN_SLOT_NOT_FOUND
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm No PKCS ER3 (SSL_ERROR_NO_COMPRESSION_OVERLAP,(SSL_ERROR_BASE+85), "Cannot communicate securely with peer: no common compression algorithm(s).") ER3(SSL_ERROR_HANDSHAKE_NOT_COMPLETED
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm No PKCS Cannot initiate another SSL handshake until current handshake is complete ER3 (SSL_ERROR_BAD_HANDSHAKE_HASH_VALUE,(SSL_ERROR_BASE+87), "Received incorrect handshakes hash values from peer.") ER3(SSL_ERROR_CERT_KEA_MISMATCH
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm No PKCS Cannot initiate another SSL handshake until current handshake is complete The certificate provided cannot be used with the selected key exchange algorithm ER3 (SSL_ERROR_NO_TRUSTED_SSL_CLIENT_CA,(SSL_ERROR_BASE+89), "No certificate authority is trusted for SSL client authentication.") ER3(SSL_ERROR_SESSION_NOT_FOUND
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm No PKCS Cannot initiate another SSL handshake until current handshake is complete The certificate provided cannot be used with the selected key exchange algorithm Client s SSL session ID not found in server s session cache ER3 (SSL_ERROR_DECRYPTION_FAILED_ALERT,(SSL_ERROR_BASE+91), "Peer was unable to decrypt an SSL record it received.") ER3(SSL_ERROR_RECORD_OVERFLOW_ALERT
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm No PKCS Cannot initiate another SSL handshake until current handshake is complete The certificate provided cannot be used with the selected key exchange algorithm Client s SSL session ID not found in server s session cache Peer received an SSL record that was longer than is permitted ER3 (SSL_ERROR_UNKNOWN_CA_ALERT,(SSL_ERROR_BASE+93), "Peer does not recognize and trust the CA that issued your certificate.") ER3(SSL_ERROR_ACCESS_DENIED_ALERT
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm No PKCS Cannot initiate another SSL handshake until current handshake is complete The certificate provided cannot be used with the selected key exchange algorithm Client s SSL session ID not found in server s session cache Peer received an SSL record that was longer than is permitted Peer received a valid but access was denied ER3 (SSL_ERROR_DECODE_ERROR_ALERT,(SSL_ERROR_BASE+95), "Peer could not decode an SSL handshake message.") ER3(SSL_ERROR_DECRYPT_ERROR_ALERT
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm No PKCS Cannot initiate another SSL handshake until current handshake is complete The certificate provided cannot be used with the selected key exchange algorithm Client s SSL session ID not found in server s session cache Peer received an SSL record that was longer than is permitted Peer received a valid but access was denied Peer reports failure of signature verification or key exchange ER3 (SSL_ERROR_EXPORT_RESTRICTION_ALERT,(SSL_ERROR_BASE+97), "Peer reports negotiation not in compliance with export regulations.") ER3(SSL_ERROR_PROTOCOL_VERSION_ALERT
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm No PKCS Cannot initiate another SSL handshake until current handshake is complete The certificate provided cannot be used with the selected key exchange algorithm Client s SSL session ID not found in server s session cache Peer received an SSL record that was longer than is permitted Peer received a valid but access was denied Peer reports failure of signature verification or key exchange Peer reports incompatible or unsupported protocol version ER3 (SSL_ERROR_INSUFFICIENT_SECURITY_ALERT,(SSL_ERROR_BASE+99), "Server requires ciphers more secure than those supported by client.") ER3(SSL_ERROR_INTERNAL_ERROR_ALERT
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm No PKCS Cannot initiate another SSL handshake until current handshake is complete The certificate provided cannot be used with the selected key exchange algorithm Client s SSL session ID not found in server s session cache Peer received an SSL record that was longer than is permitted Peer received a valid but access was denied Peer reports failure of signature verification or key exchange Peer reports incompatible or unsupported protocol version Peer reports it experienced an internal error ER3 (SSL_ERROR_USER_CANCELED_ALERT,(SSL_ERROR_BASE+101), "Peer user canceled handshake.") ER3(SSL_ERROR_NO_RENEGOTIATION_ALERT
     

    Variables

     SSL_ERROR_BASE
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication failed
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with peer
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL version
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot connect
     
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm No PKCS Cannot initiate another SSL handshake until current handshake is complete The certificate provided cannot be used with the selected key exchange algorithm Client s SSL session ID not found in server s session cache Peer received an SSL record that was longer than is permitted Peer received a valid certificate
     

    Function Documentation

    ◆ ER3() [1/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code ER3 ( SSL_ERROR_BAD_CERT_ALERT  ,
    (SSL_ERROR_BASE+17)  ,
    "SSL peer cannot verify your certificate."   
    )

    ◆ ER3() [2/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication ER3 ( SSL_ERROR_BAD_CERTIFICATE  ,
    SSL_ERROR_BASE 4,
    "Unable to communicate securely with peer: peers's certificate was rejected."   
    )

    ◆ ER3() [3/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm No PKCS Cannot initiate another SSL handshake until current handshake is complete ER3 ( SSL_ERROR_BAD_HANDSHAKE_HASH_VALUE  ,
    (SSL_ERROR_BASE+87)  ,
    "Received incorrect handshakes hash values from peer."   
    )

    ◆ ER3() [4/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled ER3 ( SSL_ERROR_BAD_MAC_READ  ,
    (SSL_ERROR_BASE+15)  ,
    "SSL received a record with an incorrect Message Authentication Code."   
    )

    ◆ ER3() [5/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client ER3 ( SSL_ERROR_BAD_SERVER  ,
    SSL_ERROR_BASE 7,
    "The client has encountered bad data from the server."   
    )

    ◆ ER3() [6/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake ER3 ( SSL_ERROR_CLIENT_KEY_EXCHANGE_FAILURE  ,
    (SSL_ERROR_BASE+69)  ,
    "Unspecified failure while processing SSL Client Key Exchange handshake."   
    )

    ◆ ER3() [7/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm No PKCS Cannot initiate another SSL handshake until current handshake is complete The certificate provided cannot be used with the selected key exchange algorithm Client s SSL session ID not found in server s session cache Peer received an SSL record that was longer than is permitted Peer received a valid but access was denied ER3 ( SSL_ERROR_DECODE_ERROR_ALERT  ,
    (SSL_ERROR_BASE+95)  ,
    "Peer could not decode an SSL handshake message."   
    )

    ◆ ER3() [8/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm No PKCS Cannot initiate another SSL handshake until current handshake is complete The certificate provided cannot be used with the selected key exchange algorithm Client s SSL session ID not found in server s session cache ER3 ( SSL_ERROR_DECRYPTION_FAILED_ALERT  ,
    (SSL_ERROR_BASE+91)  ,
    "Peer was unable to decrypt an SSL record it received."   
    )

    ◆ ER3() [9/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite ER3 ( SSL_ERROR_DECRYPTION_FAILURE  ,
    (SSL_ERROR_BASE+71)  ,
    "Bulk data decryption algorithm failed in selected cipher suite."   
    )

    ◆ ER3() [10/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked ER3 ( SSL_ERROR_EXPIRED_CERT_ALERT  ,
    (SSL_ERROR_BASE+19)  ,
    "SSL peer rejected your certificate as expired."   
    )

    ◆ ER3() [11/48]

    ER3 ( SSL_ERROR_EXPORT_ONLY_SERVER  ,
    SSL_ERROR_BASE 0,
    "Unable to communicate securely. Peer does not support high-grade encryption."   
    )

    ◆ ER3() [12/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm No PKCS Cannot initiate another SSL handshake until current handshake is complete The certificate provided cannot be used with the selected key exchange algorithm Client s SSL session ID not found in server s session cache Peer received an SSL record that was longer than is permitted Peer received a valid but access was denied Peer reports failure of signature verification or key exchange ER3 ( SSL_ERROR_EXPORT_RESTRICTION_ALERT  ,
    (SSL_ERROR_BASE+97)  ,
    "Peer reports negotiation not in compliance with export regulations."   
    )

    ◆ ER3() [13/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate ER3 ( SSL_ERROR_EXTRACT_PUBLIC_KEY_FAILURE  ,
    (SSL_ERROR_BASE+67)  ,
    "SSL was unable to extract the public key from the peer's certificate."   
    )

    ◆ ER3() [14/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received ER3 ( SSL_ERROR_GENERATE_RANDOM_FAILURE  ,
    (SSL_ERROR_BASE+65)  ,
    "SSL experienced a failure of its random number generator."   
    )

    ◆ ER3() [15/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received ER3 ( SSL_ERROR_HANDSHAKE_FAILURE_ALERT  ,
    (SSL_ERROR_BASE+61)  ,
    "SSL peer was unable to negotiate an acceptable set of security parameters."   
    )

    ◆ ER3() [16/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection ER3 ( SSL_ERROR_HANDSHAKE_UNEXPECTED_ALERT  ,
    (SSL_ERROR_BASE+59)  ,
    "SSL peer was not expecting a handshake message it received."   
    )

    ◆ ER3() [17/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm No PKCS Cannot initiate another SSL handshake until current handshake is complete The certificate provided cannot be used with the selected key exchange algorithm Client s SSL session ID not found in server s session cache Peer received an SSL record that was longer than is permitted Peer received a valid but access was denied Peer reports failure of signature verification or key exchange Peer reports incompatible or unsupported protocol version ER3 ( SSL_ERROR_INSUFFICIENT_SECURITY_ALERT  ,
    (SSL_ERROR_BASE+99)  ,
    "Server requires ciphers more secure than those supported by client."   
    )

    ◆ ER3() [18/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite ER3 ( SSL_ERROR_IV_PARAM_FAILURE  ,
    (SSL_ERROR_BASE+79)  ,
    "PKCS11 code failed to translate an IV into a param."   
    )

    ◆ ER3() [19/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed ER3 ( SSL_ERROR_MAC_COMPUTATION_FAILURE  ,
    (SSL_ERROR_BASE+75)  ,
    "MAC computation failed."   
    )

    ◆ ER3() [20/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed ER3 ( SSL_ERROR_MD5_DIGEST_FAILURE  ,
    (SSL_ERROR_BASE+73)  ,
    "MD5 digest function failed."   
    )

    ◆ ER3() [21/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested ER3 ( SSL_ERROR_NO_CIPHERS_SUPPORTED  ,
    (SSL_ERROR_BASE+23)  ,
    "No cipher suites are present and enabled in this program."   
    )

    ◆ ER3() [22/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm No PKCS ER3 ( SSL_ERROR_NO_COMPRESSION_OVERLAP  ,
    (SSL_ERROR_BASE+85)  ,
    "Cannot communicate securely with peer: no common compression algorithm(s)."   
    )

    ◆ ER3() [23/48]

    Unable to communicate securely Peer grade encryption which is not supported ER3 ( SSL_ERROR_NO_CYPHER_OVERLAP  ,
    SSL_ERROR_BASE 2,
    "Cannot communicate securely with peer: no common encryption algorithm(s)."   
    )

    ◆ ER3() [24/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm No PKCS Cannot initiate another SSL handshake until current handshake is complete The certificate provided cannot be used with the selected key exchange algorithm ER3 ( SSL_ERROR_NO_TRUSTED_SSL_CLIENT_CA  ,
    (SSL_ERROR_BASE+89)  ,
    "No certificate authority is trusted for SSL client authentication."   
    )

    ◆ ER3() [25/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message ER3 ( SSL_ERROR_RX_MALFORMED_CHANGE_CIPHER  ,
    (SSL_ERROR_BASE+37)  ,
    "SSL received a malformed Change Cipher Spec record."   
    )

    ◆ ER3() [26/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message ER3 ( SSL_ERROR_RX_MALFORMED_CLIENT_KEY_EXCH  ,
    (SSL_ERROR_BASE+35)  ,
    "SSL received a malformed Client Key Exchange handshake message."   
    )

    ◆ ER3() [27/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record ER3 ( SSL_ERROR_RX_MALFORMED_HANDSHAKE  ,
    (SSL_ERROR_BASE+39)  ,
    "SSL received a malformed Handshake record."   
    )

    ◆ ER3() [28/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message ER3 ( SSL_ERROR_RX_MALFORMED_HELLO_DONE  ,
    (SSL_ERROR_BASE+33)  ,
    "SSL received a malformed Server Hello Done handshake message."   
    )

    ◆ ER3() [29/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length ER3 ( SSL_ERROR_RX_MALFORMED_HELLO_REQUEST  ,
    (SSL_ERROR_BASE+27)  ,
    "SSL received a malformed Hello Request handshake message."   
    )

    ◆ ER3() [30/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message ER3 ( SSL_ERROR_RX_MALFORMED_SERVER_HELLO  ,
    (SSL_ERROR_BASE+29)  ,
    "SSL received a malformed Server Hello handshake message."   
    )

    ◆ ER3() [31/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message ER3 ( SSL_ERROR_RX_MALFORMED_SERVER_KEY_EXCH  ,
    (SSL_ERROR_BASE+31)  ,
    "SSL received a malformed Server Key Exchange handshake message."   
    )

    ◆ ER3() [32/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding ER3 ( SSL_ERROR_RX_RECORD_TOO_LONG  ,
    (SSL_ERROR_BASE+25)  ,
    "SSL received a record that exceeded the maximum permissible length."   
    )

    ◆ ER3() [33/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message ER3 ( SSL_ERROR_RX_UNEXPECTED_CHANGE_CIPHER  ,
    (SSL_ERROR_BASE+51)  ,
    "SSL received an unexpected Change Cipher Spec record."   
    )

    ◆ ER3() [34/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message ER3 ( SSL_ERROR_RX_UNEXPECTED_CLIENT_KEY_EXCH  ,
    (SSL_ERROR_BASE+49)  ,
    "SSL received an unexpected Cllient Key Exchange handshake message."   
    )

    ◆ ER3() [35/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record ER3 ( SSL_ERROR_RX_UNEXPECTED_HANDSHAKE  ,
    (SSL_ERROR_BASE+53)  ,
    "SSL received an unexpected Handshake record."   
    )

    ◆ ER3() [36/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message ER3 ( SSL_ERROR_RX_UNEXPECTED_HELLO_DONE  ,
    (SSL_ERROR_BASE+47)  ,
    "SSL received an unexpected Server Hello Done handshake message."   
    )

    ◆ ER3() [37/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record ER3 ( SSL_ERROR_RX_UNEXPECTED_HELLO_REQUEST  ,
    (SSL_ERROR_BASE+41)  ,
    "SSL received an unexpected Hello Request handshake message."   
    )

    ◆ ER3() [38/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message ER3 ( SSL_ERROR_RX_UNEXPECTED_SERVER_HELLO  ,
    (SSL_ERROR_BASE+43)  ,
    "SSL received an unexpected Server Hello handshake message."   
    )

    ◆ ER3() [39/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message ER3 ( SSL_ERROR_RX_UNEXPECTED_SERVER_KEY_EXCH  ,
    (SSL_ERROR_BASE+45)  ,
    "SSL received an unexpected Server Key Exchange handshake message."   
    )

    ◆ ER3() [40/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type ER3 ( SSL_ERROR_RX_UNKNOWN_ALERT  ,
    (SSL_ERROR_BASE+57)  ,
    "SSL received an alert record with an unknown alert description."   
    )

    ◆ ER3() [41/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record ER3 ( SSL_ERROR_RX_UNKNOWN_RECORD_TYPE  ,
    (SSL_ERROR_BASE+55)  ,
    "SSL received a record with an unknown content type."   
    )

    ◆ ER3() [42/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite ER3 ( SSL_ERROR_SESSION_KEY_GEN_FAILURE  ,
    (SSL_ERROR_BASE+81)  ,
    "Client failed to generate session keys for SSL session."   
    )

    ◆ ER3() [43/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context ER3 ( SSL_ERROR_SYM_KEY_UNWRAP_FAILURE  ,
    (SSL_ERROR_BASE+77)  ,
    "Failure to unwrap the Symmetric key in Client Key Exchange message."   
    )

    ◆ ER3() [44/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm ER3 ( SSL_ERROR_TOKEN_INSERTION_REMOVAL  ,
    (SSL_ERROR_BASE+83)  ,
    "PKCS#11 token was inserted or removed while operation was in progress."   
    )

    ◆ ER3() [45/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm No PKCS Cannot initiate another SSL handshake until current handshake is complete The certificate provided cannot be used with the selected key exchange algorithm Client s SSL session ID not found in server s session cache Peer received an SSL record that was longer than is permitted ER3 ( SSL_ERROR_UNKNOWN_CA_ALERT  ,
    (SSL_ERROR_BASE+93)  ,
    "Peer does not recognize and trust the CA that issued your certificate."   
    )

    ◆ ER3() [46/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content ER3 ( SSL_ERROR_UNSUPPORTED_CERT_ALERT  ,
    (SSL_ERROR_BASE+63)  ,
    "SSL peer does not support certificates of the type it received."   
    )

    ◆ ER3() [47/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type ER3 ( SSL_ERROR_UNSUPPORTED_VERSION  ,
    SSL_ERROR_BASE 9,
    "Peer using unsupported version of security protocol."   
    )

    ◆ ER3() [48/48]

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm No PKCS Cannot initiate another SSL handshake until current handshake is complete The certificate provided cannot be used with the selected key exchange algorithm Client s SSL session ID not found in server s session cache Peer received an SSL record that was longer than is permitted Peer received a valid but access was denied Peer reports failure of signature verification or key exchange Peer reports incompatible or unsupported protocol version Peer reports it experienced an internal error ER3 ( SSL_ERROR_USER_CANCELED_ALERT  ,
    (SSL_ERROR_BASE+101)  ,
    "Peer user canceled handshake."   
    )

    Variable Documentation

    ◆ certificate

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm No PKCS Cannot initiate another SSL handshake until current handshake is complete The certificate provided cannot be used with the selected key exchange algorithm Client s SSL session ID not found in server s session cache Peer received an SSL record that was longer than is permitted Peer received a valid certificate

    Definition at line 344 of file SSLerrs.h.

    ◆ connect

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot connect

    Definition at line 101 of file SSLerrs.h.

    ◆ failed

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication failed

    Definition at line 72 of file SSLerrs.h.

    ◆ peer

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with peer

    Definition at line 75 of file SSLerrs.h.

    ◆ SSL_ERROR_BASE

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm No PKCS Cannot initiate another SSL handshake until current handshake is complete The certificate provided cannot be used with the selected key exchange algorithm Client s SSL session ID not found in server s session cache Peer received an SSL record that was longer than is permitted Peer received a valid but access was denied Peer reports failure of signature verification or key exchange Peer reports incompatible or unsupported protocol version Peer reports it experienced an internal error SSL_ERROR_BASE

    Definition at line 43 of file SSLerrs.h.

    ◆ version

    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL version

    Definition at line 82 of file SSLerrs.h.

    pam_pkcs11-0.6.12/doc/api/opensc__mapper_8h.html0000644000175000017500000000476314367517110016274 00000000000000 pam_pkcs11: opensc_mapper.h File Reference
    pam_pkcs11 0.6.12
    opensc_mapper.h File Reference
    pam_pkcs11-0.6.12/doc/api/functions_o.html0000644000175000017500000000434114367517110015221 00000000000000 pam_pkcs11: Data Fields
    pam_pkcs11 0.6.12
    Here is a list of all struct and union fields with links to the structures/unions they belong to:

    - o -

    pam_pkcs11-0.6.12/doc/api/structCK__SESSION__INFO.html0000644000175000017500000001624414367517110016756 00000000000000 pam_pkcs11: CK_SESSION_INFO Struct Reference
    pam_pkcs11 0.6.12
    CK_SESSION_INFO Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_SLOT_ID slotID
     
    CK_STATE state
     
    CK_FLAGS flags
     
    CK_ULONG ulDeviceError
     

    Detailed Description

    Definition at line 287 of file pkcs11t.h.

    Field Documentation

    ◆ flags

    CK_FLAGS flags

    Definition at line 290 of file pkcs11t.h.

    ◆ slotID

    CK_SLOT_ID slotID

    Definition at line 288 of file pkcs11t.h.

    ◆ state

    CK_STATE state

    Definition at line 289 of file pkcs11t.h.

    ◆ ulDeviceError

    CK_ULONG ulDeviceError

    Definition at line 294 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/structCK__RC5__CBC__PARAMS.html0000644000175000017500000001627014367517110017261 00000000000000 pam_pkcs11: CK_RC5_CBC_PARAMS Struct Reference
    pam_pkcs11 0.6.12
    CK_RC5_CBC_PARAMS Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_ULONG ulWordsize
     
    CK_ULONG ulRounds
     
    CK_BYTE_PTR pIv
     
    CK_ULONG ulIvLen
     

    Detailed Description

    Definition at line 1227 of file pkcs11t.h.

    Field Documentation

    ◆ pIv

    Definition at line 1230 of file pkcs11t.h.

    ◆ ulIvLen

    CK_ULONG ulIvLen

    Definition at line 1231 of file pkcs11t.h.

    ◆ ulRounds

    CK_ULONG ulRounds

    Definition at line 1229 of file pkcs11t.h.

    ◆ ulWordsize

    CK_ULONG ulWordsize

    Definition at line 1228 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/generic__mapper_8h.html0000644000175000017500000000476614367517110016424 00000000000000 pam_pkcs11: generic_mapper.h File Reference
    pam_pkcs11 0.6.12
    generic_mapper.h File Reference
    pam_pkcs11-0.6.12/doc/api/globals_e.html0000644000175000017500000001305614367517110014625 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:

    - e -

    pam_pkcs11-0.6.12/doc/api/globals_w.html0000644000175000017500000000437314367517110014651 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:

    - w -

    pam_pkcs11-0.6.12/doc/api/SSLerrs_8h_source.html0000644000175000017500000024472114367517110016217 00000000000000 pam_pkcs11: SSLerrs.h Source File
    pam_pkcs11 0.6.12
    SSLerrs.h
    Go to the documentation of this file.
    1/* ***** BEGIN LICENSE BLOCK *****
    2 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
    3 *
    4 * The contents of this file are subject to the Mozilla Public License Version
    5 * 1.1 (the "License"); you may not use this file except in compliance with
    6 * the License. You may obtain a copy of the License at
    7 * http://www.mozilla.org/MPL/
    8 *
    9 * Software distributed under the License is distributed on an "AS IS" basis,
    10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
    11 * for the specific language governing rights and limitations under the
    12 * License.
    13 *
    14 * The Original Code is the Netscape security libraries.
    15 *
    16 * The Initial Developer of the Original Code is
    17 * Netscape Communications Corporation.
    18 * Portions created by the Initial Developer are Copyright (C) 1994-2000
    19 * the Initial Developer. All Rights Reserved.
    20 *
    21 * Contributor(s):
    22 *
    23 * Alternatively, the contents of this file may be used under the terms of
    24 * either the GNU General Public License Version 2 or later (the "GPL"), or
    25 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
    26 * in which case the provisions of the GPL or the LGPL are applicable instead
    27 * of those above. If you wish to allow use of your version of this file only
    28 * under the terms of either the GPL or the LGPL, and not to allow others to
    29 * use your version of this file under the terms of the MPL, indicate your
    30 * decision by deleting the provisions above and replace them with the notice
    31 * and other provisions required by the GPL or the LGPL. If you do not delete
    32 * the provisions above, a recipient may use your version of this file under
    33 * the terms of any one of the MPL, the GPL or the LGPL.
    34 *
    35 * ***** END LICENSE BLOCK ***** */
    36
    37/* SSL-specific security error codes */
    38/* caller must include "sslerr.h" */
    39
    40ER3(SSL_ERROR_EXPORT_ONLY_SERVER, SSL_ERROR_BASE + 0,
    41"Unable to communicate securely. Peer does not support high-grade encryption.")
    42
    43ER3(SSL_ERROR_US_ONLY_SERVER, SSL_ERROR_BASE + 1,
    44"Unable to communicate securely. Peer requires high-grade encryption which is not supported.")
    45
    46ER3(SSL_ERROR_NO_CYPHER_OVERLAP, SSL_ERROR_BASE + 2,
    47"Cannot communicate securely with peer: no common encryption algorithm(s).")
    48
    49ER3(SSL_ERROR_NO_CERTIFICATE, SSL_ERROR_BASE + 3,
    50"Unable to find the certificate or key necessary for authentication.")
    51
    52ER3(SSL_ERROR_BAD_CERTIFICATE, SSL_ERROR_BASE + 4,
    53"Unable to communicate securely with peer: peers's certificate was rejected.")
    54
    55/* unused (SSL_ERROR_BASE + 5),*/
    56
    57ER3(SSL_ERROR_BAD_CLIENT, SSL_ERROR_BASE + 6,
    58"The server has encountered bad data from the client.")
    59
    60ER3(SSL_ERROR_BAD_SERVER, SSL_ERROR_BASE + 7,
    61"The client has encountered bad data from the server.")
    62
    63ER3(SSL_ERROR_UNSUPPORTED_CERTIFICATE_TYPE, SSL_ERROR_BASE + 8,
    64"Unsupported certificate type.")
    65
    66ER3(SSL_ERROR_UNSUPPORTED_VERSION, SSL_ERROR_BASE + 9,
    67"Peer using unsupported version of security protocol.")
    68
    69/* unused (SSL_ERROR_BASE + 10),*/
    70
    71ER3(SSL_ERROR_WRONG_CERTIFICATE, SSL_ERROR_BASE + 11,
    72"Client authentication failed: private key in key database does not match public key in certificate database.")
    73
    74ER3(SSL_ERROR_BAD_CERT_DOMAIN, SSL_ERROR_BASE + 12,
    75"Unable to communicate securely with peer: requested domain name does not match the server's certificate.")
    76
    77/* SSL_ERROR_POST_WARNING (SSL_ERROR_BASE + 13),
    78 defined in sslerr.h
    79*/
    80
    81ER3(SSL_ERROR_SSL2_DISABLED, (SSL_ERROR_BASE + 14),
    82"Peer only supports SSL version 2, which is locally disabled.")
    83
    84
    85ER3(SSL_ERROR_BAD_MAC_READ, (SSL_ERROR_BASE + 15),
    86"SSL received a record with an incorrect Message Authentication Code.")
    87
    88ER3(SSL_ERROR_BAD_MAC_ALERT, (SSL_ERROR_BASE + 16),
    89"SSL peer reports incorrect Message Authentication Code.")
    90
    91ER3(SSL_ERROR_BAD_CERT_ALERT, (SSL_ERROR_BASE + 17),
    92"SSL peer cannot verify your certificate.")
    93
    94ER3(SSL_ERROR_REVOKED_CERT_ALERT, (SSL_ERROR_BASE + 18),
    95"SSL peer rejected your certificate as revoked.")
    96
    97ER3(SSL_ERROR_EXPIRED_CERT_ALERT, (SSL_ERROR_BASE + 19),
    98"SSL peer rejected your certificate as expired.")
    99
    100ER3(SSL_ERROR_SSL_DISABLED, (SSL_ERROR_BASE + 20),
    101"Cannot connect: SSL is disabled.")
    102
    103ER3(SSL_ERROR_FORTEZZA_PQG, (SSL_ERROR_BASE + 21),
    104"Cannot connect: SSL peer is in another FORTEZZA domain.")
    105
    106
    107ER3(SSL_ERROR_UNKNOWN_CIPHER_SUITE , (SSL_ERROR_BASE + 22),
    108"An unknown SSL cipher suite has been requested.")
    109
    110ER3(SSL_ERROR_NO_CIPHERS_SUPPORTED , (SSL_ERROR_BASE + 23),
    111"No cipher suites are present and enabled in this program.")
    112
    113ER3(SSL_ERROR_BAD_BLOCK_PADDING , (SSL_ERROR_BASE + 24),
    114"SSL received a record with bad block padding.")
    115
    116ER3(SSL_ERROR_RX_RECORD_TOO_LONG , (SSL_ERROR_BASE + 25),
    117"SSL received a record that exceeded the maximum permissible length.")
    118
    119ER3(SSL_ERROR_TX_RECORD_TOO_LONG , (SSL_ERROR_BASE + 26),
    120"SSL attempted to send a record that exceeded the maximum permissible length.")
    121
    122/*
    123 * Received a malformed (too long or short or invalid content) SSL handshake.
    124 */
    125ER3(SSL_ERROR_RX_MALFORMED_HELLO_REQUEST , (SSL_ERROR_BASE + 27),
    126"SSL received a malformed Hello Request handshake message.")
    127
    128ER3(SSL_ERROR_RX_MALFORMED_CLIENT_HELLO , (SSL_ERROR_BASE + 28),
    129"SSL received a malformed Client Hello handshake message.")
    130
    131ER3(SSL_ERROR_RX_MALFORMED_SERVER_HELLO , (SSL_ERROR_BASE + 29),
    132"SSL received a malformed Server Hello handshake message.")
    133
    134ER3(SSL_ERROR_RX_MALFORMED_CERTIFICATE , (SSL_ERROR_BASE + 30),
    135"SSL received a malformed Certificate handshake message.")
    136
    137ER3(SSL_ERROR_RX_MALFORMED_SERVER_KEY_EXCH , (SSL_ERROR_BASE + 31),
    138"SSL received a malformed Server Key Exchange handshake message.")
    139
    140ER3(SSL_ERROR_RX_MALFORMED_CERT_REQUEST , (SSL_ERROR_BASE + 32),
    141"SSL received a malformed Certificate Request handshake message.")
    142
    143ER3(SSL_ERROR_RX_MALFORMED_HELLO_DONE , (SSL_ERROR_BASE + 33),
    144"SSL received a malformed Server Hello Done handshake message.")
    145
    146ER3(SSL_ERROR_RX_MALFORMED_CERT_VERIFY , (SSL_ERROR_BASE + 34),
    147"SSL received a malformed Certificate Verify handshake message.")
    148
    149ER3(SSL_ERROR_RX_MALFORMED_CLIENT_KEY_EXCH , (SSL_ERROR_BASE + 35),
    150"SSL received a malformed Client Key Exchange handshake message.")
    151
    152ER3(SSL_ERROR_RX_MALFORMED_FINISHED , (SSL_ERROR_BASE + 36),
    153"SSL received a malformed Finished handshake message.")
    154
    155/*
    156 * Received a malformed (too long or short) SSL record.
    157 */
    158ER3(SSL_ERROR_RX_MALFORMED_CHANGE_CIPHER , (SSL_ERROR_BASE + 37),
    159"SSL received a malformed Change Cipher Spec record.")
    160
    161ER3(SSL_ERROR_RX_MALFORMED_ALERT , (SSL_ERROR_BASE + 38),
    162"SSL received a malformed Alert record.")
    163
    164ER3(SSL_ERROR_RX_MALFORMED_HANDSHAKE , (SSL_ERROR_BASE + 39),
    165"SSL received a malformed Handshake record.")
    166
    167ER3(SSL_ERROR_RX_MALFORMED_APPLICATION_DATA , (SSL_ERROR_BASE + 40),
    168"SSL received a malformed Application Data record.")
    169
    170/*
    171 * Received an SSL handshake that was inappropriate for the state we're in.
    172 * E.g. Server received message from server, or wrong state in state machine.
    173 */
    174ER3(SSL_ERROR_RX_UNEXPECTED_HELLO_REQUEST , (SSL_ERROR_BASE + 41),
    175"SSL received an unexpected Hello Request handshake message.")
    176
    177ER3(SSL_ERROR_RX_UNEXPECTED_CLIENT_HELLO , (SSL_ERROR_BASE + 42),
    178"SSL received an unexpected Client Hello handshake message.")
    179
    180ER3(SSL_ERROR_RX_UNEXPECTED_SERVER_HELLO , (SSL_ERROR_BASE + 43),
    181"SSL received an unexpected Server Hello handshake message.")
    182
    183ER3(SSL_ERROR_RX_UNEXPECTED_CERTIFICATE , (SSL_ERROR_BASE + 44),
    184"SSL received an unexpected Certificate handshake message.")
    185
    186ER3(SSL_ERROR_RX_UNEXPECTED_SERVER_KEY_EXCH , (SSL_ERROR_BASE + 45),
    187"SSL received an unexpected Server Key Exchange handshake message.")
    188
    189ER3(SSL_ERROR_RX_UNEXPECTED_CERT_REQUEST , (SSL_ERROR_BASE + 46),
    190"SSL received an unexpected Certificate Request handshake message.")
    191
    192ER3(SSL_ERROR_RX_UNEXPECTED_HELLO_DONE , (SSL_ERROR_BASE + 47),
    193"SSL received an unexpected Server Hello Done handshake message.")
    194
    195ER3(SSL_ERROR_RX_UNEXPECTED_CERT_VERIFY , (SSL_ERROR_BASE + 48),
    196"SSL received an unexpected Certificate Verify handshake message.")
    197
    198ER3(SSL_ERROR_RX_UNEXPECTED_CLIENT_KEY_EXCH , (SSL_ERROR_BASE + 49),
    199"SSL received an unexpected Cllient Key Exchange handshake message.")
    200
    201ER3(SSL_ERROR_RX_UNEXPECTED_FINISHED , (SSL_ERROR_BASE + 50),
    202"SSL received an unexpected Finished handshake message.")
    203
    204/*
    205 * Received an SSL record that was inappropriate for the state we're in.
    206 */
    207ER3(SSL_ERROR_RX_UNEXPECTED_CHANGE_CIPHER , (SSL_ERROR_BASE + 51),
    208"SSL received an unexpected Change Cipher Spec record.")
    209
    210ER3(SSL_ERROR_RX_UNEXPECTED_ALERT , (SSL_ERROR_BASE + 52),
    211"SSL received an unexpected Alert record.")
    212
    213ER3(SSL_ERROR_RX_UNEXPECTED_HANDSHAKE , (SSL_ERROR_BASE + 53),
    214"SSL received an unexpected Handshake record.")
    215
    216ER3(SSL_ERROR_RX_UNEXPECTED_APPLICATION_DATA, (SSL_ERROR_BASE + 54),
    217"SSL received an unexpected Application Data record.")
    218
    219/*
    220 * Received record/message with unknown discriminant.
    221 */
    222ER3(SSL_ERROR_RX_UNKNOWN_RECORD_TYPE , (SSL_ERROR_BASE + 55),
    223"SSL received a record with an unknown content type.")
    224
    225ER3(SSL_ERROR_RX_UNKNOWN_HANDSHAKE , (SSL_ERROR_BASE + 56),
    226"SSL received a handshake message with an unknown message type.")
    227
    228ER3(SSL_ERROR_RX_UNKNOWN_ALERT , (SSL_ERROR_BASE + 57),
    229"SSL received an alert record with an unknown alert description.")
    230
    231/*
    232 * Received an alert reporting what we did wrong. (more alerts above)
    233 */
    234ER3(SSL_ERROR_CLOSE_NOTIFY_ALERT , (SSL_ERROR_BASE + 58),
    235"SSL peer has closed this connection.")
    236
    237ER3(SSL_ERROR_HANDSHAKE_UNEXPECTED_ALERT , (SSL_ERROR_BASE + 59),
    238"SSL peer was not expecting a handshake message it received.")
    239
    240ER3(SSL_ERROR_DECOMPRESSION_FAILURE_ALERT , (SSL_ERROR_BASE + 60),
    241"SSL peer was unable to succesfully decompress an SSL record it received.")
    242
    243ER3(SSL_ERROR_HANDSHAKE_FAILURE_ALERT , (SSL_ERROR_BASE + 61),
    244"SSL peer was unable to negotiate an acceptable set of security parameters.")
    245
    246ER3(SSL_ERROR_ILLEGAL_PARAMETER_ALERT , (SSL_ERROR_BASE + 62),
    247"SSL peer rejected a handshake message for unacceptable content.")
    248
    249ER3(SSL_ERROR_UNSUPPORTED_CERT_ALERT , (SSL_ERROR_BASE + 63),
    250"SSL peer does not support certificates of the type it received.")
    251
    252ER3(SSL_ERROR_CERTIFICATE_UNKNOWN_ALERT , (SSL_ERROR_BASE + 64),
    253"SSL peer had some unspecified issue with the certificate it received.")
    254
    255
    256ER3(SSL_ERROR_GENERATE_RANDOM_FAILURE , (SSL_ERROR_BASE + 65),
    257"SSL experienced a failure of its random number generator.")
    258
    259ER3(SSL_ERROR_SIGN_HASHES_FAILURE , (SSL_ERROR_BASE + 66),
    260"Unable to digitally sign data required to verify your certificate.")
    261
    262ER3(SSL_ERROR_EXTRACT_PUBLIC_KEY_FAILURE , (SSL_ERROR_BASE + 67),
    263"SSL was unable to extract the public key from the peer's certificate.")
    264
    265ER3(SSL_ERROR_SERVER_KEY_EXCHANGE_FAILURE , (SSL_ERROR_BASE + 68),
    266"Unspecified failure while processing SSL Server Key Exchange handshake.")
    267
    268ER3(SSL_ERROR_CLIENT_KEY_EXCHANGE_FAILURE , (SSL_ERROR_BASE + 69),
    269"Unspecified failure while processing SSL Client Key Exchange handshake.")
    270
    271ER3(SSL_ERROR_ENCRYPTION_FAILURE , (SSL_ERROR_BASE + 70),
    272"Bulk data encryption algorithm failed in selected cipher suite.")
    273
    274ER3(SSL_ERROR_DECRYPTION_FAILURE , (SSL_ERROR_BASE + 71),
    275"Bulk data decryption algorithm failed in selected cipher suite.")
    276
    277ER3(SSL_ERROR_SOCKET_WRITE_FAILURE , (SSL_ERROR_BASE + 72),
    278"Attempt to write encrypted data to underlying socket failed.")
    279
    280ER3(SSL_ERROR_MD5_DIGEST_FAILURE , (SSL_ERROR_BASE + 73),
    281"MD5 digest function failed.")
    282
    283ER3(SSL_ERROR_SHA_DIGEST_FAILURE , (SSL_ERROR_BASE + 74),
    284"SHA-1 digest function failed.")
    285
    286ER3(SSL_ERROR_MAC_COMPUTATION_FAILURE , (SSL_ERROR_BASE + 75),
    287"MAC computation failed.")
    288
    289ER3(SSL_ERROR_SYM_KEY_CONTEXT_FAILURE , (SSL_ERROR_BASE + 76),
    290"Failure to create Symmetric Key context.")
    291
    292ER3(SSL_ERROR_SYM_KEY_UNWRAP_FAILURE , (SSL_ERROR_BASE + 77),
    293"Failure to unwrap the Symmetric key in Client Key Exchange message.")
    294
    295ER3(SSL_ERROR_PUB_KEY_SIZE_LIMIT_EXCEEDED , (SSL_ERROR_BASE + 78),
    296"SSL Server attempted to use domestic-grade public key with export cipher suite.")
    297
    298ER3(SSL_ERROR_IV_PARAM_FAILURE , (SSL_ERROR_BASE + 79),
    299"PKCS11 code failed to translate an IV into a param.")
    300
    301ER3(SSL_ERROR_INIT_CIPHER_SUITE_FAILURE , (SSL_ERROR_BASE + 80),
    302"Failed to initialize the selected cipher suite.")
    303
    304ER3(SSL_ERROR_SESSION_KEY_GEN_FAILURE , (SSL_ERROR_BASE + 81),
    305"Client failed to generate session keys for SSL session.")
    306
    307ER3(SSL_ERROR_NO_SERVER_KEY_FOR_ALG , (SSL_ERROR_BASE + 82),
    308"Server has no key for the attempted key exchange algorithm.")
    309
    310ER3(SSL_ERROR_TOKEN_INSERTION_REMOVAL , (SSL_ERROR_BASE + 83),
    311"PKCS#11 token was inserted or removed while operation was in progress.")
    312
    313ER3(SSL_ERROR_TOKEN_SLOT_NOT_FOUND , (SSL_ERROR_BASE + 84),
    314"No PKCS#11 token could be found to do a required operation.")
    315
    316ER3(SSL_ERROR_NO_COMPRESSION_OVERLAP , (SSL_ERROR_BASE + 85),
    317"Cannot communicate securely with peer: no common compression algorithm(s).")
    318
    319ER3(SSL_ERROR_HANDSHAKE_NOT_COMPLETED , (SSL_ERROR_BASE + 86),
    320"Cannot initiate another SSL handshake until current handshake is complete.")
    321
    322ER3(SSL_ERROR_BAD_HANDSHAKE_HASH_VALUE , (SSL_ERROR_BASE + 87),
    323"Received incorrect handshakes hash values from peer.")
    324
    325ER3(SSL_ERROR_CERT_KEA_MISMATCH , (SSL_ERROR_BASE + 88),
    326"The certificate provided cannot be used with the selected key exchange algorithm.")
    327
    328ER3(SSL_ERROR_NO_TRUSTED_SSL_CLIENT_CA , (SSL_ERROR_BASE + 89),
    329"No certificate authority is trusted for SSL client authentication.")
    330
    331ER3(SSL_ERROR_SESSION_NOT_FOUND , (SSL_ERROR_BASE + 90),
    332"Client's SSL session ID not found in server's session cache.")
    333
    334ER3(SSL_ERROR_DECRYPTION_FAILED_ALERT , (SSL_ERROR_BASE + 91),
    335"Peer was unable to decrypt an SSL record it received.")
    336
    337ER3(SSL_ERROR_RECORD_OVERFLOW_ALERT , (SSL_ERROR_BASE + 92),
    338"Peer received an SSL record that was longer than is permitted.")
    339
    340ER3(SSL_ERROR_UNKNOWN_CA_ALERT , (SSL_ERROR_BASE + 93),
    341"Peer does not recognize and trust the CA that issued your certificate.")
    342
    343ER3(SSL_ERROR_ACCESS_DENIED_ALERT , (SSL_ERROR_BASE + 94),
    344"Peer received a valid certificate, but access was denied.")
    345
    346ER3(SSL_ERROR_DECODE_ERROR_ALERT , (SSL_ERROR_BASE + 95),
    347"Peer could not decode an SSL handshake message.")
    348
    349ER3(SSL_ERROR_DECRYPT_ERROR_ALERT , (SSL_ERROR_BASE + 96),
    350"Peer reports failure of signature verification or key exchange.")
    351
    352ER3(SSL_ERROR_EXPORT_RESTRICTION_ALERT , (SSL_ERROR_BASE + 97),
    353"Peer reports negotiation not in compliance with export regulations.")
    354
    355ER3(SSL_ERROR_PROTOCOL_VERSION_ALERT , (SSL_ERROR_BASE + 98),
    356"Peer reports incompatible or unsupported protocol version.")
    357
    358ER3(SSL_ERROR_INSUFFICIENT_SECURITY_ALERT , (SSL_ERROR_BASE + 99),
    359"Server requires ciphers more secure than those supported by client.")
    360
    361ER3(SSL_ERROR_INTERNAL_ERROR_ALERT , (SSL_ERROR_BASE + 100),
    362"Peer reports it experienced an internal error.")
    363
    364ER3(SSL_ERROR_USER_CANCELED_ALERT , (SSL_ERROR_BASE + 101),
    365"Peer user canceled handshake.")
    366
    367ER3(SSL_ERROR_NO_RENEGOTIATION_ALERT , (SSL_ERROR_BASE + 102),
    368"Peer does not permit renegotiation of SSL security parameters.")
    369
    370ER3(SSL_ERROR_SERVER_CACHE_NOT_CONFIGURED , (SSL_ERROR_BASE + 103),
    371"SSL server cache not configured and not disabled for this socket.")
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not encrypted
    Definition: SECerrs.h:175
    ER3(SSL_ERROR_EXPORT_ONLY_SERVER, SSL_ERROR_BASE+0, "Unable to communicate securely. Peer does not support high-grade encryption.") ER3(SSL_ERROR_US_ONLY_SERVER
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL version
    Definition: SSLerrs.h:82
    SSL_ERROR_BASE
    Definition: SSLerrs.h:43
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot connect
    Definition: SSLerrs.h:103
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with peer
    Definition: SSLerrs.h:81
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication failed
    Definition: SSLerrs.h:74
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm No PKCS Cannot initiate another SSL handshake until current handshake is complete The certificate provided cannot be used with the selected key exchange algorithm Client s SSL session ID not found in server s session cache Peer received an SSL record that was longer than is permitted Peer received a valid certificate
    Definition: SSLerrs.h:344
    pam_pkcs11-0.6.12/doc/api/ldap__mapper_8h.html0000644000175000017500000000475514367517110015726 00000000000000 pam_pkcs11: ldap_mapper.h File Reference
    pam_pkcs11 0.6.12
    ldap_mapper.h File Reference
    pam_pkcs11-0.6.12/doc/api/generic__mapper_8h_source.html0000644000175000017500000002363314367517110017776 00000000000000 pam_pkcs11: generic_mapper.h Source File
    pam_pkcs11 0.6.12
    generic_mapper.h
    Go to the documentation of this file.
    1/*
    2 * PAM-PKCS11 mapping modules
    3 * Copyright (C) 2005 Juan Antonio Martinez <jonsito@teleline.es>
    4 * pam-pkcs11 is copyright (C) 2003-2004 of Mario Strasser <mast@gmx.net>
    5 *
    6 * This library is free software; you can redistribute it and/or
    7 * modify it under the terms of the GNU Lesser General Public
    8 * License as published by the Free Software Foundation; either
    9 * version 2.1 of the License, or (at your option) any later version.
    10 *
    11 * This library is distributed in the hope that it will be useful,
    12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14 * Lesser General Public License for more details.
    15 *
    16 * You should have received a copy of the GNU Lesser General Public
    17 * License along with this library; if not, write to the Free Software
    18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    19 *
    20 * $Id$
    21 */
    22
    23#ifndef __GENERIC_MAPPER_H_
    24#define __GENERIC_MAPPER_H_
    25
    26#ifdef HAVE_CONFIG_H
    27#include <config.h>
    28#endif
    29
    30#include "../scconf/scconf.h"
    31#include "mapper.h"
    32
    33#ifdef GENERIC_MAPPER_STATIC
    34
    35#ifndef __GENERIC_MAPPER_C_
    36#define GENERIC_EXTERN extern
    37#else
    38#define GENERIC_EXTERN
    39#endif
    40GENERIC_EXTERN mapper_module * generic_mapper_module_init(scconf_block *blk,const char *mapper_name);
    41#undef GENERIC_EXTERN
    42
    43/* end of static (if any) declarations */
    44#endif
    45
    46/* End of generic_mapper.h */
    47#endif
    Structure to be filled on mapper module initialization.
    Definition: mapper.h:40
    pam_pkcs11-0.6.12/doc/api/functions_vars_q.html0000644000175000017500000000376714367517110016271 00000000000000 pam_pkcs11: Data Fields - Variables
    pam_pkcs11 0.6.12
     

    - q -

    pam_pkcs11-0.6.12/doc/api/null__mapper_8h_source.html0000644000175000017500000002356414367517110017337 00000000000000 pam_pkcs11: null_mapper.h Source File
    pam_pkcs11 0.6.12
    null_mapper.h
    Go to the documentation of this file.
    1/*
    2 * PAM-PKCS11 mapping modules
    3 * Copyright (C) 2005 Juan Antonio Martinez <jonsito@teleline.es>
    4 * pam-pkcs11 is copyright (C) 2003-2004 of Mario Strasser <mast@gmx.net>
    5 *
    6 * This library is free software; you can redistribute it and/or
    7 * modify it under the terms of the GNU Lesser General Public
    8 * License as published by the Free Software Foundation; either
    9 * version 2.1 of the License, or (at your option) any later version.
    10 *
    11 * This library is distributed in the hope that it will be useful,
    12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14 * Lesser General Public License for more details.
    15 *
    16 * You should have received a copy of the GNU Lesser General Public
    17 * License along with this library; if not, write to the Free Software
    18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    19 *
    20 * $Id$
    21 */
    22
    23#ifndef __NULL_MAPPER_H_
    24#define __NULL_MAPPER_H_
    25
    26#ifdef HAVE_CONFIG_H
    27#include <config.h>
    28#endif
    29
    30#include "../scconf/scconf.h"
    31#include "mapper.h"
    32
    33#ifdef NULL_MAPPER_STATIC
    34
    35#ifndef __NULL_MAPPER_C_
    36#define NULL_EXTERN extern
    37#else
    38#define NULL_EXTERN
    39#endif
    40NULL_EXTERN mapper_module * null_mapper_module_init(scconf_block *blk,const char *mapper_name);
    41#undef NULL_EXTERN
    42
    43/* end of static (if any) declarations */
    44#endif
    45
    46/* End of null_mapper.h */
    47#endif
    Structure to be filled on mapper module initialization.
    Definition: mapper.h:40
    pam_pkcs11-0.6.12/doc/api/globals_c.html0000644000175000017500000022357414367517110014633 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:

    - c -

    pam_pkcs11-0.6.12/doc/api/structCK__RSA__PKCS__OAEP__PARAMS.html0000644000175000017500000002067414367517110020434 00000000000000 pam_pkcs11: CK_RSA_PKCS_OAEP_PARAMS Struct Reference
    pam_pkcs11 0.6.12
    CK_RSA_PKCS_OAEP_PARAMS Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_MECHANISM_TYPE hashAlg
     
    CK_RSA_PKCS_MGF_TYPE mgf
     
    CK_RSA_PKCS_OAEP_SOURCE_TYPE source
     
    CK_VOID_PTR pSourceData
     
    CK_ULONG ulSourceDataLen
     

    Detailed Description

    Definition at line 1063 of file pkcs11t.h.

    Field Documentation

    ◆ hashAlg

    Definition at line 1064 of file pkcs11t.h.

    ◆ mgf

    Definition at line 1065 of file pkcs11t.h.

    ◆ pSourceData

    CK_VOID_PTR pSourceData

    Definition at line 1067 of file pkcs11t.h.

    ◆ source

    Definition at line 1066 of file pkcs11t.h.

    ◆ ulSourceDataLen

    CK_ULONG ulSourceDataLen

    Definition at line 1068 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/structmapper__listitem.html0000644000175000017500000001171514367517110017500 00000000000000 pam_pkcs11: mapper_listitem Struct Reference
    pam_pkcs11 0.6.12
    mapper_listitem Struct Reference

    #include <mapper_mgr.h>

    Data Fields

    struct mapper_instancemodule
     
    struct mapper_listitemnext
     

    Detailed Description

    Definition at line 48 of file mapper_mgr.h.

    Field Documentation

    ◆ module

    struct mapper_instance* module

    Definition at line 49 of file mapper_mgr.h.

    ◆ next

    struct mapper_listitem* next

    Definition at line 50 of file mapper_mgr.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/secutil_8h.html0000644000175000017500000036471414367517110014757 00000000000000 pam_pkcs11: secutil.h File Reference
    pam_pkcs11 0.6.12
    secutil.h File Reference
    #include "seccomon.h"
    #include "secitem.h"
    #include "prerror.h"
    #include "base64.h"
    #include "key.h"
    #include "secpkcs7.h"
    #include "secasn1.h"
    #include "secder.h"
    #include <stdio.h>
    #include "secerr.h"
    #include "sslerr.h"

    Go to the source code of this file.

    Data Structures

    struct  secuPWData
     
    struct  secuCommandFlag
     
    struct  secuCommand
     

    Macros

    #define SEC_CT_PRIVATE_KEY   "private-key"
     
    #define SEC_CT_PUBLIC_KEY   "public-key"
     
    #define SEC_CT_CERTIFICATE   "certificate"
     
    #define SEC_CT_CERTIFICATE_REQUEST   "certificate-request"
     
    #define SEC_CT_PKCS7   "pkcs7"
     
    #define SEC_CT_CRL   "crl"
     
    #define NS_CERTREQ_HEADER   "-----BEGIN NEW CERTIFICATE REQUEST-----"
     
    #define NS_CERTREQ_TRAILER   "-----END NEW CERTIFICATE REQUEST-----"
     
    #define NS_CERT_HEADER   "-----BEGIN CERTIFICATE-----"
     
    #define NS_CERT_TRAILER   "-----END CERTIFICATE-----"
     
    #define NS_CRL_HEADER   "-----BEGIN CRL-----"
     
    #define NS_CRL_TRAILER   "-----END CRL-----"
     

    Typedefs

    typedef int(* SECU_PPFunc) (FILE *out, SECItem *item, char *msg, int level)
     
    typedef SECStatus(* EXTEN_EXT_VALUE_ENCODER) (PRArenaPool *extHandleArena, void *value, SECItem *encodedValue)
     

    Enumerations

    enum  SignAndEncodeFuncExitStat {
      noKeyFound = 1 , noSignatureMatch = 2 , failToEncode = 3 , failToSign = 4 ,
      noMem = 5
    }
     

    Functions

    SECStatus SEC_AddPermCertificate (CERTCertDBHandle *handle, SECItem *derCert, char *nickname, CERTCertTrust *trust)
     
    SECStatus SECU_ChangePW (PK11SlotInfo *slot, char *passwd, char *pwFile)
     
    PRBool SEC_CheckPassword (char *password)
     
    PRBool SEC_BlindCheckPassword (char *password)
     
    char * SEC_GetPassword (FILE *in, FILE *out, char *msg, PRBool(*chkpw)(char *))
     
    char * SECU_FilePasswd (PK11SlotInfo *slot, PRBool retry, void *arg)
     
    char * SECU_GetPasswordString (void *arg, char *prompt)
     
    SECStatus SEC_WriteDongleFile (int fd, char *pw)
     
    char * SEC_ReadDongleFile (int fd)
     
    char * SECU_AppendFilenameToDir (char *dir, char *filename)
     
    char * SECU_DefaultSSLDir (void)
     
    char * SECU_ConfigDirectory (const char *base)
     
    int SECU_GetClientAuthData (void *arg, PRFileDesc *fd, struct CERTDistNamesStr *caNames, struct CERTCertificateStr **pRetCert, struct SECKEYPrivateKeyStr **pRetKey)
     
    void SECU_PrintError (char *progName, char *msg,...)
     
    void SECU_PrintSystemError (char *progName, char *msg,...)
     
    const char * SECU_Strerror (PRErrorCode errNum)
     
    void SECU_printCertProblems (FILE *outfile, CERTCertDBHandle *handle, CERTCertificate *cert, PRBool checksig, SECCertificateUsage certUsage, void *pinArg, PRBool verbose)
     
    SECStatus SECU_FileToItem (SECItem *dst, PRFileDesc *src)
     
    SECStatus SECU_TextFileToItem (SECItem *dst, PRFileDesc *src)
     
    SECStatus SECU_ReadDERFromFile (SECItem *der, PRFileDesc *inFile, PRBool ascii)
     
    void SECU_Indent (FILE *out, int level)
     
    void SECU_PrintInteger (FILE *out, SECItem *i, char *m, int level)
     
    SECOidTag SECU_PrintObjectID (FILE *out, SECItem *oid, char *m, int level)
     
    void SECU_PrintAlgorithmID (FILE *out, SECAlgorithmID *a, char *m, int level)
     
    void SECU_PrintAsHex (FILE *out, SECItem *i, const char *m, int level)
     
    void SECU_PrintBuf (FILE *out, const char *msg, const void *vp, int len)
     
    void SECU_PrintUTCTime (FILE *out, SECItem *t, char *m, int level)
     
    void SECU_PrintGeneralizedTime (FILE *out, SECItem *t, char *m, int level)
     
    void SECU_PrintTimeChoice (FILE *out, SECItem *t, char *m, int level)
     
    SECStatus SECU_PrintCertNickname (CERTCertListNode *cert, void *data)
     
    SECStatus SECU_PrintCertificateNames (CERTCertDBHandle *handle, PRFileDesc *out, PRBool sortByName, PRBool sortByTrust)
     
    int SECU_CheckCertNameExists (CERTCertDBHandle *handle, char *nickname)
     
    int SECU_PrintCertificateRequest (FILE *out, SECItem *der, char *m, int level)
     
    int SECU_PrintCertificate (FILE *out, SECItem *der, char *m, int level)
     
    void SECU_PrintTrustFlags (FILE *out, CERTCertTrust *trust, char *m, int level)
     
    int SECU_PrintPublicKey (FILE *out, SECItem *der, char *m, int level)
     
    int SECU_PrintFingerprints (FILE *out, SECItem *derCert, char *m, int level)
     
    int SECU_PrintPKCS7ContentInfo (FILE *out, SECItem *der, char *m, int level)
     
    SECStatus SECU_PKCS11Init (PRBool readOnly)
     
    int SECU_PrintSignedData (FILE *out, SECItem *der, char *m, int level, SECU_PPFunc inner)
     
    int SECU_PrintCrl (FILE *out, SECItem *der, char *m, int level)
     
    void SECU_PrintCRLInfo (FILE *out, CERTCrl *crl, char *m, int level)
     
    void SECU_PrintString (FILE *out, SECItem *si, char *m, int level)
     
    void SECU_PrintAny (FILE *out, SECItem *i, char *m, int level)
     
    void SECU_PrintPolicy (FILE *out, SECItem *value, char *msg, int level)
     
    void SECU_PrintPrivKeyUsagePeriodExtension (FILE *out, SECItem *value, char *msg, int level)
     
    void SECU_PrintExtensions (FILE *out, CERTCertExtension **extensions, char *msg, int level)
     
    void SECU_PrintName (FILE *out, CERTName *name, char *msg, int level)
     
    SECItem * SECU_GetPBEPassword (void *arg)
     
    char * SECU_GetModulePassword (PK11SlotInfo *slot, PRBool retry, void *arg)
     
    SECStatus DER_PrettyPrint (FILE *out, SECItem *it, PRBool raw)
     
    void SEC_Init (void)
     
    char * SECU_SECModDBName (void)
     
    void SECU_PrintPRandOSError (char *progName)
     
    SECStatus SECU_RegisterDynamicOids (void)
     
    SECOidTag SECU_StringToSignatureAlgTag (const char *alg)
     
    SECStatus SECU_StoreCRL (PK11SlotInfo *slot, SECItem *derCrl, PRFileDesc *outFile, int ascii, char *url)
     
    SECStatus SECU_DerSignDataCRL (PRArenaPool *arena, CERTSignedData *sd, unsigned char *buf, int len, SECKEYPrivateKey *pk, SECOidTag algID)
     
    SECStatus SECU_SignAndEncodeCRL (CERTCertificate *issuer, CERTSignedCrl *signCrl, SECOidTag hashAlgTag, SignAndEncodeFuncExitStat *resCode)
     
    SECStatus SECU_CopyCRL (PRArenaPool *destArena, CERTCrl *destCrl, CERTCrl *srcCrl)
     
    CERTAuthKeyID * SECU_FindCRLAuthKeyIDExten (PRArenaPool *arena, CERTSignedCrl *crl)
     
    CERTCertificate * SECU_FindCrlIssuer (CERTCertDBHandle *dbHandle, SECItem *subject, CERTAuthKeyID *id, PRTime validTime)
     
    SECStatus SECU_EncodeAndAddExtensionValue (PRArenaPool *arena, void *extHandle, void *value, PRBool criticality, int extenType, EXTEN_EXT_VALUE_ENCODER EncodeValueFn)
     
    SECStatus SECU_ParseCommandLine (int argc, char **argv, char *progName, secuCommand *cmd)
     
    char * SECU_GetOptionArg (secuCommand *cmd, int optionNum)
     
    char * SECU_ErrorString (int16 err)
     
    char * SECU_ErrorStringRaw (int16 err)
     
    void printflags (char *trusts, unsigned int flags)
     
    int ffs (unsigned int i)
     

    Macro Definition Documentation

    ◆ NS_CERT_HEADER

    #define NS_CERT_HEADER   "-----BEGIN CERTIFICATE-----"

    Definition at line 59 of file secutil.h.

    ◆ NS_CERT_TRAILER

    #define NS_CERT_TRAILER   "-----END CERTIFICATE-----"

    Definition at line 60 of file secutil.h.

    ◆ NS_CERTREQ_HEADER

    #define NS_CERTREQ_HEADER   "-----BEGIN NEW CERTIFICATE REQUEST-----"

    Definition at line 56 of file secutil.h.

    ◆ NS_CERTREQ_TRAILER

    #define NS_CERTREQ_TRAILER   "-----END NEW CERTIFICATE REQUEST-----"

    Definition at line 57 of file secutil.h.

    ◆ NS_CRL_HEADER

    #define NS_CRL_HEADER   "-----BEGIN CRL-----"

    Definition at line 62 of file secutil.h.

    ◆ NS_CRL_TRAILER

    #define NS_CRL_TRAILER   "-----END CRL-----"

    Definition at line 63 of file secutil.h.

    ◆ SEC_CT_CERTIFICATE

    #define SEC_CT_CERTIFICATE   "certificate"

    Definition at line 51 of file secutil.h.

    ◆ SEC_CT_CERTIFICATE_REQUEST

    #define SEC_CT_CERTIFICATE_REQUEST   "certificate-request"

    Definition at line 52 of file secutil.h.

    ◆ SEC_CT_CRL

    #define SEC_CT_CRL   "crl"

    Definition at line 54 of file secutil.h.

    ◆ SEC_CT_PKCS7

    #define SEC_CT_PKCS7   "pkcs7"

    Definition at line 53 of file secutil.h.

    ◆ SEC_CT_PRIVATE_KEY

    #define SEC_CT_PRIVATE_KEY   "private-key"

    Definition at line 49 of file secutil.h.

    ◆ SEC_CT_PUBLIC_KEY

    #define SEC_CT_PUBLIC_KEY   "public-key"

    Definition at line 50 of file secutil.h.

    Typedef Documentation

    ◆ EXTEN_EXT_VALUE_ENCODER

    typedef SECStatus(* EXTEN_EXT_VALUE_ENCODER) (PRArenaPool *extHandleArena, void *value, SECItem *encodedValue)

    Definition at line 363 of file secutil.h.

    ◆ SECU_PPFunc

    typedef int(* SECU_PPFunc) (FILE *out, SECItem *item, char *msg, int level)

    Definition at line 74 of file secutil.h.

    Enumeration Type Documentation

    ◆ SignAndEncodeFuncExitStat

    Enumerator
    noKeyFound 
    noSignatureMatch 
    failToEncode 
    failToSign 
    noMem 

    Definition at line 331 of file secutil.h.

    Function Documentation

    ◆ DER_PrettyPrint()

    SECStatus DER_PrettyPrint ( FILE *  out,
    SECItem *  it,
    PRBool  raw 
    )

    ◆ ffs()

    int ffs ( unsigned int  i)

    ◆ printflags()

    void printflags ( char *  trusts,
    unsigned int  flags 
    )

    ◆ SEC_AddPermCertificate()

    SECStatus SEC_AddPermCertificate ( CERTCertDBHandle *  handle,
    SECItem *  derCert,
    char *  nickname,
    CERTCertTrust *  trust 
    )

    ◆ SEC_BlindCheckPassword()

    PRBool SEC_BlindCheckPassword ( char *  password)

    ◆ SEC_CheckPassword()

    PRBool SEC_CheckPassword ( char *  password)

    ◆ SEC_GetPassword()

    char * SEC_GetPassword ( FILE *  in,
    FILE *  out,
    char *  msg,
    PRBool(*)(char *)  chkpw 
    )

    ◆ SEC_Init()

    void SEC_Init ( void  )

    ◆ SEC_ReadDongleFile()

    char * SEC_ReadDongleFile ( int  fd)

    ◆ SEC_WriteDongleFile()

    SECStatus SEC_WriteDongleFile ( int  fd,
    char *  pw 
    )

    ◆ SECU_AppendFilenameToDir()

    char * SECU_AppendFilenameToDir ( char *  dir,
    char *  filename 
    )

    ◆ SECU_ChangePW()

    SECStatus SECU_ChangePW ( PK11SlotInfo *  slot,
    char *  passwd,
    char *  pwFile 
    )

    ◆ SECU_CheckCertNameExists()

    int SECU_CheckCertNameExists ( CERTCertDBHandle *  handle,
    char *  nickname 
    )

    ◆ SECU_ConfigDirectory()

    char * SECU_ConfigDirectory ( const char *  base)

    ◆ SECU_CopyCRL()

    SECStatus SECU_CopyCRL ( PRArenaPool *  destArena,
    CERTCrl *  destCrl,
    CERTCrl *  srcCrl 
    )

    ◆ SECU_DefaultSSLDir()

    char * SECU_DefaultSSLDir ( void  )

    ◆ SECU_DerSignDataCRL()

    SECStatus SECU_DerSignDataCRL ( PRArenaPool *  arena,
    CERTSignedData *  sd,
    unsigned char *  buf,
    int  len,
    SECKEYPrivateKey *  pk,
    SECOidTag  algID 
    )

    ◆ SECU_EncodeAndAddExtensionValue()

    SECStatus SECU_EncodeAndAddExtensionValue ( PRArenaPool *  arena,
    void *  extHandle,
    void *  value,
    PRBool  criticality,
    int  extenType,
    EXTEN_EXT_VALUE_ENCODER  EncodeValueFn 
    )

    ◆ SECU_ErrorString()

    char * SECU_ErrorString ( int16  err)

    ◆ SECU_ErrorStringRaw()

    char * SECU_ErrorStringRaw ( int16  err)

    ◆ SECU_FilePasswd()

    char * SECU_FilePasswd ( PK11SlotInfo *  slot,
    PRBool  retry,
    void *  arg 
    )

    ◆ SECU_FileToItem()

    SECStatus SECU_FileToItem ( SECItem *  dst,
    PRFileDesc *  src 
    )

    ◆ SECU_FindCRLAuthKeyIDExten()

    CERTAuthKeyID * SECU_FindCRLAuthKeyIDExten ( PRArenaPool *  arena,
    CERTSignedCrl *  crl 
    )

    ◆ SECU_FindCrlIssuer()

    CERTCertificate * SECU_FindCrlIssuer ( CERTCertDBHandle *  dbHandle,
    SECItem *  subject,
    CERTAuthKeyID *  id,
    PRTime  validTime 
    )

    ◆ SECU_GetClientAuthData()

    int SECU_GetClientAuthData ( void *  arg,
    PRFileDesc *  fd,
    struct CERTDistNamesStr *  caNames,
    struct CERTCertificateStr **  pRetCert,
    struct SECKEYPrivateKeyStr **  pRetKey 
    )

    ◆ SECU_GetModulePassword()

    char * SECU_GetModulePassword ( PK11SlotInfo *  slot,
    PRBool  retry,
    void *  arg 
    )

    ◆ SECU_GetOptionArg()

    char * SECU_GetOptionArg ( secuCommand cmd,
    int  optionNum 
    )

    ◆ SECU_GetPasswordString()

    char * SECU_GetPasswordString ( void *  arg,
    char *  prompt 
    )

    ◆ SECU_GetPBEPassword()

    SECItem * SECU_GetPBEPassword ( void *  arg)

    ◆ SECU_Indent()

    void SECU_Indent ( FILE *  out,
    int  level 
    )

    ◆ SECU_ParseCommandLine()

    SECStatus SECU_ParseCommandLine ( int  argc,
    char **  argv,
    char *  progName,
    secuCommand cmd 
    )

    ◆ SECU_PKCS11Init()

    SECStatus SECU_PKCS11Init ( PRBool  readOnly)

    ◆ SECU_PrintAlgorithmID()

    void SECU_PrintAlgorithmID ( FILE *  out,
    SECAlgorithmID *  a,
    char *  m,
    int  level 
    )

    ◆ SECU_PrintAny()

    void SECU_PrintAny ( FILE *  out,
    SECItem *  i,
    char *  m,
    int  level 
    )

    ◆ SECU_PrintAsHex()

    void SECU_PrintAsHex ( FILE *  out,
    SECItem *  i,
    const char *  m,
    int  level 
    )

    ◆ SECU_PrintBuf()

    void SECU_PrintBuf ( FILE *  out,
    const char *  msg,
    const void *  vp,
    int  len 
    )

    ◆ SECU_PrintCertificate()

    int SECU_PrintCertificate ( FILE *  out,
    SECItem *  der,
    char *  m,
    int  level 
    )

    ◆ SECU_PrintCertificateNames()

    SECStatus SECU_PrintCertificateNames ( CERTCertDBHandle *  handle,
    PRFileDesc *  out,
    PRBool  sortByName,
    PRBool  sortByTrust 
    )

    ◆ SECU_PrintCertificateRequest()

    int SECU_PrintCertificateRequest ( FILE *  out,
    SECItem *  der,
    char *  m,
    int  level 
    )

    ◆ SECU_PrintCertNickname()

    SECStatus SECU_PrintCertNickname ( CERTCertListNode *  cert,
    void *  data 
    )

    ◆ SECU_printCertProblems()

    void SECU_printCertProblems ( FILE *  outfile,
    CERTCertDBHandle *  handle,
    CERTCertificate *  cert,
    PRBool  checksig,
    SECCertificateUsage  certUsage,
    void *  pinArg,
    PRBool  verbose 
    )

    ◆ SECU_PrintCrl()

    int SECU_PrintCrl ( FILE *  out,
    SECItem *  der,
    char *  m,
    int  level 
    )

    ◆ SECU_PrintCRLInfo()

    void SECU_PrintCRLInfo ( FILE *  out,
    CERTCrl *  crl,
    char *  m,
    int  level 
    )

    ◆ SECU_PrintError()

    void SECU_PrintError ( char *  progName,
    char *  msg,
      ... 
    )

    ◆ SECU_PrintExtensions()

    void SECU_PrintExtensions ( FILE *  out,
    CERTCertExtension **  extensions,
    char *  msg,
    int  level 
    )

    ◆ SECU_PrintFingerprints()

    int SECU_PrintFingerprints ( FILE *  out,
    SECItem *  derCert,
    char *  m,
    int  level 
    )

    ◆ SECU_PrintGeneralizedTime()

    void SECU_PrintGeneralizedTime ( FILE *  out,
    SECItem *  t,
    char *  m,
    int  level 
    )

    ◆ SECU_PrintInteger()

    void SECU_PrintInteger ( FILE *  out,
    SECItem *  i,
    char *  m,
    int  level 
    )

    ◆ SECU_PrintName()

    void SECU_PrintName ( FILE *  out,
    CERTName *  name,
    char *  msg,
    int  level 
    )

    ◆ SECU_PrintObjectID()

    SECOidTag SECU_PrintObjectID ( FILE *  out,
    SECItem *  oid,
    char *  m,
    int  level 
    )

    ◆ SECU_PrintPKCS7ContentInfo()

    int SECU_PrintPKCS7ContentInfo ( FILE *  out,
    SECItem *  der,
    char *  m,
    int  level 
    )

    ◆ SECU_PrintPolicy()

    void SECU_PrintPolicy ( FILE *  out,
    SECItem *  value,
    char *  msg,
    int  level 
    )

    ◆ SECU_PrintPRandOSError()

    void SECU_PrintPRandOSError ( char *  progName)

    ◆ SECU_PrintPrivKeyUsagePeriodExtension()

    void SECU_PrintPrivKeyUsagePeriodExtension ( FILE *  out,
    SECItem *  value,
    char *  msg,
    int  level 
    )

    ◆ SECU_PrintPublicKey()

    int SECU_PrintPublicKey ( FILE *  out,
    SECItem *  der,
    char *  m,
    int  level 
    )

    ◆ SECU_PrintSignedData()

    int SECU_PrintSignedData ( FILE *  out,
    SECItem *  der,
    char *  m,
    int  level,
    SECU_PPFunc  inner 
    )

    ◆ SECU_PrintString()

    void SECU_PrintString ( FILE *  out,
    SECItem *  si,
    char *  m,
    int  level 
    )

    ◆ SECU_PrintSystemError()

    void SECU_PrintSystemError ( char *  progName,
    char *  msg,
      ... 
    )

    ◆ SECU_PrintTimeChoice()

    void SECU_PrintTimeChoice ( FILE *  out,
    SECItem *  t,
    char *  m,
    int  level 
    )

    ◆ SECU_PrintTrustFlags()

    void SECU_PrintTrustFlags ( FILE *  out,
    CERTCertTrust *  trust,
    char *  m,
    int  level 
    )

    ◆ SECU_PrintUTCTime()

    void SECU_PrintUTCTime ( FILE *  out,
    SECItem *  t,
    char *  m,
    int  level 
    )

    ◆ SECU_ReadDERFromFile()

    SECStatus SECU_ReadDERFromFile ( SECItem *  der,
    PRFileDesc *  inFile,
    PRBool  ascii 
    )

    ◆ SECU_RegisterDynamicOids()

    SECStatus SECU_RegisterDynamicOids ( void  )

    ◆ SECU_SECModDBName()

    char * SECU_SECModDBName ( void  )

    ◆ SECU_SignAndEncodeCRL()

    SECStatus SECU_SignAndEncodeCRL ( CERTCertificate *  issuer,
    CERTSignedCrl *  signCrl,
    SECOidTag  hashAlgTag,
    SignAndEncodeFuncExitStat resCode 
    )

    ◆ SECU_StoreCRL()

    SECStatus SECU_StoreCRL ( PK11SlotInfo *  slot,
    SECItem *  derCrl,
    PRFileDesc *  outFile,
    int  ascii,
    char *  url 
    )

    ◆ SECU_Strerror()

    const char * SECU_Strerror ( PRErrorCode  errNum)

    ◆ SECU_StringToSignatureAlgTag()

    SECOidTag SECU_StringToSignatureAlgTag ( const char *  alg)

    ◆ SECU_TextFileToItem()

    SECStatus SECU_TextFileToItem ( SECItem *  dst,
    PRFileDesc *  src 
    )
    pam_pkcs11-0.6.12/doc/api/globals_func_p.html0000644000175000017500000000472614367517110015657 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - p -

    pam_pkcs11-0.6.12/doc/api/globals_func_g.html0000644000175000017500000000636614367517110015650 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - g -

    pam_pkcs11-0.6.12/doc/api/pkcs11t_8h_source.html0000644000175000017500000155356214367517110016157 00000000000000 pam_pkcs11: pkcs11t.h Source File
    pam_pkcs11 0.6.12
    pkcs11t.h
    Go to the documentation of this file.
    1/* pkcs11t.h include file for PKCS #11. */
    2/* $Revision: 1.4 $ */
    3
    4/* License to copy and use this software is granted provided that it is
    5 * identified as "RSA Security Inc. PKCS #11 Cryptographic Token Interface
    6 * (Cryptoki)" in all material mentioning or referencing this software.
    7
    8 * License is also granted to make and use derivative works provided that
    9 * such works are identified as "derived from the RSA Security Inc. PKCS #11
    10 * Cryptographic Token Interface (Cryptoki)" in all material mentioning or
    11 * referencing the derived work.
    12
    13 * RSA Security Inc. makes no representations concerning either the
    14 * merchantability of this software or the suitability of this software for
    15 * any particular purpose. It is provided "as is" without express or implied
    16 * warranty of any kind.
    17 */
    18
    19/* See top of pkcs11.h for information about the macros that
    20 * must be defined and the structure-packing conventions that
    21 * must be set before including this file. */
    22
    23#ifndef _PKCS11T_H_
    24#define _PKCS11T_H_ 1
    25
    26#ifndef CK_DISABLE_TRUE_FALSE
    27#ifndef FALSE
    28#define FALSE 0
    29#endif
    30
    31#ifndef TRUE
    32#define TRUE !(FALSE)
    33#endif
    34#endif
    35
    36#define CK_TRUE 1
    37#define CK_FALSE 0
    38
    39/* an unsigned 8-bit value */
    40typedef unsigned char CK_BYTE;
    41
    42/* an unsigned 8-bit character */
    44
    45/* an 8-bit UTF-8 character */
    47
    48/* a BYTE-sized Boolean flag */
    50
    51/* an unsigned value, at least 32 bits long */
    52typedef unsigned long int CK_ULONG;
    53
    54/* a signed value, the same size as a CK_ULONG */
    55/* CK_LONG is new for v2.0 */
    56typedef long int CK_LONG;
    57
    58/* at least 32 bits; each bit is a Boolean flag */
    60
    61
    62/* some special values for certain CK_ULONG variables */
    63#define CK_UNAVAILABLE_INFORMATION (~0UL)
    64#define CK_EFFECTIVELY_INFINITE 0
    65
    66
    71typedef void CK_PTR CK_VOID_PTR;
    72
    73/* Pointer to a CK_VOID_PTR-- i.e., pointer to pointer to void */
    75
    76
    77/* The following value is always invalid if used as a session */
    78/* handle or object handle */
    79#define CK_INVALID_HANDLE 0
    80
    81
    82typedef struct CK_VERSION {
    83 CK_BYTE major; /* integer portion of version number */
    84 CK_BYTE minor; /* 1/100ths portion of version number */
    86
    88
    89
    90typedef struct CK_INFO {
    91 /* manufacturerID and libraryDecription have been changed from
    92 * CK_CHAR to CK_UTF8CHAR for v2.10 */
    93 CK_VERSION cryptokiVersion; /* Cryptoki interface ver */
    94 CK_UTF8CHAR manufacturerID[32]; /* blank padded */
    95 CK_FLAGS flags; /* must be zero */
    96
    97 /* libraryDescription and libraryVersion are new for v2.0 */
    98 CK_UTF8CHAR libraryDescription[32]; /* blank padded */
    99 CK_VERSION libraryVersion; /* version of library */
    101
    103
    104
    105/* CK_NOTIFICATION enumerates the types of notifications that
    106 * Cryptoki provides to an application */
    107/* CK_NOTIFICATION has been changed from an enum to a CK_ULONG
    108 * for v2.0 */
    110#define CKN_SURRENDER 0
    111
    112
    114
    116
    117
    118/* CK_SLOT_INFO provides information about a slot */
    119typedef struct CK_SLOT_INFO {
    120 /* slotDescription and manufacturerID have been changed from
    121 * CK_CHAR to CK_UTF8CHAR for v2.10 */
    122 CK_UTF8CHAR slotDescription[64]; /* blank padded */
    123 CK_UTF8CHAR manufacturerID[32]; /* blank padded */
    125
    126 /* hardwareVersion and firmwareVersion are new for v2.0 */
    127 CK_VERSION hardwareVersion; /* version of hardware */
    128 CK_VERSION firmwareVersion; /* version of firmware */
    130
    131/* flags: bit flags that provide capabilities of the slot
    132 * Bit Flag Mask Meaning
    133 */
    134#define CKF_TOKEN_PRESENT 0x00000001 /* a token is there */
    135#define CKF_REMOVABLE_DEVICE 0x00000002 /* removable devices */
    136#define CKF_HW_SLOT 0x00000004 /* hardware slot */
    137
    139
    140
    141/* CK_TOKEN_INFO provides information about a token */
    142typedef struct CK_TOKEN_INFO {
    143 /* label, manufacturerID, and model have been changed from
    144 * CK_CHAR to CK_UTF8CHAR for v2.10 */
    145 CK_UTF8CHAR label[32]; /* blank padded */
    146 CK_UTF8CHAR manufacturerID[32]; /* blank padded */
    147 CK_UTF8CHAR model[16]; /* blank padded */
    148 CK_CHAR serialNumber[16]; /* blank padded */
    149 CK_FLAGS flags; /* see below */
    150
    151 /* ulMaxSessionCount, ulSessionCount, ulMaxRwSessionCount,
    152 * ulRwSessionCount, ulMaxPinLen, and ulMinPinLen have all been
    153 * changed from CK_USHORT to CK_ULONG for v2.0 */
    154 CK_ULONG ulMaxSessionCount; /* max open sessions */
    155 CK_ULONG ulSessionCount; /* sess. now open */
    156 CK_ULONG ulMaxRwSessionCount; /* max R/W sessions */
    157 CK_ULONG ulRwSessionCount; /* R/W sess. now open */
    158 CK_ULONG ulMaxPinLen; /* in bytes */
    159 CK_ULONG ulMinPinLen; /* in bytes */
    164
    165 /* hardwareVersion, firmwareVersion, and time are new for
    166 * v2.0 */
    167 CK_VERSION hardwareVersion; /* version of hardware */
    168 CK_VERSION firmwareVersion; /* version of firmware */
    169 CK_CHAR utcTime[16]; /* time */
    171
    172/* The flags parameter is defined as follows:
    173 * Bit Flag Mask Meaning
    174 */
    175#define CKF_RNG 0x00000001 /* has random #
    176 * generator */
    177#define CKF_WRITE_PROTECTED 0x00000002 /* token is
    178 * write-
    179 * protected */
    180#define CKF_LOGIN_REQUIRED 0x00000004 /* user must
    181 * login */
    182#define CKF_USER_PIN_INITIALIZED 0x00000008 /* normal user's
    183 * PIN is set */
    185/* CKF_RESTORE_KEY_NOT_NEEDED is new for v2.0. If it is set,
    186 * that means that *every* time the state of cryptographic
    187 * operations of a session is successfully saved, all keys
    188 * needed to continue those operations are stored in the state */
    189#define CKF_RESTORE_KEY_NOT_NEEDED 0x00000020
    190
    191/* CKF_CLOCK_ON_TOKEN is new for v2.0. If it is set, that means
    192 * that the token has some sort of clock. The time on that
    193 * clock is returned in the token info structure */
    194#define CKF_CLOCK_ON_TOKEN 0x00000040
    195
    196/* CKF_PROTECTED_AUTHENTICATION_PATH is new for v2.0. If it is
    197 * set, that means that there is some way for the user to login
    198 * without sending a PIN through the Cryptoki library itself */
    199#define CKF_PROTECTED_AUTHENTICATION_PATH 0x00000100
    200
    201/* CKF_DUAL_CRYPTO_OPERATIONS is new for v2.0. If it is true,
    202 * that means that a single session with the token can perform
    203 * dual simultaneous cryptographic operations (digest and
    204 * encrypt; decrypt and digest; sign and encrypt; and decrypt
    205 * and sign) */
    206#define CKF_DUAL_CRYPTO_OPERATIONS 0x00000200
    207
    208/* CKF_TOKEN_INITIALIZED if new for v2.10. If it is true, the
    209 * token has been initialized using C_InitializeToken or an
    210 * equivalent mechanism outside the scope of PKCS #11.
    211 * Calling C_InitializeToken when this flag is set will cause
    212 * the token to be reinitialized. */
    213#define CKF_TOKEN_INITIALIZED 0x00000400
    214
    215/* CKF_SECONDARY_AUTHENTICATION if new for v2.10. If it is
    216 * true, the token supports secondary authentication for
    217 * private key objects. */
    218#define CKF_SECONDARY_AUTHENTICATION 0x00000800
    219
    220/* CKF_USER_PIN_COUNT_LOW if new for v2.10. If it is true, an
    221 * incorrect user login PIN has been entered at least once
    222 * since the last successful authentication. */
    223#define CKF_USER_PIN_COUNT_LOW 0x00010000
    224
    225/* CKF_USER_PIN_FINAL_TRY if new for v2.10. If it is true,
    226 * supplying an incorrect user PIN will it to become locked. */
    227#define CKF_USER_PIN_FINAL_TRY 0x00020000
    228
    229/* CKF_USER_PIN_LOCKED if new for v2.10. If it is true, the
    230 * user PIN has been locked. User login to the token is not
    231 * possible. */
    232#define CKF_USER_PIN_LOCKED 0x00040000
    234/* CKF_USER_PIN_TO_BE_CHANGED if new for v2.10. If it is true,
    235 * the user PIN value is the default value set by token
    236 * initialization or manufacturing, or the PIN has been
    237 * expired by the card. */
    238#define CKF_USER_PIN_TO_BE_CHANGED 0x00080000
    239
    240/* CKF_SO_PIN_COUNT_LOW if new for v2.10. If it is true, an
    241 * incorrect SO login PIN has been entered at least once since
    242 * the last successful authentication. */
    243#define CKF_SO_PIN_COUNT_LOW 0x00100000
    244
    245/* CKF_SO_PIN_FINAL_TRY if new for v2.10. If it is true,
    246 * supplying an incorrect SO PIN will it to become locked. */
    247#define CKF_SO_PIN_FINAL_TRY 0x00200000
    248
    249/* CKF_SO_PIN_LOCKED if new for v2.10. If it is true, the SO
    250 * PIN has been locked. SO login to the token is not possible.
    251 */
    252#define CKF_SO_PIN_LOCKED 0x00400000
    254/* CKF_SO_PIN_TO_BE_CHANGED if new for v2.10. If it is true,
    255 * the SO PIN value is the default value set by token
    256 * initialization or manufacturing, or the PIN has been
    257 * expired by the card. */
    258#define CKF_SO_PIN_TO_BE_CHANGED 0x00800000
    259
    261
    263/* CK_SESSION_HANDLE is a Cryptoki-assigned value that
    264 * identifies a session */
    266
    269
    270/* CK_USER_TYPE enumerates the types of Cryptoki users */
    271/* CK_USER_TYPE has been changed from an enum to a CK_ULONG for
    272 * v2.0 */
    273typedef CK_ULONG CK_USER_TYPE;
    274/* Security Officer */
    275#define CKU_SO 0
    276/* Normal user */
    277#define CKU_USER 1
    280/* CK_STATE enumerates the session states */
    281/* CK_STATE has been changed from an enum to a CK_ULONG for
    282 * v2.0 */
    284#define CKS_RO_PUBLIC_SESSION 0
    285#define CKS_RO_USER_FUNCTIONS 1
    286#define CKS_RW_PUBLIC_SESSION 2
    287#define CKS_RW_USER_FUNCTIONS 3
    288#define CKS_RW_SO_FUNCTIONS 4
    291/* CK_SESSION_INFO provides information about a session */
    292typedef struct CK_SESSION_INFO {
    295 CK_FLAGS flags; /* see below */
    296
    297 /* ulDeviceError was changed from CK_USHORT to CK_ULONG for
    298 * v2.0 */
    299 CK_ULONG ulDeviceError; /* device-dependent error code */
    302/* The flags are defined in the following table:
    303 * Bit Flag Mask Meaning
    304 */
    305#define CKF_RW_SESSION 0x00000002 /* session is r/w */
    306#define CKF_SERIAL_SESSION 0x00000004 /* no parallel */
    307
    309
    311/* CK_OBJECT_HANDLE is a token-specific identifier for an
    312 * object */
    314
    316
    317
    318/* CK_OBJECT_CLASS is a value that identifies the classes (or
    319 * types) of objects that Cryptoki recognizes. It is defined
    320 * as follows: */
    321/* CK_OBJECT_CLASS was changed from CK_USHORT to CK_ULONG for
    322 * v2.0 */
    325/* The following classes of objects are defined: */
    326/* CKO_HW_FEATURE is new for v2.10 */
    327/* CKO_DOMAIN_PARAMETERS is new for v2.11 */
    328#define CKO_DATA 0x00000000
    329#define CKO_CERTIFICATE 0x00000001
    330#define CKO_PUBLIC_KEY 0x00000002
    331#define CKO_PRIVATE_KEY 0x00000003
    332#define CKO_SECRET_KEY 0x00000004
    333#define CKO_HW_FEATURE 0x00000005
    334#define CKO_DOMAIN_PARAMETERS 0x00000006
    335#define CKO_VENDOR_DEFINED 0x80000000
    336
    338
    339/* CK_HW_FEATURE_TYPE is new for v2.10. CK_HW_FEATURE_TYPE is a
    340 * value that identifies the hardware feature type of an object
    341 * with CK_OBJECT_CLASS equal to CKO_HW_FEATURE. */
    343
    344/* The following hardware feature types are defined */
    345#define CKH_MONOTONIC_COUNTER 0x00000001
    346#define CKH_CLOCK 0x00000002
    347#define CKH_VENDOR_DEFINED 0x80000000
    348
    349/* CK_KEY_TYPE is a value that identifies a key type */
    350/* CK_KEY_TYPE was changed from CK_USHORT to CK_ULONG for v2.0 */
    352
    353/* the following key types are defined: */
    354#define CKK_RSA 0x00000000
    355#define CKK_DSA 0x00000001
    356#define CKK_DH 0x00000002
    358/* CKK_ECDSA and CKK_KEA are new for v2.0 */
    359/* CKK_ECDSA is deprecated in v2.11, CKK_EC is preferred. */
    360#define CKK_ECDSA 0x00000003
    361#define CKK_EC 0x00000003
    362#define CKK_X9_42_DH 0x00000004
    363#define CKK_KEA 0x00000005
    365#define CKK_GENERIC_SECRET 0x00000010
    366#define CKK_RC2 0x00000011
    367#define CKK_RC4 0x00000012
    368#define CKK_DES 0x00000013
    369#define CKK_DES2 0x00000014
    370#define CKK_DES3 0x00000015
    372/* all these key types are new for v2.0 */
    373#define CKK_CAST 0x00000016
    374#define CKK_CAST3 0x00000017
    375/* CKK_CAST5 is deprecated in v2.11, CKK_CAST128 is preferred. */
    376#define CKK_CAST5 0x00000018
    377#define CKK_CAST128 0x00000018
    378#define CKK_RC5 0x00000019
    379#define CKK_IDEA 0x0000001A
    380#define CKK_SKIPJACK 0x0000001B
    381#define CKK_BATON 0x0000001C
    382#define CKK_JUNIPER 0x0000001D
    383#define CKK_CDMF 0x0000001E
    384#define CKK_AES 0x0000001F
    385
    386#define CKK_VENDOR_DEFINED 0x80000000
    387
    389/* CK_CERTIFICATE_TYPE is a value that identifies a certificate
    390 * type */
    391/* CK_CERTIFICATE_TYPE was changed from CK_USHORT to CK_ULONG
    392 * for v2.0 */
    395/* The following certificate types are defined: */
    396/* CKC_X_509_ATTR_CERT is new for v2.10 */
    397#define CKC_X_509 0x00000000
    398#define CKC_X_509_ATTR_CERT 0x00000001
    399#define CKC_VENDOR_DEFINED 0x80000000
    400
    402/* CK_ATTRIBUTE_TYPE is a value that identifies an attribute
    403 * type */
    404/* CK_ATTRIBUTE_TYPE was changed from CK_USHORT to CK_ULONG for
    405 * v2.0 */
    408/* The following attribute types are defined: */
    409#define CKA_CLASS 0x00000000
    410#define CKA_TOKEN 0x00000001
    411#define CKA_PRIVATE 0x00000002
    412#define CKA_LABEL 0x00000003
    413#define CKA_APPLICATION 0x00000010
    414#define CKA_VALUE 0x00000011
    416/* CKA_OBJECT_ID is new for v2.10 */
    417#define CKA_OBJECT_ID 0x00000012
    418
    419#define CKA_CERTIFICATE_TYPE 0x00000080
    420#define CKA_ISSUER 0x00000081
    421#define CKA_SERIAL_NUMBER 0x00000082
    423/* CKA_AC_ISSUER, CKA_OWNER, and CKA_ATTR_TYPES are new
    424 * for v2.10 */
    425#define CKA_AC_ISSUER 0x00000083
    426#define CKA_OWNER 0x00000084
    427#define CKA_ATTR_TYPES 0x00000085
    429/* CKA_TRUSTED is new for v2.11 */
    430#define CKA_TRUSTED 0x00000086
    432#define CKA_KEY_TYPE 0x00000100
    433#define CKA_SUBJECT 0x00000101
    434#define CKA_ID 0x00000102
    435#define CKA_SENSITIVE 0x00000103
    436#define CKA_ENCRYPT 0x00000104
    437#define CKA_DECRYPT 0x00000105
    438#define CKA_WRAP 0x00000106
    439#define CKA_UNWRAP 0x00000107
    440#define CKA_SIGN 0x00000108
    441#define CKA_SIGN_RECOVER 0x00000109
    442#define CKA_VERIFY 0x0000010A
    443#define CKA_VERIFY_RECOVER 0x0000010B
    444#define CKA_DERIVE 0x0000010C
    445#define CKA_START_DATE 0x00000110
    446#define CKA_END_DATE 0x00000111
    447#define CKA_MODULUS 0x00000120
    448#define CKA_MODULUS_BITS 0x00000121
    449#define CKA_PUBLIC_EXPONENT 0x00000122
    450#define CKA_PRIVATE_EXPONENT 0x00000123
    451#define CKA_PRIME_1 0x00000124
    452#define CKA_PRIME_2 0x00000125
    453#define CKA_EXPONENT_1 0x00000126
    454#define CKA_EXPONENT_2 0x00000127
    455#define CKA_COEFFICIENT 0x00000128
    456#define CKA_PRIME 0x00000130
    457#define CKA_SUBPRIME 0x00000131
    458#define CKA_BASE 0x00000132
    459
    460/* CKA_PRIME_BITS and CKA_SUB_PRIME_BITS are new for v2.11 */
    461#define CKA_PRIME_BITS 0x00000133
    462#define CKA_SUBPRIME_BITS 0x00000134
    463#define CKA_SUB_PRIME_BITS CKA_SUBPRIME_BITS
    464/* (To retain backwards-compatibility) */
    465
    466#define CKA_VALUE_BITS 0x00000160
    467#define CKA_VALUE_LEN 0x00000161
    469/* CKA_EXTRACTABLE, CKA_LOCAL, CKA_NEVER_EXTRACTABLE,
    470 * CKA_ALWAYS_SENSITIVE, CKA_MODIFIABLE, CKA_ECDSA_PARAMS,
    471 * and CKA_EC_POINT are new for v2.0 */
    472#define CKA_EXTRACTABLE 0x00000162
    473#define CKA_LOCAL 0x00000163
    474#define CKA_NEVER_EXTRACTABLE 0x00000164
    475#define CKA_ALWAYS_SENSITIVE 0x00000165
    476
    477/* CKA_KEY_GEN_MECHANISM is new for v2.11 */
    478#define CKA_KEY_GEN_MECHANISM 0x00000166
    480#define CKA_MODIFIABLE 0x00000170
    481
    482/* CKA_ECDSA_PARAMS is deprecated in v2.11,
    483 * CKA_EC_PARAMS is preferred. */
    484#define CKA_ECDSA_PARAMS 0x00000180
    485#define CKA_EC_PARAMS 0x00000180
    486
    487#define CKA_EC_POINT 0x00000181
    489/* CKA_SECONDARY_AUTH, CKA_AUTH_PIN_FLAGS,
    490 * CKA_HW_FEATURE_TYPE, CKA_RESET_ON_INIT, and CKA_HAS_RESET
    491 * are new for v2.10 */
    492#define CKA_SECONDARY_AUTH 0x00000200
    493#define CKA_AUTH_PIN_FLAGS 0x00000201
    494#define CKA_HW_FEATURE_TYPE 0x00000300
    495#define CKA_RESET_ON_INIT 0x00000301
    496#define CKA_HAS_RESET 0x00000302
    497
    498#define CKA_VENDOR_DEFINED 0x80000000
    501/* CK_ATTRIBUTE is a structure that includes the type, length
    502 * and value of an attribute */
    503typedef struct CK_ATTRIBUTE {
    507 /* ulValueLen went from CK_USHORT to CK_ULONG for v2.0 */
    508 CK_ULONG ulValueLen; /* in bytes */
    514/* CK_DATE is a structure that defines a date */
    515typedef struct CK_DATE {
    516 CK_CHAR year[4]; /* the year ("1900" - "9999") */
    517 CK_CHAR month[2]; /* the month ("01" - "12") */
    518 CK_CHAR day[2]; /* the day ("01" - "31") */
    519} CK_DATE;
    520
    522/* CK_MECHANISM_TYPE is a value that identifies a mechanism
    523 * type */
    524/* CK_MECHANISM_TYPE was changed from CK_USHORT to CK_ULONG for
    525 * v2.0 */
    528/* the following mechanism types are defined: */
    529#define CKM_RSA_PKCS_KEY_PAIR_GEN 0x00000000
    530#define CKM_RSA_PKCS 0x00000001
    531#define CKM_RSA_9796 0x00000002
    532#define CKM_RSA_X_509 0x00000003
    534/* CKM_MD2_RSA_PKCS, CKM_MD5_RSA_PKCS, and CKM_SHA1_RSA_PKCS
    535 * are new for v2.0. They are mechanisms which hash and sign */
    536#define CKM_MD2_RSA_PKCS 0x00000004
    537#define CKM_MD5_RSA_PKCS 0x00000005
    538#define CKM_SHA1_RSA_PKCS 0x00000006
    540/* CKM_RIPEMD128_RSA_PKCS, CKM_RIPEMD160_RSA_PKCS, and
    541 * CKM_RSA_PKCS_OAEP are new for v2.10 */
    542#define CKM_RIPEMD128_RSA_PKCS 0x00000007
    543#define CKM_RIPEMD160_RSA_PKCS 0x00000008
    544#define CKM_RSA_PKCS_OAEP 0x00000009
    546/* CKM_RSA_X9_31_KEY_PAIR_GEN, CKM_RSA_X9_31, CKM_SHA1_RSA_X9_31,
    547 * CKM_RSA_PKCS_PSS, and CKM_SHA1_RSA_PKCS_PSS are new for v2.11 */
    548#define CKM_RSA_X9_31_KEY_PAIR_GEN 0x0000000A
    549#define CKM_RSA_X9_31 0x0000000B
    550#define CKM_SHA1_RSA_X9_31 0x0000000C
    551#define CKM_RSA_PKCS_PSS 0x0000000D
    552#define CKM_SHA1_RSA_PKCS_PSS 0x0000000E
    554#define CKM_DSA_KEY_PAIR_GEN 0x00000010
    555#define CKM_DSA 0x00000011
    556#define CKM_DSA_SHA1 0x00000012
    557#define CKM_DH_PKCS_KEY_PAIR_GEN 0x00000020
    558#define CKM_DH_PKCS_DERIVE 0x00000021
    560/* CKM_X9_42_DH_KEY_PAIR_GEN, CKM_X9_42_DH_DERIVE,
    561 * CKM_X9_42_DH_HYBRID_DERIVE, and CKM_X9_42_MQV_DERIVE are new for
    562 * v2.11 */
    563#define CKM_X9_42_DH_KEY_PAIR_GEN 0x00000030
    564#define CKM_X9_42_DH_DERIVE 0x00000031
    565#define CKM_X9_42_DH_HYBRID_DERIVE 0x00000032
    566#define CKM_X9_42_MQV_DERIVE 0x00000033
    567
    568#define CKM_RC2_KEY_GEN 0x00000100
    569#define CKM_RC2_ECB 0x00000101
    570#define CKM_RC2_CBC 0x00000102
    571#define CKM_RC2_MAC 0x00000103
    573/* CKM_RC2_MAC_GENERAL and CKM_RC2_CBC_PAD are new for v2.0 */
    574#define CKM_RC2_MAC_GENERAL 0x00000104
    575#define CKM_RC2_CBC_PAD 0x00000105
    577#define CKM_RC4_KEY_GEN 0x00000110
    578#define CKM_RC4 0x00000111
    579#define CKM_DES_KEY_GEN 0x00000120
    580#define CKM_DES_ECB 0x00000121
    581#define CKM_DES_CBC 0x00000122
    582#define CKM_DES_MAC 0x00000123
    584/* CKM_DES_MAC_GENERAL and CKM_DES_CBC_PAD are new for v2.0 */
    585#define CKM_DES_MAC_GENERAL 0x00000124
    586#define CKM_DES_CBC_PAD 0x00000125
    588#define CKM_DES2_KEY_GEN 0x00000130
    589#define CKM_DES3_KEY_GEN 0x00000131
    590#define CKM_DES3_ECB 0x00000132
    591#define CKM_DES3_CBC 0x00000133
    592#define CKM_DES3_MAC 0x00000134
    594/* CKM_DES3_MAC_GENERAL, CKM_DES3_CBC_PAD, CKM_CDMF_KEY_GEN,
    595 * CKM_CDMF_ECB, CKM_CDMF_CBC, CKM_CDMF_MAC,
    596 * CKM_CDMF_MAC_GENERAL, and CKM_CDMF_CBC_PAD are new for v2.0 */
    597#define CKM_DES3_MAC_GENERAL 0x00000135
    598#define CKM_DES3_CBC_PAD 0x00000136
    599#define CKM_CDMF_KEY_GEN 0x00000140
    600#define CKM_CDMF_ECB 0x00000141
    601#define CKM_CDMF_CBC 0x00000142
    602#define CKM_CDMF_MAC 0x00000143
    603#define CKM_CDMF_MAC_GENERAL 0x00000144
    604#define CKM_CDMF_CBC_PAD 0x00000145
    606#define CKM_MD2 0x00000200
    608/* CKM_MD2_HMAC and CKM_MD2_HMAC_GENERAL are new for v2.0 */
    609#define CKM_MD2_HMAC 0x00000201
    610#define CKM_MD2_HMAC_GENERAL 0x00000202
    612#define CKM_MD5 0x00000210
    614/* CKM_MD5_HMAC and CKM_MD5_HMAC_GENERAL are new for v2.0 */
    615#define CKM_MD5_HMAC 0x00000211
    616#define CKM_MD5_HMAC_GENERAL 0x00000212
    618#define CKM_SHA_1 0x00000220
    619
    620/* CKM_SHA_1_HMAC and CKM_SHA_1_HMAC_GENERAL are new for v2.0 */
    621#define CKM_SHA_1_HMAC 0x00000221
    622#define CKM_SHA_1_HMAC_GENERAL 0x00000222
    624/* CKM_RIPEMD128, CKM_RIPEMD128_HMAC,
    625 * CKM_RIPEMD128_HMAC_GENERAL, CKM_RIPEMD160, CKM_RIPEMD160_HMAC,
    626 * and CKM_RIPEMD160_HMAC_GENERAL are new for v2.10 */
    627#define CKM_RIPEMD128 0x00000230
    628#define CKM_RIPEMD128_HMAC 0x00000231
    629#define CKM_RIPEMD128_HMAC_GENERAL 0x00000232
    630#define CKM_RIPEMD160 0x00000240
    631#define CKM_RIPEMD160_HMAC 0x00000241
    632#define CKM_RIPEMD160_HMAC_GENERAL 0x00000242
    634/* All of the following mechanisms are new for v2.0 */
    635/* Note that CAST128 and CAST5 are the same algorithm */
    636#define CKM_CAST_KEY_GEN 0x00000300
    637#define CKM_CAST_ECB 0x00000301
    638#define CKM_CAST_CBC 0x00000302
    639#define CKM_CAST_MAC 0x00000303
    640#define CKM_CAST_MAC_GENERAL 0x00000304
    641#define CKM_CAST_CBC_PAD 0x00000305
    642#define CKM_CAST3_KEY_GEN 0x00000310
    643#define CKM_CAST3_ECB 0x00000311
    644#define CKM_CAST3_CBC 0x00000312
    645#define CKM_CAST3_MAC 0x00000313
    646#define CKM_CAST3_MAC_GENERAL 0x00000314
    647#define CKM_CAST3_CBC_PAD 0x00000315
    648#define CKM_CAST5_KEY_GEN 0x00000320
    649#define CKM_CAST128_KEY_GEN 0x00000320
    650#define CKM_CAST5_ECB 0x00000321
    651#define CKM_CAST128_ECB 0x00000321
    652#define CKM_CAST5_CBC 0x00000322
    653#define CKM_CAST128_CBC 0x00000322
    654#define CKM_CAST5_MAC 0x00000323
    655#define CKM_CAST128_MAC 0x00000323
    656#define CKM_CAST5_MAC_GENERAL 0x00000324
    657#define CKM_CAST128_MAC_GENERAL 0x00000324
    658#define CKM_CAST5_CBC_PAD 0x00000325
    659#define CKM_CAST128_CBC_PAD 0x00000325
    660#define CKM_RC5_KEY_GEN 0x00000330
    661#define CKM_RC5_ECB 0x00000331
    662#define CKM_RC5_CBC 0x00000332
    663#define CKM_RC5_MAC 0x00000333
    664#define CKM_RC5_MAC_GENERAL 0x00000334
    665#define CKM_RC5_CBC_PAD 0x00000335
    666#define CKM_IDEA_KEY_GEN 0x00000340
    667#define CKM_IDEA_ECB 0x00000341
    668#define CKM_IDEA_CBC 0x00000342
    669#define CKM_IDEA_MAC 0x00000343
    670#define CKM_IDEA_MAC_GENERAL 0x00000344
    671#define CKM_IDEA_CBC_PAD 0x00000345
    672#define CKM_GENERIC_SECRET_KEY_GEN 0x00000350
    673#define CKM_CONCATENATE_BASE_AND_KEY 0x00000360
    674#define CKM_CONCATENATE_BASE_AND_DATA 0x00000362
    675#define CKM_CONCATENATE_DATA_AND_BASE 0x00000363
    676#define CKM_XOR_BASE_AND_DATA 0x00000364
    677#define CKM_EXTRACT_KEY_FROM_KEY 0x00000365
    678#define CKM_SSL3_PRE_MASTER_KEY_GEN 0x00000370
    679#define CKM_SSL3_MASTER_KEY_DERIVE 0x00000371
    680#define CKM_SSL3_KEY_AND_MAC_DERIVE 0x00000372
    682/* CKM_SSL3_MASTER_KEY_DERIVE_DH, CKM_TLS_PRE_MASTER_KEY_GEN,
    683 * CKM_TLS_MASTER_KEY_DERIVE, CKM_TLS_KEY_AND_MAC_DERIVE, and
    684 * CKM_TLS_MASTER_KEY_DERIVE_DH are new for v2.11 */
    685#define CKM_SSL3_MASTER_KEY_DERIVE_DH 0x00000373
    686#define CKM_TLS_PRE_MASTER_KEY_GEN 0x00000374
    687#define CKM_TLS_MASTER_KEY_DERIVE 0x00000375
    688#define CKM_TLS_KEY_AND_MAC_DERIVE 0x00000376
    689#define CKM_TLS_MASTER_KEY_DERIVE_DH 0x00000377
    691#define CKM_SSL3_MD5_MAC 0x00000380
    692#define CKM_SSL3_SHA1_MAC 0x00000381
    693#define CKM_MD5_KEY_DERIVATION 0x00000390
    694#define CKM_MD2_KEY_DERIVATION 0x00000391
    695#define CKM_SHA1_KEY_DERIVATION 0x00000392
    696#define CKM_PBE_MD2_DES_CBC 0x000003A0
    697#define CKM_PBE_MD5_DES_CBC 0x000003A1
    698#define CKM_PBE_MD5_CAST_CBC 0x000003A2
    699#define CKM_PBE_MD5_CAST3_CBC 0x000003A3
    700#define CKM_PBE_MD5_CAST5_CBC 0x000003A4
    701#define CKM_PBE_MD5_CAST128_CBC 0x000003A4
    702#define CKM_PBE_SHA1_CAST5_CBC 0x000003A5
    703#define CKM_PBE_SHA1_CAST128_CBC 0x000003A5
    704#define CKM_PBE_SHA1_RC4_128 0x000003A6
    705#define CKM_PBE_SHA1_RC4_40 0x000003A7
    706#define CKM_PBE_SHA1_DES3_EDE_CBC 0x000003A8
    707#define CKM_PBE_SHA1_DES2_EDE_CBC 0x000003A9
    708#define CKM_PBE_SHA1_RC2_128_CBC 0x000003AA
    709#define CKM_PBE_SHA1_RC2_40_CBC 0x000003AB
    711/* CKM_PKCS5_PBKD2 is new for v2.10 */
    712#define CKM_PKCS5_PBKD2 0x000003B0
    713
    714#define CKM_PBA_SHA1_WITH_SHA1_HMAC 0x000003C0
    715#define CKM_KEY_WRAP_LYNKS 0x00000400
    716#define CKM_KEY_WRAP_SET_OAEP 0x00000401
    718/* Fortezza mechanisms */
    719#define CKM_SKIPJACK_KEY_GEN 0x00001000
    720#define CKM_SKIPJACK_ECB64 0x00001001
    721#define CKM_SKIPJACK_CBC64 0x00001002
    722#define CKM_SKIPJACK_OFB64 0x00001003
    723#define CKM_SKIPJACK_CFB64 0x00001004
    724#define CKM_SKIPJACK_CFB32 0x00001005
    725#define CKM_SKIPJACK_CFB16 0x00001006
    726#define CKM_SKIPJACK_CFB8 0x00001007
    727#define CKM_SKIPJACK_WRAP 0x00001008
    728#define CKM_SKIPJACK_PRIVATE_WRAP 0x00001009
    729#define CKM_SKIPJACK_RELAYX 0x0000100a
    730#define CKM_KEA_KEY_PAIR_GEN 0x00001010
    731#define CKM_KEA_KEY_DERIVE 0x00001011
    732#define CKM_FORTEZZA_TIMESTAMP 0x00001020
    733#define CKM_BATON_KEY_GEN 0x00001030
    734#define CKM_BATON_ECB128 0x00001031
    735#define CKM_BATON_ECB96 0x00001032
    736#define CKM_BATON_CBC128 0x00001033
    737#define CKM_BATON_COUNTER 0x00001034
    738#define CKM_BATON_SHUFFLE 0x00001035
    739#define CKM_BATON_WRAP 0x00001036
    740
    741/* CKM_ECDSA_KEY_PAIR_GEN is deprecated in v2.11,
    742 * CKM_EC_KEY_PAIR_GEN is preferred */
    743#define CKM_ECDSA_KEY_PAIR_GEN 0x00001040
    744#define CKM_EC_KEY_PAIR_GEN 0x00001040
    745
    746#define CKM_ECDSA 0x00001041
    747#define CKM_ECDSA_SHA1 0x00001042
    749/* CKM_ECDH1_DERIVE, CKM_ECDH1_COFACTOR_DERIVE, and CKM_ECMQV_DERIVE
    750 * are new for v2.11 */
    751#define CKM_ECDH1_DERIVE 0x00001050
    752#define CKM_ECDH1_COFACTOR_DERIVE 0x00001051
    753#define CKM_ECMQV_DERIVE 0x00001052
    755#define CKM_JUNIPER_KEY_GEN 0x00001060
    756#define CKM_JUNIPER_ECB128 0x00001061
    757#define CKM_JUNIPER_CBC128 0x00001062
    758#define CKM_JUNIPER_COUNTER 0x00001063
    759#define CKM_JUNIPER_SHUFFLE 0x00001064
    760#define CKM_JUNIPER_WRAP 0x00001065
    761#define CKM_FASTHASH 0x00001070
    763/* CKM_AES_KEY_GEN, CKM_AES_ECB, CKM_AES_CBC, CKM_AES_MAC,
    764 * CKM_AES_MAC_GENERAL, CKM_AES_CBC_PAD, CKM_DSA_PARAMETER_GEN,
    765 * CKM_DH_PKCS_PARAMETER_GEN, and CKM_X9_42_DH_PARAMETER_GEN are
    766 * new for v2.11 */
    767#define CKM_AES_KEY_GEN 0x00001080
    768#define CKM_AES_ECB 0x00001081
    769#define CKM_AES_CBC 0x00001082
    770#define CKM_AES_MAC 0x00001083
    771#define CKM_AES_MAC_GENERAL 0x00001084
    772#define CKM_AES_CBC_PAD 0x00001085
    773#define CKM_DSA_PARAMETER_GEN 0x00002000
    774#define CKM_DH_PKCS_PARAMETER_GEN 0x00002001
    775#define CKM_X9_42_DH_PARAMETER_GEN 0x00002002
    776
    777#define CKM_VENDOR_DEFINED 0x80000000
    778
    782/* CK_MECHANISM is a structure that specifies a particular
    783 * mechanism */
    784typedef struct CK_MECHANISM {
    787
    788 /* ulParameterLen was changed from CK_USHORT to CK_ULONG for
    789 * v2.0 */
    790 CK_ULONG ulParameterLen; /* in bytes */
    792
    796/* CK_MECHANISM_INFO provides information about a particular
    797 * mechanism */
    798typedef struct CK_MECHANISM_INFO {
    803
    804/* The flags are defined as follows:
    805 * Bit Flag Mask Meaning */
    806#define CKF_HW 0x00000001 /* performed by HW */
    807
    808/* The flags CKF_ENCRYPT, CKF_DECRYPT, CKF_DIGEST, CKF_SIGN,
    809 * CKG_SIGN_RECOVER, CKF_VERIFY, CKF_VERIFY_RECOVER,
    810 * CKF_GENERATE, CKF_GENERATE_KEY_PAIR, CKF_WRAP, CKF_UNWRAP,
    811 * and CKF_DERIVE are new for v2.0. They specify whether or not
    812 * a mechanism can be used for a particular task */
    813#define CKF_ENCRYPT 0x00000100
    814#define CKF_DECRYPT 0x00000200
    815#define CKF_DIGEST 0x00000400
    816#define CKF_SIGN 0x00000800
    817#define CKF_SIGN_RECOVER 0x00001000
    818#define CKF_VERIFY 0x00002000
    819#define CKF_VERIFY_RECOVER 0x00004000
    820#define CKF_GENERATE 0x00008000
    821#define CKF_GENERATE_KEY_PAIR 0x00010000
    822#define CKF_WRAP 0x00020000
    823#define CKF_UNWRAP 0x00040000
    824#define CKF_DERIVE 0x00080000
    826/* CKF_EC_F_P, CKF_EC_F_2M, CKF_EC_ECPARAMETERS, CKF_EC_NAMEDCURVE,
    827 * CKF_EC_UNCOMPRESS, and CKF_EC_COMPRESS are new for v2.11. They
    828 * describe a token's EC capabilities not available in mechanism
    829 * information. */
    830#define CKF_EC_F_P 0x00100000
    831#define CKF_EC_F_2M 0x00200000
    832#define CKF_EC_ECPARAMETERS 0x00400000
    833#define CKF_EC_NAMEDCURVE 0x00800000
    834#define CKF_EC_UNCOMPRESS 0x01000000
    835#define CKF_EC_COMPRESS 0x02000000
    836
    837#define CKF_EXTENSION 0x80000000 /* FALSE for 2.01 */
    838
    841
    842/* CK_RV is a value that identifies the return value of a
    843 * Cryptoki function */
    844/* CK_RV was changed from CK_USHORT to CK_ULONG for v2.0 */
    846
    847#define CKR_OK 0x00000000
    848#define CKR_CANCEL 0x00000001
    849#define CKR_HOST_MEMORY 0x00000002
    850#define CKR_SLOT_ID_INVALID 0x00000003
    852/* CKR_FLAGS_INVALID was removed for v2.0 */
    853
    854/* CKR_GENERAL_ERROR and CKR_FUNCTION_FAILED are new for v2.0 */
    855#define CKR_GENERAL_ERROR 0x00000005
    856#define CKR_FUNCTION_FAILED 0x00000006
    858/* CKR_ARGUMENTS_BAD, CKR_NO_EVENT, CKR_NEED_TO_CREATE_THREADS,
    859 * and CKR_CANT_LOCK are new for v2.01 */
    860#define CKR_ARGUMENTS_BAD 0x00000007
    861#define CKR_NO_EVENT 0x00000008
    862#define CKR_NEED_TO_CREATE_THREADS 0x00000009
    863#define CKR_CANT_LOCK 0x0000000A
    865#define CKR_ATTRIBUTE_READ_ONLY 0x00000010
    866#define CKR_ATTRIBUTE_SENSITIVE 0x00000011
    867#define CKR_ATTRIBUTE_TYPE_INVALID 0x00000012
    868#define CKR_ATTRIBUTE_VALUE_INVALID 0x00000013
    869#define CKR_DATA_INVALID 0x00000020
    870#define CKR_DATA_LEN_RANGE 0x00000021
    871#define CKR_DEVICE_ERROR 0x00000030
    872#define CKR_DEVICE_MEMORY 0x00000031
    873#define CKR_DEVICE_REMOVED 0x00000032
    874#define CKR_ENCRYPTED_DATA_INVALID 0x00000040
    875#define CKR_ENCRYPTED_DATA_LEN_RANGE 0x00000041
    876#define CKR_FUNCTION_CANCELED 0x00000050
    877#define CKR_FUNCTION_NOT_PARALLEL 0x00000051
    878
    879/* CKR_FUNCTION_NOT_SUPPORTED is new for v2.0 */
    880#define CKR_FUNCTION_NOT_SUPPORTED 0x00000054
    882#define CKR_KEY_HANDLE_INVALID 0x00000060
    883
    884/* CKR_KEY_SENSITIVE was removed for v2.0 */
    885
    886#define CKR_KEY_SIZE_RANGE 0x00000062
    887#define CKR_KEY_TYPE_INCONSISTENT 0x00000063
    889/* CKR_KEY_NOT_NEEDED, CKR_KEY_CHANGED, CKR_KEY_NEEDED,
    890 * CKR_KEY_INDIGESTIBLE, CKR_KEY_FUNCTION_NOT_PERMITTED,
    891 * CKR_KEY_NOT_WRAPPABLE, and CKR_KEY_UNEXTRACTABLE are new for
    892 * v2.0 */
    893#define CKR_KEY_NOT_NEEDED 0x00000064
    894#define CKR_KEY_CHANGED 0x00000065
    895#define CKR_KEY_NEEDED 0x00000066
    896#define CKR_KEY_INDIGESTIBLE 0x00000067
    897#define CKR_KEY_FUNCTION_NOT_PERMITTED 0x00000068
    898#define CKR_KEY_NOT_WRAPPABLE 0x00000069
    899#define CKR_KEY_UNEXTRACTABLE 0x0000006A
    900
    901#define CKR_MECHANISM_INVALID 0x00000070
    902#define CKR_MECHANISM_PARAM_INVALID 0x00000071
    904/* CKR_OBJECT_CLASS_INCONSISTENT and CKR_OBJECT_CLASS_INVALID
    905 * were removed for v2.0 */
    906#define CKR_OBJECT_HANDLE_INVALID 0x00000082
    907#define CKR_OPERATION_ACTIVE 0x00000090
    908#define CKR_OPERATION_NOT_INITIALIZED 0x00000091
    909#define CKR_PIN_INCORRECT 0x000000A0
    910#define CKR_PIN_INVALID 0x000000A1
    911#define CKR_PIN_LEN_RANGE 0x000000A2
    913/* CKR_PIN_EXPIRED and CKR_PIN_LOCKED are new for v2.0 */
    914#define CKR_PIN_EXPIRED 0x000000A3
    915#define CKR_PIN_LOCKED 0x000000A4
    917#define CKR_SESSION_CLOSED 0x000000B0
    918#define CKR_SESSION_COUNT 0x000000B1
    919#define CKR_SESSION_HANDLE_INVALID 0x000000B3
    920#define CKR_SESSION_PARALLEL_NOT_SUPPORTED 0x000000B4
    921#define CKR_SESSION_READ_ONLY 0x000000B5
    922#define CKR_SESSION_EXISTS 0x000000B6
    923
    924/* CKR_SESSION_READ_ONLY_EXISTS and
    925 * CKR_SESSION_READ_WRITE_SO_EXISTS are new for v2.0 */
    926#define CKR_SESSION_READ_ONLY_EXISTS 0x000000B7
    927#define CKR_SESSION_READ_WRITE_SO_EXISTS 0x000000B8
    929#define CKR_SIGNATURE_INVALID 0x000000C0
    930#define CKR_SIGNATURE_LEN_RANGE 0x000000C1
    931#define CKR_TEMPLATE_INCOMPLETE 0x000000D0
    932#define CKR_TEMPLATE_INCONSISTENT 0x000000D1
    933#define CKR_TOKEN_NOT_PRESENT 0x000000E0
    934#define CKR_TOKEN_NOT_RECOGNIZED 0x000000E1
    935#define CKR_TOKEN_WRITE_PROTECTED 0x000000E2
    936#define CKR_UNWRAPPING_KEY_HANDLE_INVALID 0x000000F0
    937#define CKR_UNWRAPPING_KEY_SIZE_RANGE 0x000000F1
    938#define CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT 0x000000F2
    939#define CKR_USER_ALREADY_LOGGED_IN 0x00000100
    940#define CKR_USER_NOT_LOGGED_IN 0x00000101
    941#define CKR_USER_PIN_NOT_INITIALIZED 0x00000102
    942#define CKR_USER_TYPE_INVALID 0x00000103
    943
    944/* CKR_USER_ANOTHER_ALREADY_LOGGED_IN and CKR_USER_TOO_MANY_TYPES
    945 * are new to v2.01 */
    946#define CKR_USER_ANOTHER_ALREADY_LOGGED_IN 0x00000104
    947#define CKR_USER_TOO_MANY_TYPES 0x00000105
    949#define CKR_WRAPPED_KEY_INVALID 0x00000110
    950#define CKR_WRAPPED_KEY_LEN_RANGE 0x00000112
    951#define CKR_WRAPPING_KEY_HANDLE_INVALID 0x00000113
    952#define CKR_WRAPPING_KEY_SIZE_RANGE 0x00000114
    953#define CKR_WRAPPING_KEY_TYPE_INCONSISTENT 0x00000115
    954#define CKR_RANDOM_SEED_NOT_SUPPORTED 0x00000120
    956/* These are new to v2.0 */
    957#define CKR_RANDOM_NO_RNG 0x00000121
    959/* These are new to v2.11 */
    960#define CKR_DOMAIN_PARAMS_INVALID 0x00000130
    962/* These are new to v2.0 */
    963#define CKR_BUFFER_TOO_SMALL 0x00000150
    964#define CKR_SAVED_STATE_INVALID 0x00000160
    965#define CKR_INFORMATION_SENSITIVE 0x00000170
    966#define CKR_STATE_UNSAVEABLE 0x00000180
    968/* These are new to v2.01 */
    969#define CKR_CRYPTOKI_NOT_INITIALIZED 0x00000190
    970#define CKR_CRYPTOKI_ALREADY_INITIALIZED 0x00000191
    971#define CKR_MUTEX_BAD 0x000001A0
    972#define CKR_MUTEX_NOT_LOCKED 0x000001A1
    974#define CKR_VENDOR_DEFINED 0x80000000
    975
    976
    977/* CK_NOTIFY is an application callback that processes events */
    978typedef CK_CALLBACK_FUNCTION(CK_RV, CK_NOTIFY) (CK_SESSION_HANDLE hSession, /* the session's handle */
    979 CK_NOTIFICATION event, CK_VOID_PTR pApplication /* passed to C_OpenSession */
    980 );
    981
    983/* CK_FUNCTION_LIST is a structure holding a Cryptoki spec
    984 * version and pointers of appropriate types to all the
    985 * Cryptoki functions */
    986/* CK_FUNCTION_LIST is new for v2.0 */
    988
    990
    992
    993
    994/* CK_CREATEMUTEX is an application callback for creating a
    995 * mutex object */
    996typedef CK_CALLBACK_FUNCTION(CK_RV, CK_CREATEMUTEX) (CK_VOID_PTR_PTR ppMutex /* location to receive ptr to mutex */
    997 );
    998
    999
    1000/* CK_DESTROYMUTEX is an application callback for destroying a
    1001 * mutex object */
    1002typedef CK_CALLBACK_FUNCTION(CK_RV, CK_DESTROYMUTEX) (CK_VOID_PTR pMutex /* pointer to mutex */
    1003 );
    1004
    1005
    1006/* CK_LOCKMUTEX is an application callback for locking a mutex */
    1007typedef CK_CALLBACK_FUNCTION(CK_RV, CK_LOCKMUTEX) (CK_VOID_PTR pMutex /* pointer to mutex */
    1009
    1010
    1011/* CK_UNLOCKMUTEX is an application callback for unlocking a
    1012 * mutex */
    1013typedef CK_CALLBACK_FUNCTION(CK_RV, CK_UNLOCKMUTEX) (CK_VOID_PTR pMutex /* pointer to mutex */
    1017/* CK_C_INITIALIZE_ARGS provides the optional arguments to
    1018 * C_Initialize */
    1019typedef struct CK_C_INITIALIZE_ARGS {
    1020 CK_CREATEMUTEX CreateMutex;
    1021 CK_DESTROYMUTEX DestroyMutex;
    1022 CK_LOCKMUTEX LockMutex;
    1023 CK_UNLOCKMUTEX UnlockMutex;
    1028/* flags: bit flags that provide capabilities of the slot
    1029 * Bit Flag Mask Meaning
    1030 */
    1031#define CKF_LIBRARY_CANT_CREATE_OS_THREADS 0x00000001
    1032#define CKF_OS_LOCKING_OK 0x00000002
    1033
    1036
    1037/* additional flags for parameters to functions */
    1038
    1039/* CKF_DONT_BLOCK is for the function C_WaitForSlotEvent */
    1040#define CKF_DONT_BLOCK 1
    1041
    1042/* CK_RSA_PKCS_OAEP_MGF_TYPE is new for v2.10.
    1043 * CK_RSA_PKCS_OAEP_MGF_TYPE is used to indicate the Message
    1044 * Generation Function (MGF) applied to a message block when
    1045 * formatting a message block for the PKCS #1 OAEP encryption
    1046 * scheme. */
    1048
    1050
    1051/* The following MGFs are defined */
    1052#define CKG_MGF1_SHA1 0x00000001
    1054/* CK_RSA_PKCS_OAEP_SOURCE_TYPE is new for v2.10.
    1055 * CK_RSA_PKCS_OAEP_SOURCE_TYPE is used to indicate the source
    1056 * of the encoding parameter when formatting a message block
    1057 * for the PKCS #1 OAEP encryption scheme. */
    1059
    1061
    1062/* The following encoding parameter sources are defined */
    1063#define CKZ_DATA_SPECIFIED 0x00000001
    1065/* CK_RSA_PKCS_OAEP_PARAMS is new for v2.10.
    1066 * CK_RSA_PKCS_OAEP_PARAMS provides the parameters to the
    1067 * CKM_RSA_PKCS_OAEP mechanism. */
    1075
    1078/* CK_RSA_PKCS_PSS_PARAMS is new for v2.11.
    1079 * CK_RSA_PKCS_PSS_PARAMS provides the parameters to the
    1080 * CKM_RSA_PKCS_PSS mechanism(s). */
    1081typedef struct CK_RSA_PKCS_PSS_PARAMS {
    1084 CK_ULONG sLen;
    1086
    1088
    1089/* CK_EC_KDF_TYPE is new for v2.11. */
    1090typedef CK_ULONG CK_EC_KDF_TYPE;
    1091
    1092/* The following EC Key Derivation Functions are defined */
    1093#define CKD_NULL 0x00000001
    1094#define CKD_SHA1_KDF 0x00000002
    1095
    1096/* CK_ECDH1_DERIVE_PARAMS is new for v2.11.
    1097 * CK_ECDH1_DERIVE_PARAMS provides the parameters to the
    1098 * CKM_ECDH1_DERIVE and CKM_ECDH1_COFACTOR_DERIVE mechanisms,
    1099 * where each party contributes one key pair.
    1108
    1112/* CK_ECDH2_DERIVE_PARAMS is new for v2.11.
    1113 * CK_ECDH2_DERIVE_PARAMS provides the parameters to the
    1114 * CKM_ECMQV_DERIVE mechanism, where each party contributes two key pairs. */
    1128
    1129/* Typedefs and defines for the CKM_X9_42_DH_KEY_PAIR_GEN and the
    1130 * CKM_X9_42_DH_PARAMETER_GEN mechanisms (new for PKCS #11 v2.11) */
    1133
    1134/* The following X9.42 DH key derivation functions are defined: */
    1135#define CKD_NULL 0x00000001
    1136#define CKD_SHA1_KDF_ASN1 0x00000003
    1137#define CKD_SHA1_KDF_CONCATENATE 0x00000004
    1139/* CK_X9_42_DH1_DERIVE_PARAMS is new for v2.11.
    1140 * CK_X9_42_DH1_DERIVE_PARAMS provides the parameters to the
    1141 * CKM_X9_42_DH_DERIVE key derivation mechanism, where each party
    1142 * contributes one key pair */
    1150
    1153/* CK_X9_42_DH2_DERIVE_PARAMS is new for v2.11.
    1154 * CK_X9_42_DH2_DERIVE_PARAMS provides the parameters to the
    1155 * CKM_X9_42_DH_HYBRID_DERIVE and CKM_X9_42_MQV_DERIVE key derivation
    1156 * mechanisms, where each party contributes two key pairs */
    1168
    1171/* CK_KEA_DERIVE_PARAMS provides the parameters to the
    1172 * CKM_KEA_DERIVE mechanism */
    1173/* CK_KEA_DERIVE_PARAMS is new for v2.0 */
    1174typedef struct CK_KEA_DERIVE_PARAMS {
    1182
    1185
    1186/* CK_RC2_PARAMS provides the parameters to the CKM_RC2_ECB and
    1187 * CKM_RC2_MAC mechanisms. An instance of CK_RC2_PARAMS just
    1188 * holds the effective keysize */
    1189typedef CK_ULONG CK_RC2_PARAMS;
    1190
    1192
    1193
    1194/* CK_RC2_CBC_PARAMS provides the parameters to the CKM_RC2_CBC
    1195 * mechanism */
    1196typedef struct CK_RC2_CBC_PARAMS {
    1197 /* ulEffectiveBits was changed from CK_USHORT to CK_ULONG for
    1198 * v2.0 */
    1199 CK_ULONG ulEffectiveBits; /* effective bits (1-1024) */
    1200
    1201 CK_BYTE iv[8]; /* IV for CBC mode */
    1203
    1207/* CK_RC2_MAC_GENERAL_PARAMS provides the parameters for the
    1208 * CKM_RC2_MAC_GENERAL mechanism */
    1209/* CK_RC2_MAC_GENERAL_PARAMS is new for v2.0 */
    1211 CK_ULONG ulEffectiveBits; /* effective bits (1-1024) */
    1212 CK_ULONG ulMacLength; /* Length of MAC in bytes */
    1214
    1218/* CK_RC5_PARAMS provides the parameters to the CKM_RC5_ECB and
    1219 * CKM_RC5_MAC mechanisms */
    1220/* CK_RC5_PARAMS is new for v2.0 */
    1221typedef struct CK_RC5_PARAMS {
    1222 CK_ULONG ulWordsize; /* wordsize in bits */
    1223 CK_ULONG ulRounds; /* number of rounds */
    1225
    1229/* CK_RC5_CBC_PARAMS provides the parameters to the CKM_RC5_CBC
    1230 * mechanism */
    1231/* CK_RC5_CBC_PARAMS is new for v2.0 */
    1232typedef struct CK_RC5_CBC_PARAMS {
    1233 CK_ULONG ulWordsize; /* wordsize in bits */
    1234 CK_ULONG ulRounds; /* number of rounds */
    1235 CK_BYTE_PTR pIv; /* pointer to IV */
    1236 CK_ULONG ulIvLen; /* length of IV in bytes */
    1238
    1242/* CK_RC5_MAC_GENERAL_PARAMS provides the parameters for the
    1243 * CKM_RC5_MAC_GENERAL mechanism */
    1244/* CK_RC5_MAC_GENERAL_PARAMS is new for v2.0 */
    1245typedef struct CK_RC5_MAC_GENERAL_PARAMS {
    1246 CK_ULONG ulWordsize; /* wordsize in bits */
    1247 CK_ULONG ulRounds; /* number of rounds */
    1248 CK_ULONG ulMacLength; /* Length of MAC in bytes */
    1250
    1252
    1254/* CK_MAC_GENERAL_PARAMS provides the parameters to most block
    1255 * ciphers' MAC_GENERAL mechanisms. Its value is the length of
    1256 * the MAC */
    1257/* CK_MAC_GENERAL_PARAMS is new for v2.0 */
    1259
    1263/* CK_SKIPJACK_PRIVATE_WRAP_PARAMS provides the parameters to the
    1264 * CKM_SKIPJACK_PRIVATE_WRAP mechanism */
    1265/* CK_SKIPJACK_PRIVATE_WRAP_PARAMS is new for v2.0 */
    1279
    1283/* CK_SKIPJACK_RELAYX_PARAMS provides the parameters to the
    1284 * CKM_SKIPJACK_RELAYX mechanism */
    1285/* CK_SKIPJACK_RELAYX_PARAMS is new for v2.0 */
    1306typedef struct CK_PBE_PARAMS {
    1314
    1318/* CK_KEY_WRAP_SET_OAEP_PARAMS provides the parameters to the
    1319 * CKM_KEY_WRAP_SET_OAEP mechanism */
    1320/* CK_KEY_WRAP_SET_OAEP_PARAMS is new for v2.0 */
    1321typedef struct CK_KEY_WRAP_SET_OAEP_PARAMS {
    1322 CK_BYTE bBC; /* block contents byte */
    1323 CK_BYTE_PTR pX; /* extra data */
    1324 CK_ULONG ulXLen; /* length of extra data in bytes */
    1330typedef struct CK_SSL3_RANDOM_DATA {
    1337
    1346typedef struct CK_SSL3_KEY_MAT_OUT {
    1369
    1374
    1376
    1377
    1378/* The CK_EXTRACT_PARAMS is used for the
    1379 * CKM_EXTRACT_KEY_FROM_KEY mechanism. It specifies which bit
    1380 * of the base key should be used as the first bit of the
    1381 * derived key */
    1382/* CK_EXTRACT_PARAMS is new for v2.0 */
    1384
    1387/* CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE is new for v2.10.
    1388 * CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE is used to
    1389 * indicate the Pseudo-Random Function (PRF) used to generate
    1390 * key bits using PKCS #5 PBKDF2. */
    1395
    1396/* The following PRFs are defined in PKCS #5 v2.0. */
    1397#define CKP_PKCS5_PBKD2_HMAC_SHA1 0x00000001
    1398
    1400/* CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE is new for v2.10.
    1401 * CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE is used to indicate the
    1402 * source of the salt value when deriving a key using PKCS #5
    1403 * PBKDF2. */
    1405
    1407
    1408/* The following salt value sources are defined in PKCS #5 v2.0. */
    1409#define CKZ_SALT_SPECIFIED 0x00000001
    1411/* CK_PKCS5_PBKD2_PARAMS is new for v2.10.
    1412 * CK_PKCS5_PBKD2_PARAMS is a structure that provides the
    1413 * parameters to the CKM_PKCS5_PBKD2 mechanism. */
    1425
    1427
    1428#endif
    #define CK_PTR
    Definition: pkcs11.h:25
    struct CK_DATE CK_DATE
    struct CK_X9_42_DH1_DERIVE_PARAMS CK_X9_42_DH1_DERIVE_PARAMS
    typedef CK_CALLBACK_FUNCTION(CK_RV, CK_NOTIFY)(CK_SESSION_HANDLE hSession
    CK_BYTE CK_UTF8CHAR
    Definition: pkcs11t.h:46
    CK_ULONG CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE
    Definition: pkcs11t.h:1399
    CK_ULONG CK_RSA_PKCS_OAEP_SOURCE_TYPE
    Definition: pkcs11t.h:1053
    CK_BYTE CK_CHAR
    Definition: pkcs11t.h:43
    struct CK_SSL3_RANDOM_DATA CK_SSL3_RANDOM_DATA
    CK_NOTIFICATION CK_VOID_PTR pApplication
    Definition: pkcs11t.h:975
    CK_RC5_MAC_GENERAL_PARAMS CK_PTR CK_RC5_MAC_GENERAL_PARAMS_PTR
    Definition: pkcs11t.h:1246
    struct CK_SSL3_KEY_MAT_OUT CK_SSL3_KEY_MAT_OUT
    struct CK_VERSION CK_VERSION
    CK_SESSION_INFO CK_PTR CK_SESSION_INFO_PTR
    Definition: pkcs11t.h:303
    CK_RC5_PARAMS CK_PTR CK_RC5_PARAMS_PTR
    Definition: pkcs11t.h:1221
    CK_ULONG CK_X9_42_DH_KDF_TYPE
    Definition: pkcs11t.h:1126
    CK_ULONG CK_EC_KDF_TYPE
    Definition: pkcs11t.h:1085
    struct CK_RC5_MAC_GENERAL_PARAMS CK_RC5_MAC_GENERAL_PARAMS
    CK_INFO CK_PTR CK_INFO_PTR
    Definition: pkcs11t.h:102
    struct CK_KEA_DERIVE_PARAMS CK_KEA_DERIVE_PARAMS
    CK_FUNCTION_LIST_PTR CK_PTR CK_FUNCTION_LIST_PTR_PTR
    Definition: pkcs11t.h:986
    CK_ULONG CK_RV
    Definition: pkcs11t.h:840
    CK_ECDH1_DERIVE_PARAMS CK_PTR CK_ECDH1_DERIVE_PARAMS_PTR
    Definition: pkcs11t.h:1104
    unsigned long int CK_ULONG
    Definition: pkcs11t.h:52
    CK_SLOT_INFO CK_PTR CK_SLOT_INFO_PTR
    Definition: pkcs11t.h:138
    CK_C_INITIALIZE_ARGS CK_PTR CK_C_INITIALIZE_ARGS_PTR
    Definition: pkcs11t.h:1029
    CK_BYTE CK_PTR CK_BYTE_PTR
    Definition: pkcs11t.h:67
    CK_TOKEN_INFO CK_PTR CK_TOKEN_INFO_PTR
    Definition: pkcs11t.h:255
    CK_OBJECT_HANDLE CK_PTR CK_OBJECT_HANDLE_PTR
    Definition: pkcs11t.h:310
    struct CK_KEY_DERIVATION_STRING_DATA CK_KEY_DERIVATION_STRING_DATA
    CK_ULONG CK_NOTIFICATION
    Definition: pkcs11t.h:109
    struct CK_INFO CK_INFO
    struct CK_SLOT_INFO CK_SLOT_INFO
    struct CK_SKIPJACK_PRIVATE_WRAP_PARAMS CK_SKIPJACK_PRIVATE_WRAP_PARAMS
    struct CK_RC2_CBC_PARAMS CK_RC2_CBC_PARAMS
    struct CK_TOKEN_INFO CK_TOKEN_INFO
    CK_RC2_CBC_PARAMS CK_PTR CK_RC2_CBC_PARAMS_PTR
    Definition: pkcs11t.h:1199
    CK_RC5_CBC_PARAMS CK_PTR CK_RC5_CBC_PARAMS_PTR
    Definition: pkcs11t.h:1234
    unsigned char CK_BYTE
    Definition: pkcs11t.h:40
    CK_ULONG CK_SLOT_ID
    Definition: pkcs11t.h:113
    struct CK_X9_42_DH1_DERIVE_PARAMS CK_PTR CK_X9_42_DH1_DERIVE_PARAMS_PTR
    Definition: pkcs11t.h:1146
    CK_ULONG CK_FLAGS
    Definition: pkcs11t.h:59
    CK_ULONG CK_OBJECT_CLASS
    Definition: pkcs11t.h:318
    CK_X9_42_DH_KDF_TYPE CK_PTR CK_X9_42_DH_KDF_TYPE_PTR
    Definition: pkcs11t.h:1127
    struct CK_X9_42_DH2_DERIVE_PARAMS CK_X9_42_DH2_DERIVE_PARAMS
    struct CK_ATTRIBUTE CK_ATTRIBUTE
    CK_EXTRACT_PARAMS CK_PTR CK_EXTRACT_PARAMS_PTR
    Definition: pkcs11t.h:1380
    CK_ULONG CK_SESSION_HANDLE
    Definition: pkcs11t.h:260
    CK_MAC_GENERAL_PARAMS CK_PTR CK_MAC_GENERAL_PARAMS_PTR
    Definition: pkcs11t.h:1255
    struct CK_KEY_WRAP_SET_OAEP_PARAMS CK_KEY_WRAP_SET_OAEP_PARAMS
    CK_ATTRIBUTE CK_PTR CK_ATTRIBUTE_PTR
    Definition: pkcs11t.h:506
    CK_PBE_PARAMS CK_PTR CK_PBE_PARAMS_PTR
    Definition: pkcs11t.h:1310
    CK_MECHANISM_TYPE CK_PTR CK_MECHANISM_TYPE_PTR
    Definition: pkcs11t.h:774
    struct CK_SSL3_KEY_MAT_PARAMS CK_SSL3_KEY_MAT_PARAMS
    CK_RC2_PARAMS CK_PTR CK_RC2_PARAMS_PTR
    Definition: pkcs11t.h:1186
    struct CK_ECDH2_DERIVE_PARAMS CK_ECDH2_DERIVE_PARAMS
    CK_KEY_WRAP_SET_OAEP_PARAMS CK_PTR CK_KEY_WRAP_SET_OAEP_PARAMS_PTR
    Definition: pkcs11t.h:1322
    struct CK_MECHANISM_INFO CK_MECHANISM_INFO
    struct CK_RC5_CBC_PARAMS CK_RC5_CBC_PARAMS
    CK_ULONG CK_USER_TYPE
    Definition: pkcs11t.h:268
    struct CK_PBE_PARAMS CK_PBE_PARAMS
    CK_FUNCTION_LIST CK_PTR CK_FUNCTION_LIST_PTR
    Definition: pkcs11t.h:984
    struct CK_SSL3_MASTER_KEY_DERIVE_PARAMS CK_PTR CK_SSL3_MASTER_KEY_DERIVE_PARAMS_PTR
    Definition: pkcs11t.h:1338
    CK_KEA_DERIVE_PARAMS CK_PTR CK_KEA_DERIVE_PARAMS_PTR
    Definition: pkcs11t.h:1178
    CK_MECHANISM_INFO CK_PTR CK_MECHANISM_INFO_PTR
    Definition: pkcs11t.h:834
    struct CK_RC2_MAC_GENERAL_PARAMS CK_RC2_MAC_GENERAL_PARAMS
    struct CK_SESSION_INFO CK_SESSION_INFO
    CK_ULONG CK_RSA_PKCS_MGF_TYPE
    Definition: pkcs11t.h:1042
    CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE CK_PTR CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE_PTR
    Definition: pkcs11t.h:1401
    CK_RSA_PKCS_OAEP_SOURCE_TYPE CK_PTR CK_RSA_PKCS_OAEP_SOURCE_TYPE_PTR
    Definition: pkcs11t.h:1055
    CK_KEY_DERIVATION_STRING_DATA CK_PTR CK_KEY_DERIVATION_STRING_DATA_PTR
    Definition: pkcs11t.h:1370
    CK_X9_42_DH2_DERIVE_PARAMS CK_PTR CK_X9_42_DH2_DERIVE_PARAMS_PTR
    Definition: pkcs11t.h:1164
    CK_RSA_PKCS_PSS_PARAMS CK_PTR CK_RSA_PKCS_PSS_PARAMS_PTR
    Definition: pkcs11t.h:1082
    CK_ULONG CK_KEY_TYPE
    Definition: pkcs11t.h:346
    CK_ULONG CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE
    Definition: pkcs11t.h:1386
    CK_RSA_PKCS_MGF_TYPE CK_PTR CK_RSA_PKCS_MGF_TYPE_PTR
    Definition: pkcs11t.h:1044
    CK_ULONG CK_MAC_GENERAL_PARAMS
    Definition: pkcs11t.h:1253
    CK_SSL3_KEY_MAT_PARAMS CK_PTR CK_SSL3_KEY_MAT_PARAMS_PTR
    Definition: pkcs11t.h:1362
    CK_CHAR CK_PTR CK_CHAR_PTR
    Definition: pkcs11t.h:68
    CK_ULONG CK_MECHANISM_TYPE
    Definition: pkcs11t.h:521
    struct CK_RC5_PARAMS CK_RC5_PARAMS
    CK_ECDH2_DERIVE_PARAMS CK_PTR CK_ECDH2_DERIVE_PARAMS_PTR
    Definition: pkcs11t.h:1122
    CK_PKCS5_PBKD2_PARAMS CK_PTR CK_PKCS5_PBKD2_PARAMS_PTR
    Definition: pkcs11t.h:1421
    CK_ULONG CK_EXTRACT_PARAMS
    Definition: pkcs11t.h:1378
    CK_BYTE CK_BBOOL
    Definition: pkcs11t.h:49
    CK_ULONG CK_CERTIFICATE_TYPE
    Definition: pkcs11t.h:388
    struct CK_RSA_PKCS_PSS_PARAMS CK_RSA_PKCS_PSS_PARAMS
    CK_RSA_PKCS_OAEP_PARAMS CK_PTR CK_RSA_PKCS_OAEP_PARAMS_PTR
    Definition: pkcs11t.h:1071
    void CK_PTR CK_VOID_PTR
    Definition: pkcs11t.h:71
    CK_SLOT_ID CK_PTR CK_SLOT_ID_PTR
    Definition: pkcs11t.h:115
    CK_ULONG CK_RC2_PARAMS
    Definition: pkcs11t.h:1184
    long int CK_LONG
    Definition: pkcs11t.h:56
    CK_ULONG CK_OBJECT_HANDLE
    Definition: pkcs11t.h:308
    CK_ULONG CK_HW_FEATURE_TYPE
    Definition: pkcs11t.h:337
    CK_ULONG CK_ATTRIBUTE_TYPE
    Definition: pkcs11t.h:401
    CK_SSL3_KEY_MAT_OUT CK_PTR CK_SSL3_KEY_MAT_OUT_PTR
    Definition: pkcs11t.h:1350
    struct CK_C_INITIALIZE_ARGS CK_C_INITIALIZE_ARGS
    struct CK_MECHANISM CK_MECHANISM
    struct CK_SSL3_MASTER_KEY_DERIVE_PARAMS CK_SSL3_MASTER_KEY_DERIVE_PARAMS
    CK_VOID_PTR CK_PTR CK_VOID_PTR_PTR
    Definition: pkcs11t.h:74
    CK_OBJECT_CLASS CK_PTR CK_OBJECT_CLASS_PTR
    Definition: pkcs11t.h:332
    CK_ULONG CK_STATE
    Definition: pkcs11t.h:278
    CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE CK_PTR CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE_PTR
    Definition: pkcs11t.h:1389
    CK_SESSION_HANDLE CK_PTR CK_SESSION_HANDLE_PTR
    Definition: pkcs11t.h:262
    CK_VERSION CK_PTR CK_VERSION_PTR
    Definition: pkcs11t.h:87
    CK_ULONG CK_PTR CK_ULONG_PTR
    Definition: pkcs11t.h:70
    CK_RC2_MAC_GENERAL_PARAMS CK_PTR CK_RC2_MAC_GENERAL_PARAMS_PTR
    Definition: pkcs11t.h:1210
    CK_UTF8CHAR CK_PTR CK_UTF8CHAR_PTR
    Definition: pkcs11t.h:69
    CK_SKIPJACK_PRIVATE_WRAP_PARAMS CK_PTR CK_SKIPJACK_PRIVATE_WRAP_PTR
    Definition: pkcs11t.h:1275
    CK_MECHANISM CK_PTR CK_MECHANISM_PTR
    Definition: pkcs11t.h:788
    CK_NOTIFICATION event
    Definition: pkcs11t.h:974
    CK_SKIPJACK_RELAYX_PARAMS CK_PTR CK_SKIPJACK_RELAYX_PARAMS_PTR
    Definition: pkcs11t.h:1298
    struct CK_ECDH1_DERIVE_PARAMS CK_ECDH1_DERIVE_PARAMS
    struct CK_RSA_PKCS_OAEP_PARAMS CK_RSA_PKCS_OAEP_PARAMS
    struct CK_PKCS5_PBKD2_PARAMS CK_PKCS5_PBKD2_PARAMS
    struct CK_SKIPJACK_RELAYX_PARAMS CK_SKIPJACK_RELAYX_PARAMS
    CK_VOID_PTR pValue
    Definition: pkcs11t.h:500
    CK_ATTRIBUTE_TYPE type
    Definition: pkcs11t.h:499
    CK_ULONG ulValueLen
    Definition: pkcs11t.h:503
    CK_DESTROYMUTEX DestroyMutex
    Definition: pkcs11t.h:1016
    CK_UNLOCKMUTEX UnlockMutex
    Definition: pkcs11t.h:1018
    CK_VOID_PTR pReserved
    Definition: pkcs11t.h:1020
    CK_LOCKMUTEX LockMutex
    Definition: pkcs11t.h:1017
    CK_CREATEMUTEX CreateMutex
    Definition: pkcs11t.h:1015
    CK_CHAR month[2]
    Definition: pkcs11t.h:512
    CK_CHAR year[4]
    Definition: pkcs11t.h:511
    CK_CHAR day[2]
    Definition: pkcs11t.h:513
    CK_EC_KDF_TYPE kdf
    Definition: pkcs11t.h:1097
    CK_BYTE_PTR pPublicData
    Definition: pkcs11t.h:1101
    CK_ULONG ulSharedDataLen
    Definition: pkcs11t.h:1098
    CK_BYTE_PTR pSharedData
    Definition: pkcs11t.h:1099
    CK_ULONG ulPublicDataLen
    Definition: pkcs11t.h:1100
    CK_EC_KDF_TYPE kdf
    Definition: pkcs11t.h:1111
    CK_ULONG ulPrivateDataLen
    Definition: pkcs11t.h:1116
    CK_OBJECT_HANDLE hPrivateData
    Definition: pkcs11t.h:1117
    CK_BYTE_PTR pPublicData
    Definition: pkcs11t.h:1115
    CK_BYTE_PTR pPublicData2
    Definition: pkcs11t.h:1119
    CK_ULONG ulPublicDataLen2
    Definition: pkcs11t.h:1118
    CK_ULONG ulSharedDataLen
    Definition: pkcs11t.h:1112
    CK_BYTE_PTR pSharedData
    Definition: pkcs11t.h:1113
    CK_ULONG ulPublicDataLen
    Definition: pkcs11t.h:1114
    CK_UTF8CHAR libraryDescription[32]
    Definition: pkcs11t.h:98
    CK_VERSION libraryVersion
    Definition: pkcs11t.h:99
    CK_UTF8CHAR manufacturerID[32]
    Definition: pkcs11t.h:94
    CK_VERSION cryptokiVersion
    Definition: pkcs11t.h:93
    CK_FLAGS flags
    Definition: pkcs11t.h:95
    CK_ULONG ulRandomLen
    Definition: pkcs11t.h:1171
    CK_BYTE_PTR pPublicData
    Definition: pkcs11t.h:1175
    CK_BYTE_PTR pRandomB
    Definition: pkcs11t.h:1173
    CK_BYTE_PTR pRandomA
    Definition: pkcs11t.h:1172
    CK_ULONG ulPublicDataLen
    Definition: pkcs11t.h:1174
    CK_ULONG ulMaxKeySize
    Definition: pkcs11t.h:795
    CK_FLAGS flags
    Definition: pkcs11t.h:796
    CK_ULONG ulMinKeySize
    Definition: pkcs11t.h:794
    CK_MECHANISM_TYPE mechanism
    Definition: pkcs11t.h:780
    CK_VOID_PTR pParameter
    Definition: pkcs11t.h:781
    CK_ULONG ulParameterLen
    Definition: pkcs11t.h:785
    CK_ULONG ulSaltLen
    Definition: pkcs11t.h:1306
    CK_BYTE_PTR pInitVector
    Definition: pkcs11t.h:1302
    CK_ULONG ulPasswordLen
    Definition: pkcs11t.h:1304
    CK_BYTE_PTR pSalt
    Definition: pkcs11t.h:1305
    CK_ULONG ulIteration
    Definition: pkcs11t.h:1307
    CK_UTF8CHAR_PTR pPassword
    Definition: pkcs11t.h:1303
    CK_VOID_PTR pPrfData
    Definition: pkcs11t.h:1415
    CK_ULONG_PTR ulPasswordLen
    Definition: pkcs11t.h:1418
    CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE saltSource
    Definition: pkcs11t.h:1410
    CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE prf
    Definition: pkcs11t.h:1414
    CK_ULONG ulPrfDataLen
    Definition: pkcs11t.h:1416
    CK_ULONG ulSaltSourceDataLen
    Definition: pkcs11t.h:1412
    CK_VOID_PTR pSaltSourceData
    Definition: pkcs11t.h:1411
    CK_UTF8CHAR_PTR pPassword
    Definition: pkcs11t.h:1417
    CK_ULONG ulEffectiveBits
    Definition: pkcs11t.h:1194
    CK_BYTE iv[8]
    Definition: pkcs11t.h:1196
    CK_ULONG ulIvLen
    Definition: pkcs11t.h:1231
    CK_BYTE_PTR pIv
    Definition: pkcs11t.h:1230
    CK_ULONG ulRounds
    Definition: pkcs11t.h:1229
    CK_ULONG ulWordsize
    Definition: pkcs11t.h:1228
    CK_ULONG ulRounds
    Definition: pkcs11t.h:1218
    CK_ULONG ulWordsize
    Definition: pkcs11t.h:1217
    CK_ULONG ulSourceDataLen
    Definition: pkcs11t.h:1068
    CK_RSA_PKCS_MGF_TYPE mgf
    Definition: pkcs11t.h:1065
    CK_RSA_PKCS_OAEP_SOURCE_TYPE source
    Definition: pkcs11t.h:1066
    CK_MECHANISM_TYPE hashAlg
    Definition: pkcs11t.h:1064
    CK_VOID_PTR pSourceData
    Definition: pkcs11t.h:1067
    CK_RSA_PKCS_MGF_TYPE mgf
    Definition: pkcs11t.h:1078
    CK_MECHANISM_TYPE hashAlg
    Definition: pkcs11t.h:1077
    CK_STATE state
    Definition: pkcs11t.h:289
    CK_ULONG ulDeviceError
    Definition: pkcs11t.h:294
    CK_FLAGS flags
    Definition: pkcs11t.h:290
    CK_SLOT_ID slotID
    Definition: pkcs11t.h:288
    CK_BYTE_PTR pNewPublicData
    Definition: pkcs11t.h:1293
    CK_BYTE_PTR pOldPublicData
    Definition: pkcs11t.h:1287
    CK_BYTE_PTR pNewPassword
    Definition: pkcs11t.h:1291
    CK_BYTE_PTR pOldPassword
    Definition: pkcs11t.h:1285
    CK_BYTE_PTR pNewRandomA
    Definition: pkcs11t.h:1295
    CK_BYTE_PTR pOldWrappedX
    Definition: pkcs11t.h:1283
    CK_BYTE_PTR pOldRandomA
    Definition: pkcs11t.h:1289
    CK_VERSION hardwareVersion
    Definition: pkcs11t.h:127
    CK_VERSION firmwareVersion
    Definition: pkcs11t.h:128
    CK_UTF8CHAR manufacturerID[32]
    Definition: pkcs11t.h:123
    CK_UTF8CHAR slotDescription[64]
    Definition: pkcs11t.h:122
    CK_FLAGS flags
    Definition: pkcs11t.h:124
    CK_OBJECT_HANDLE hServerMacSecret
    Definition: pkcs11t.h:1343
    CK_OBJECT_HANDLE hClientKey
    Definition: pkcs11t.h:1344
    CK_OBJECT_HANDLE hServerKey
    Definition: pkcs11t.h:1345
    CK_BYTE_PTR pIVServer
    Definition: pkcs11t.h:1347
    CK_BYTE_PTR pIVClient
    Definition: pkcs11t.h:1346
    CK_OBJECT_HANDLE hClientMacSecret
    Definition: pkcs11t.h:1342
    CK_ULONG ulMacSizeInBits
    Definition: pkcs11t.h:1354
    CK_ULONG ulKeySizeInBits
    Definition: pkcs11t.h:1355
    CK_SSL3_RANDOM_DATA RandomInfo
    Definition: pkcs11t.h:1358
    CK_ULONG ulIVSizeInBits
    Definition: pkcs11t.h:1356
    CK_SSL3_KEY_MAT_OUT_PTR pReturnedKeyMaterial
    Definition: pkcs11t.h:1359
    CK_SSL3_RANDOM_DATA RandomInfo
    Definition: pkcs11t.h:1334
    CK_ULONG ulServerRandomLen
    Definition: pkcs11t.h:1329
    CK_BYTE_PTR pServerRandom
    Definition: pkcs11t.h:1328
    CK_ULONG ulClientRandomLen
    Definition: pkcs11t.h:1327
    CK_BYTE_PTR pClientRandom
    Definition: pkcs11t.h:1326
    CK_ULONG ulFreePrivateMemory
    Definition: pkcs11t.h:163
    CK_VERSION hardwareVersion
    Definition: pkcs11t.h:167
    CK_ULONG ulTotalPublicMemory
    Definition: pkcs11t.h:160
    CK_ULONG ulSessionCount
    Definition: pkcs11t.h:155
    CK_ULONG ulMaxSessionCount
    Definition: pkcs11t.h:154
    CK_ULONG ulRwSessionCount
    Definition: pkcs11t.h:157
    CK_ULONG ulMinPinLen
    Definition: pkcs11t.h:159
    CK_ULONG ulMaxPinLen
    Definition: pkcs11t.h:158
    CK_VERSION firmwareVersion
    Definition: pkcs11t.h:168
    CK_ULONG ulFreePublicMemory
    Definition: pkcs11t.h:161
    CK_UTF8CHAR manufacturerID[32]
    Definition: pkcs11t.h:146
    CK_ULONG ulMaxRwSessionCount
    Definition: pkcs11t.h:156
    CK_CHAR serialNumber[16]
    Definition: pkcs11t.h:148
    CK_FLAGS flags
    Definition: pkcs11t.h:149
    CK_UTF8CHAR model[16]
    Definition: pkcs11t.h:147
    CK_CHAR utcTime[16]
    Definition: pkcs11t.h:169
    CK_ULONG ulTotalPrivateMemory
    Definition: pkcs11t.h:162
    CK_UTF8CHAR label[32]
    Definition: pkcs11t.h:145
    CK_BYTE major
    Definition: pkcs11t.h:83
    CK_BYTE minor
    Definition: pkcs11t.h:84
    CK_X9_42_DH_KDF_TYPE kdf
    Definition: pkcs11t.h:1139
    CK_OBJECT_HANDLE hPrivateData
    Definition: pkcs11t.h:1159
    CK_BYTE_PTR pPublicData2
    Definition: pkcs11t.h:1161
    CK_X9_42_DH_KDF_TYPE kdf
    Definition: pkcs11t.h:1153
    pam_pkcs11-0.6.12/doc/api/strndup_8h_source.html0000644000175000017500000000627314367517110016357 00000000000000 pam_pkcs11: strndup.h Source File
    pam_pkcs11 0.6.12
    strndup.h
    Go to the documentation of this file.
    1#ifndef HAVE_STRNDUP
    2char * strndup (const char *s, size_t size);
    3#endif
    char * strndup(const char *s, size_t size)
    pam_pkcs11-0.6.12/doc/api/structCK__SLOT__INFO.html0000644000175000017500000002040314367517110016404 00000000000000 pam_pkcs11: CK_SLOT_INFO Struct Reference
    pam_pkcs11 0.6.12
    CK_SLOT_INFO Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_UTF8CHAR slotDescription [64]
     
    CK_UTF8CHAR manufacturerID [32]
     
    CK_FLAGS flags
     
    CK_VERSION hardwareVersion
     
    CK_VERSION firmwareVersion
     

    Detailed Description

    Definition at line 119 of file pkcs11t.h.

    Field Documentation

    ◆ firmwareVersion

    CK_VERSION firmwareVersion

    Definition at line 128 of file pkcs11t.h.

    ◆ flags

    CK_FLAGS flags

    Definition at line 124 of file pkcs11t.h.

    ◆ hardwareVersion

    CK_VERSION hardwareVersion

    Definition at line 127 of file pkcs11t.h.

    ◆ manufacturerID

    CK_UTF8CHAR manufacturerID[32]

    Definition at line 123 of file pkcs11t.h.

    ◆ slotDescription

    CK_UTF8CHAR slotDescription[64]

    Definition at line 122 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/pkcs11t_8h.html0000644000175000017500000231541114367517110014565 00000000000000 pam_pkcs11: pkcs11t.h File Reference
    pam_pkcs11 0.6.12
    pkcs11t.h File Reference

    Go to the source code of this file.

    Data Structures

    struct  CK_VERSION
     
    struct  CK_INFO
     
    struct  CK_SLOT_INFO
     
    struct  CK_TOKEN_INFO
     
    struct  CK_SESSION_INFO
     
    struct  CK_ATTRIBUTE
     
    struct  CK_DATE
     
    struct  CK_MECHANISM
     
    struct  CK_MECHANISM_INFO
     
    struct  CK_C_INITIALIZE_ARGS
     
    struct  CK_RSA_PKCS_OAEP_PARAMS
     
    struct  CK_RSA_PKCS_PSS_PARAMS
     
    struct  CK_ECDH1_DERIVE_PARAMS
     
    struct  CK_ECDH2_DERIVE_PARAMS
     
    struct  CK_X9_42_DH1_DERIVE_PARAMS
     
    struct  CK_X9_42_DH2_DERIVE_PARAMS
     
    struct  CK_KEA_DERIVE_PARAMS
     
    struct  CK_RC2_CBC_PARAMS
     
    struct  CK_RC2_MAC_GENERAL_PARAMS
     
    struct  CK_RC5_PARAMS
     
    struct  CK_RC5_CBC_PARAMS
     
    struct  CK_RC5_MAC_GENERAL_PARAMS
     
    struct  CK_SKIPJACK_PRIVATE_WRAP_PARAMS
     
    struct  CK_SKIPJACK_RELAYX_PARAMS
     
    struct  CK_PBE_PARAMS
     
    struct  CK_KEY_WRAP_SET_OAEP_PARAMS
     
    struct  CK_SSL3_RANDOM_DATA
     
    struct  CK_SSL3_MASTER_KEY_DERIVE_PARAMS
     
    struct  CK_SSL3_KEY_MAT_OUT
     
    struct  CK_SSL3_KEY_MAT_PARAMS
     
    struct  CK_KEY_DERIVATION_STRING_DATA
     
    struct  CK_PKCS5_PBKD2_PARAMS
     

    Macros

    #define FALSE   0
     
    #define TRUE   !(FALSE)
     
    #define CK_TRUE   1
     
    #define CK_FALSE   0
     
    #define CK_UNAVAILABLE_INFORMATION   (~0UL)
     
    #define CK_EFFECTIVELY_INFINITE   0
     
    #define CK_INVALID_HANDLE   0
     
    #define CKN_SURRENDER   0
     
    #define CKF_TOKEN_PRESENT   0x00000001 /* a token is there */
     
    #define CKF_REMOVABLE_DEVICE   0x00000002 /* removable devices */
     
    #define CKF_HW_SLOT   0x00000004 /* hardware slot */
     
    #define CKF_RNG
     
    #define CKF_WRITE_PROTECTED
     
    #define CKF_LOGIN_REQUIRED
     
    #define CKF_USER_PIN_INITIALIZED
     
    #define CKF_RESTORE_KEY_NOT_NEEDED   0x00000020
     
    #define CKF_CLOCK_ON_TOKEN   0x00000040
     
    #define CKF_PROTECTED_AUTHENTICATION_PATH   0x00000100
     
    #define CKF_DUAL_CRYPTO_OPERATIONS   0x00000200
     
    #define CKF_TOKEN_INITIALIZED   0x00000400
     
    #define CKF_SECONDARY_AUTHENTICATION   0x00000800
     
    #define CKF_USER_PIN_COUNT_LOW   0x00010000
     
    #define CKF_USER_PIN_FINAL_TRY   0x00020000
     
    #define CKF_USER_PIN_LOCKED   0x00040000
     
    #define CKF_USER_PIN_TO_BE_CHANGED   0x00080000
     
    #define CKF_SO_PIN_COUNT_LOW   0x00100000
     
    #define CKF_SO_PIN_FINAL_TRY   0x00200000
     
    #define CKF_SO_PIN_LOCKED   0x00400000
     
    #define CKF_SO_PIN_TO_BE_CHANGED   0x00800000
     
    #define CKU_SO   0
     
    #define CKU_USER   1
     
    #define CKS_RO_PUBLIC_SESSION   0
     
    #define CKS_RO_USER_FUNCTIONS   1
     
    #define CKS_RW_PUBLIC_SESSION   2
     
    #define CKS_RW_USER_FUNCTIONS   3
     
    #define CKS_RW_SO_FUNCTIONS   4
     
    #define CKF_RW_SESSION   0x00000002 /* session is r/w */
     
    #define CKF_SERIAL_SESSION   0x00000004 /* no parallel */
     
    #define CKO_DATA   0x00000000
     
    #define CKO_CERTIFICATE   0x00000001
     
    #define CKO_PUBLIC_KEY   0x00000002
     
    #define CKO_PRIVATE_KEY   0x00000003
     
    #define CKO_SECRET_KEY   0x00000004
     
    #define CKO_HW_FEATURE   0x00000005
     
    #define CKO_DOMAIN_PARAMETERS   0x00000006
     
    #define CKO_VENDOR_DEFINED   0x80000000
     
    #define CKH_MONOTONIC_COUNTER   0x00000001
     
    #define CKH_CLOCK   0x00000002
     
    #define CKH_VENDOR_DEFINED   0x80000000
     
    #define CKK_RSA   0x00000000
     
    #define CKK_DSA   0x00000001
     
    #define CKK_DH   0x00000002
     
    #define CKK_ECDSA   0x00000003
     
    #define CKK_EC   0x00000003
     
    #define CKK_X9_42_DH   0x00000004
     
    #define CKK_KEA   0x00000005
     
    #define CKK_GENERIC_SECRET   0x00000010
     
    #define CKK_RC2   0x00000011
     
    #define CKK_RC4   0x00000012
     
    #define CKK_DES   0x00000013
     
    #define CKK_DES2   0x00000014
     
    #define CKK_DES3   0x00000015
     
    #define CKK_CAST   0x00000016
     
    #define CKK_CAST3   0x00000017
     
    #define CKK_CAST5   0x00000018
     
    #define CKK_CAST128   0x00000018
     
    #define CKK_RC5   0x00000019
     
    #define CKK_IDEA   0x0000001A
     
    #define CKK_SKIPJACK   0x0000001B
     
    #define CKK_BATON   0x0000001C
     
    #define CKK_JUNIPER   0x0000001D
     
    #define CKK_CDMF   0x0000001E
     
    #define CKK_AES   0x0000001F
     
    #define CKK_VENDOR_DEFINED   0x80000000
     
    #define CKC_X_509   0x00000000
     
    #define CKC_X_509_ATTR_CERT   0x00000001
     
    #define CKC_VENDOR_DEFINED   0x80000000
     
    #define CKA_CLASS   0x00000000
     
    #define CKA_TOKEN   0x00000001
     
    #define CKA_PRIVATE   0x00000002
     
    #define CKA_LABEL   0x00000003
     
    #define CKA_APPLICATION   0x00000010
     
    #define CKA_VALUE   0x00000011
     
    #define CKA_OBJECT_ID   0x00000012
     
    #define CKA_CERTIFICATE_TYPE   0x00000080
     
    #define CKA_ISSUER   0x00000081
     
    #define CKA_SERIAL_NUMBER   0x00000082
     
    #define CKA_AC_ISSUER   0x00000083
     
    #define CKA_OWNER   0x00000084
     
    #define CKA_ATTR_TYPES   0x00000085
     
    #define CKA_TRUSTED   0x00000086
     
    #define CKA_KEY_TYPE   0x00000100
     
    #define CKA_SUBJECT   0x00000101
     
    #define CKA_ID   0x00000102
     
    #define CKA_SENSITIVE   0x00000103
     
    #define CKA_ENCRYPT   0x00000104
     
    #define CKA_DECRYPT   0x00000105
     
    #define CKA_WRAP   0x00000106
     
    #define CKA_UNWRAP   0x00000107
     
    #define CKA_SIGN   0x00000108
     
    #define CKA_SIGN_RECOVER   0x00000109
     
    #define CKA_VERIFY   0x0000010A
     
    #define CKA_VERIFY_RECOVER   0x0000010B
     
    #define CKA_DERIVE   0x0000010C
     
    #define CKA_START_DATE   0x00000110
     
    #define CKA_END_DATE   0x00000111
     
    #define CKA_MODULUS   0x00000120
     
    #define CKA_MODULUS_BITS   0x00000121
     
    #define CKA_PUBLIC_EXPONENT   0x00000122
     
    #define CKA_PRIVATE_EXPONENT   0x00000123
     
    #define CKA_PRIME_1   0x00000124
     
    #define CKA_PRIME_2   0x00000125
     
    #define CKA_EXPONENT_1   0x00000126
     
    #define CKA_EXPONENT_2   0x00000127
     
    #define CKA_COEFFICIENT   0x00000128
     
    #define CKA_PRIME   0x00000130
     
    #define CKA_SUBPRIME   0x00000131
     
    #define CKA_BASE   0x00000132
     
    #define CKA_PRIME_BITS   0x00000133
     
    #define CKA_SUBPRIME_BITS   0x00000134
     
    #define CKA_SUB_PRIME_BITS   CKA_SUBPRIME_BITS
     
    #define CKA_VALUE_BITS   0x00000160
     
    #define CKA_VALUE_LEN   0x00000161
     
    #define CKA_EXTRACTABLE   0x00000162
     
    #define CKA_LOCAL   0x00000163
     
    #define CKA_NEVER_EXTRACTABLE   0x00000164
     
    #define CKA_ALWAYS_SENSITIVE   0x00000165
     
    #define CKA_KEY_GEN_MECHANISM   0x00000166
     
    #define CKA_MODIFIABLE   0x00000170
     
    #define CKA_ECDSA_PARAMS   0x00000180
     
    #define CKA_EC_PARAMS   0x00000180
     
    #define CKA_EC_POINT   0x00000181
     
    #define CKA_SECONDARY_AUTH   0x00000200
     
    #define CKA_AUTH_PIN_FLAGS   0x00000201
     
    #define CKA_HW_FEATURE_TYPE   0x00000300
     
    #define CKA_RESET_ON_INIT   0x00000301
     
    #define CKA_HAS_RESET   0x00000302
     
    #define CKA_VENDOR_DEFINED   0x80000000
     
    #define CKM_RSA_PKCS_KEY_PAIR_GEN   0x00000000
     
    #define CKM_RSA_PKCS   0x00000001
     
    #define CKM_RSA_9796   0x00000002
     
    #define CKM_RSA_X_509   0x00000003
     
    #define CKM_MD2_RSA_PKCS   0x00000004
     
    #define CKM_MD5_RSA_PKCS   0x00000005
     
    #define CKM_SHA1_RSA_PKCS   0x00000006
     
    #define CKM_RIPEMD128_RSA_PKCS   0x00000007
     
    #define CKM_RIPEMD160_RSA_PKCS   0x00000008
     
    #define CKM_RSA_PKCS_OAEP   0x00000009
     
    #define CKM_RSA_X9_31_KEY_PAIR_GEN   0x0000000A
     
    #define CKM_RSA_X9_31   0x0000000B
     
    #define CKM_SHA1_RSA_X9_31   0x0000000C
     
    #define CKM_RSA_PKCS_PSS   0x0000000D
     
    #define CKM_SHA1_RSA_PKCS_PSS   0x0000000E
     
    #define CKM_DSA_KEY_PAIR_GEN   0x00000010
     
    #define CKM_DSA   0x00000011
     
    #define CKM_DSA_SHA1   0x00000012
     
    #define CKM_DH_PKCS_KEY_PAIR_GEN   0x00000020
     
    #define CKM_DH_PKCS_DERIVE   0x00000021
     
    #define CKM_X9_42_DH_KEY_PAIR_GEN   0x00000030
     
    #define CKM_X9_42_DH_DERIVE   0x00000031
     
    #define CKM_X9_42_DH_HYBRID_DERIVE   0x00000032
     
    #define CKM_X9_42_MQV_DERIVE   0x00000033
     
    #define CKM_RC2_KEY_GEN   0x00000100
     
    #define CKM_RC2_ECB   0x00000101
     
    #define CKM_RC2_CBC   0x00000102
     
    #define CKM_RC2_MAC   0x00000103
     
    #define CKM_RC2_MAC_GENERAL   0x00000104
     
    #define CKM_RC2_CBC_PAD   0x00000105
     
    #define CKM_RC4_KEY_GEN   0x00000110
     
    #define CKM_RC4   0x00000111
     
    #define CKM_DES_KEY_GEN   0x00000120
     
    #define CKM_DES_ECB   0x00000121
     
    #define CKM_DES_CBC   0x00000122
     
    #define CKM_DES_MAC   0x00000123
     
    #define CKM_DES_MAC_GENERAL   0x00000124
     
    #define CKM_DES_CBC_PAD   0x00000125
     
    #define CKM_DES2_KEY_GEN   0x00000130
     
    #define CKM_DES3_KEY_GEN   0x00000131
     
    #define CKM_DES3_ECB   0x00000132
     
    #define CKM_DES3_CBC   0x00000133
     
    #define CKM_DES3_MAC   0x00000134
     
    #define CKM_DES3_MAC_GENERAL   0x00000135
     
    #define CKM_DES3_CBC_PAD   0x00000136
     
    #define CKM_CDMF_KEY_GEN   0x00000140
     
    #define CKM_CDMF_ECB   0x00000141
     
    #define CKM_CDMF_CBC   0x00000142
     
    #define CKM_CDMF_MAC   0x00000143
     
    #define CKM_CDMF_MAC_GENERAL   0x00000144
     
    #define CKM_CDMF_CBC_PAD   0x00000145
     
    #define CKM_MD2   0x00000200
     
    #define CKM_MD2_HMAC   0x00000201
     
    #define CKM_MD2_HMAC_GENERAL   0x00000202
     
    #define CKM_MD5   0x00000210
     
    #define CKM_MD5_HMAC   0x00000211
     
    #define CKM_MD5_HMAC_GENERAL   0x00000212
     
    #define CKM_SHA_1   0x00000220
     
    #define CKM_SHA_1_HMAC   0x00000221
     
    #define CKM_SHA_1_HMAC_GENERAL   0x00000222
     
    #define CKM_RIPEMD128   0x00000230
     
    #define CKM_RIPEMD128_HMAC   0x00000231
     
    #define CKM_RIPEMD128_HMAC_GENERAL   0x00000232
     
    #define CKM_RIPEMD160   0x00000240
     
    #define CKM_RIPEMD160_HMAC   0x00000241
     
    #define CKM_RIPEMD160_HMAC_GENERAL   0x00000242
     
    #define CKM_CAST_KEY_GEN   0x00000300
     
    #define CKM_CAST_ECB   0x00000301
     
    #define CKM_CAST_CBC   0x00000302
     
    #define CKM_CAST_MAC   0x00000303
     
    #define CKM_CAST_MAC_GENERAL   0x00000304
     
    #define CKM_CAST_CBC_PAD   0x00000305
     
    #define CKM_CAST3_KEY_GEN   0x00000310
     
    #define CKM_CAST3_ECB   0x00000311
     
    #define CKM_CAST3_CBC   0x00000312
     
    #define CKM_CAST3_MAC   0x00000313
     
    #define CKM_CAST3_MAC_GENERAL   0x00000314
     
    #define CKM_CAST3_CBC_PAD   0x00000315
     
    #define CKM_CAST5_KEY_GEN   0x00000320
     
    #define CKM_CAST128_KEY_GEN   0x00000320
     
    #define CKM_CAST5_ECB   0x00000321
     
    #define CKM_CAST128_ECB   0x00000321
     
    #define CKM_CAST5_CBC   0x00000322
     
    #define CKM_CAST128_CBC   0x00000322
     
    #define CKM_CAST5_MAC   0x00000323
     
    #define CKM_CAST128_MAC   0x00000323
     
    #define CKM_CAST5_MAC_GENERAL   0x00000324
     
    #define CKM_CAST128_MAC_GENERAL   0x00000324
     
    #define CKM_CAST5_CBC_PAD   0x00000325
     
    #define CKM_CAST128_CBC_PAD   0x00000325
     
    #define CKM_RC5_KEY_GEN   0x00000330
     
    #define CKM_RC5_ECB   0x00000331
     
    #define CKM_RC5_CBC   0x00000332
     
    #define CKM_RC5_MAC   0x00000333
     
    #define CKM_RC5_MAC_GENERAL   0x00000334
     
    #define CKM_RC5_CBC_PAD   0x00000335
     
    #define CKM_IDEA_KEY_GEN   0x00000340
     
    #define CKM_IDEA_ECB   0x00000341
     
    #define CKM_IDEA_CBC   0x00000342
     
    #define CKM_IDEA_MAC   0x00000343
     
    #define CKM_IDEA_MAC_GENERAL   0x00000344
     
    #define CKM_IDEA_CBC_PAD   0x00000345
     
    #define CKM_GENERIC_SECRET_KEY_GEN   0x00000350
     
    #define CKM_CONCATENATE_BASE_AND_KEY   0x00000360
     
    #define CKM_CONCATENATE_BASE_AND_DATA   0x00000362
     
    #define CKM_CONCATENATE_DATA_AND_BASE   0x00000363
     
    #define CKM_XOR_BASE_AND_DATA   0x00000364
     
    #define CKM_EXTRACT_KEY_FROM_KEY   0x00000365
     
    #define CKM_SSL3_PRE_MASTER_KEY_GEN   0x00000370
     
    #define CKM_SSL3_MASTER_KEY_DERIVE   0x00000371
     
    #define CKM_SSL3_KEY_AND_MAC_DERIVE   0x00000372
     
    #define CKM_SSL3_MASTER_KEY_DERIVE_DH   0x00000373
     
    #define CKM_TLS_PRE_MASTER_KEY_GEN   0x00000374
     
    #define CKM_TLS_MASTER_KEY_DERIVE   0x00000375
     
    #define CKM_TLS_KEY_AND_MAC_DERIVE   0x00000376
     
    #define CKM_TLS_MASTER_KEY_DERIVE_DH   0x00000377
     
    #define CKM_SSL3_MD5_MAC   0x00000380
     
    #define CKM_SSL3_SHA1_MAC   0x00000381
     
    #define CKM_MD5_KEY_DERIVATION   0x00000390
     
    #define CKM_MD2_KEY_DERIVATION   0x00000391
     
    #define CKM_SHA1_KEY_DERIVATION   0x00000392
     
    #define CKM_PBE_MD2_DES_CBC   0x000003A0
     
    #define CKM_PBE_MD5_DES_CBC   0x000003A1
     
    #define CKM_PBE_MD5_CAST_CBC   0x000003A2
     
    #define CKM_PBE_MD5_CAST3_CBC   0x000003A3
     
    #define CKM_PBE_MD5_CAST5_CBC   0x000003A4
     
    #define CKM_PBE_MD5_CAST128_CBC   0x000003A4
     
    #define CKM_PBE_SHA1_CAST5_CBC   0x000003A5
     
    #define CKM_PBE_SHA1_CAST128_CBC   0x000003A5
     
    #define CKM_PBE_SHA1_RC4_128   0x000003A6
     
    #define CKM_PBE_SHA1_RC4_40   0x000003A7
     
    #define CKM_PBE_SHA1_DES3_EDE_CBC   0x000003A8
     
    #define CKM_PBE_SHA1_DES2_EDE_CBC   0x000003A9
     
    #define CKM_PBE_SHA1_RC2_128_CBC   0x000003AA
     
    #define CKM_PBE_SHA1_RC2_40_CBC   0x000003AB
     
    #define CKM_PKCS5_PBKD2   0x000003B0
     
    #define CKM_PBA_SHA1_WITH_SHA1_HMAC   0x000003C0
     
    #define CKM_KEY_WRAP_LYNKS   0x00000400
     
    #define CKM_KEY_WRAP_SET_OAEP   0x00000401
     
    #define CKM_SKIPJACK_KEY_GEN   0x00001000
     
    #define CKM_SKIPJACK_ECB64   0x00001001
     
    #define CKM_SKIPJACK_CBC64   0x00001002
     
    #define CKM_SKIPJACK_OFB64   0x00001003
     
    #define CKM_SKIPJACK_CFB64   0x00001004
     
    #define CKM_SKIPJACK_CFB32   0x00001005
     
    #define CKM_SKIPJACK_CFB16   0x00001006
     
    #define CKM_SKIPJACK_CFB8   0x00001007
     
    #define CKM_SKIPJACK_WRAP   0x00001008
     
    #define CKM_SKIPJACK_PRIVATE_WRAP   0x00001009
     
    #define CKM_SKIPJACK_RELAYX   0x0000100a
     
    #define CKM_KEA_KEY_PAIR_GEN   0x00001010
     
    #define CKM_KEA_KEY_DERIVE   0x00001011
     
    #define CKM_FORTEZZA_TIMESTAMP   0x00001020
     
    #define CKM_BATON_KEY_GEN   0x00001030
     
    #define CKM_BATON_ECB128   0x00001031
     
    #define CKM_BATON_ECB96   0x00001032
     
    #define CKM_BATON_CBC128   0x00001033
     
    #define CKM_BATON_COUNTER   0x00001034
     
    #define CKM_BATON_SHUFFLE   0x00001035
     
    #define CKM_BATON_WRAP   0x00001036
     
    #define CKM_ECDSA_KEY_PAIR_GEN   0x00001040
     
    #define CKM_EC_KEY_PAIR_GEN   0x00001040
     
    #define CKM_ECDSA   0x00001041
     
    #define CKM_ECDSA_SHA1   0x00001042
     
    #define CKM_ECDH1_DERIVE   0x00001050
     
    #define CKM_ECDH1_COFACTOR_DERIVE   0x00001051
     
    #define CKM_ECMQV_DERIVE   0x00001052
     
    #define CKM_JUNIPER_KEY_GEN   0x00001060
     
    #define CKM_JUNIPER_ECB128   0x00001061
     
    #define CKM_JUNIPER_CBC128   0x00001062
     
    #define CKM_JUNIPER_COUNTER   0x00001063
     
    #define CKM_JUNIPER_SHUFFLE   0x00001064
     
    #define CKM_JUNIPER_WRAP   0x00001065
     
    #define CKM_FASTHASH   0x00001070
     
    #define CKM_AES_KEY_GEN   0x00001080
     
    #define CKM_AES_ECB   0x00001081
     
    #define CKM_AES_CBC   0x00001082
     
    #define CKM_AES_MAC   0x00001083
     
    #define CKM_AES_MAC_GENERAL   0x00001084
     
    #define CKM_AES_CBC_PAD   0x00001085
     
    #define CKM_DSA_PARAMETER_GEN   0x00002000
     
    #define CKM_DH_PKCS_PARAMETER_GEN   0x00002001
     
    #define CKM_X9_42_DH_PARAMETER_GEN   0x00002002
     
    #define CKM_VENDOR_DEFINED   0x80000000
     
    #define CKF_HW   0x00000001 /* performed by HW */
     
    #define CKF_ENCRYPT   0x00000100
     
    #define CKF_DECRYPT   0x00000200
     
    #define CKF_DIGEST   0x00000400
     
    #define CKF_SIGN   0x00000800
     
    #define CKF_SIGN_RECOVER   0x00001000
     
    #define CKF_VERIFY   0x00002000
     
    #define CKF_VERIFY_RECOVER   0x00004000
     
    #define CKF_GENERATE   0x00008000
     
    #define CKF_GENERATE_KEY_PAIR   0x00010000
     
    #define CKF_WRAP   0x00020000
     
    #define CKF_UNWRAP   0x00040000
     
    #define CKF_DERIVE   0x00080000
     
    #define CKF_EC_F_P   0x00100000
     
    #define CKF_EC_F_2M   0x00200000
     
    #define CKF_EC_ECPARAMETERS   0x00400000
     
    #define CKF_EC_NAMEDCURVE   0x00800000
     
    #define CKF_EC_UNCOMPRESS   0x01000000
     
    #define CKF_EC_COMPRESS   0x02000000
     
    #define CKF_EXTENSION   0x80000000 /* FALSE for 2.01 */
     
    #define CKR_OK   0x00000000
     
    #define CKR_CANCEL   0x00000001
     
    #define CKR_HOST_MEMORY   0x00000002
     
    #define CKR_SLOT_ID_INVALID   0x00000003
     
    #define CKR_GENERAL_ERROR   0x00000005
     
    #define CKR_FUNCTION_FAILED   0x00000006
     
    #define CKR_ARGUMENTS_BAD   0x00000007
     
    #define CKR_NO_EVENT   0x00000008
     
    #define CKR_NEED_TO_CREATE_THREADS   0x00000009
     
    #define CKR_CANT_LOCK   0x0000000A
     
    #define CKR_ATTRIBUTE_READ_ONLY   0x00000010
     
    #define CKR_ATTRIBUTE_SENSITIVE   0x00000011
     
    #define CKR_ATTRIBUTE_TYPE_INVALID   0x00000012
     
    #define CKR_ATTRIBUTE_VALUE_INVALID   0x00000013
     
    #define CKR_DATA_INVALID   0x00000020
     
    #define CKR_DATA_LEN_RANGE   0x00000021
     
    #define CKR_DEVICE_ERROR   0x00000030
     
    #define CKR_DEVICE_MEMORY   0x00000031
     
    #define CKR_DEVICE_REMOVED   0x00000032
     
    #define CKR_ENCRYPTED_DATA_INVALID   0x00000040
     
    #define CKR_ENCRYPTED_DATA_LEN_RANGE   0x00000041
     
    #define CKR_FUNCTION_CANCELED   0x00000050
     
    #define CKR_FUNCTION_NOT_PARALLEL   0x00000051
     
    #define CKR_FUNCTION_NOT_SUPPORTED   0x00000054
     
    #define CKR_KEY_HANDLE_INVALID   0x00000060
     
    #define CKR_KEY_SIZE_RANGE   0x00000062
     
    #define CKR_KEY_TYPE_INCONSISTENT   0x00000063
     
    #define CKR_KEY_NOT_NEEDED   0x00000064
     
    #define CKR_KEY_CHANGED   0x00000065
     
    #define CKR_KEY_NEEDED   0x00000066
     
    #define CKR_KEY_INDIGESTIBLE   0x00000067
     
    #define CKR_KEY_FUNCTION_NOT_PERMITTED   0x00000068
     
    #define CKR_KEY_NOT_WRAPPABLE   0x00000069
     
    #define CKR_KEY_UNEXTRACTABLE   0x0000006A
     
    #define CKR_MECHANISM_INVALID   0x00000070
     
    #define CKR_MECHANISM_PARAM_INVALID   0x00000071
     
    #define CKR_OBJECT_HANDLE_INVALID   0x00000082
     
    #define CKR_OPERATION_ACTIVE   0x00000090
     
    #define CKR_OPERATION_NOT_INITIALIZED   0x00000091
     
    #define CKR_PIN_INCORRECT   0x000000A0
     
    #define CKR_PIN_INVALID   0x000000A1
     
    #define CKR_PIN_LEN_RANGE   0x000000A2
     
    #define CKR_PIN_EXPIRED   0x000000A3
     
    #define CKR_PIN_LOCKED   0x000000A4
     
    #define CKR_SESSION_CLOSED   0x000000B0
     
    #define CKR_SESSION_COUNT   0x000000B1
     
    #define CKR_SESSION_HANDLE_INVALID   0x000000B3
     
    #define CKR_SESSION_PARALLEL_NOT_SUPPORTED   0x000000B4
     
    #define CKR_SESSION_READ_ONLY   0x000000B5
     
    #define CKR_SESSION_EXISTS   0x000000B6
     
    #define CKR_SESSION_READ_ONLY_EXISTS   0x000000B7
     
    #define CKR_SESSION_READ_WRITE_SO_EXISTS   0x000000B8
     
    #define CKR_SIGNATURE_INVALID   0x000000C0
     
    #define CKR_SIGNATURE_LEN_RANGE   0x000000C1
     
    #define CKR_TEMPLATE_INCOMPLETE   0x000000D0
     
    #define CKR_TEMPLATE_INCONSISTENT   0x000000D1
     
    #define CKR_TOKEN_NOT_PRESENT   0x000000E0
     
    #define CKR_TOKEN_NOT_RECOGNIZED   0x000000E1
     
    #define CKR_TOKEN_WRITE_PROTECTED   0x000000E2
     
    #define CKR_UNWRAPPING_KEY_HANDLE_INVALID   0x000000F0
     
    #define CKR_UNWRAPPING_KEY_SIZE_RANGE   0x000000F1
     
    #define CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT   0x000000F2
     
    #define CKR_USER_ALREADY_LOGGED_IN   0x00000100
     
    #define CKR_USER_NOT_LOGGED_IN   0x00000101
     
    #define CKR_USER_PIN_NOT_INITIALIZED   0x00000102
     
    #define CKR_USER_TYPE_INVALID   0x00000103
     
    #define CKR_USER_ANOTHER_ALREADY_LOGGED_IN   0x00000104
     
    #define CKR_USER_TOO_MANY_TYPES   0x00000105
     
    #define CKR_WRAPPED_KEY_INVALID   0x00000110
     
    #define CKR_WRAPPED_KEY_LEN_RANGE   0x00000112
     
    #define CKR_WRAPPING_KEY_HANDLE_INVALID   0x00000113
     
    #define CKR_WRAPPING_KEY_SIZE_RANGE   0x00000114
     
    #define CKR_WRAPPING_KEY_TYPE_INCONSISTENT   0x00000115
     
    #define CKR_RANDOM_SEED_NOT_SUPPORTED   0x00000120
     
    #define CKR_RANDOM_NO_RNG   0x00000121
     
    #define CKR_DOMAIN_PARAMS_INVALID   0x00000130
     
    #define CKR_BUFFER_TOO_SMALL   0x00000150
     
    #define CKR_SAVED_STATE_INVALID   0x00000160
     
    #define CKR_INFORMATION_SENSITIVE   0x00000170
     
    #define CKR_STATE_UNSAVEABLE   0x00000180
     
    #define CKR_CRYPTOKI_NOT_INITIALIZED   0x00000190
     
    #define CKR_CRYPTOKI_ALREADY_INITIALIZED   0x00000191
     
    #define CKR_MUTEX_BAD   0x000001A0
     
    #define CKR_MUTEX_NOT_LOCKED   0x000001A1
     
    #define CKR_VENDOR_DEFINED   0x80000000
     
    #define CKF_LIBRARY_CANT_CREATE_OS_THREADS   0x00000001
     
    #define CKF_OS_LOCKING_OK   0x00000002
     
    #define CKF_DONT_BLOCK   1
     
    #define CKG_MGF1_SHA1   0x00000001
     
    #define CKZ_DATA_SPECIFIED   0x00000001
     
    #define CKD_NULL   0x00000001
     
    #define CKD_SHA1_KDF   0x00000002
     
    #define CKD_NULL   0x00000001
     
    #define CKD_SHA1_KDF_ASN1   0x00000003
     
    #define CKD_SHA1_KDF_CONCATENATE   0x00000004
     
    #define CKP_PKCS5_PBKD2_HMAC_SHA1   0x00000001
     
    #define CKZ_SALT_SPECIFIED   0x00000001
     

    Typedefs

    typedef unsigned char CK_BYTE
     
    typedef CK_BYTE CK_CHAR
     
    typedef CK_BYTE CK_UTF8CHAR
     
    typedef CK_BYTE CK_BBOOL
     
    typedef unsigned long int CK_ULONG
     
    typedef long int CK_LONG
     
    typedef CK_ULONG CK_FLAGS
     
    typedef CK_BYTE CK_PTR CK_BYTE_PTR
     
    typedef CK_CHAR CK_PTR CK_CHAR_PTR
     
    typedef CK_UTF8CHAR CK_PTR CK_UTF8CHAR_PTR
     
    typedef CK_ULONG CK_PTR CK_ULONG_PTR
     
    typedef void CK_PTR CK_VOID_PTR
     
    typedef CK_VOID_PTR CK_PTR CK_VOID_PTR_PTR
     
    typedef struct CK_VERSION CK_VERSION
     
    typedef CK_VERSION CK_PTR CK_VERSION_PTR
     
    typedef struct CK_INFO CK_INFO
     
    typedef CK_INFO CK_PTR CK_INFO_PTR
     
    typedef CK_ULONG CK_NOTIFICATION
     
    typedef CK_ULONG CK_SLOT_ID
     
    typedef CK_SLOT_ID CK_PTR CK_SLOT_ID_PTR
     
    typedef struct CK_SLOT_INFO CK_SLOT_INFO
     
    typedef CK_SLOT_INFO CK_PTR CK_SLOT_INFO_PTR
     
    typedef struct CK_TOKEN_INFO CK_TOKEN_INFO
     
    typedef CK_TOKEN_INFO CK_PTR CK_TOKEN_INFO_PTR
     
    typedef CK_ULONG CK_SESSION_HANDLE
     
    typedef CK_SESSION_HANDLE CK_PTR CK_SESSION_HANDLE_PTR
     
    typedef CK_ULONG CK_USER_TYPE
     
    typedef CK_ULONG CK_STATE
     
    typedef struct CK_SESSION_INFO CK_SESSION_INFO
     
    typedef CK_SESSION_INFO CK_PTR CK_SESSION_INFO_PTR
     
    typedef CK_ULONG CK_OBJECT_HANDLE
     
    typedef CK_OBJECT_HANDLE CK_PTR CK_OBJECT_HANDLE_PTR
     
    typedef CK_ULONG CK_OBJECT_CLASS
     
    typedef CK_OBJECT_CLASS CK_PTR CK_OBJECT_CLASS_PTR
     
    typedef CK_ULONG CK_HW_FEATURE_TYPE
     
    typedef CK_ULONG CK_KEY_TYPE
     
    typedef CK_ULONG CK_CERTIFICATE_TYPE
     
    typedef CK_ULONG CK_ATTRIBUTE_TYPE
     
    typedef struct CK_ATTRIBUTE CK_ATTRIBUTE
     
    typedef CK_ATTRIBUTE CK_PTR CK_ATTRIBUTE_PTR
     
    typedef struct CK_DATE CK_DATE
     
    typedef CK_ULONG CK_MECHANISM_TYPE
     
    typedef CK_MECHANISM_TYPE CK_PTR CK_MECHANISM_TYPE_PTR
     
    typedef struct CK_MECHANISM CK_MECHANISM
     
    typedef CK_MECHANISM CK_PTR CK_MECHANISM_PTR
     
    typedef struct CK_MECHANISM_INFO CK_MECHANISM_INFO
     
    typedef CK_MECHANISM_INFO CK_PTR CK_MECHANISM_INFO_PTR
     
    typedef CK_ULONG CK_RV
     
    typedef CK_NOTIFICATION event
     
    typedef CK_NOTIFICATION CK_VOID_PTR pApplication
     
    typedef struct CK_FUNCTION_LIST CK_FUNCTION_LIST
     
    typedef CK_FUNCTION_LIST CK_PTR CK_FUNCTION_LIST_PTR
     
    typedef CK_FUNCTION_LIST_PTR CK_PTR CK_FUNCTION_LIST_PTR_PTR
     
    typedef struct CK_C_INITIALIZE_ARGS CK_C_INITIALIZE_ARGS
     
    typedef CK_C_INITIALIZE_ARGS CK_PTR CK_C_INITIALIZE_ARGS_PTR
     
    typedef CK_ULONG CK_RSA_PKCS_MGF_TYPE
     
    typedef CK_RSA_PKCS_MGF_TYPE CK_PTR CK_RSA_PKCS_MGF_TYPE_PTR
     
    typedef CK_ULONG CK_RSA_PKCS_OAEP_SOURCE_TYPE
     
    typedef CK_RSA_PKCS_OAEP_SOURCE_TYPE CK_PTR CK_RSA_PKCS_OAEP_SOURCE_TYPE_PTR
     
    typedef struct CK_RSA_PKCS_OAEP_PARAMS CK_RSA_PKCS_OAEP_PARAMS
     
    typedef CK_RSA_PKCS_OAEP_PARAMS CK_PTR CK_RSA_PKCS_OAEP_PARAMS_PTR
     
    typedef struct CK_RSA_PKCS_PSS_PARAMS CK_RSA_PKCS_PSS_PARAMS
     
    typedef CK_RSA_PKCS_PSS_PARAMS CK_PTR CK_RSA_PKCS_PSS_PARAMS_PTR
     
    typedef CK_ULONG CK_EC_KDF_TYPE
     
    typedef struct CK_ECDH1_DERIVE_PARAMS CK_ECDH1_DERIVE_PARAMS
     
    typedef CK_ECDH1_DERIVE_PARAMS CK_PTR CK_ECDH1_DERIVE_PARAMS_PTR
     
    typedef struct CK_ECDH2_DERIVE_PARAMS CK_ECDH2_DERIVE_PARAMS
     
    typedef CK_ECDH2_DERIVE_PARAMS CK_PTR CK_ECDH2_DERIVE_PARAMS_PTR
     
    typedef CK_ULONG CK_X9_42_DH_KDF_TYPE
     
    typedef CK_X9_42_DH_KDF_TYPE CK_PTR CK_X9_42_DH_KDF_TYPE_PTR
     
    typedef struct CK_X9_42_DH1_DERIVE_PARAMS CK_X9_42_DH1_DERIVE_PARAMS
     
    typedef struct CK_X9_42_DH1_DERIVE_PARAMS CK_PTR CK_X9_42_DH1_DERIVE_PARAMS_PTR
     
    typedef struct CK_X9_42_DH2_DERIVE_PARAMS CK_X9_42_DH2_DERIVE_PARAMS
     
    typedef CK_X9_42_DH2_DERIVE_PARAMS CK_PTR CK_X9_42_DH2_DERIVE_PARAMS_PTR
     
    typedef struct CK_KEA_DERIVE_PARAMS CK_KEA_DERIVE_PARAMS
     
    typedef CK_KEA_DERIVE_PARAMS CK_PTR CK_KEA_DERIVE_PARAMS_PTR
     
    typedef CK_ULONG CK_RC2_PARAMS
     
    typedef CK_RC2_PARAMS CK_PTR CK_RC2_PARAMS_PTR
     
    typedef struct CK_RC2_CBC_PARAMS CK_RC2_CBC_PARAMS
     
    typedef CK_RC2_CBC_PARAMS CK_PTR CK_RC2_CBC_PARAMS_PTR
     
    typedef struct CK_RC2_MAC_GENERAL_PARAMS CK_RC2_MAC_GENERAL_PARAMS
     
    typedef CK_RC2_MAC_GENERAL_PARAMS CK_PTR CK_RC2_MAC_GENERAL_PARAMS_PTR
     
    typedef struct CK_RC5_PARAMS CK_RC5_PARAMS
     
    typedef CK_RC5_PARAMS CK_PTR CK_RC5_PARAMS_PTR
     
    typedef struct CK_RC5_CBC_PARAMS CK_RC5_CBC_PARAMS
     
    typedef CK_RC5_CBC_PARAMS CK_PTR CK_RC5_CBC_PARAMS_PTR
     
    typedef struct CK_RC5_MAC_GENERAL_PARAMS CK_RC5_MAC_GENERAL_PARAMS
     
    typedef CK_RC5_MAC_GENERAL_PARAMS CK_PTR CK_RC5_MAC_GENERAL_PARAMS_PTR
     
    typedef CK_ULONG CK_MAC_GENERAL_PARAMS
     
    typedef CK_MAC_GENERAL_PARAMS CK_PTR CK_MAC_GENERAL_PARAMS_PTR
     
    typedef struct CK_SKIPJACK_PRIVATE_WRAP_PARAMS CK_SKIPJACK_PRIVATE_WRAP_PARAMS
     
    typedef CK_SKIPJACK_PRIVATE_WRAP_PARAMS CK_PTR CK_SKIPJACK_PRIVATE_WRAP_PTR
     
    typedef struct CK_SKIPJACK_RELAYX_PARAMS CK_SKIPJACK_RELAYX_PARAMS
     
    typedef CK_SKIPJACK_RELAYX_PARAMS CK_PTR CK_SKIPJACK_RELAYX_PARAMS_PTR
     
    typedef struct CK_PBE_PARAMS CK_PBE_PARAMS
     
    typedef CK_PBE_PARAMS CK_PTR CK_PBE_PARAMS_PTR
     
    typedef struct CK_KEY_WRAP_SET_OAEP_PARAMS CK_KEY_WRAP_SET_OAEP_PARAMS
     
    typedef CK_KEY_WRAP_SET_OAEP_PARAMS CK_PTR CK_KEY_WRAP_SET_OAEP_PARAMS_PTR
     
    typedef struct CK_SSL3_RANDOM_DATA CK_SSL3_RANDOM_DATA
     
    typedef struct CK_SSL3_MASTER_KEY_DERIVE_PARAMS CK_SSL3_MASTER_KEY_DERIVE_PARAMS
     
    typedef struct CK_SSL3_MASTER_KEY_DERIVE_PARAMS CK_PTR CK_SSL3_MASTER_KEY_DERIVE_PARAMS_PTR
     
    typedef struct CK_SSL3_KEY_MAT_OUT CK_SSL3_KEY_MAT_OUT
     
    typedef CK_SSL3_KEY_MAT_OUT CK_PTR CK_SSL3_KEY_MAT_OUT_PTR
     
    typedef struct CK_SSL3_KEY_MAT_PARAMS CK_SSL3_KEY_MAT_PARAMS
     
    typedef CK_SSL3_KEY_MAT_PARAMS CK_PTR CK_SSL3_KEY_MAT_PARAMS_PTR
     
    typedef struct CK_KEY_DERIVATION_STRING_DATA CK_KEY_DERIVATION_STRING_DATA
     
    typedef CK_KEY_DERIVATION_STRING_DATA CK_PTR CK_KEY_DERIVATION_STRING_DATA_PTR
     
    typedef CK_ULONG CK_EXTRACT_PARAMS
     
    typedef CK_EXTRACT_PARAMS CK_PTR CK_EXTRACT_PARAMS_PTR
     
    typedef CK_ULONG CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE
     
    typedef CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE CK_PTR CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE_PTR
     
    typedef CK_ULONG CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE
     
    typedef CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE CK_PTR CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE_PTR
     
    typedef struct CK_PKCS5_PBKD2_PARAMS CK_PKCS5_PBKD2_PARAMS
     
    typedef CK_PKCS5_PBKD2_PARAMS CK_PTR CK_PKCS5_PBKD2_PARAMS_PTR
     

    Functions

    typedef CK_CALLBACK_FUNCTION (CK_RV, CK_NOTIFY)(CK_SESSION_HANDLE hSession
     
    typedef CK_CALLBACK_FUNCTION (CK_RV, CK_CREATEMUTEX)(CK_VOID_PTR_PTR ppMutex)
     
    typedef CK_CALLBACK_FUNCTION (CK_RV, CK_DESTROYMUTEX)(CK_VOID_PTR pMutex)
     
    typedef CK_CALLBACK_FUNCTION (CK_RV, CK_LOCKMUTEX)(CK_VOID_PTR pMutex)
     
    typedef CK_CALLBACK_FUNCTION (CK_RV, CK_UNLOCKMUTEX)(CK_VOID_PTR pMutex)
     

    Macro Definition Documentation

    ◆ CK_EFFECTIVELY_INFINITE

    #define CK_EFFECTIVELY_INFINITE   0

    Definition at line 64 of file pkcs11t.h.

    ◆ CK_FALSE

    #define CK_FALSE   0

    Definition at line 37 of file pkcs11t.h.

    ◆ CK_INVALID_HANDLE

    #define CK_INVALID_HANDLE   0

    Definition at line 79 of file pkcs11t.h.

    ◆ CK_TRUE

    #define CK_TRUE   1

    Definition at line 36 of file pkcs11t.h.

    ◆ CK_UNAVAILABLE_INFORMATION

    #define CK_UNAVAILABLE_INFORMATION   (~0UL)

    Definition at line 63 of file pkcs11t.h.

    ◆ CKA_AC_ISSUER

    #define CKA_AC_ISSUER   0x00000083

    Definition at line 420 of file pkcs11t.h.

    ◆ CKA_ALWAYS_SENSITIVE

    #define CKA_ALWAYS_SENSITIVE   0x00000165

    Definition at line 470 of file pkcs11t.h.

    ◆ CKA_APPLICATION

    #define CKA_APPLICATION   0x00000010

    Definition at line 408 of file pkcs11t.h.

    ◆ CKA_ATTR_TYPES

    #define CKA_ATTR_TYPES   0x00000085

    Definition at line 422 of file pkcs11t.h.

    ◆ CKA_AUTH_PIN_FLAGS

    #define CKA_AUTH_PIN_FLAGS   0x00000201

    Definition at line 488 of file pkcs11t.h.

    ◆ CKA_BASE

    #define CKA_BASE   0x00000132

    Definition at line 453 of file pkcs11t.h.

    ◆ CKA_CERTIFICATE_TYPE

    #define CKA_CERTIFICATE_TYPE   0x00000080

    Definition at line 414 of file pkcs11t.h.

    ◆ CKA_CLASS

    #define CKA_CLASS   0x00000000

    Definition at line 404 of file pkcs11t.h.

    ◆ CKA_COEFFICIENT

    #define CKA_COEFFICIENT   0x00000128

    Definition at line 450 of file pkcs11t.h.

    ◆ CKA_DECRYPT

    #define CKA_DECRYPT   0x00000105

    Definition at line 432 of file pkcs11t.h.

    ◆ CKA_DERIVE

    #define CKA_DERIVE   0x0000010C

    Definition at line 439 of file pkcs11t.h.

    ◆ CKA_EC_PARAMS

    #define CKA_EC_PARAMS   0x00000180

    Definition at line 480 of file pkcs11t.h.

    ◆ CKA_EC_POINT

    #define CKA_EC_POINT   0x00000181

    Definition at line 482 of file pkcs11t.h.

    ◆ CKA_ECDSA_PARAMS

    #define CKA_ECDSA_PARAMS   0x00000180

    Definition at line 479 of file pkcs11t.h.

    ◆ CKA_ENCRYPT

    #define CKA_ENCRYPT   0x00000104

    Definition at line 431 of file pkcs11t.h.

    ◆ CKA_END_DATE

    #define CKA_END_DATE   0x00000111

    Definition at line 441 of file pkcs11t.h.

    ◆ CKA_EXPONENT_1

    #define CKA_EXPONENT_1   0x00000126

    Definition at line 448 of file pkcs11t.h.

    ◆ CKA_EXPONENT_2

    #define CKA_EXPONENT_2   0x00000127

    Definition at line 449 of file pkcs11t.h.

    ◆ CKA_EXTRACTABLE

    #define CKA_EXTRACTABLE   0x00000162

    Definition at line 467 of file pkcs11t.h.

    ◆ CKA_HAS_RESET

    #define CKA_HAS_RESET   0x00000302

    Definition at line 491 of file pkcs11t.h.

    ◆ CKA_HW_FEATURE_TYPE

    #define CKA_HW_FEATURE_TYPE   0x00000300

    Definition at line 489 of file pkcs11t.h.

    ◆ CKA_ID

    #define CKA_ID   0x00000102

    Definition at line 429 of file pkcs11t.h.

    ◆ CKA_ISSUER

    #define CKA_ISSUER   0x00000081

    Definition at line 415 of file pkcs11t.h.

    ◆ CKA_KEY_GEN_MECHANISM

    #define CKA_KEY_GEN_MECHANISM   0x00000166

    Definition at line 473 of file pkcs11t.h.

    ◆ CKA_KEY_TYPE

    #define CKA_KEY_TYPE   0x00000100

    Definition at line 427 of file pkcs11t.h.

    ◆ CKA_LABEL

    #define CKA_LABEL   0x00000003

    Definition at line 407 of file pkcs11t.h.

    ◆ CKA_LOCAL

    #define CKA_LOCAL   0x00000163

    Definition at line 468 of file pkcs11t.h.

    ◆ CKA_MODIFIABLE

    #define CKA_MODIFIABLE   0x00000170

    Definition at line 475 of file pkcs11t.h.

    ◆ CKA_MODULUS

    #define CKA_MODULUS   0x00000120

    Definition at line 442 of file pkcs11t.h.

    ◆ CKA_MODULUS_BITS

    #define CKA_MODULUS_BITS   0x00000121

    Definition at line 443 of file pkcs11t.h.

    ◆ CKA_NEVER_EXTRACTABLE

    #define CKA_NEVER_EXTRACTABLE   0x00000164

    Definition at line 469 of file pkcs11t.h.

    ◆ CKA_OBJECT_ID

    #define CKA_OBJECT_ID   0x00000012

    Definition at line 412 of file pkcs11t.h.

    ◆ CKA_OWNER

    #define CKA_OWNER   0x00000084

    Definition at line 421 of file pkcs11t.h.

    ◆ CKA_PRIME

    #define CKA_PRIME   0x00000130

    Definition at line 451 of file pkcs11t.h.

    ◆ CKA_PRIME_1

    #define CKA_PRIME_1   0x00000124

    Definition at line 446 of file pkcs11t.h.

    ◆ CKA_PRIME_2

    #define CKA_PRIME_2   0x00000125

    Definition at line 447 of file pkcs11t.h.

    ◆ CKA_PRIME_BITS

    #define CKA_PRIME_BITS   0x00000133

    Definition at line 456 of file pkcs11t.h.

    ◆ CKA_PRIVATE

    #define CKA_PRIVATE   0x00000002

    Definition at line 406 of file pkcs11t.h.

    ◆ CKA_PRIVATE_EXPONENT

    #define CKA_PRIVATE_EXPONENT   0x00000123

    Definition at line 445 of file pkcs11t.h.

    ◆ CKA_PUBLIC_EXPONENT

    #define CKA_PUBLIC_EXPONENT   0x00000122

    Definition at line 444 of file pkcs11t.h.

    ◆ CKA_RESET_ON_INIT

    #define CKA_RESET_ON_INIT   0x00000301

    Definition at line 490 of file pkcs11t.h.

    ◆ CKA_SECONDARY_AUTH

    #define CKA_SECONDARY_AUTH   0x00000200

    Definition at line 487 of file pkcs11t.h.

    ◆ CKA_SENSITIVE

    #define CKA_SENSITIVE   0x00000103

    Definition at line 430 of file pkcs11t.h.

    ◆ CKA_SERIAL_NUMBER

    #define CKA_SERIAL_NUMBER   0x00000082

    Definition at line 416 of file pkcs11t.h.

    ◆ CKA_SIGN

    #define CKA_SIGN   0x00000108

    Definition at line 435 of file pkcs11t.h.

    ◆ CKA_SIGN_RECOVER

    #define CKA_SIGN_RECOVER   0x00000109

    Definition at line 436 of file pkcs11t.h.

    ◆ CKA_START_DATE

    #define CKA_START_DATE   0x00000110

    Definition at line 440 of file pkcs11t.h.

    ◆ CKA_SUB_PRIME_BITS

    #define CKA_SUB_PRIME_BITS   CKA_SUBPRIME_BITS

    Definition at line 458 of file pkcs11t.h.

    ◆ CKA_SUBJECT

    #define CKA_SUBJECT   0x00000101

    Definition at line 428 of file pkcs11t.h.

    ◆ CKA_SUBPRIME

    #define CKA_SUBPRIME   0x00000131

    Definition at line 452 of file pkcs11t.h.

    ◆ CKA_SUBPRIME_BITS

    #define CKA_SUBPRIME_BITS   0x00000134

    Definition at line 457 of file pkcs11t.h.

    ◆ CKA_TOKEN

    #define CKA_TOKEN   0x00000001

    Definition at line 405 of file pkcs11t.h.

    ◆ CKA_TRUSTED

    #define CKA_TRUSTED   0x00000086

    Definition at line 425 of file pkcs11t.h.

    ◆ CKA_UNWRAP

    #define CKA_UNWRAP   0x00000107

    Definition at line 434 of file pkcs11t.h.

    ◆ CKA_VALUE

    #define CKA_VALUE   0x00000011

    Definition at line 409 of file pkcs11t.h.

    ◆ CKA_VALUE_BITS

    #define CKA_VALUE_BITS   0x00000160

    Definition at line 461 of file pkcs11t.h.

    ◆ CKA_VALUE_LEN

    #define CKA_VALUE_LEN   0x00000161

    Definition at line 462 of file pkcs11t.h.

    ◆ CKA_VENDOR_DEFINED

    #define CKA_VENDOR_DEFINED   0x80000000

    Definition at line 493 of file pkcs11t.h.

    ◆ CKA_VERIFY

    #define CKA_VERIFY   0x0000010A

    Definition at line 437 of file pkcs11t.h.

    ◆ CKA_VERIFY_RECOVER

    #define CKA_VERIFY_RECOVER   0x0000010B

    Definition at line 438 of file pkcs11t.h.

    ◆ CKA_WRAP

    #define CKA_WRAP   0x00000106

    Definition at line 433 of file pkcs11t.h.

    ◆ CKC_VENDOR_DEFINED

    #define CKC_VENDOR_DEFINED   0x80000000

    Definition at line 394 of file pkcs11t.h.

    ◆ CKC_X_509

    #define CKC_X_509   0x00000000

    Definition at line 392 of file pkcs11t.h.

    ◆ CKC_X_509_ATTR_CERT

    #define CKC_X_509_ATTR_CERT   0x00000001

    Definition at line 393 of file pkcs11t.h.

    ◆ CKD_NULL [1/2]

    #define CKD_NULL   0x00000001

    Definition at line 1130 of file pkcs11t.h.

    ◆ CKD_NULL [2/2]

    #define CKD_NULL   0x00000001

    Definition at line 1130 of file pkcs11t.h.

    ◆ CKD_SHA1_KDF

    #define CKD_SHA1_KDF   0x00000002

    Definition at line 1089 of file pkcs11t.h.

    ◆ CKD_SHA1_KDF_ASN1

    #define CKD_SHA1_KDF_ASN1   0x00000003

    Definition at line 1131 of file pkcs11t.h.

    ◆ CKD_SHA1_KDF_CONCATENATE

    #define CKD_SHA1_KDF_CONCATENATE   0x00000004

    Definition at line 1132 of file pkcs11t.h.

    ◆ CKF_CLOCK_ON_TOKEN

    #define CKF_CLOCK_ON_TOKEN   0x00000040

    Definition at line 189 of file pkcs11t.h.

    ◆ CKF_DECRYPT

    #define CKF_DECRYPT   0x00000200

    Definition at line 809 of file pkcs11t.h.

    ◆ CKF_DERIVE

    #define CKF_DERIVE   0x00080000

    Definition at line 819 of file pkcs11t.h.

    ◆ CKF_DIGEST

    #define CKF_DIGEST   0x00000400

    Definition at line 810 of file pkcs11t.h.

    ◆ CKF_DONT_BLOCK

    #define CKF_DONT_BLOCK   1

    Definition at line 1035 of file pkcs11t.h.

    ◆ CKF_DUAL_CRYPTO_OPERATIONS

    #define CKF_DUAL_CRYPTO_OPERATIONS   0x00000200

    Definition at line 201 of file pkcs11t.h.

    ◆ CKF_EC_COMPRESS

    #define CKF_EC_COMPRESS   0x02000000

    Definition at line 830 of file pkcs11t.h.

    ◆ CKF_EC_ECPARAMETERS

    #define CKF_EC_ECPARAMETERS   0x00400000

    Definition at line 827 of file pkcs11t.h.

    ◆ CKF_EC_F_2M

    #define CKF_EC_F_2M   0x00200000

    Definition at line 826 of file pkcs11t.h.

    ◆ CKF_EC_F_P

    #define CKF_EC_F_P   0x00100000

    Definition at line 825 of file pkcs11t.h.

    ◆ CKF_EC_NAMEDCURVE

    #define CKF_EC_NAMEDCURVE   0x00800000

    Definition at line 828 of file pkcs11t.h.

    ◆ CKF_EC_UNCOMPRESS

    #define CKF_EC_UNCOMPRESS   0x01000000

    Definition at line 829 of file pkcs11t.h.

    ◆ CKF_ENCRYPT

    #define CKF_ENCRYPT   0x00000100

    Definition at line 808 of file pkcs11t.h.

    ◆ CKF_EXTENSION

    #define CKF_EXTENSION   0x80000000 /* FALSE for 2.01 */

    Definition at line 832 of file pkcs11t.h.

    ◆ CKF_GENERATE

    #define CKF_GENERATE   0x00008000

    Definition at line 815 of file pkcs11t.h.

    ◆ CKF_GENERATE_KEY_PAIR

    #define CKF_GENERATE_KEY_PAIR   0x00010000

    Definition at line 816 of file pkcs11t.h.

    ◆ CKF_HW

    #define CKF_HW   0x00000001 /* performed by HW */

    Definition at line 801 of file pkcs11t.h.

    ◆ CKF_HW_SLOT

    #define CKF_HW_SLOT   0x00000004 /* hardware slot */

    Definition at line 136 of file pkcs11t.h.

    ◆ CKF_LIBRARY_CANT_CREATE_OS_THREADS

    #define CKF_LIBRARY_CANT_CREATE_OS_THREADS   0x00000001

    Definition at line 1026 of file pkcs11t.h.

    ◆ CKF_LOGIN_REQUIRED

    #define CKF_LOGIN_REQUIRED
    Value:
    0x00000004 /* user must
    * login */

    Definition at line 177 of file pkcs11t.h.

    ◆ CKF_OS_LOCKING_OK

    #define CKF_OS_LOCKING_OK   0x00000002

    Definition at line 1027 of file pkcs11t.h.

    ◆ CKF_PROTECTED_AUTHENTICATION_PATH

    #define CKF_PROTECTED_AUTHENTICATION_PATH   0x00000100

    Definition at line 194 of file pkcs11t.h.

    ◆ CKF_REMOVABLE_DEVICE

    #define CKF_REMOVABLE_DEVICE   0x00000002 /* removable devices */

    Definition at line 135 of file pkcs11t.h.

    ◆ CKF_RESTORE_KEY_NOT_NEEDED

    #define CKF_RESTORE_KEY_NOT_NEEDED   0x00000020

    Definition at line 184 of file pkcs11t.h.

    ◆ CKF_RNG

    #define CKF_RNG
    Value:
    0x00000001 /* has random #
    * generator */

    Definition at line 175 of file pkcs11t.h.

    ◆ CKF_RW_SESSION

    #define CKF_RW_SESSION   0x00000002 /* session is r/w */

    Definition at line 300 of file pkcs11t.h.

    ◆ CKF_SECONDARY_AUTHENTICATION

    #define CKF_SECONDARY_AUTHENTICATION   0x00000800

    Definition at line 213 of file pkcs11t.h.

    ◆ CKF_SERIAL_SESSION

    #define CKF_SERIAL_SESSION   0x00000004 /* no parallel */

    Definition at line 301 of file pkcs11t.h.

    ◆ CKF_SIGN

    #define CKF_SIGN   0x00000800

    Definition at line 811 of file pkcs11t.h.

    ◆ CKF_SIGN_RECOVER

    #define CKF_SIGN_RECOVER   0x00001000

    Definition at line 812 of file pkcs11t.h.

    ◆ CKF_SO_PIN_COUNT_LOW

    #define CKF_SO_PIN_COUNT_LOW   0x00100000

    Definition at line 238 of file pkcs11t.h.

    ◆ CKF_SO_PIN_FINAL_TRY

    #define CKF_SO_PIN_FINAL_TRY   0x00200000

    Definition at line 242 of file pkcs11t.h.

    ◆ CKF_SO_PIN_LOCKED

    #define CKF_SO_PIN_LOCKED   0x00400000

    Definition at line 247 of file pkcs11t.h.

    ◆ CKF_SO_PIN_TO_BE_CHANGED

    #define CKF_SO_PIN_TO_BE_CHANGED   0x00800000

    Definition at line 253 of file pkcs11t.h.

    ◆ CKF_TOKEN_INITIALIZED

    #define CKF_TOKEN_INITIALIZED   0x00000400

    Definition at line 208 of file pkcs11t.h.

    ◆ CKF_TOKEN_PRESENT

    #define CKF_TOKEN_PRESENT   0x00000001 /* a token is there */

    Definition at line 134 of file pkcs11t.h.

    ◆ CKF_UNWRAP

    #define CKF_UNWRAP   0x00040000

    Definition at line 818 of file pkcs11t.h.

    ◆ CKF_USER_PIN_COUNT_LOW

    #define CKF_USER_PIN_COUNT_LOW   0x00010000

    Definition at line 218 of file pkcs11t.h.

    ◆ CKF_USER_PIN_FINAL_TRY

    #define CKF_USER_PIN_FINAL_TRY   0x00020000

    Definition at line 222 of file pkcs11t.h.

    ◆ CKF_USER_PIN_INITIALIZED

    #define CKF_USER_PIN_INITIALIZED
    Value:
    0x00000008 /* normal user's
    * PIN is set */

    Definition at line 178 of file pkcs11t.h.

    ◆ CKF_USER_PIN_LOCKED

    #define CKF_USER_PIN_LOCKED   0x00040000

    Definition at line 227 of file pkcs11t.h.

    ◆ CKF_USER_PIN_TO_BE_CHANGED

    #define CKF_USER_PIN_TO_BE_CHANGED   0x00080000

    Definition at line 233 of file pkcs11t.h.

    ◆ CKF_VERIFY

    #define CKF_VERIFY   0x00002000

    Definition at line 813 of file pkcs11t.h.

    ◆ CKF_VERIFY_RECOVER

    #define CKF_VERIFY_RECOVER   0x00004000

    Definition at line 814 of file pkcs11t.h.

    ◆ CKF_WRAP

    #define CKF_WRAP   0x00020000

    Definition at line 817 of file pkcs11t.h.

    ◆ CKF_WRITE_PROTECTED

    #define CKF_WRITE_PROTECTED
    Value:
    0x00000002 /* token is
    * write-
    * protected */

    Definition at line 176 of file pkcs11t.h.

    ◆ CKG_MGF1_SHA1

    #define CKG_MGF1_SHA1   0x00000001

    Definition at line 1047 of file pkcs11t.h.

    ◆ CKH_CLOCK

    #define CKH_CLOCK   0x00000002

    Definition at line 341 of file pkcs11t.h.

    ◆ CKH_MONOTONIC_COUNTER

    #define CKH_MONOTONIC_COUNTER   0x00000001

    Definition at line 340 of file pkcs11t.h.

    ◆ CKH_VENDOR_DEFINED

    #define CKH_VENDOR_DEFINED   0x80000000

    Definition at line 342 of file pkcs11t.h.

    ◆ CKK_AES

    #define CKK_AES   0x0000001F

    Definition at line 379 of file pkcs11t.h.

    ◆ CKK_BATON

    #define CKK_BATON   0x0000001C

    Definition at line 376 of file pkcs11t.h.

    ◆ CKK_CAST

    #define CKK_CAST   0x00000016

    Definition at line 368 of file pkcs11t.h.

    ◆ CKK_CAST128

    #define CKK_CAST128   0x00000018

    Definition at line 372 of file pkcs11t.h.

    ◆ CKK_CAST3

    #define CKK_CAST3   0x00000017

    Definition at line 369 of file pkcs11t.h.

    ◆ CKK_CAST5

    #define CKK_CAST5   0x00000018

    Definition at line 371 of file pkcs11t.h.

    ◆ CKK_CDMF

    #define CKK_CDMF   0x0000001E

    Definition at line 378 of file pkcs11t.h.

    ◆ CKK_DES

    #define CKK_DES   0x00000013

    Definition at line 363 of file pkcs11t.h.

    ◆ CKK_DES2

    #define CKK_DES2   0x00000014

    Definition at line 364 of file pkcs11t.h.

    ◆ CKK_DES3

    #define CKK_DES3   0x00000015

    Definition at line 365 of file pkcs11t.h.

    ◆ CKK_DH

    #define CKK_DH   0x00000002

    Definition at line 351 of file pkcs11t.h.

    ◆ CKK_DSA

    #define CKK_DSA   0x00000001

    Definition at line 350 of file pkcs11t.h.

    ◆ CKK_EC

    #define CKK_EC   0x00000003

    Definition at line 356 of file pkcs11t.h.

    ◆ CKK_ECDSA

    #define CKK_ECDSA   0x00000003

    Definition at line 355 of file pkcs11t.h.

    ◆ CKK_GENERIC_SECRET

    #define CKK_GENERIC_SECRET   0x00000010

    Definition at line 360 of file pkcs11t.h.

    ◆ CKK_IDEA

    #define CKK_IDEA   0x0000001A

    Definition at line 374 of file pkcs11t.h.

    ◆ CKK_JUNIPER

    #define CKK_JUNIPER   0x0000001D

    Definition at line 377 of file pkcs11t.h.

    ◆ CKK_KEA

    #define CKK_KEA   0x00000005

    Definition at line 358 of file pkcs11t.h.

    ◆ CKK_RC2

    #define CKK_RC2   0x00000011

    Definition at line 361 of file pkcs11t.h.

    ◆ CKK_RC4

    #define CKK_RC4   0x00000012

    Definition at line 362 of file pkcs11t.h.

    ◆ CKK_RC5

    #define CKK_RC5   0x00000019

    Definition at line 373 of file pkcs11t.h.

    ◆ CKK_RSA

    #define CKK_RSA   0x00000000

    Definition at line 349 of file pkcs11t.h.

    ◆ CKK_SKIPJACK

    #define CKK_SKIPJACK   0x0000001B

    Definition at line 375 of file pkcs11t.h.

    ◆ CKK_VENDOR_DEFINED

    #define CKK_VENDOR_DEFINED   0x80000000

    Definition at line 381 of file pkcs11t.h.

    ◆ CKK_X9_42_DH

    #define CKK_X9_42_DH   0x00000004

    Definition at line 357 of file pkcs11t.h.

    ◆ CKM_AES_CBC

    #define CKM_AES_CBC   0x00001082

    Definition at line 764 of file pkcs11t.h.

    ◆ CKM_AES_CBC_PAD

    #define CKM_AES_CBC_PAD   0x00001085

    Definition at line 767 of file pkcs11t.h.

    ◆ CKM_AES_ECB

    #define CKM_AES_ECB   0x00001081

    Definition at line 763 of file pkcs11t.h.

    ◆ CKM_AES_KEY_GEN

    #define CKM_AES_KEY_GEN   0x00001080

    Definition at line 762 of file pkcs11t.h.

    ◆ CKM_AES_MAC

    #define CKM_AES_MAC   0x00001083

    Definition at line 765 of file pkcs11t.h.

    ◆ CKM_AES_MAC_GENERAL

    #define CKM_AES_MAC_GENERAL   0x00001084

    Definition at line 766 of file pkcs11t.h.

    ◆ CKM_BATON_CBC128

    #define CKM_BATON_CBC128   0x00001033

    Definition at line 731 of file pkcs11t.h.

    ◆ CKM_BATON_COUNTER

    #define CKM_BATON_COUNTER   0x00001034

    Definition at line 732 of file pkcs11t.h.

    ◆ CKM_BATON_ECB128

    #define CKM_BATON_ECB128   0x00001031

    Definition at line 729 of file pkcs11t.h.

    ◆ CKM_BATON_ECB96

    #define CKM_BATON_ECB96   0x00001032

    Definition at line 730 of file pkcs11t.h.

    ◆ CKM_BATON_KEY_GEN

    #define CKM_BATON_KEY_GEN   0x00001030

    Definition at line 728 of file pkcs11t.h.

    ◆ CKM_BATON_SHUFFLE

    #define CKM_BATON_SHUFFLE   0x00001035

    Definition at line 733 of file pkcs11t.h.

    ◆ CKM_BATON_WRAP

    #define CKM_BATON_WRAP   0x00001036

    Definition at line 734 of file pkcs11t.h.

    ◆ CKM_CAST128_CBC

    #define CKM_CAST128_CBC   0x00000322

    Definition at line 648 of file pkcs11t.h.

    ◆ CKM_CAST128_CBC_PAD

    #define CKM_CAST128_CBC_PAD   0x00000325

    Definition at line 654 of file pkcs11t.h.

    ◆ CKM_CAST128_ECB

    #define CKM_CAST128_ECB   0x00000321

    Definition at line 646 of file pkcs11t.h.

    ◆ CKM_CAST128_KEY_GEN

    #define CKM_CAST128_KEY_GEN   0x00000320

    Definition at line 644 of file pkcs11t.h.

    ◆ CKM_CAST128_MAC

    #define CKM_CAST128_MAC   0x00000323

    Definition at line 650 of file pkcs11t.h.

    ◆ CKM_CAST128_MAC_GENERAL

    #define CKM_CAST128_MAC_GENERAL   0x00000324

    Definition at line 652 of file pkcs11t.h.

    ◆ CKM_CAST3_CBC

    #define CKM_CAST3_CBC   0x00000312

    Definition at line 639 of file pkcs11t.h.

    ◆ CKM_CAST3_CBC_PAD

    #define CKM_CAST3_CBC_PAD   0x00000315

    Definition at line 642 of file pkcs11t.h.

    ◆ CKM_CAST3_ECB

    #define CKM_CAST3_ECB   0x00000311

    Definition at line 638 of file pkcs11t.h.

    ◆ CKM_CAST3_KEY_GEN

    #define CKM_CAST3_KEY_GEN   0x00000310

    Definition at line 637 of file pkcs11t.h.

    ◆ CKM_CAST3_MAC

    #define CKM_CAST3_MAC   0x00000313

    Definition at line 640 of file pkcs11t.h.

    ◆ CKM_CAST3_MAC_GENERAL

    #define CKM_CAST3_MAC_GENERAL   0x00000314

    Definition at line 641 of file pkcs11t.h.

    ◆ CKM_CAST5_CBC

    #define CKM_CAST5_CBC   0x00000322

    Definition at line 647 of file pkcs11t.h.

    ◆ CKM_CAST5_CBC_PAD

    #define CKM_CAST5_CBC_PAD   0x00000325

    Definition at line 653 of file pkcs11t.h.

    ◆ CKM_CAST5_ECB

    #define CKM_CAST5_ECB   0x00000321

    Definition at line 645 of file pkcs11t.h.

    ◆ CKM_CAST5_KEY_GEN

    #define CKM_CAST5_KEY_GEN   0x00000320

    Definition at line 643 of file pkcs11t.h.

    ◆ CKM_CAST5_MAC

    #define CKM_CAST5_MAC   0x00000323

    Definition at line 649 of file pkcs11t.h.

    ◆ CKM_CAST5_MAC_GENERAL

    #define CKM_CAST5_MAC_GENERAL   0x00000324

    Definition at line 651 of file pkcs11t.h.

    ◆ CKM_CAST_CBC

    #define CKM_CAST_CBC   0x00000302

    Definition at line 633 of file pkcs11t.h.

    ◆ CKM_CAST_CBC_PAD

    #define CKM_CAST_CBC_PAD   0x00000305

    Definition at line 636 of file pkcs11t.h.

    ◆ CKM_CAST_ECB

    #define CKM_CAST_ECB   0x00000301

    Definition at line 632 of file pkcs11t.h.

    ◆ CKM_CAST_KEY_GEN

    #define CKM_CAST_KEY_GEN   0x00000300

    Definition at line 631 of file pkcs11t.h.

    ◆ CKM_CAST_MAC

    #define CKM_CAST_MAC   0x00000303

    Definition at line 634 of file pkcs11t.h.

    ◆ CKM_CAST_MAC_GENERAL

    #define CKM_CAST_MAC_GENERAL   0x00000304

    Definition at line 635 of file pkcs11t.h.

    ◆ CKM_CDMF_CBC

    #define CKM_CDMF_CBC   0x00000142

    Definition at line 596 of file pkcs11t.h.

    ◆ CKM_CDMF_CBC_PAD

    #define CKM_CDMF_CBC_PAD   0x00000145

    Definition at line 599 of file pkcs11t.h.

    ◆ CKM_CDMF_ECB

    #define CKM_CDMF_ECB   0x00000141

    Definition at line 595 of file pkcs11t.h.

    ◆ CKM_CDMF_KEY_GEN

    #define CKM_CDMF_KEY_GEN   0x00000140

    Definition at line 594 of file pkcs11t.h.

    ◆ CKM_CDMF_MAC

    #define CKM_CDMF_MAC   0x00000143

    Definition at line 597 of file pkcs11t.h.

    ◆ CKM_CDMF_MAC_GENERAL

    #define CKM_CDMF_MAC_GENERAL   0x00000144

    Definition at line 598 of file pkcs11t.h.

    ◆ CKM_CONCATENATE_BASE_AND_DATA

    #define CKM_CONCATENATE_BASE_AND_DATA   0x00000362

    Definition at line 669 of file pkcs11t.h.

    ◆ CKM_CONCATENATE_BASE_AND_KEY

    #define CKM_CONCATENATE_BASE_AND_KEY   0x00000360

    Definition at line 668 of file pkcs11t.h.

    ◆ CKM_CONCATENATE_DATA_AND_BASE

    #define CKM_CONCATENATE_DATA_AND_BASE   0x00000363

    Definition at line 670 of file pkcs11t.h.

    ◆ CKM_DES2_KEY_GEN

    #define CKM_DES2_KEY_GEN   0x00000130

    Definition at line 583 of file pkcs11t.h.

    ◆ CKM_DES3_CBC

    #define CKM_DES3_CBC   0x00000133

    Definition at line 586 of file pkcs11t.h.

    ◆ CKM_DES3_CBC_PAD

    #define CKM_DES3_CBC_PAD   0x00000136

    Definition at line 593 of file pkcs11t.h.

    ◆ CKM_DES3_ECB

    #define CKM_DES3_ECB   0x00000132

    Definition at line 585 of file pkcs11t.h.

    ◆ CKM_DES3_KEY_GEN

    #define CKM_DES3_KEY_GEN   0x00000131

    Definition at line 584 of file pkcs11t.h.

    ◆ CKM_DES3_MAC

    #define CKM_DES3_MAC   0x00000134

    Definition at line 587 of file pkcs11t.h.

    ◆ CKM_DES3_MAC_GENERAL

    #define CKM_DES3_MAC_GENERAL   0x00000135

    Definition at line 592 of file pkcs11t.h.

    ◆ CKM_DES_CBC

    #define CKM_DES_CBC   0x00000122

    Definition at line 576 of file pkcs11t.h.

    ◆ CKM_DES_CBC_PAD

    #define CKM_DES_CBC_PAD   0x00000125

    Definition at line 581 of file pkcs11t.h.

    ◆ CKM_DES_ECB

    #define CKM_DES_ECB   0x00000121

    Definition at line 575 of file pkcs11t.h.

    ◆ CKM_DES_KEY_GEN

    #define CKM_DES_KEY_GEN   0x00000120

    Definition at line 574 of file pkcs11t.h.

    ◆ CKM_DES_MAC

    #define CKM_DES_MAC   0x00000123

    Definition at line 577 of file pkcs11t.h.

    ◆ CKM_DES_MAC_GENERAL

    #define CKM_DES_MAC_GENERAL   0x00000124

    Definition at line 580 of file pkcs11t.h.

    ◆ CKM_DH_PKCS_DERIVE

    #define CKM_DH_PKCS_DERIVE   0x00000021

    Definition at line 553 of file pkcs11t.h.

    ◆ CKM_DH_PKCS_KEY_PAIR_GEN

    #define CKM_DH_PKCS_KEY_PAIR_GEN   0x00000020

    Definition at line 552 of file pkcs11t.h.

    ◆ CKM_DH_PKCS_PARAMETER_GEN

    #define CKM_DH_PKCS_PARAMETER_GEN   0x00002001

    Definition at line 769 of file pkcs11t.h.

    ◆ CKM_DSA

    #define CKM_DSA   0x00000011

    Definition at line 550 of file pkcs11t.h.

    ◆ CKM_DSA_KEY_PAIR_GEN

    #define CKM_DSA_KEY_PAIR_GEN   0x00000010

    Definition at line 549 of file pkcs11t.h.

    ◆ CKM_DSA_PARAMETER_GEN

    #define CKM_DSA_PARAMETER_GEN   0x00002000

    Definition at line 768 of file pkcs11t.h.

    ◆ CKM_DSA_SHA1

    #define CKM_DSA_SHA1   0x00000012

    Definition at line 551 of file pkcs11t.h.

    ◆ CKM_EC_KEY_PAIR_GEN

    #define CKM_EC_KEY_PAIR_GEN   0x00001040

    Definition at line 739 of file pkcs11t.h.

    ◆ CKM_ECDH1_COFACTOR_DERIVE

    #define CKM_ECDH1_COFACTOR_DERIVE   0x00001051

    Definition at line 747 of file pkcs11t.h.

    ◆ CKM_ECDH1_DERIVE

    #define CKM_ECDH1_DERIVE   0x00001050

    Definition at line 746 of file pkcs11t.h.

    ◆ CKM_ECDSA

    #define CKM_ECDSA   0x00001041

    Definition at line 741 of file pkcs11t.h.

    ◆ CKM_ECDSA_KEY_PAIR_GEN

    #define CKM_ECDSA_KEY_PAIR_GEN   0x00001040

    Definition at line 738 of file pkcs11t.h.

    ◆ CKM_ECDSA_SHA1

    #define CKM_ECDSA_SHA1   0x00001042

    Definition at line 742 of file pkcs11t.h.

    ◆ CKM_ECMQV_DERIVE

    #define CKM_ECMQV_DERIVE   0x00001052

    Definition at line 748 of file pkcs11t.h.

    ◆ CKM_EXTRACT_KEY_FROM_KEY

    #define CKM_EXTRACT_KEY_FROM_KEY   0x00000365

    Definition at line 672 of file pkcs11t.h.

    ◆ CKM_FASTHASH

    #define CKM_FASTHASH   0x00001070

    Definition at line 756 of file pkcs11t.h.

    ◆ CKM_FORTEZZA_TIMESTAMP

    #define CKM_FORTEZZA_TIMESTAMP   0x00001020

    Definition at line 727 of file pkcs11t.h.

    ◆ CKM_GENERIC_SECRET_KEY_GEN

    #define CKM_GENERIC_SECRET_KEY_GEN   0x00000350

    Definition at line 667 of file pkcs11t.h.

    ◆ CKM_IDEA_CBC

    #define CKM_IDEA_CBC   0x00000342

    Definition at line 663 of file pkcs11t.h.

    ◆ CKM_IDEA_CBC_PAD

    #define CKM_IDEA_CBC_PAD   0x00000345

    Definition at line 666 of file pkcs11t.h.

    ◆ CKM_IDEA_ECB

    #define CKM_IDEA_ECB   0x00000341

    Definition at line 662 of file pkcs11t.h.

    ◆ CKM_IDEA_KEY_GEN

    #define CKM_IDEA_KEY_GEN   0x00000340

    Definition at line 661 of file pkcs11t.h.

    ◆ CKM_IDEA_MAC

    #define CKM_IDEA_MAC   0x00000343

    Definition at line 664 of file pkcs11t.h.

    ◆ CKM_IDEA_MAC_GENERAL

    #define CKM_IDEA_MAC_GENERAL   0x00000344

    Definition at line 665 of file pkcs11t.h.

    ◆ CKM_JUNIPER_CBC128

    #define CKM_JUNIPER_CBC128   0x00001062

    Definition at line 752 of file pkcs11t.h.

    ◆ CKM_JUNIPER_COUNTER

    #define CKM_JUNIPER_COUNTER   0x00001063

    Definition at line 753 of file pkcs11t.h.

    ◆ CKM_JUNIPER_ECB128

    #define CKM_JUNIPER_ECB128   0x00001061

    Definition at line 751 of file pkcs11t.h.

    ◆ CKM_JUNIPER_KEY_GEN

    #define CKM_JUNIPER_KEY_GEN   0x00001060

    Definition at line 750 of file pkcs11t.h.

    ◆ CKM_JUNIPER_SHUFFLE

    #define CKM_JUNIPER_SHUFFLE   0x00001064

    Definition at line 754 of file pkcs11t.h.

    ◆ CKM_JUNIPER_WRAP

    #define CKM_JUNIPER_WRAP   0x00001065

    Definition at line 755 of file pkcs11t.h.

    ◆ CKM_KEA_KEY_DERIVE

    #define CKM_KEA_KEY_DERIVE   0x00001011

    Definition at line 726 of file pkcs11t.h.

    ◆ CKM_KEA_KEY_PAIR_GEN

    #define CKM_KEA_KEY_PAIR_GEN   0x00001010

    Definition at line 725 of file pkcs11t.h.

    ◆ CKM_KEY_WRAP_LYNKS

    #define CKM_KEY_WRAP_LYNKS   0x00000400

    Definition at line 710 of file pkcs11t.h.

    ◆ CKM_KEY_WRAP_SET_OAEP

    #define CKM_KEY_WRAP_SET_OAEP   0x00000401

    Definition at line 711 of file pkcs11t.h.

    ◆ CKM_MD2

    #define CKM_MD2   0x00000200

    Definition at line 601 of file pkcs11t.h.

    ◆ CKM_MD2_HMAC

    #define CKM_MD2_HMAC   0x00000201

    Definition at line 604 of file pkcs11t.h.

    ◆ CKM_MD2_HMAC_GENERAL

    #define CKM_MD2_HMAC_GENERAL   0x00000202

    Definition at line 605 of file pkcs11t.h.

    ◆ CKM_MD2_KEY_DERIVATION

    #define CKM_MD2_KEY_DERIVATION   0x00000391

    Definition at line 689 of file pkcs11t.h.

    ◆ CKM_MD2_RSA_PKCS

    #define CKM_MD2_RSA_PKCS   0x00000004

    Definition at line 531 of file pkcs11t.h.

    ◆ CKM_MD5

    #define CKM_MD5   0x00000210

    Definition at line 607 of file pkcs11t.h.

    ◆ CKM_MD5_HMAC

    #define CKM_MD5_HMAC   0x00000211

    Definition at line 610 of file pkcs11t.h.

    ◆ CKM_MD5_HMAC_GENERAL

    #define CKM_MD5_HMAC_GENERAL   0x00000212

    Definition at line 611 of file pkcs11t.h.

    ◆ CKM_MD5_KEY_DERIVATION

    #define CKM_MD5_KEY_DERIVATION   0x00000390

    Definition at line 688 of file pkcs11t.h.

    ◆ CKM_MD5_RSA_PKCS

    #define CKM_MD5_RSA_PKCS   0x00000005

    Definition at line 532 of file pkcs11t.h.

    ◆ CKM_PBA_SHA1_WITH_SHA1_HMAC

    #define CKM_PBA_SHA1_WITH_SHA1_HMAC   0x000003C0

    Definition at line 709 of file pkcs11t.h.

    ◆ CKM_PBE_MD2_DES_CBC

    #define CKM_PBE_MD2_DES_CBC   0x000003A0

    Definition at line 691 of file pkcs11t.h.

    ◆ CKM_PBE_MD5_CAST128_CBC

    #define CKM_PBE_MD5_CAST128_CBC   0x000003A4

    Definition at line 696 of file pkcs11t.h.

    ◆ CKM_PBE_MD5_CAST3_CBC

    #define CKM_PBE_MD5_CAST3_CBC   0x000003A3

    Definition at line 694 of file pkcs11t.h.

    ◆ CKM_PBE_MD5_CAST5_CBC

    #define CKM_PBE_MD5_CAST5_CBC   0x000003A4

    Definition at line 695 of file pkcs11t.h.

    ◆ CKM_PBE_MD5_CAST_CBC

    #define CKM_PBE_MD5_CAST_CBC   0x000003A2

    Definition at line 693 of file pkcs11t.h.

    ◆ CKM_PBE_MD5_DES_CBC

    #define CKM_PBE_MD5_DES_CBC   0x000003A1

    Definition at line 692 of file pkcs11t.h.

    ◆ CKM_PBE_SHA1_CAST128_CBC

    #define CKM_PBE_SHA1_CAST128_CBC   0x000003A5

    Definition at line 698 of file pkcs11t.h.

    ◆ CKM_PBE_SHA1_CAST5_CBC

    #define CKM_PBE_SHA1_CAST5_CBC   0x000003A5

    Definition at line 697 of file pkcs11t.h.

    ◆ CKM_PBE_SHA1_DES2_EDE_CBC

    #define CKM_PBE_SHA1_DES2_EDE_CBC   0x000003A9

    Definition at line 702 of file pkcs11t.h.

    ◆ CKM_PBE_SHA1_DES3_EDE_CBC

    #define CKM_PBE_SHA1_DES3_EDE_CBC   0x000003A8

    Definition at line 701 of file pkcs11t.h.

    ◆ CKM_PBE_SHA1_RC2_128_CBC

    #define CKM_PBE_SHA1_RC2_128_CBC   0x000003AA

    Definition at line 703 of file pkcs11t.h.

    ◆ CKM_PBE_SHA1_RC2_40_CBC

    #define CKM_PBE_SHA1_RC2_40_CBC   0x000003AB

    Definition at line 704 of file pkcs11t.h.

    ◆ CKM_PBE_SHA1_RC4_128

    #define CKM_PBE_SHA1_RC4_128   0x000003A6

    Definition at line 699 of file pkcs11t.h.

    ◆ CKM_PBE_SHA1_RC4_40

    #define CKM_PBE_SHA1_RC4_40   0x000003A7

    Definition at line 700 of file pkcs11t.h.

    ◆ CKM_PKCS5_PBKD2

    #define CKM_PKCS5_PBKD2   0x000003B0

    Definition at line 707 of file pkcs11t.h.

    ◆ CKM_RC2_CBC

    #define CKM_RC2_CBC   0x00000102

    Definition at line 565 of file pkcs11t.h.

    ◆ CKM_RC2_CBC_PAD

    #define CKM_RC2_CBC_PAD   0x00000105

    Definition at line 570 of file pkcs11t.h.

    ◆ CKM_RC2_ECB

    #define CKM_RC2_ECB   0x00000101

    Definition at line 564 of file pkcs11t.h.

    ◆ CKM_RC2_KEY_GEN

    #define CKM_RC2_KEY_GEN   0x00000100

    Definition at line 563 of file pkcs11t.h.

    ◆ CKM_RC2_MAC

    #define CKM_RC2_MAC   0x00000103

    Definition at line 566 of file pkcs11t.h.

    ◆ CKM_RC2_MAC_GENERAL

    #define CKM_RC2_MAC_GENERAL   0x00000104

    Definition at line 569 of file pkcs11t.h.

    ◆ CKM_RC4

    #define CKM_RC4   0x00000111

    Definition at line 573 of file pkcs11t.h.

    ◆ CKM_RC4_KEY_GEN

    #define CKM_RC4_KEY_GEN   0x00000110

    Definition at line 572 of file pkcs11t.h.

    ◆ CKM_RC5_CBC

    #define CKM_RC5_CBC   0x00000332

    Definition at line 657 of file pkcs11t.h.

    ◆ CKM_RC5_CBC_PAD

    #define CKM_RC5_CBC_PAD   0x00000335

    Definition at line 660 of file pkcs11t.h.

    ◆ CKM_RC5_ECB

    #define CKM_RC5_ECB   0x00000331

    Definition at line 656 of file pkcs11t.h.

    ◆ CKM_RC5_KEY_GEN

    #define CKM_RC5_KEY_GEN   0x00000330

    Definition at line 655 of file pkcs11t.h.

    ◆ CKM_RC5_MAC

    #define CKM_RC5_MAC   0x00000333

    Definition at line 658 of file pkcs11t.h.

    ◆ CKM_RC5_MAC_GENERAL

    #define CKM_RC5_MAC_GENERAL   0x00000334

    Definition at line 659 of file pkcs11t.h.

    ◆ CKM_RIPEMD128

    #define CKM_RIPEMD128   0x00000230

    Definition at line 622 of file pkcs11t.h.

    ◆ CKM_RIPEMD128_HMAC

    #define CKM_RIPEMD128_HMAC   0x00000231

    Definition at line 623 of file pkcs11t.h.

    ◆ CKM_RIPEMD128_HMAC_GENERAL

    #define CKM_RIPEMD128_HMAC_GENERAL   0x00000232

    Definition at line 624 of file pkcs11t.h.

    ◆ CKM_RIPEMD128_RSA_PKCS

    #define CKM_RIPEMD128_RSA_PKCS   0x00000007

    Definition at line 537 of file pkcs11t.h.

    ◆ CKM_RIPEMD160

    #define CKM_RIPEMD160   0x00000240

    Definition at line 625 of file pkcs11t.h.

    ◆ CKM_RIPEMD160_HMAC

    #define CKM_RIPEMD160_HMAC   0x00000241

    Definition at line 626 of file pkcs11t.h.

    ◆ CKM_RIPEMD160_HMAC_GENERAL

    #define CKM_RIPEMD160_HMAC_GENERAL   0x00000242

    Definition at line 627 of file pkcs11t.h.

    ◆ CKM_RIPEMD160_RSA_PKCS

    #define CKM_RIPEMD160_RSA_PKCS   0x00000008

    Definition at line 538 of file pkcs11t.h.

    ◆ CKM_RSA_9796

    #define CKM_RSA_9796   0x00000002

    Definition at line 526 of file pkcs11t.h.

    ◆ CKM_RSA_PKCS

    #define CKM_RSA_PKCS   0x00000001

    Definition at line 525 of file pkcs11t.h.

    ◆ CKM_RSA_PKCS_KEY_PAIR_GEN

    #define CKM_RSA_PKCS_KEY_PAIR_GEN   0x00000000

    Definition at line 524 of file pkcs11t.h.

    ◆ CKM_RSA_PKCS_OAEP

    #define CKM_RSA_PKCS_OAEP   0x00000009

    Definition at line 539 of file pkcs11t.h.

    ◆ CKM_RSA_PKCS_PSS

    #define CKM_RSA_PKCS_PSS   0x0000000D

    Definition at line 546 of file pkcs11t.h.

    ◆ CKM_RSA_X9_31

    #define CKM_RSA_X9_31   0x0000000B

    Definition at line 544 of file pkcs11t.h.

    ◆ CKM_RSA_X9_31_KEY_PAIR_GEN

    #define CKM_RSA_X9_31_KEY_PAIR_GEN   0x0000000A

    Definition at line 543 of file pkcs11t.h.

    ◆ CKM_RSA_X_509

    #define CKM_RSA_X_509   0x00000003

    Definition at line 527 of file pkcs11t.h.

    ◆ CKM_SHA1_KEY_DERIVATION

    #define CKM_SHA1_KEY_DERIVATION   0x00000392

    Definition at line 690 of file pkcs11t.h.

    ◆ CKM_SHA1_RSA_PKCS

    #define CKM_SHA1_RSA_PKCS   0x00000006

    Definition at line 533 of file pkcs11t.h.

    ◆ CKM_SHA1_RSA_PKCS_PSS

    #define CKM_SHA1_RSA_PKCS_PSS   0x0000000E

    Definition at line 547 of file pkcs11t.h.

    ◆ CKM_SHA1_RSA_X9_31

    #define CKM_SHA1_RSA_X9_31   0x0000000C

    Definition at line 545 of file pkcs11t.h.

    ◆ CKM_SHA_1

    #define CKM_SHA_1   0x00000220

    Definition at line 613 of file pkcs11t.h.

    ◆ CKM_SHA_1_HMAC

    #define CKM_SHA_1_HMAC   0x00000221

    Definition at line 616 of file pkcs11t.h.

    ◆ CKM_SHA_1_HMAC_GENERAL

    #define CKM_SHA_1_HMAC_GENERAL   0x00000222

    Definition at line 617 of file pkcs11t.h.

    ◆ CKM_SKIPJACK_CBC64

    #define CKM_SKIPJACK_CBC64   0x00001002

    Definition at line 716 of file pkcs11t.h.

    ◆ CKM_SKIPJACK_CFB16

    #define CKM_SKIPJACK_CFB16   0x00001006

    Definition at line 720 of file pkcs11t.h.

    ◆ CKM_SKIPJACK_CFB32

    #define CKM_SKIPJACK_CFB32   0x00001005

    Definition at line 719 of file pkcs11t.h.

    ◆ CKM_SKIPJACK_CFB64

    #define CKM_SKIPJACK_CFB64   0x00001004

    Definition at line 718 of file pkcs11t.h.

    ◆ CKM_SKIPJACK_CFB8

    #define CKM_SKIPJACK_CFB8   0x00001007

    Definition at line 721 of file pkcs11t.h.

    ◆ CKM_SKIPJACK_ECB64

    #define CKM_SKIPJACK_ECB64   0x00001001

    Definition at line 715 of file pkcs11t.h.

    ◆ CKM_SKIPJACK_KEY_GEN

    #define CKM_SKIPJACK_KEY_GEN   0x00001000

    Definition at line 714 of file pkcs11t.h.

    ◆ CKM_SKIPJACK_OFB64

    #define CKM_SKIPJACK_OFB64   0x00001003

    Definition at line 717 of file pkcs11t.h.

    ◆ CKM_SKIPJACK_PRIVATE_WRAP

    #define CKM_SKIPJACK_PRIVATE_WRAP   0x00001009

    Definition at line 723 of file pkcs11t.h.

    ◆ CKM_SKIPJACK_RELAYX

    #define CKM_SKIPJACK_RELAYX   0x0000100a

    Definition at line 724 of file pkcs11t.h.

    ◆ CKM_SKIPJACK_WRAP

    #define CKM_SKIPJACK_WRAP   0x00001008

    Definition at line 722 of file pkcs11t.h.

    ◆ CKM_SSL3_KEY_AND_MAC_DERIVE

    #define CKM_SSL3_KEY_AND_MAC_DERIVE   0x00000372

    Definition at line 675 of file pkcs11t.h.

    ◆ CKM_SSL3_MASTER_KEY_DERIVE

    #define CKM_SSL3_MASTER_KEY_DERIVE   0x00000371

    Definition at line 674 of file pkcs11t.h.

    ◆ CKM_SSL3_MASTER_KEY_DERIVE_DH

    #define CKM_SSL3_MASTER_KEY_DERIVE_DH   0x00000373

    Definition at line 680 of file pkcs11t.h.

    ◆ CKM_SSL3_MD5_MAC

    #define CKM_SSL3_MD5_MAC   0x00000380

    Definition at line 686 of file pkcs11t.h.

    ◆ CKM_SSL3_PRE_MASTER_KEY_GEN

    #define CKM_SSL3_PRE_MASTER_KEY_GEN   0x00000370

    Definition at line 673 of file pkcs11t.h.

    ◆ CKM_SSL3_SHA1_MAC

    #define CKM_SSL3_SHA1_MAC   0x00000381

    Definition at line 687 of file pkcs11t.h.

    ◆ CKM_TLS_KEY_AND_MAC_DERIVE

    #define CKM_TLS_KEY_AND_MAC_DERIVE   0x00000376

    Definition at line 683 of file pkcs11t.h.

    ◆ CKM_TLS_MASTER_KEY_DERIVE

    #define CKM_TLS_MASTER_KEY_DERIVE   0x00000375

    Definition at line 682 of file pkcs11t.h.

    ◆ CKM_TLS_MASTER_KEY_DERIVE_DH

    #define CKM_TLS_MASTER_KEY_DERIVE_DH   0x00000377

    Definition at line 684 of file pkcs11t.h.

    ◆ CKM_TLS_PRE_MASTER_KEY_GEN

    #define CKM_TLS_PRE_MASTER_KEY_GEN   0x00000374

    Definition at line 681 of file pkcs11t.h.

    ◆ CKM_VENDOR_DEFINED

    #define CKM_VENDOR_DEFINED   0x80000000

    Definition at line 772 of file pkcs11t.h.

    ◆ CKM_X9_42_DH_DERIVE

    #define CKM_X9_42_DH_DERIVE   0x00000031

    Definition at line 559 of file pkcs11t.h.

    ◆ CKM_X9_42_DH_HYBRID_DERIVE

    #define CKM_X9_42_DH_HYBRID_DERIVE   0x00000032

    Definition at line 560 of file pkcs11t.h.

    ◆ CKM_X9_42_DH_KEY_PAIR_GEN

    #define CKM_X9_42_DH_KEY_PAIR_GEN   0x00000030

    Definition at line 558 of file pkcs11t.h.

    ◆ CKM_X9_42_DH_PARAMETER_GEN

    #define CKM_X9_42_DH_PARAMETER_GEN   0x00002002

    Definition at line 770 of file pkcs11t.h.

    ◆ CKM_X9_42_MQV_DERIVE

    #define CKM_X9_42_MQV_DERIVE   0x00000033

    Definition at line 561 of file pkcs11t.h.

    ◆ CKM_XOR_BASE_AND_DATA

    #define CKM_XOR_BASE_AND_DATA   0x00000364

    Definition at line 671 of file pkcs11t.h.

    ◆ CKN_SURRENDER

    #define CKN_SURRENDER   0

    Definition at line 110 of file pkcs11t.h.

    ◆ CKO_CERTIFICATE

    #define CKO_CERTIFICATE   0x00000001

    Definition at line 324 of file pkcs11t.h.

    ◆ CKO_DATA

    #define CKO_DATA   0x00000000

    Definition at line 323 of file pkcs11t.h.

    ◆ CKO_DOMAIN_PARAMETERS

    #define CKO_DOMAIN_PARAMETERS   0x00000006

    Definition at line 329 of file pkcs11t.h.

    ◆ CKO_HW_FEATURE

    #define CKO_HW_FEATURE   0x00000005

    Definition at line 328 of file pkcs11t.h.

    ◆ CKO_PRIVATE_KEY

    #define CKO_PRIVATE_KEY   0x00000003

    Definition at line 326 of file pkcs11t.h.

    ◆ CKO_PUBLIC_KEY

    #define CKO_PUBLIC_KEY   0x00000002

    Definition at line 325 of file pkcs11t.h.

    ◆ CKO_SECRET_KEY

    #define CKO_SECRET_KEY   0x00000004

    Definition at line 327 of file pkcs11t.h.

    ◆ CKO_VENDOR_DEFINED

    #define CKO_VENDOR_DEFINED   0x80000000

    Definition at line 330 of file pkcs11t.h.

    ◆ CKP_PKCS5_PBKD2_HMAC_SHA1

    #define CKP_PKCS5_PBKD2_HMAC_SHA1   0x00000001

    Definition at line 1392 of file pkcs11t.h.

    ◆ CKR_ARGUMENTS_BAD

    #define CKR_ARGUMENTS_BAD   0x00000007

    Definition at line 855 of file pkcs11t.h.

    ◆ CKR_ATTRIBUTE_READ_ONLY

    #define CKR_ATTRIBUTE_READ_ONLY   0x00000010

    Definition at line 860 of file pkcs11t.h.

    ◆ CKR_ATTRIBUTE_SENSITIVE

    #define CKR_ATTRIBUTE_SENSITIVE   0x00000011

    Definition at line 861 of file pkcs11t.h.

    ◆ CKR_ATTRIBUTE_TYPE_INVALID

    #define CKR_ATTRIBUTE_TYPE_INVALID   0x00000012

    Definition at line 862 of file pkcs11t.h.

    ◆ CKR_ATTRIBUTE_VALUE_INVALID

    #define CKR_ATTRIBUTE_VALUE_INVALID   0x00000013

    Definition at line 863 of file pkcs11t.h.

    ◆ CKR_BUFFER_TOO_SMALL

    #define CKR_BUFFER_TOO_SMALL   0x00000150

    Definition at line 958 of file pkcs11t.h.

    ◆ CKR_CANCEL

    #define CKR_CANCEL   0x00000001

    Definition at line 843 of file pkcs11t.h.

    ◆ CKR_CANT_LOCK

    #define CKR_CANT_LOCK   0x0000000A

    Definition at line 858 of file pkcs11t.h.

    ◆ CKR_CRYPTOKI_ALREADY_INITIALIZED

    #define CKR_CRYPTOKI_ALREADY_INITIALIZED   0x00000191

    Definition at line 965 of file pkcs11t.h.

    ◆ CKR_CRYPTOKI_NOT_INITIALIZED

    #define CKR_CRYPTOKI_NOT_INITIALIZED   0x00000190

    Definition at line 964 of file pkcs11t.h.

    ◆ CKR_DATA_INVALID

    #define CKR_DATA_INVALID   0x00000020

    Definition at line 864 of file pkcs11t.h.

    ◆ CKR_DATA_LEN_RANGE

    #define CKR_DATA_LEN_RANGE   0x00000021

    Definition at line 865 of file pkcs11t.h.

    ◆ CKR_DEVICE_ERROR

    #define CKR_DEVICE_ERROR   0x00000030

    Definition at line 866 of file pkcs11t.h.

    ◆ CKR_DEVICE_MEMORY

    #define CKR_DEVICE_MEMORY   0x00000031

    Definition at line 867 of file pkcs11t.h.

    ◆ CKR_DEVICE_REMOVED

    #define CKR_DEVICE_REMOVED   0x00000032

    Definition at line 868 of file pkcs11t.h.

    ◆ CKR_DOMAIN_PARAMS_INVALID

    #define CKR_DOMAIN_PARAMS_INVALID   0x00000130

    Definition at line 955 of file pkcs11t.h.

    ◆ CKR_ENCRYPTED_DATA_INVALID

    #define CKR_ENCRYPTED_DATA_INVALID   0x00000040

    Definition at line 869 of file pkcs11t.h.

    ◆ CKR_ENCRYPTED_DATA_LEN_RANGE

    #define CKR_ENCRYPTED_DATA_LEN_RANGE   0x00000041

    Definition at line 870 of file pkcs11t.h.

    ◆ CKR_FUNCTION_CANCELED

    #define CKR_FUNCTION_CANCELED   0x00000050

    Definition at line 871 of file pkcs11t.h.

    ◆ CKR_FUNCTION_FAILED

    #define CKR_FUNCTION_FAILED   0x00000006

    Definition at line 851 of file pkcs11t.h.

    ◆ CKR_FUNCTION_NOT_PARALLEL

    #define CKR_FUNCTION_NOT_PARALLEL   0x00000051

    Definition at line 872 of file pkcs11t.h.

    ◆ CKR_FUNCTION_NOT_SUPPORTED

    #define CKR_FUNCTION_NOT_SUPPORTED   0x00000054

    Definition at line 875 of file pkcs11t.h.

    ◆ CKR_GENERAL_ERROR

    #define CKR_GENERAL_ERROR   0x00000005

    Definition at line 850 of file pkcs11t.h.

    ◆ CKR_HOST_MEMORY

    #define CKR_HOST_MEMORY   0x00000002

    Definition at line 844 of file pkcs11t.h.

    ◆ CKR_INFORMATION_SENSITIVE

    #define CKR_INFORMATION_SENSITIVE   0x00000170

    Definition at line 960 of file pkcs11t.h.

    ◆ CKR_KEY_CHANGED

    #define CKR_KEY_CHANGED   0x00000065

    Definition at line 889 of file pkcs11t.h.

    ◆ CKR_KEY_FUNCTION_NOT_PERMITTED

    #define CKR_KEY_FUNCTION_NOT_PERMITTED   0x00000068

    Definition at line 892 of file pkcs11t.h.

    ◆ CKR_KEY_HANDLE_INVALID

    #define CKR_KEY_HANDLE_INVALID   0x00000060

    Definition at line 877 of file pkcs11t.h.

    ◆ CKR_KEY_INDIGESTIBLE

    #define CKR_KEY_INDIGESTIBLE   0x00000067

    Definition at line 891 of file pkcs11t.h.

    ◆ CKR_KEY_NEEDED

    #define CKR_KEY_NEEDED   0x00000066

    Definition at line 890 of file pkcs11t.h.

    ◆ CKR_KEY_NOT_NEEDED

    #define CKR_KEY_NOT_NEEDED   0x00000064

    Definition at line 888 of file pkcs11t.h.

    ◆ CKR_KEY_NOT_WRAPPABLE

    #define CKR_KEY_NOT_WRAPPABLE   0x00000069

    Definition at line 893 of file pkcs11t.h.

    ◆ CKR_KEY_SIZE_RANGE

    #define CKR_KEY_SIZE_RANGE   0x00000062

    Definition at line 881 of file pkcs11t.h.

    ◆ CKR_KEY_TYPE_INCONSISTENT

    #define CKR_KEY_TYPE_INCONSISTENT   0x00000063

    Definition at line 882 of file pkcs11t.h.

    ◆ CKR_KEY_UNEXTRACTABLE

    #define CKR_KEY_UNEXTRACTABLE   0x0000006A

    Definition at line 894 of file pkcs11t.h.

    ◆ CKR_MECHANISM_INVALID

    #define CKR_MECHANISM_INVALID   0x00000070

    Definition at line 896 of file pkcs11t.h.

    ◆ CKR_MECHANISM_PARAM_INVALID

    #define CKR_MECHANISM_PARAM_INVALID   0x00000071

    Definition at line 897 of file pkcs11t.h.

    ◆ CKR_MUTEX_BAD

    #define CKR_MUTEX_BAD   0x000001A0

    Definition at line 966 of file pkcs11t.h.

    ◆ CKR_MUTEX_NOT_LOCKED

    #define CKR_MUTEX_NOT_LOCKED   0x000001A1

    Definition at line 967 of file pkcs11t.h.

    ◆ CKR_NEED_TO_CREATE_THREADS

    #define CKR_NEED_TO_CREATE_THREADS   0x00000009

    Definition at line 857 of file pkcs11t.h.

    ◆ CKR_NO_EVENT

    #define CKR_NO_EVENT   0x00000008

    Definition at line 856 of file pkcs11t.h.

    ◆ CKR_OBJECT_HANDLE_INVALID

    #define CKR_OBJECT_HANDLE_INVALID   0x00000082

    Definition at line 901 of file pkcs11t.h.

    ◆ CKR_OK

    #define CKR_OK   0x00000000

    Definition at line 842 of file pkcs11t.h.

    ◆ CKR_OPERATION_ACTIVE

    #define CKR_OPERATION_ACTIVE   0x00000090

    Definition at line 902 of file pkcs11t.h.

    ◆ CKR_OPERATION_NOT_INITIALIZED

    #define CKR_OPERATION_NOT_INITIALIZED   0x00000091

    Definition at line 903 of file pkcs11t.h.

    ◆ CKR_PIN_EXPIRED

    #define CKR_PIN_EXPIRED   0x000000A3

    Definition at line 909 of file pkcs11t.h.

    ◆ CKR_PIN_INCORRECT

    #define CKR_PIN_INCORRECT   0x000000A0

    Definition at line 904 of file pkcs11t.h.

    ◆ CKR_PIN_INVALID

    #define CKR_PIN_INVALID   0x000000A1

    Definition at line 905 of file pkcs11t.h.

    ◆ CKR_PIN_LEN_RANGE

    #define CKR_PIN_LEN_RANGE   0x000000A2

    Definition at line 906 of file pkcs11t.h.

    ◆ CKR_PIN_LOCKED

    #define CKR_PIN_LOCKED   0x000000A4

    Definition at line 910 of file pkcs11t.h.

    ◆ CKR_RANDOM_NO_RNG

    #define CKR_RANDOM_NO_RNG   0x00000121

    Definition at line 952 of file pkcs11t.h.

    ◆ CKR_RANDOM_SEED_NOT_SUPPORTED

    #define CKR_RANDOM_SEED_NOT_SUPPORTED   0x00000120

    Definition at line 949 of file pkcs11t.h.

    ◆ CKR_SAVED_STATE_INVALID

    #define CKR_SAVED_STATE_INVALID   0x00000160

    Definition at line 959 of file pkcs11t.h.

    ◆ CKR_SESSION_CLOSED

    #define CKR_SESSION_CLOSED   0x000000B0

    Definition at line 912 of file pkcs11t.h.

    ◆ CKR_SESSION_COUNT

    #define CKR_SESSION_COUNT   0x000000B1

    Definition at line 913 of file pkcs11t.h.

    ◆ CKR_SESSION_EXISTS

    #define CKR_SESSION_EXISTS   0x000000B6

    Definition at line 917 of file pkcs11t.h.

    ◆ CKR_SESSION_HANDLE_INVALID

    #define CKR_SESSION_HANDLE_INVALID   0x000000B3

    Definition at line 914 of file pkcs11t.h.

    ◆ CKR_SESSION_PARALLEL_NOT_SUPPORTED

    #define CKR_SESSION_PARALLEL_NOT_SUPPORTED   0x000000B4

    Definition at line 915 of file pkcs11t.h.

    ◆ CKR_SESSION_READ_ONLY

    #define CKR_SESSION_READ_ONLY   0x000000B5

    Definition at line 916 of file pkcs11t.h.

    ◆ CKR_SESSION_READ_ONLY_EXISTS

    #define CKR_SESSION_READ_ONLY_EXISTS   0x000000B7

    Definition at line 921 of file pkcs11t.h.

    ◆ CKR_SESSION_READ_WRITE_SO_EXISTS

    #define CKR_SESSION_READ_WRITE_SO_EXISTS   0x000000B8

    Definition at line 922 of file pkcs11t.h.

    ◆ CKR_SIGNATURE_INVALID

    #define CKR_SIGNATURE_INVALID   0x000000C0

    Definition at line 924 of file pkcs11t.h.

    ◆ CKR_SIGNATURE_LEN_RANGE

    #define CKR_SIGNATURE_LEN_RANGE   0x000000C1

    Definition at line 925 of file pkcs11t.h.

    ◆ CKR_SLOT_ID_INVALID

    #define CKR_SLOT_ID_INVALID   0x00000003

    Definition at line 845 of file pkcs11t.h.

    ◆ CKR_STATE_UNSAVEABLE

    #define CKR_STATE_UNSAVEABLE   0x00000180

    Definition at line 961 of file pkcs11t.h.

    ◆ CKR_TEMPLATE_INCOMPLETE

    #define CKR_TEMPLATE_INCOMPLETE   0x000000D0

    Definition at line 926 of file pkcs11t.h.

    ◆ CKR_TEMPLATE_INCONSISTENT

    #define CKR_TEMPLATE_INCONSISTENT   0x000000D1

    Definition at line 927 of file pkcs11t.h.

    ◆ CKR_TOKEN_NOT_PRESENT

    #define CKR_TOKEN_NOT_PRESENT   0x000000E0

    Definition at line 928 of file pkcs11t.h.

    ◆ CKR_TOKEN_NOT_RECOGNIZED

    #define CKR_TOKEN_NOT_RECOGNIZED   0x000000E1

    Definition at line 929 of file pkcs11t.h.

    ◆ CKR_TOKEN_WRITE_PROTECTED

    #define CKR_TOKEN_WRITE_PROTECTED   0x000000E2

    Definition at line 930 of file pkcs11t.h.

    ◆ CKR_UNWRAPPING_KEY_HANDLE_INVALID

    #define CKR_UNWRAPPING_KEY_HANDLE_INVALID   0x000000F0

    Definition at line 931 of file pkcs11t.h.

    ◆ CKR_UNWRAPPING_KEY_SIZE_RANGE

    #define CKR_UNWRAPPING_KEY_SIZE_RANGE   0x000000F1

    Definition at line 932 of file pkcs11t.h.

    ◆ CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT

    #define CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT   0x000000F2

    Definition at line 933 of file pkcs11t.h.

    ◆ CKR_USER_ALREADY_LOGGED_IN

    #define CKR_USER_ALREADY_LOGGED_IN   0x00000100

    Definition at line 934 of file pkcs11t.h.

    ◆ CKR_USER_ANOTHER_ALREADY_LOGGED_IN

    #define CKR_USER_ANOTHER_ALREADY_LOGGED_IN   0x00000104

    Definition at line 941 of file pkcs11t.h.

    ◆ CKR_USER_NOT_LOGGED_IN

    #define CKR_USER_NOT_LOGGED_IN   0x00000101

    Definition at line 935 of file pkcs11t.h.

    ◆ CKR_USER_PIN_NOT_INITIALIZED

    #define CKR_USER_PIN_NOT_INITIALIZED   0x00000102

    Definition at line 936 of file pkcs11t.h.

    ◆ CKR_USER_TOO_MANY_TYPES

    #define CKR_USER_TOO_MANY_TYPES   0x00000105

    Definition at line 942 of file pkcs11t.h.

    ◆ CKR_USER_TYPE_INVALID

    #define CKR_USER_TYPE_INVALID   0x00000103

    Definition at line 937 of file pkcs11t.h.

    ◆ CKR_VENDOR_DEFINED

    #define CKR_VENDOR_DEFINED   0x80000000

    Definition at line 969 of file pkcs11t.h.

    ◆ CKR_WRAPPED_KEY_INVALID

    #define CKR_WRAPPED_KEY_INVALID   0x00000110

    Definition at line 944 of file pkcs11t.h.

    ◆ CKR_WRAPPED_KEY_LEN_RANGE

    #define CKR_WRAPPED_KEY_LEN_RANGE   0x00000112

    Definition at line 945 of file pkcs11t.h.

    ◆ CKR_WRAPPING_KEY_HANDLE_INVALID

    #define CKR_WRAPPING_KEY_HANDLE_INVALID   0x00000113

    Definition at line 946 of file pkcs11t.h.

    ◆ CKR_WRAPPING_KEY_SIZE_RANGE

    #define CKR_WRAPPING_KEY_SIZE_RANGE   0x00000114

    Definition at line 947 of file pkcs11t.h.

    ◆ CKR_WRAPPING_KEY_TYPE_INCONSISTENT

    #define CKR_WRAPPING_KEY_TYPE_INCONSISTENT   0x00000115

    Definition at line 948 of file pkcs11t.h.

    ◆ CKS_RO_PUBLIC_SESSION

    #define CKS_RO_PUBLIC_SESSION   0

    Definition at line 279 of file pkcs11t.h.

    ◆ CKS_RO_USER_FUNCTIONS

    #define CKS_RO_USER_FUNCTIONS   1

    Definition at line 280 of file pkcs11t.h.

    ◆ CKS_RW_PUBLIC_SESSION

    #define CKS_RW_PUBLIC_SESSION   2

    Definition at line 281 of file pkcs11t.h.

    ◆ CKS_RW_SO_FUNCTIONS

    #define CKS_RW_SO_FUNCTIONS   4

    Definition at line 283 of file pkcs11t.h.

    ◆ CKS_RW_USER_FUNCTIONS

    #define CKS_RW_USER_FUNCTIONS   3

    Definition at line 282 of file pkcs11t.h.

    ◆ CKU_SO

    #define CKU_SO   0

    Definition at line 270 of file pkcs11t.h.

    ◆ CKU_USER

    #define CKU_USER   1

    Definition at line 272 of file pkcs11t.h.

    ◆ CKZ_DATA_SPECIFIED

    #define CKZ_DATA_SPECIFIED   0x00000001

    Definition at line 1058 of file pkcs11t.h.

    ◆ CKZ_SALT_SPECIFIED

    #define CKZ_SALT_SPECIFIED   0x00000001

    Definition at line 1404 of file pkcs11t.h.

    ◆ FALSE

    #define FALSE   0

    Definition at line 28 of file pkcs11t.h.

    ◆ TRUE

    #define TRUE   !(FALSE)

    Definition at line 32 of file pkcs11t.h.

    Typedef Documentation

    ◆ CK_ATTRIBUTE

    typedef struct CK_ATTRIBUTE CK_ATTRIBUTE

    ◆ CK_ATTRIBUTE_PTR

    Definition at line 506 of file pkcs11t.h.

    ◆ CK_ATTRIBUTE_TYPE

    Definition at line 401 of file pkcs11t.h.

    ◆ CK_BBOOL

    typedef CK_BYTE CK_BBOOL

    Definition at line 49 of file pkcs11t.h.

    ◆ CK_BYTE

    typedef unsigned char CK_BYTE

    Definition at line 40 of file pkcs11t.h.

    ◆ CK_BYTE_PTR

    Definition at line 67 of file pkcs11t.h.

    ◆ CK_C_INITIALIZE_ARGS

    ◆ CK_C_INITIALIZE_ARGS_PTR

    Definition at line 1029 of file pkcs11t.h.

    ◆ CK_CERTIFICATE_TYPE

    Definition at line 388 of file pkcs11t.h.

    ◆ CK_CHAR

    typedef CK_BYTE CK_CHAR

    Definition at line 43 of file pkcs11t.h.

    ◆ CK_CHAR_PTR

    Definition at line 68 of file pkcs11t.h.

    ◆ CK_DATE

    typedef struct CK_DATE CK_DATE

    ◆ CK_EC_KDF_TYPE

    Definition at line 1085 of file pkcs11t.h.

    ◆ CK_ECDH1_DERIVE_PARAMS

    ◆ CK_ECDH1_DERIVE_PARAMS_PTR

    ◆ CK_ECDH2_DERIVE_PARAMS

    ◆ CK_ECDH2_DERIVE_PARAMS_PTR

    ◆ CK_EXTRACT_PARAMS

    Definition at line 1378 of file pkcs11t.h.

    ◆ CK_EXTRACT_PARAMS_PTR

    Definition at line 1380 of file pkcs11t.h.

    ◆ CK_FLAGS

    typedef CK_ULONG CK_FLAGS

    Definition at line 59 of file pkcs11t.h.

    ◆ CK_FUNCTION_LIST

    Definition at line 982 of file pkcs11t.h.

    ◆ CK_FUNCTION_LIST_PTR

    Definition at line 984 of file pkcs11t.h.

    ◆ CK_FUNCTION_LIST_PTR_PTR

    Definition at line 986 of file pkcs11t.h.

    ◆ CK_HW_FEATURE_TYPE

    Definition at line 337 of file pkcs11t.h.

    ◆ CK_INFO

    typedef struct CK_INFO CK_INFO

    ◆ CK_INFO_PTR

    Definition at line 102 of file pkcs11t.h.

    ◆ CK_KEA_DERIVE_PARAMS

    ◆ CK_KEA_DERIVE_PARAMS_PTR

    Definition at line 1178 of file pkcs11t.h.

    ◆ CK_KEY_DERIVATION_STRING_DATA

    ◆ CK_KEY_DERIVATION_STRING_DATA_PTR

    ◆ CK_KEY_TYPE

    Definition at line 346 of file pkcs11t.h.

    ◆ CK_KEY_WRAP_SET_OAEP_PARAMS

    ◆ CK_KEY_WRAP_SET_OAEP_PARAMS_PTR

    ◆ CK_LONG

    typedef long int CK_LONG

    Definition at line 56 of file pkcs11t.h.

    ◆ CK_MAC_GENERAL_PARAMS

    Definition at line 1253 of file pkcs11t.h.

    ◆ CK_MAC_GENERAL_PARAMS_PTR

    ◆ CK_MECHANISM

    typedef struct CK_MECHANISM CK_MECHANISM

    ◆ CK_MECHANISM_INFO

    ◆ CK_MECHANISM_INFO_PTR

    Definition at line 834 of file pkcs11t.h.

    ◆ CK_MECHANISM_PTR

    Definition at line 788 of file pkcs11t.h.

    ◆ CK_MECHANISM_TYPE

    Definition at line 521 of file pkcs11t.h.

    ◆ CK_MECHANISM_TYPE_PTR

    Definition at line 774 of file pkcs11t.h.

    ◆ CK_NOTIFICATION

    Definition at line 109 of file pkcs11t.h.

    ◆ CK_OBJECT_CLASS

    Definition at line 318 of file pkcs11t.h.

    ◆ CK_OBJECT_CLASS_PTR

    Definition at line 332 of file pkcs11t.h.

    ◆ CK_OBJECT_HANDLE

    Definition at line 308 of file pkcs11t.h.

    ◆ CK_OBJECT_HANDLE_PTR

    Definition at line 310 of file pkcs11t.h.

    ◆ CK_PBE_PARAMS

    typedef struct CK_PBE_PARAMS CK_PBE_PARAMS

    ◆ CK_PBE_PARAMS_PTR

    Definition at line 1310 of file pkcs11t.h.

    ◆ CK_PKCS5_PBKD2_PARAMS

    ◆ CK_PKCS5_PBKD2_PARAMS_PTR

    ◆ CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE

    ◆ CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE_PTR

    ◆ CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE

    Definition at line 1399 of file pkcs11t.h.

    ◆ CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE_PTR

    ◆ CK_RC2_CBC_PARAMS

    ◆ CK_RC2_CBC_PARAMS_PTR

    Definition at line 1199 of file pkcs11t.h.

    ◆ CK_RC2_MAC_GENERAL_PARAMS

    ◆ CK_RC2_MAC_GENERAL_PARAMS_PTR

    ◆ CK_RC2_PARAMS

    Definition at line 1184 of file pkcs11t.h.

    ◆ CK_RC2_PARAMS_PTR

    Definition at line 1186 of file pkcs11t.h.

    ◆ CK_RC5_CBC_PARAMS

    ◆ CK_RC5_CBC_PARAMS_PTR

    Definition at line 1234 of file pkcs11t.h.

    ◆ CK_RC5_MAC_GENERAL_PARAMS

    ◆ CK_RC5_MAC_GENERAL_PARAMS_PTR

    ◆ CK_RC5_PARAMS

    typedef struct CK_RC5_PARAMS CK_RC5_PARAMS

    ◆ CK_RC5_PARAMS_PTR

    Definition at line 1221 of file pkcs11t.h.

    ◆ CK_RSA_PKCS_MGF_TYPE

    Definition at line 1042 of file pkcs11t.h.

    ◆ CK_RSA_PKCS_MGF_TYPE_PTR

    Definition at line 1044 of file pkcs11t.h.

    ◆ CK_RSA_PKCS_OAEP_PARAMS

    ◆ CK_RSA_PKCS_OAEP_PARAMS_PTR

    ◆ CK_RSA_PKCS_OAEP_SOURCE_TYPE

    Definition at line 1053 of file pkcs11t.h.

    ◆ CK_RSA_PKCS_OAEP_SOURCE_TYPE_PTR

    ◆ CK_RSA_PKCS_PSS_PARAMS

    ◆ CK_RSA_PKCS_PSS_PARAMS_PTR

    ◆ CK_RV

    typedef CK_ULONG CK_RV

    Definition at line 840 of file pkcs11t.h.

    ◆ CK_SESSION_HANDLE

    Definition at line 260 of file pkcs11t.h.

    ◆ CK_SESSION_HANDLE_PTR

    Definition at line 262 of file pkcs11t.h.

    ◆ CK_SESSION_INFO

    ◆ CK_SESSION_INFO_PTR

    Definition at line 303 of file pkcs11t.h.

    ◆ CK_SKIPJACK_PRIVATE_WRAP_PARAMS

    ◆ CK_SKIPJACK_PRIVATE_WRAP_PTR

    ◆ CK_SKIPJACK_RELAYX_PARAMS

    ◆ CK_SKIPJACK_RELAYX_PARAMS_PTR

    ◆ CK_SLOT_ID

    Definition at line 113 of file pkcs11t.h.

    ◆ CK_SLOT_ID_PTR

    Definition at line 115 of file pkcs11t.h.

    ◆ CK_SLOT_INFO

    typedef struct CK_SLOT_INFO CK_SLOT_INFO

    ◆ CK_SLOT_INFO_PTR

    Definition at line 138 of file pkcs11t.h.

    ◆ CK_SSL3_KEY_MAT_OUT

    ◆ CK_SSL3_KEY_MAT_OUT_PTR

    Definition at line 1350 of file pkcs11t.h.

    ◆ CK_SSL3_KEY_MAT_PARAMS

    ◆ CK_SSL3_KEY_MAT_PARAMS_PTR

    ◆ CK_SSL3_MASTER_KEY_DERIVE_PARAMS

    ◆ CK_SSL3_MASTER_KEY_DERIVE_PARAMS_PTR

    ◆ CK_SSL3_RANDOM_DATA

    ◆ CK_STATE

    typedef CK_ULONG CK_STATE

    Definition at line 278 of file pkcs11t.h.

    ◆ CK_TOKEN_INFO

    typedef struct CK_TOKEN_INFO CK_TOKEN_INFO

    ◆ CK_TOKEN_INFO_PTR

    Definition at line 255 of file pkcs11t.h.

    ◆ CK_ULONG

    typedef unsigned long int CK_ULONG

    Definition at line 52 of file pkcs11t.h.

    ◆ CK_ULONG_PTR

    Definition at line 70 of file pkcs11t.h.

    ◆ CK_USER_TYPE

    Definition at line 268 of file pkcs11t.h.

    ◆ CK_UTF8CHAR

    Definition at line 46 of file pkcs11t.h.

    ◆ CK_UTF8CHAR_PTR

    Definition at line 69 of file pkcs11t.h.

    ◆ CK_VERSION

    typedef struct CK_VERSION CK_VERSION

    ◆ CK_VERSION_PTR

    Definition at line 87 of file pkcs11t.h.

    ◆ CK_VOID_PTR

    typedef void CK_PTR CK_VOID_PTR

    Definition at line 71 of file pkcs11t.h.

    ◆ CK_VOID_PTR_PTR

    Definition at line 74 of file pkcs11t.h.

    ◆ CK_X9_42_DH1_DERIVE_PARAMS

    ◆ CK_X9_42_DH1_DERIVE_PARAMS_PTR

    ◆ CK_X9_42_DH2_DERIVE_PARAMS

    ◆ CK_X9_42_DH2_DERIVE_PARAMS_PTR

    ◆ CK_X9_42_DH_KDF_TYPE

    Definition at line 1126 of file pkcs11t.h.

    ◆ CK_X9_42_DH_KDF_TYPE_PTR

    Definition at line 1127 of file pkcs11t.h.

    ◆ event

    Definition at line 974 of file pkcs11t.h.

    ◆ pApplication

    Definition at line 974 of file pkcs11t.h.

    Function Documentation

    ◆ CK_CALLBACK_FUNCTION() [1/5]

    typedef CK_CALLBACK_FUNCTION ( CK_RV  ,
    CK_CREATEMUTEX   
    )

    ◆ CK_CALLBACK_FUNCTION() [2/5]

    typedef CK_CALLBACK_FUNCTION ( CK_RV  ,
    CK_DESTROYMUTEX   
    )

    ◆ CK_CALLBACK_FUNCTION() [3/5]

    typedef CK_CALLBACK_FUNCTION ( CK_RV  ,
    CK_LOCKMUTEX   
    )

    ◆ CK_CALLBACK_FUNCTION() [4/5]

    typedef CK_CALLBACK_FUNCTION ( CK_RV  ,
    CK_NOTIFY   
    )

    ◆ CK_CALLBACK_FUNCTION() [5/5]

    typedef CK_CALLBACK_FUNCTION ( CK_RV  ,
    CK_UNLOCKMUTEX   
    )
    pam_pkcs11-0.6.12/doc/api/cert__vfy_8h_source.html0000644000175000017500000005237314367517110016642 00000000000000 pam_pkcs11: cert_vfy.h Source File
    pam_pkcs11 0.6.12
    cert_vfy.h
    Go to the documentation of this file.
    1/*
    2 * PKCS #11 PAM Login Module
    3 * Copyright (C) 2003 Mario Strasser <mast@gmx.net>,
    4 *
    5 * This library is free software; you can redistribute it and/or
    6 * modify it under the terms of the GNU Lesser General Public
    7 * License as published by the Free Software Foundation; either
    8 * version 2.1 of the License, or (at your option) any later version.
    9 *
    10 * This library is distributed in the hope that it will be useful,
    11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    13 * Lesser General Public License for more details.
    14 *
    15 * $Id$
    16 */
    17
    27#ifndef __CERT_VFY_H_
    28#define __CERT_VFY_H_
    29
    30#include "cert_st.h"
    31
    32typedef enum {
    42
    43typedef enum {
    47
    52 const char *ca_dir;
    53 const char *crl_dir;
    54 const char *nss_dir;
    56};
    57
    58#ifndef __CERT_VFY_C
    59#define CERTVFY_EXTERN extern
    60#else
    61#define CERTVFY_EXTERN
    62#endif
    63
    71
    81CERTVFY_EXTERN int verify_signature(X509 * x509, unsigned char *data, int data_length, unsigned char **signature, unsigned long *signature_length);
    82
    83#undef CERTVFY_EXTERN
    84
    85#endif /* __CERT_VFY_H_ */
    #define CERTVFY_EXTERN
    Definition: cert_vfy.h:59
    CERTVFY_EXTERN int verify_certificate(X509 *x509, cert_policy *policy)
    Verify provided certificate, and if needed, CRL.
    CERTVFY_EXTERN int verify_signature(X509 *x509, unsigned char *data, int data_length, unsigned char **signature, unsigned long *signature_length)
    Verify signature of provided data.
    crl_policy_t
    Definition: cert_vfy.h:32
    @ CRLP_ONLINE
    Retrieve CRL from CA site.
    Definition: cert_vfy.h:36
    @ CRLP_AUTO
    Try CRL check online, else ofline, else fail.
    Definition: cert_vfy.h:40
    @ CRLP_OFFLINE
    Retrieve CRL from local filesystem.
    Definition: cert_vfy.h:38
    @ CRLP_NONE
    Do not perform any CRL verification.
    Definition: cert_vfy.h:34
    ocsp_policy_t
    Definition: cert_vfy.h:43
    @ OCSP_ON
    Definition: cert_vfy.h:45
    @ OCSP_NONE
    Definition: cert_vfy.h:44
    int ocsp_policy
    Definition: cert_vfy.h:55
    const char * crl_dir
    Definition: cert_vfy.h:53
    int crl_policy
    Definition: cert_vfy.h:50
    const char * ca_dir
    Definition: cert_vfy.h:52
    int signature_policy
    Definition: cert_vfy.h:51
    const char * nss_dir
    Definition: cert_vfy.h:54
    pam_pkcs11-0.6.12/doc/api/structCK__ATTRIBUTE.html0000644000175000017500000001406614367517110016224 00000000000000 pam_pkcs11: CK_ATTRIBUTE Struct Reference
    pam_pkcs11 0.6.12
    CK_ATTRIBUTE Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_ATTRIBUTE_TYPE type
     
    CK_VOID_PTR pValue
     
    CK_ULONG ulValueLen
     

    Detailed Description

    Definition at line 498 of file pkcs11t.h.

    Field Documentation

    ◆ pValue

    CK_VOID_PTR pValue

    Definition at line 500 of file pkcs11t.h.

    ◆ type

    Definition at line 499 of file pkcs11t.h.

    ◆ ulValueLen

    CK_ULONG ulValueLen

    Definition at line 503 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/globals_defs_r.html0000644000175000017500000000466414367517110015650 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - r -

    pam_pkcs11-0.6.12/doc/api/pwent__mapper_8h_source.html0000644000175000017500000002360114367517110017512 00000000000000 pam_pkcs11: pwent_mapper.h Source File
    pam_pkcs11 0.6.12
    pwent_mapper.h
    Go to the documentation of this file.
    1/*
    2 * PAM-PKCS11 mapping modules
    3 * Copyright (C) 2005 Juan Antonio Martinez <jonsito@teleline.es>
    4 * pam-pkcs11 is copyright (C) 2003-2004 of Mario Strasser <mast@gmx.net>
    5 *
    6 * This library is free software; you can redistribute it and/or
    7 * modify it under the terms of the GNU Lesser General Public
    8 * License as published by the Free Software Foundation; either
    9 * version 2.1 of the License, or (at your option) any later version.
    10 *
    11 * This library is distributed in the hope that it will be useful,
    12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14 * Lesser General Public License for more details.
    15 *
    16 * You should have received a copy of the GNU Lesser General Public
    17 * License along with this library; if not, write to the Free Software
    18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    19 *
    20 * $Id$
    21 */
    22
    23#ifndef __PWENT_MAPPER_H_
    24#define __PWENT_MAPPER_H_
    25
    26#ifdef HAVE_CONFIG_H
    27#include <config.h>
    28#endif
    29
    30#include "../scconf/scconf.h"
    31#include "mapper.h"
    32
    33#ifdef PWENT_MAPPER_STATIC
    34
    35#ifndef __PWENT_MAPPER_C_
    36#define PWENT_EXTERN extern
    37#else
    38#define PWENT_EXTERN
    39#endif
    40PWENT_EXTERN mapper_module * pwent_mapper_module_init(scconf_block *blk,const char *mapper_name);
    41#undef PWENT_EXTERN
    42
    43/* end of static (if any) declarations */
    44#endif
    45
    46/* End of pwent_mapper.h */
    47#endif
    Structure to be filled on mapper module initialization.
    Definition: mapper.h:40
    pam_pkcs11-0.6.12/doc/api/internal_8h_source.html0000644000175000017500000005220514367517110016470 00000000000000 pam_pkcs11: internal.h Source File
    pam_pkcs11 0.6.12
    internal.h
    Go to the documentation of this file.
    1/*
    2 * $Id$
    3 *
    4 * Copyright (C) 2002
    5 * Antti Tapaninen <aet@cc.hut.fi>
    6 *
    7 * This library is free software; you can redistribute it and/or
    8 * modify it under the terms of the GNU Lesser General Public
    9 * License as published by the Free Software Foundation; either
    10 * version 2.1 of the License, or (at your option) any later version.
    11 *
    12 * This library is distributed in the hope that it will be useful,
    13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    15 * Lesser General Public License for more details.
    16 *
    17 * You should have received a copy of the GNU Lesser General Public
    18 * License along with this library; if not, write to the Free Software
    19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    20 */
    21
    22#ifndef _SCCONF_INTERNAL_H
    23#define _SCCONF_INTERNAL_H
    24
    25#ifdef __cplusplus
    26extern "C" {
    27#endif
    28
    29#define TOKEN_TYPE_COMMENT 0
    30#define TOKEN_TYPE_NEWLINE 1
    31#define TOKEN_TYPE_STRING 2
    32#define TOKEN_TYPE_PUNCT 3
    33
    34typedef struct _scconf_parser {
    36
    39
    40 char *key;
    42
    43 int state;
    45 int line;
    46
    47 unsigned int error:1;
    48 unsigned int warnings:1;
    49 char emesg[256];
    51
    52extern int scconf_lex_parse(scconf_parser * parser, const char *filename);
    54 const char *config_string);
    55extern void scconf_parse_token(scconf_parser * parser, int token_type, const char *token);
    56
    57#ifdef __cplusplus
    58}
    59#endif
    60#endif
    struct _scconf_parser scconf_parser
    int scconf_lex_parse_string(scconf_parser *parser, const char *config_string)
    int scconf_lex_parse(scconf_parser *parser, const char *filename)
    void scconf_parse_token(scconf_parser *parser, int token_type, const char *token)
    scconf_list * name
    Definition: internal.h:41
    unsigned int error
    Definition: internal.h:47
    unsigned int warnings
    Definition: internal.h:48
    char emesg[256]
    Definition: internal.h:49
    char * key
    Definition: internal.h:40
    scconf_item * current_item
    Definition: internal.h:38
    scconf_item * last_item
    Definition: internal.h:38
    scconf_block * block
    Definition: internal.h:37
    scconf_context * config
    Definition: internal.h:35
    int last_token_type
    Definition: internal.h:44
    pam_pkcs11-0.6.12/doc/api/globals_defs_c.html0000644000175000017500000016322514367517110015630 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - c -

    pam_pkcs11-0.6.12/doc/api/pkcs11_8h.html0000644000175000017500000004432714367517110014404 00000000000000 pam_pkcs11: pkcs11.h File Reference
    pam_pkcs11 0.6.12
    pkcs11.h File Reference
    #include <openssl/x509.h>
    #include "pkcs11t.h"
    #include "pkcs11f.h"

    Go to the source code of this file.

    Data Structures

    struct  CK_FUNCTION_LIST
     

    Macros

    #define CK_PTR   *
     
    #define CK_DEFINE_FUNCTION(returnType, name)    returnType name
     
    #define CK_DECLARE_FUNCTION(returnType, name)    returnType name
     
    #define CK_DECLARE_FUNCTION_POINTER(returnType, name)    returnType (* name)
     
    #define CK_CALLBACK_FUNCTION(returnType, name)    returnType (* name)
     
    #define NULL_PTR   0
     
    #define __PASTE(x, y)   x##y
     
    #define CK_NEED_ARG_LIST   1
     
    #define CK_PKCS11_FUNCTION_INFO(name)    extern CK_DECLARE_FUNCTION(CK_RV, name)
     
    #define CK_PKCS11_FUNCTION_INFO(name)    typedef CK_DECLARE_FUNCTION_POINTER(CK_RV, __PASTE(CK_,name))
     
    #define CK_PKCS11_FUNCTION_INFO(name)    __PASTE(CK_,name) name;
     

    Macro Definition Documentation

    ◆ __PASTE

    #define __PASTE (   x,
     
    )    x##y

    Definition at line 57 of file pkcs11.h.

    ◆ CK_CALLBACK_FUNCTION

    #define CK_CALLBACK_FUNCTION (   returnType,
      name 
    )     returnType (* name)

    Definition at line 32 of file pkcs11.h.

    ◆ CK_DECLARE_FUNCTION

    #define CK_DECLARE_FUNCTION (   returnType,
      name 
    )     returnType name

    Definition at line 28 of file pkcs11.h.

    ◆ CK_DECLARE_FUNCTION_POINTER

    #define CK_DECLARE_FUNCTION_POINTER (   returnType,
      name 
    )     returnType (* name)

    Definition at line 30 of file pkcs11.h.

    ◆ CK_DEFINE_FUNCTION

    #define CK_DEFINE_FUNCTION (   returnType,
      name 
    )     returnType name

    Definition at line 26 of file pkcs11.h.

    ◆ CK_NEED_ARG_LIST

    #define CK_NEED_ARG_LIST   1

    Definition at line 65 of file pkcs11.h.

    ◆ CK_PKCS11_FUNCTION_INFO [1/3]

    #define CK_PKCS11_FUNCTION_INFO (   name)     extern CK_DECLARE_FUNCTION(CK_RV, name)

    Definition at line 105 of file pkcs11.h.

    ◆ CK_PKCS11_FUNCTION_INFO [2/3]

    #define CK_PKCS11_FUNCTION_INFO (   name)     typedef CK_DECLARE_FUNCTION_POINTER(CK_RV, __PASTE(CK_,name))

    Definition at line 105 of file pkcs11.h.

    ◆ CK_PKCS11_FUNCTION_INFO [3/3]

    #define CK_PKCS11_FUNCTION_INFO (   name)     __PASTE(CK_,name) name;

    Definition at line 105 of file pkcs11.h.

    ◆ CK_PTR

    #define CK_PTR   *

    Definition at line 25 of file pkcs11.h.

    ◆ NULL_PTR

    #define NULL_PTR   0

    Definition at line 35 of file pkcs11.h.

    pam_pkcs11-0.6.12/doc/api/open.png0000644000175000017500000000017314367517110013453 00000000000000PNG  IHDR BIDATx 0 ׬ՙ\39b!9{|I>$#ߴ8/z/>2[giU,/~\ 9ٸIENDB`pam_pkcs11-0.6.12/doc/api/globals_eval.html0000644000175000017500000000666414367517110015337 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     
    pam_pkcs11-0.6.12/doc/api/functions_vars_l.html0000644000175000017500000000577414367517110016264 00000000000000 pam_pkcs11: Data Fields - Variables
    pam_pkcs11 0.6.12
     

    - l -

    pam_pkcs11-0.6.12/doc/api/menu.js0000644000175000017500000001335214367517110013311 00000000000000/* @licstart The following is the entire license notice for the JavaScript code in this file. The MIT License (MIT) Copyright (C) 1997-2020 by Dimitri van Heesch Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @licend The above is the entire license notice for the JavaScript code in this file */ function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { function makeTree(data,relPath) { var result=''; if ('children' in data) { result+='
      '; for (var i in data.children) { var url; var link; link = data.children[i].url; if (link.substring(0,1)=='^') { url = link.substring(1); } else { url = relPath+link; } result+='
    • '+ data.children[i].text+''+ makeTree(data.children[i],relPath)+'
    • '; } result+='
    '; } return result; } var searchBox; if (searchEnabled) { if (serverSide) { searchBox='
    '+ '
    '+ '
    '+ ''+ '
    '+ '
    '+ '
    '+ '
    '; } else { searchBox='
    '+ ''+ ''+ ''+ ''+ ''+ '' '' '
    '; } } $('#main-nav').before('
    '+ ''+ ''+ '
    '); $('#main-nav').append(makeTree(menudata,relPath)); $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); if (searchBox) { $('#main-menu').append('
  • '); } var $mainMenuState = $('#main-menu-state'); var prevWidth = 0; if ($mainMenuState.length) { function initResizableIfExists() { if (typeof initResizable==='function') initResizable(); } // animate mobile menu $mainMenuState.change(function(e) { var $menu = $('#main-menu'); var options = { duration: 250, step: initResizableIfExists }; if (this.checked) { options['complete'] = function() { $menu.css('display', 'block') }; $menu.hide().slideDown(options); } else { options['complete'] = function() { $menu.css('display', 'none') }; $menu.show().slideUp(options); } }); // set default menu visibility function resetState() { var $menu = $('#main-menu'); var $mainMenuState = $('#main-menu-state'); var newWidth = $(window).outerWidth(); if (newWidth!=prevWidth) { if ($(window).outerWidth()<768) { $mainMenuState.prop('checked',false); $menu.hide(); $('#searchBoxPos1').html(searchBox); $('#searchBoxPos2').hide(); } else { $menu.show(); $('#searchBoxPos1').empty(); $('#searchBoxPos2').html(searchBox); $('#searchBoxPos2').show(); } prevWidth = newWidth; } } $(window).ready(function() { resetState(); initResizableIfExists(); }); $(window).resize(resetState); } $('#main-menu').smartmenus(); } /* @license-end */ pam_pkcs11-0.6.12/doc/api/dir_7a879d24cd3db3969353e5fb0ef35f10.html0000644000175000017500000000565714367517110020137 00000000000000 pam_pkcs11: scconf Directory Reference
    pam_pkcs11 0.6.12
    scconf Directory Reference

    Files

    file  internal.h [code]
     
    file  scconf.h [code]
     
    pam_pkcs11-0.6.12/doc/api/cert__vfy_8h.html0000644000175000017500000003550014367517110015253 00000000000000 pam_pkcs11: cert_vfy.h File Reference
    pam_pkcs11 0.6.12
    cert_vfy.h File Reference

    Several routines to: More...

    #include "cert_st.h"

    Go to the source code of this file.

    Data Structures

    struct  cert_policy_st
     

    Macros

    #define CERTVFY_EXTERN   extern
     

    Enumerations

    enum  crl_policy_t { CRLP_NONE , CRLP_ONLINE , CRLP_OFFLINE , CRLP_AUTO }
     
    enum  ocsp_policy_t { OCSP_NONE , OCSP_ON }
     

    Functions

    CERTVFY_EXTERN int verify_certificate (X509 *x509, cert_policy *policy)
     Verify provided certificate, and if needed, CRL. More...
     
    CERTVFY_EXTERN int verify_signature (X509 *x509, unsigned char *data, int data_length, unsigned char **signature, unsigned long *signature_length)
     Verify signature of provided data. More...
     

    Detailed Description

    Several routines to:

    • Verify certificate
    • Check for revocation list
    • Verify signature

    Definition in file cert_vfy.h.

    Macro Definition Documentation

    ◆ CERTVFY_EXTERN

    #define CERTVFY_EXTERN   extern

    Definition at line 59 of file cert_vfy.h.

    Enumeration Type Documentation

    ◆ crl_policy_t

    Enumerator
    CRLP_NONE 

    Do not perform any CRL verification.

    CRLP_ONLINE 

    Retrieve CRL from CA site.

    CRLP_OFFLINE 

    Retrieve CRL from local filesystem.

    CRLP_AUTO 

    Try CRL check online, else ofline, else fail.

    Definition at line 32 of file cert_vfy.h.

    ◆ ocsp_policy_t

    Enumerator
    OCSP_NONE 
    OCSP_ON 

    Definition at line 43 of file cert_vfy.h.

    Function Documentation

    ◆ verify_certificate()

    CERTVFY_EXTERN int verify_certificate ( X509 *  x509,
    cert_policy policy 
    )

    Verify provided certificate, and if needed, CRL.

    Parameters
    x509Certificate to check
    policyCRL verify policy
    Returns
    1 on cert vfy sucess, 0 on fail, -1 on process error

    ◆ verify_signature()

    CERTVFY_EXTERN int verify_signature ( X509 *  x509,
    unsigned char *  data,
    int  data_length,
    unsigned char **  signature,
    unsigned long *  signature_length 
    )

    Verify signature of provided data.

    Parameters
    x509Certificate to be used
    dataByte array of data to check
    data_lengthLenght of provided byte array
    signatureByte array of signature to check
    signature_lengthLength of signature byte array
    Returns
    1 on signature vfy sucess, 0 on vfy fail, -1 on process error
    pam_pkcs11-0.6.12/doc/api/functions_vars_e.html0000644000175000017500000000501414367517110016240 00000000000000 pam_pkcs11: Data Fields - Variables
    pam_pkcs11 0.6.12
     

    - e -

    pam_pkcs11-0.6.12/doc/api/ms__mapper_8h.html0000644000175000017500000000474714367517110015426 00000000000000 pam_pkcs11: ms_mapper.h File Reference
    pam_pkcs11 0.6.12
    ms_mapper.h File Reference
    pam_pkcs11-0.6.12/doc/api/globals_u.html0000644000175000017500000000453214367517110014644 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:

    - u -

    pam_pkcs11-0.6.12/doc/api/functions_d.html0000644000175000017500000000566614367517110015221 00000000000000 pam_pkcs11: Data Fields
    pam_pkcs11 0.6.12
    Here is a list of all struct and union fields with links to the structures/unions they belong to:

    - d -

    pam_pkcs11-0.6.12/doc/api/index.html0000644000175000017500000000363514367517110014007 00000000000000 pam_pkcs11: Main Page
    pam_pkcs11 0.6.12
    pam_pkcs11 Documentation
    pam_pkcs11-0.6.12/doc/api/functions_vars_p.html0000644000175000017500000002224714367517110016262 00000000000000 pam_pkcs11: Data Fields - Variables
    pam_pkcs11 0.6.12
     

    - p -

    pam_pkcs11-0.6.12/doc/api/functions_vars_w.html0000644000175000017500000000420314367517110016261 00000000000000 pam_pkcs11: Data Fields - Variables
    pam_pkcs11 0.6.12
     

    - w -

    pam_pkcs11-0.6.12/doc/api/structCK__INFO.html0000644000175000017500000002033314367517110015406 00000000000000 pam_pkcs11: CK_INFO Struct Reference
    pam_pkcs11 0.6.12
    CK_INFO Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_VERSION cryptokiVersion
     
    CK_UTF8CHAR manufacturerID [32]
     
    CK_FLAGS flags
     
    CK_UTF8CHAR libraryDescription [32]
     
    CK_VERSION libraryVersion
     

    Detailed Description

    Definition at line 90 of file pkcs11t.h.

    Field Documentation

    ◆ cryptokiVersion

    CK_VERSION cryptokiVersion

    Definition at line 93 of file pkcs11t.h.

    ◆ flags

    CK_FLAGS flags

    Definition at line 95 of file pkcs11t.h.

    ◆ libraryDescription

    CK_UTF8CHAR libraryDescription[32]

    Definition at line 98 of file pkcs11t.h.

    ◆ libraryVersion

    CK_VERSION libraryVersion

    Definition at line 99 of file pkcs11t.h.

    ◆ manufacturerID

    CK_UTF8CHAR manufacturerID[32]

    Definition at line 94 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/globals_t.html0000644000175000017500000000566314367517110014651 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:

    - t -

    pam_pkcs11-0.6.12/doc/api/bdwn.png0000644000175000017500000000022314367517110013440 00000000000000PNG  IHDR5ZIDATx DP1lm rj.e D[ɾ|6V3?Ls'(}>+ Kch` ^ލnIENDB`pam_pkcs11-0.6.12/doc/api/structCK__SSL3__KEY__MAT__OUT.html0000644000175000017500000002310414367517110017773 00000000000000 pam_pkcs11: CK_SSL3_KEY_MAT_OUT Struct Reference
    pam_pkcs11 0.6.12
    CK_SSL3_KEY_MAT_OUT Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_OBJECT_HANDLE hClientMacSecret
     
    CK_OBJECT_HANDLE hServerMacSecret
     
    CK_OBJECT_HANDLE hClientKey
     
    CK_OBJECT_HANDLE hServerKey
     
    CK_BYTE_PTR pIVClient
     
    CK_BYTE_PTR pIVServer
     

    Detailed Description

    Definition at line 1341 of file pkcs11t.h.

    Field Documentation

    ◆ hClientKey

    CK_OBJECT_HANDLE hClientKey

    Definition at line 1344 of file pkcs11t.h.

    ◆ hClientMacSecret

    CK_OBJECT_HANDLE hClientMacSecret

    Definition at line 1342 of file pkcs11t.h.

    ◆ hServerKey

    CK_OBJECT_HANDLE hServerKey

    Definition at line 1345 of file pkcs11t.h.

    ◆ hServerMacSecret

    CK_OBJECT_HANDLE hServerMacSecret

    Definition at line 1343 of file pkcs11t.h.

    ◆ pIVClient

    CK_BYTE_PTR pIVClient

    Definition at line 1346 of file pkcs11t.h.

    ◆ pIVServer

    CK_BYTE_PTR pIVServer

    Definition at line 1347 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/functions_f.html0000644000175000017500000000647514367517110015222 00000000000000 pam_pkcs11: Data Fields
    pam_pkcs11 0.6.12
    Here is a list of all struct and union fields with links to the structures/unions they belong to:

    - f -

    pam_pkcs11-0.6.12/doc/api/globals_func_r.html0000644000175000017500000000561414367517110015656 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - r -

    pam_pkcs11-0.6.12/doc/api/structCK__TOKEN__INFO.html0000644000175000017500000005556414367517110016523 00000000000000 pam_pkcs11: CK_TOKEN_INFO Struct Reference
    pam_pkcs11 0.6.12
    CK_TOKEN_INFO Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_UTF8CHAR label [32]
     
    CK_UTF8CHAR manufacturerID [32]
     
    CK_UTF8CHAR model [16]
     
    CK_CHAR serialNumber [16]
     
    CK_FLAGS flags
     
    CK_ULONG ulMaxSessionCount
     
    CK_ULONG ulSessionCount
     
    CK_ULONG ulMaxRwSessionCount
     
    CK_ULONG ulRwSessionCount
     
    CK_ULONG ulMaxPinLen
     
    CK_ULONG ulMinPinLen
     
    CK_ULONG ulTotalPublicMemory
     
    CK_ULONG ulFreePublicMemory
     
    CK_ULONG ulTotalPrivateMemory
     
    CK_ULONG ulFreePrivateMemory
     
    CK_VERSION hardwareVersion
     
    CK_VERSION firmwareVersion
     
    CK_CHAR utcTime [16]
     

    Detailed Description

    Definition at line 142 of file pkcs11t.h.

    Field Documentation

    ◆ firmwareVersion

    CK_VERSION firmwareVersion

    Definition at line 168 of file pkcs11t.h.

    ◆ flags

    CK_FLAGS flags

    Definition at line 149 of file pkcs11t.h.

    ◆ hardwareVersion

    CK_VERSION hardwareVersion

    Definition at line 167 of file pkcs11t.h.

    ◆ label

    CK_UTF8CHAR label[32]

    Definition at line 145 of file pkcs11t.h.

    ◆ manufacturerID

    CK_UTF8CHAR manufacturerID[32]

    Definition at line 146 of file pkcs11t.h.

    ◆ model

    CK_UTF8CHAR model[16]

    Definition at line 147 of file pkcs11t.h.

    ◆ serialNumber

    CK_CHAR serialNumber[16]

    Definition at line 148 of file pkcs11t.h.

    ◆ ulFreePrivateMemory

    CK_ULONG ulFreePrivateMemory

    Definition at line 163 of file pkcs11t.h.

    ◆ ulFreePublicMemory

    CK_ULONG ulFreePublicMemory

    Definition at line 161 of file pkcs11t.h.

    ◆ ulMaxPinLen

    CK_ULONG ulMaxPinLen

    Definition at line 158 of file pkcs11t.h.

    ◆ ulMaxRwSessionCount

    CK_ULONG ulMaxRwSessionCount

    Definition at line 156 of file pkcs11t.h.

    ◆ ulMaxSessionCount

    CK_ULONG ulMaxSessionCount

    Definition at line 154 of file pkcs11t.h.

    ◆ ulMinPinLen

    CK_ULONG ulMinPinLen

    Definition at line 159 of file pkcs11t.h.

    ◆ ulRwSessionCount

    CK_ULONG ulRwSessionCount

    Definition at line 157 of file pkcs11t.h.

    ◆ ulSessionCount

    CK_ULONG ulSessionCount

    Definition at line 155 of file pkcs11t.h.

    ◆ ulTotalPrivateMemory

    CK_ULONG ulTotalPrivateMemory

    Definition at line 162 of file pkcs11t.h.

    ◆ ulTotalPublicMemory

    CK_ULONG ulTotalPublicMemory

    Definition at line 160 of file pkcs11t.h.

    ◆ utcTime

    CK_CHAR utcTime[16]

    Definition at line 169 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/globals_b.html0000644000175000017500000000470414367517110014622 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:

    - b -

    pam_pkcs11-0.6.12/doc/api/pkcs11f_8h_source.html0000644000175000017500000046710214367517110016132 00000000000000 pam_pkcs11: pkcs11f.h Source File
    pam_pkcs11 0.6.12
    pkcs11f.h
    Go to the documentation of this file.
    1/* pkcs11f.h include file for PKCS #11. */
    2/* $Revision: 1.4 $ */
    3
    4/* License to copy and use this software is granted provided that it is
    5 * identified as "RSA Security Inc. PKCS #11 Cryptographic Token Interface
    6 * (Cryptoki)" in all material mentioning or referencing this software.
    7
    8 * License is also granted to make and use derivative works provided that
    9 * such works are identified as "derived from the RSA Security Inc. PKCS #11
    10 * Cryptographic Token Interface (Cryptoki)" in all material mentioning or
    11 * referencing the derived work.
    12
    13 * RSA Security Inc. makes no representations concerning either the
    14 * merchantability of this software or the suitability of this software for
    15 * any particular purpose. It is provided "as is" without express or implied
    16 * warranty of any kind.
    17 */
    18
    19/* This header file contains pretty much everything about all the */
    20/* Cryptoki function prototypes. Because this information is */
    21/* used for more than just declaring function prototypes, the */
    22/* order of the functions appearing herein is important, and */
    23/* should not be altered. */
    24
    25/* General-purpose */
    26
    27/* C_Initialize initializes the Cryptoki library. */
    28CK_PKCS11_FUNCTION_INFO(C_Initialize)
    29#ifdef CK_NEED_ARG_LIST
    30 (CK_VOID_PTR pInitArgs /* if this is not NULL_PTR, it gets
    31 * cast to CK_C_INITIALIZE_ARGS_PTR
    32 * and dereferenced */
    33 );
    34#endif
    35
    36
    37/* C_Finalize indicates that an application is done with the
    38 * Cryptoki library. */
    40#ifdef CK_NEED_ARG_LIST
    41 (CK_VOID_PTR pReserved /* reserved. Should be NULL_PTR */
    42 );
    43#endif
    44
    45
    46/* C_GetInfo returns general information about Cryptoki. */
    48#ifdef CK_NEED_ARG_LIST
    49 (CK_INFO_PTR pInfo /* location that receives information */
    50 );
    51#endif
    52
    53
    54/* C_GetFunctionList returns the function list. */
    55CK_PKCS11_FUNCTION_INFO(C_GetFunctionList)
    56#ifdef CK_NEED_ARG_LIST
    57 (CK_FUNCTION_LIST_PTR_PTR ppFunctionList /* receives pointer to
    58 * function list */
    59 );
    60#endif
    61
    62
    63
    64/* Slot and token management */
    65
    66/* C_GetSlotList obtains a list of slots in the system. */
    67CK_PKCS11_FUNCTION_INFO(C_GetSlotList)
    68#ifdef CK_NEED_ARG_LIST
    69 (CK_BBOOL tokenPresent, /* only slots with tokens? */
    70 CK_SLOT_ID_PTR pSlotList, /* receives array of slot IDs */
    71 CK_ULONG_PTR pulCount /* receives number of slots */
    72 );
    73#endif
    74
    75
    76/* C_GetSlotInfo obtains information about a particular slot in
    77 * the system. */
    78CK_PKCS11_FUNCTION_INFO(C_GetSlotInfo)
    79#ifdef CK_NEED_ARG_LIST
    80 (CK_SLOT_ID slotID, /* the ID of the slot */
    81 CK_SLOT_INFO_PTR pInfo /* receives the slot information */
    82 );
    83#endif
    84
    85
    86/* C_GetTokenInfo obtains information about a particular token
    87 * in the system. */
    88CK_PKCS11_FUNCTION_INFO(C_GetTokenInfo)
    89#ifdef CK_NEED_ARG_LIST
    90 (CK_SLOT_ID slotID, /* ID of the token's slot */
    91 CK_TOKEN_INFO_PTR pInfo /* receives the token information */
    92 );
    93#endif
    94
    95
    96/* C_GetMechanismList obtains a list of mechanism types
    97 * supported by a token. */
    98CK_PKCS11_FUNCTION_INFO(C_GetMechanismList)
    99#ifdef CK_NEED_ARG_LIST
    100 (CK_SLOT_ID slotID, /* ID of token's slot */
    101 CK_MECHANISM_TYPE_PTR pMechanismList, /* gets mech. array */
    102 CK_ULONG_PTR pulCount /* gets # of mechs. */
    103 );
    104#endif
    105
    106
    107/* C_GetMechanismInfo obtains information about a particular
    108 * mechanism possibly supported by a token. */
    109CK_PKCS11_FUNCTION_INFO(C_GetMechanismInfo)
    110#ifdef CK_NEED_ARG_LIST
    111 (CK_SLOT_ID slotID, /* ID of the token's slot */
    112 CK_MECHANISM_TYPE type, /* type of mechanism */
    113 CK_MECHANISM_INFO_PTR pInfo /* receives mechanism info */
    114 );
    115#endif
    116
    117
    118/* C_InitToken initializes a token. */
    119CK_PKCS11_FUNCTION_INFO(C_InitToken)
    120#ifdef CK_NEED_ARG_LIST
    121/* pLabel changed from CK_CHAR_PTR to CK_UTF8CHAR_PTR for v2.10 */
    122 (CK_SLOT_ID slotID, /* ID of the token's slot */
    123 CK_UTF8CHAR_PTR pPin, /* the SO's initial PIN */
    124 CK_ULONG ulPinLen, /* length in bytes of the PIN */
    125 CK_UTF8CHAR_PTR pLabel /* 32-byte token label (blank padded) */
    126 );
    127#endif
    128
    129
    130/* C_InitPIN initializes the normal user's PIN. */
    132#ifdef CK_NEED_ARG_LIST
    133 (CK_SESSION_HANDLE hSession, /* the session's handle */
    134 CK_UTF8CHAR_PTR pPin, /* the normal user's PIN */
    135 CK_ULONG ulPinLen /* length in bytes of the PIN */
    136 );
    137#endif
    138
    139
    140/* C_SetPIN modifies the PIN of the user who is logged in. */
    142#ifdef CK_NEED_ARG_LIST
    143 (CK_SESSION_HANDLE hSession, /* the session's handle */
    144 CK_UTF8CHAR_PTR pOldPin, /* the old PIN */
    145 CK_ULONG ulOldLen, /* length of the old PIN */
    146 CK_UTF8CHAR_PTR pNewPin, /* the new PIN */
    147 CK_ULONG ulNewLen /* length of the new PIN */
    148 );
    149#endif
    150
    151
    152
    153/* Session management */
    154
    155/* C_OpenSession opens a session between an application and a
    156 * token. */
    157CK_PKCS11_FUNCTION_INFO(C_OpenSession)
    158#ifdef CK_NEED_ARG_LIST
    159 (CK_SLOT_ID slotID, /* the slot's ID */
    160 CK_FLAGS flags, /* from CK_SESSION_INFO */
    161 CK_VOID_PTR pApplication, /* passed to callback */
    162 CK_NOTIFY Notify, /* callback function */
    163 CK_SESSION_HANDLE_PTR phSession /* gets session handle */
    164 );
    165#endif
    166
    167
    168/* C_CloseSession closes a session between an application and a
    169 * token. */
    170CK_PKCS11_FUNCTION_INFO(C_CloseSession)
    171#ifdef CK_NEED_ARG_LIST
    172 (CK_SESSION_HANDLE hSession /* the session's handle */
    173 );
    174#endif
    175
    176
    177/* C_CloseAllSessions closes all sessions with a token. */
    178CK_PKCS11_FUNCTION_INFO(C_CloseAllSessions)
    179#ifdef CK_NEED_ARG_LIST
    180 (CK_SLOT_ID slotID /* the token's slot */
    181 );
    182#endif
    183
    184
    185/* C_GetSessionInfo obtains information about the session. */
    186CK_PKCS11_FUNCTION_INFO(C_GetSessionInfo)
    187#ifdef CK_NEED_ARG_LIST
    188 (CK_SESSION_HANDLE hSession, /* the session's handle */
    189 CK_SESSION_INFO_PTR pInfo /* receives session info */
    190 );
    191#endif
    192
    193
    194/* C_GetOperationState obtains the state of the cryptographic operation
    195 * in a session. */
    196CK_PKCS11_FUNCTION_INFO(C_GetOperationState)
    197#ifdef CK_NEED_ARG_LIST
    198 (CK_SESSION_HANDLE hSession, /* session's handle */
    199 CK_BYTE_PTR pOperationState, /* gets state */
    200 CK_ULONG_PTR pulOperationStateLen /* gets state length */
    201 );
    202#endif
    203
    204
    205/* C_SetOperationState restores the state of the cryptographic
    206 * operation in a session. */
    207CK_PKCS11_FUNCTION_INFO(C_SetOperationState)
    208#ifdef CK_NEED_ARG_LIST
    209 (CK_SESSION_HANDLE hSession, /* session's handle */
    210 CK_BYTE_PTR pOperationState, /* holds state */
    211 CK_ULONG ulOperationStateLen, /* holds state length */
    212 CK_OBJECT_HANDLE hEncryptionKey, /* en/decryption key */
    213 CK_OBJECT_HANDLE hAuthenticationKey /* sign/verify key */
    214 );
    215#endif
    216
    217
    218/* C_Login logs a user into a token. */
    220#ifdef CK_NEED_ARG_LIST
    221 (CK_SESSION_HANDLE hSession, /* the session's handle */
    222 CK_USER_TYPE userType, /* the user type */
    223 CK_UTF8CHAR_PTR pPin, /* the user's PIN */
    224 CK_ULONG ulPinLen /* the length of the PIN */
    225 );
    226#endif
    227
    228
    229/* C_Logout logs a user out from a token. */
    231#ifdef CK_NEED_ARG_LIST
    232 (CK_SESSION_HANDLE hSession /* the session's handle */
    233 );
    234#endif
    235
    236
    237
    238/* Object management */
    239
    240/* C_CreateObject creates a new object. */
    241CK_PKCS11_FUNCTION_INFO(C_CreateObject)
    242#ifdef CK_NEED_ARG_LIST
    243 (CK_SESSION_HANDLE hSession, /* the session's handle */
    244 CK_ATTRIBUTE_PTR pTemplate, /* the object's template */
    245 CK_ULONG ulCount, /* attributes in template */
    246 CK_OBJECT_HANDLE_PTR phObject /* gets new object's handle. */
    247 );
    248#endif
    249
    250
    251/* C_CopyObject copies an object, creating a new object for the
    252 * copy. */
    253CK_PKCS11_FUNCTION_INFO(C_CopyObject)
    254#ifdef CK_NEED_ARG_LIST
    255 (CK_SESSION_HANDLE hSession, /* the session's handle */
    256 CK_OBJECT_HANDLE hObject, /* the object's handle */
    257 CK_ATTRIBUTE_PTR pTemplate, /* template for new object */
    258 CK_ULONG ulCount, /* attributes in template */
    259 CK_OBJECT_HANDLE_PTR phNewObject /* receives handle of copy */
    260 );
    261#endif
    262
    263
    264/* C_DestroyObject destroys an object. */
    265CK_PKCS11_FUNCTION_INFO(C_DestroyObject)
    266#ifdef CK_NEED_ARG_LIST
    267 (CK_SESSION_HANDLE hSession, /* the session's handle */
    268 CK_OBJECT_HANDLE hObject /* the object's handle */
    269 );
    270#endif
    271
    272
    273/* C_GetObjectSize gets the size of an object in bytes. */
    274CK_PKCS11_FUNCTION_INFO(C_GetObjectSize)
    275#ifdef CK_NEED_ARG_LIST
    276 (CK_SESSION_HANDLE hSession, /* the session's handle */
    277 CK_OBJECT_HANDLE hObject, /* the object's handle */
    278 CK_ULONG_PTR pulSize /* receives size of object */
    279 );
    280#endif
    281
    282
    283/* C_GetAttributeValue obtains the value of one or more object
    284 * attributes. */
    285CK_PKCS11_FUNCTION_INFO(C_GetAttributeValue)
    286#ifdef CK_NEED_ARG_LIST
    287 (CK_SESSION_HANDLE hSession, /* the session's handle */
    288 CK_OBJECT_HANDLE hObject, /* the object's handle */
    289 CK_ATTRIBUTE_PTR pTemplate, /* specifies attrs; gets vals */
    290 CK_ULONG ulCount /* attributes in template */
    291 );
    292#endif
    293
    294
    295/* C_SetAttributeValue modifies the value of one or more object
    296 * attributes */
    297CK_PKCS11_FUNCTION_INFO(C_SetAttributeValue)
    298#ifdef CK_NEED_ARG_LIST
    299 (CK_SESSION_HANDLE hSession, /* the session's handle */
    300 CK_OBJECT_HANDLE hObject, /* the object's handle */
    301 CK_ATTRIBUTE_PTR pTemplate, /* specifies attrs and values */
    302 CK_ULONG ulCount /* attributes in template */
    303 );
    304#endif
    305
    306
    307/* C_FindObjectsInit initializes a search for token and session
    308 * objects that match a template. */
    309CK_PKCS11_FUNCTION_INFO(C_FindObjectsInit)
    310#ifdef CK_NEED_ARG_LIST
    311 (CK_SESSION_HANDLE hSession, /* the session's handle */
    312 CK_ATTRIBUTE_PTR pTemplate, /* attribute values to match */
    313 CK_ULONG ulCount /* attrs in search template */
    314 );
    315#endif
    316
    317
    318/* C_FindObjects continues a search for token and session
    319 * objects that match a template, obtaining additional object
    320 * handles. */
    321CK_PKCS11_FUNCTION_INFO(C_FindObjects)
    322#ifdef CK_NEED_ARG_LIST
    323 (CK_SESSION_HANDLE hSession, /* session's handle */
    324 CK_OBJECT_HANDLE_PTR phObject, /* gets obj. handles */
    325 CK_ULONG ulMaxObjectCount, /* max handles to get */
    326 CK_ULONG_PTR pulObjectCount /* actual # returned */
    327 );
    328#endif
    329
    330
    331/* C_FindObjectsFinal finishes a search for token and session
    332 * objects. */
    333CK_PKCS11_FUNCTION_INFO(C_FindObjectsFinal)
    334#ifdef CK_NEED_ARG_LIST
    335 (CK_SESSION_HANDLE hSession /* the session's handle */
    336 );
    337#endif
    338
    339
    340
    341/* Encryption and decryption */
    342
    343/* C_EncryptInit initializes an encryption operation. */
    344CK_PKCS11_FUNCTION_INFO(C_EncryptInit)
    345#ifdef CK_NEED_ARG_LIST
    346 (CK_SESSION_HANDLE hSession, /* the session's handle */
    347 CK_MECHANISM_PTR pMechanism, /* the encryption mechanism */
    348 CK_OBJECT_HANDLE hKey /* handle of encryption key */
    349 );
    350#endif
    351
    352
    353/* C_Encrypt encrypts single-part data. */
    355#ifdef CK_NEED_ARG_LIST
    356 (CK_SESSION_HANDLE hSession, /* session's handle */
    357 CK_BYTE_PTR pData, /* the plaintext data */
    358 CK_ULONG ulDataLen, /* bytes of plaintext */
    359 CK_BYTE_PTR pEncryptedData, /* gets ciphertext */
    360 CK_ULONG_PTR pulEncryptedDataLen /* gets c-text size */
    361 );
    362#endif
    363
    364
    365/* C_EncryptUpdate continues a multiple-part encryption
    366 * operation. */
    367CK_PKCS11_FUNCTION_INFO(C_EncryptUpdate)
    368#ifdef CK_NEED_ARG_LIST
    369 (CK_SESSION_HANDLE hSession, /* session's handle */
    370 CK_BYTE_PTR pPart, /* the plaintext data */
    371 CK_ULONG ulPartLen, /* plaintext data len */
    372 CK_BYTE_PTR pEncryptedPart, /* gets ciphertext */
    373 CK_ULONG_PTR pulEncryptedPartLen /* gets c-text size */
    374 );
    375#endif
    376
    377
    378/* C_EncryptFinal finishes a multiple-part encryption
    379 * operation. */
    380CK_PKCS11_FUNCTION_INFO(C_EncryptFinal)
    381#ifdef CK_NEED_ARG_LIST
    382 (CK_SESSION_HANDLE hSession, /* session handle */
    383 CK_BYTE_PTR pLastEncryptedPart, /* last c-text */
    384 CK_ULONG_PTR pulLastEncryptedPartLen /* gets last size */
    385 );
    386#endif
    387
    388
    389/* C_DecryptInit initializes a decryption operation. */
    390CK_PKCS11_FUNCTION_INFO(C_DecryptInit)
    391#ifdef CK_NEED_ARG_LIST
    392 (CK_SESSION_HANDLE hSession, /* the session's handle */
    393 CK_MECHANISM_PTR pMechanism, /* the decryption mechanism */
    394 CK_OBJECT_HANDLE hKey /* handle of decryption key */
    395 );
    396#endif
    397
    398
    399/* C_Decrypt decrypts encrypted data in a single part. */
    401#ifdef CK_NEED_ARG_LIST
    402 (CK_SESSION_HANDLE hSession, /* session's handle */
    403 CK_BYTE_PTR pEncryptedData, /* ciphertext */
    404 CK_ULONG ulEncryptedDataLen, /* ciphertext length */
    405 CK_BYTE_PTR pData, /* gets plaintext */
    406 CK_ULONG_PTR pulDataLen /* gets p-text size */
    407 );
    408#endif
    409
    410
    411/* C_DecryptUpdate continues a multiple-part decryption
    412 * operation. */
    413CK_PKCS11_FUNCTION_INFO(C_DecryptUpdate)
    414#ifdef CK_NEED_ARG_LIST
    415 (CK_SESSION_HANDLE hSession, /* session's handle */
    416 CK_BYTE_PTR pEncryptedPart, /* encrypted data */
    417 CK_ULONG ulEncryptedPartLen, /* input length */
    418 CK_BYTE_PTR pPart, /* gets plaintext */
    419 CK_ULONG_PTR pulPartLen /* p-text size */
    420 );
    421#endif
    422
    423
    424/* C_DecryptFinal finishes a multiple-part decryption
    425 * operation. */
    426CK_PKCS11_FUNCTION_INFO(C_DecryptFinal)
    427#ifdef CK_NEED_ARG_LIST
    428 (CK_SESSION_HANDLE hSession, /* the session's handle */
    429 CK_BYTE_PTR pLastPart, /* gets plaintext */
    430 CK_ULONG_PTR pulLastPartLen /* p-text size */
    431 );
    432#endif
    433
    434
    435
    436/* Message digesting */
    437
    438/* C_DigestInit initializes a message-digesting operation. */
    439CK_PKCS11_FUNCTION_INFO(C_DigestInit)
    440#ifdef CK_NEED_ARG_LIST
    441 (CK_SESSION_HANDLE hSession, /* the session's handle */
    442 CK_MECHANISM_PTR pMechanism /* the digesting mechanism */
    443 );
    444#endif
    445
    446
    447/* C_Digest digests data in a single part. */
    449#ifdef CK_NEED_ARG_LIST
    450 (CK_SESSION_HANDLE hSession, /* the session's handle */
    451 CK_BYTE_PTR pData, /* data to be digested */
    452 CK_ULONG ulDataLen, /* bytes of data to digest */
    453 CK_BYTE_PTR pDigest, /* gets the message digest */
    454 CK_ULONG_PTR pulDigestLen /* gets digest length */
    455 );
    456#endif
    457
    458
    459/* C_DigestUpdate continues a multiple-part message-digesting
    460 * operation. */
    461CK_PKCS11_FUNCTION_INFO(C_DigestUpdate)
    462#ifdef CK_NEED_ARG_LIST
    463 (CK_SESSION_HANDLE hSession, /* the session's handle */
    464 CK_BYTE_PTR pPart, /* data to be digested */
    465 CK_ULONG ulPartLen /* bytes of data to be digested */
    466 );
    467#endif
    468
    469
    470/* C_DigestKey continues a multi-part message-digesting
    471 * operation, by digesting the value of a secret key as part of
    472 * the data already digested. */
    473CK_PKCS11_FUNCTION_INFO(C_DigestKey)
    474#ifdef CK_NEED_ARG_LIST
    475 (CK_SESSION_HANDLE hSession, /* the session's handle */
    476 CK_OBJECT_HANDLE hKey /* secret key to digest */
    477 );
    478#endif
    479
    480
    481/* C_DigestFinal finishes a multiple-part message-digesting
    482 * operation. */
    483CK_PKCS11_FUNCTION_INFO(C_DigestFinal)
    484#ifdef CK_NEED_ARG_LIST
    485 (CK_SESSION_HANDLE hSession, /* the session's handle */
    486 CK_BYTE_PTR pDigest, /* gets the message digest */
    487 CK_ULONG_PTR pulDigestLen /* gets byte count of digest */
    488 );
    489#endif
    490
    491
    492
    493/* Signing and MACing */
    494
    495/* C_SignInit initializes a signature (private key encryption)
    496 * operation, where the signature is (will be) an appendix to
    497 * the data, and plaintext cannot be recovered from the
    498 *signature. */
    499CK_PKCS11_FUNCTION_INFO(C_SignInit)
    500#ifdef CK_NEED_ARG_LIST
    501 (CK_SESSION_HANDLE hSession, /* the session's handle */
    502 CK_MECHANISM_PTR pMechanism, /* the signature mechanism */
    503 CK_OBJECT_HANDLE hKey /* handle of signature key */
    504 );
    505#endif
    506
    507
    508/* C_Sign signs (encrypts with private key) data in a single
    509 * part, where the signature is (will be) an appendix to the
    510 * data, and plaintext cannot be recovered from the signature. */
    512#ifdef CK_NEED_ARG_LIST
    513 (CK_SESSION_HANDLE hSession, /* the session's handle */
    514 CK_BYTE_PTR pData, /* the data to sign */
    515 CK_ULONG ulDataLen, /* count of bytes to sign */
    516 CK_BYTE_PTR pSignature, /* gets the signature */
    517 CK_ULONG_PTR pulSignatureLen /* gets signature length */
    518 );
    519#endif
    520
    521
    522/* C_SignUpdate continues a multiple-part signature operation,
    523 * where the signature is (will be) an appendix to the data,
    524 * and plaintext cannot be recovered from the signature. */
    525CK_PKCS11_FUNCTION_INFO(C_SignUpdate)
    526#ifdef CK_NEED_ARG_LIST
    527 (CK_SESSION_HANDLE hSession, /* the session's handle */
    528 CK_BYTE_PTR pPart, /* the data to sign */
    529 CK_ULONG ulPartLen /* count of bytes to sign */
    530 );
    531#endif
    532
    533
    534/* C_SignFinal finishes a multiple-part signature operation,
    535 * returning the signature. */
    536CK_PKCS11_FUNCTION_INFO(C_SignFinal)
    537#ifdef CK_NEED_ARG_LIST
    538 (CK_SESSION_HANDLE hSession, /* the session's handle */
    539 CK_BYTE_PTR pSignature, /* gets the signature */
    540 CK_ULONG_PTR pulSignatureLen /* gets signature length */
    541 );
    542#endif
    543
    544
    545/* C_SignRecoverInit initializes a signature operation, where
    546 * the data can be recovered from the signature. */
    547CK_PKCS11_FUNCTION_INFO(C_SignRecoverInit)
    548#ifdef CK_NEED_ARG_LIST
    549 (CK_SESSION_HANDLE hSession, /* the session's handle */
    550 CK_MECHANISM_PTR pMechanism, /* the signature mechanism */
    551 CK_OBJECT_HANDLE hKey /* handle of the signature key */
    552 );
    553#endif
    554
    555
    556/* C_SignRecover signs data in a single operation, where the
    557 * data can be recovered from the signature. */
    558CK_PKCS11_FUNCTION_INFO(C_SignRecover)
    559#ifdef CK_NEED_ARG_LIST
    560 (CK_SESSION_HANDLE hSession, /* the session's handle */
    561 CK_BYTE_PTR pData, /* the data to sign */
    562 CK_ULONG ulDataLen, /* count of bytes to sign */
    563 CK_BYTE_PTR pSignature, /* gets the signature */
    564 CK_ULONG_PTR pulSignatureLen /* gets signature length */
    565 );
    566#endif
    567
    568
    569
    570/* Verifying signatures and MACs */
    571
    572/* C_VerifyInit initializes a verification operation, where the
    573 * signature is an appendix to the data, and plaintext cannot
    574 * cannot be recovered from the signature (e.g. DSA). */
    575CK_PKCS11_FUNCTION_INFO(C_VerifyInit)
    576#ifdef CK_NEED_ARG_LIST
    577 (CK_SESSION_HANDLE hSession, /* the session's handle */
    578 CK_MECHANISM_PTR pMechanism, /* the verification mechanism */
    579 CK_OBJECT_HANDLE hKey /* verification key */
    580 );
    581#endif
    582
    583
    584/* C_Verify verifies a signature in a single-part operation,
    585 * where the signature is an appendix to the data, and plaintext
    586 * cannot be recovered from the signature. */
    588#ifdef CK_NEED_ARG_LIST
    589 (CK_SESSION_HANDLE hSession, /* the session's handle */
    590 CK_BYTE_PTR pData, /* signed data */
    591 CK_ULONG ulDataLen, /* length of signed data */
    592 CK_BYTE_PTR pSignature, /* signature */
    593 CK_ULONG ulSignatureLen /* signature length */
    594 );
    595#endif
    596
    597
    598/* C_VerifyUpdate continues a multiple-part verification
    599 * operation, where the signature is an appendix to the data,
    600 * and plaintext cannot be recovered from the signature. */
    601CK_PKCS11_FUNCTION_INFO(C_VerifyUpdate)
    602#ifdef CK_NEED_ARG_LIST
    603 (CK_SESSION_HANDLE hSession, /* the session's handle */
    604 CK_BYTE_PTR pPart, /* signed data */
    605 CK_ULONG ulPartLen /* length of signed data */
    606 );
    607#endif
    608
    609
    610/* C_VerifyFinal finishes a multiple-part verification
    611 * operation, checking the signature. */
    612CK_PKCS11_FUNCTION_INFO(C_VerifyFinal)
    613#ifdef CK_NEED_ARG_LIST
    614 (CK_SESSION_HANDLE hSession, /* the session's handle */
    615 CK_BYTE_PTR pSignature, /* signature to verify */
    616 CK_ULONG ulSignatureLen /* signature length */
    617 );
    618#endif
    619
    620
    621/* C_VerifyRecoverInit initializes a signature verification
    622 * operation, where the data is recovered from the signature. */
    623CK_PKCS11_FUNCTION_INFO(C_VerifyRecoverInit)
    624#ifdef CK_NEED_ARG_LIST
    625 (CK_SESSION_HANDLE hSession, /* the session's handle */
    626 CK_MECHANISM_PTR pMechanism, /* the verification mechanism */
    627 CK_OBJECT_HANDLE hKey /* verification key */
    628 );
    629#endif
    630
    631
    632/* C_VerifyRecover verifies a signature in a single-part
    633 * operation, where the data is recovered from the signature. */
    634CK_PKCS11_FUNCTION_INFO(C_VerifyRecover)
    635#ifdef CK_NEED_ARG_LIST
    636 (CK_SESSION_HANDLE hSession, /* the session's handle */
    637 CK_BYTE_PTR pSignature, /* signature to verify */
    638 CK_ULONG ulSignatureLen, /* signature length */
    639 CK_BYTE_PTR pData, /* gets signed data */
    640 CK_ULONG_PTR pulDataLen /* gets signed data len */
    641 );
    642#endif
    643
    644
    645
    646/* Dual-function cryptographic operations */
    647
    648/* C_DigestEncryptUpdate continues a multiple-part digesting
    649 * and encryption operation. */
    650CK_PKCS11_FUNCTION_INFO(C_DigestEncryptUpdate)
    651#ifdef CK_NEED_ARG_LIST
    652 (CK_SESSION_HANDLE hSession, /* session's handle */
    653 CK_BYTE_PTR pPart, /* the plaintext data */
    654 CK_ULONG ulPartLen, /* plaintext length */
    655 CK_BYTE_PTR pEncryptedPart, /* gets ciphertext */
    656 CK_ULONG_PTR pulEncryptedPartLen /* gets c-text length */
    657 );
    658#endif
    659
    660
    661/* C_DecryptDigestUpdate continues a multiple-part decryption and
    662 * digesting operation. */
    663CK_PKCS11_FUNCTION_INFO(C_DecryptDigestUpdate)
    664#ifdef CK_NEED_ARG_LIST
    665 (CK_SESSION_HANDLE hSession, /* session's handle */
    666 CK_BYTE_PTR pEncryptedPart, /* ciphertext */
    667 CK_ULONG ulEncryptedPartLen, /* ciphertext length */
    668 CK_BYTE_PTR pPart, /* gets plaintext */
    669 CK_ULONG_PTR pulPartLen /* gets plaintext len */
    670 );
    671#endif
    672
    673
    674/* C_SignEncryptUpdate continues a multiple-part signing and
    675 * encryption operation. */
    676CK_PKCS11_FUNCTION_INFO(C_SignEncryptUpdate)
    677#ifdef CK_NEED_ARG_LIST
    678 (CK_SESSION_HANDLE hSession, /* session's handle */
    679 CK_BYTE_PTR pPart, /* the plaintext data */
    680 CK_ULONG ulPartLen, /* plaintext length */
    681 CK_BYTE_PTR pEncryptedPart, /* gets ciphertext */
    682 CK_ULONG_PTR pulEncryptedPartLen /* gets c-text length */
    683 );
    684#endif
    685
    686
    687/* C_DecryptVerifyUpdate continues a multiple-part decryption and
    688 * verify operation. */
    689CK_PKCS11_FUNCTION_INFO(C_DecryptVerifyUpdate)
    690#ifdef CK_NEED_ARG_LIST
    691 (CK_SESSION_HANDLE hSession, /* session's handle */
    692 CK_BYTE_PTR pEncryptedPart, /* ciphertext */
    693 CK_ULONG ulEncryptedPartLen, /* ciphertext length */
    694 CK_BYTE_PTR pPart, /* gets plaintext */
    695 CK_ULONG_PTR pulPartLen /* gets p-text length */
    696 );
    697#endif
    698
    699
    700
    701/* Key management */
    702
    703/* C_GenerateKey generates a secret key, creating a new key
    704 * object. */
    705CK_PKCS11_FUNCTION_INFO(C_GenerateKey)
    706#ifdef CK_NEED_ARG_LIST
    707 (CK_SESSION_HANDLE hSession, /* the session's handle */
    708 CK_MECHANISM_PTR pMechanism, /* key generation mech. */
    709 CK_ATTRIBUTE_PTR pTemplate, /* template for new key */
    710 CK_ULONG ulCount, /* # of attrs in template */
    711 CK_OBJECT_HANDLE_PTR phKey /* gets handle of new key */
    712 );
    713#endif
    714
    715
    716/* C_GenerateKeyPair generates a public-key/private-key pair,
    717 * creating new key objects. */
    718CK_PKCS11_FUNCTION_INFO(C_GenerateKeyPair)
    719#ifdef CK_NEED_ARG_LIST
    720 (CK_SESSION_HANDLE hSession, /* session
    721 * handle */
    722 CK_MECHANISM_PTR pMechanism, /* key-gen
    723 * mech. */
    724 CK_ATTRIBUTE_PTR pPublicKeyTemplate, /* template
    725 * for pub.
    726 * key */
    727 CK_ULONG ulPublicKeyAttributeCount, /* # pub.
    728 * attrs. */
    729 CK_ATTRIBUTE_PTR pPrivateKeyTemplate, /* template
    730 * for priv.
    731 * key */
    732 CK_ULONG ulPrivateKeyAttributeCount, /* # priv.
    733 * attrs. */
    734 CK_OBJECT_HANDLE_PTR phPublicKey, /* gets pub.
    735 * key
    736 * handle */
    737 CK_OBJECT_HANDLE_PTR phPrivateKey /* gets
    738 * priv. key
    739 * handle */
    740 );
    741#endif
    742
    743
    744/* C_WrapKey wraps (i.e., encrypts) a key. */
    746#ifdef CK_NEED_ARG_LIST
    747 (CK_SESSION_HANDLE hSession, /* the session's handle */
    748 CK_MECHANISM_PTR pMechanism, /* the wrapping mechanism */
    749 CK_OBJECT_HANDLE hWrappingKey, /* wrapping key */
    750 CK_OBJECT_HANDLE hKey, /* key to be wrapped */
    751 CK_BYTE_PTR pWrappedKey, /* gets wrapped key */
    752 CK_ULONG_PTR pulWrappedKeyLen /* gets wrapped key size */
    753 );
    754#endif
    755
    756
    757/* C_UnwrapKey unwraps (decrypts) a wrapped key, creating a new
    758 * key object. */
    759CK_PKCS11_FUNCTION_INFO(C_UnwrapKey)
    760#ifdef CK_NEED_ARG_LIST
    761 (CK_SESSION_HANDLE hSession, /* session's handle */
    762 CK_MECHANISM_PTR pMechanism, /* unwrapping mech. */
    763 CK_OBJECT_HANDLE hUnwrappingKey, /* unwrapping key */
    764 CK_BYTE_PTR pWrappedKey, /* the wrapped key */
    765 CK_ULONG ulWrappedKeyLen, /* wrapped key len */
    766 CK_ATTRIBUTE_PTR pTemplate, /* new key template */
    767 CK_ULONG ulAttributeCount, /* template length */
    768 CK_OBJECT_HANDLE_PTR phKey /* gets new handle */
    769 );
    770#endif
    771
    772
    773/* C_DeriveKey derives a key from a base key, creating a new key
    774 * object. */
    775CK_PKCS11_FUNCTION_INFO(C_DeriveKey)
    776#ifdef CK_NEED_ARG_LIST
    777 (CK_SESSION_HANDLE hSession, /* session's handle */
    778 CK_MECHANISM_PTR pMechanism, /* key deriv. mech. */
    779 CK_OBJECT_HANDLE hBaseKey, /* base key */
    780 CK_ATTRIBUTE_PTR pTemplate, /* new key template */
    781 CK_ULONG ulAttributeCount, /* template length */
    782 CK_OBJECT_HANDLE_PTR phKey /* gets new handle */
    783 );
    784#endif
    785
    786
    787
    788/* Random number generation */
    789
    790/* C_SeedRandom mixes additional seed material into the token's
    791 * random number generator. */
    792CK_PKCS11_FUNCTION_INFO(C_SeedRandom)
    793#ifdef CK_NEED_ARG_LIST
    794 (CK_SESSION_HANDLE hSession, /* the session's handle */
    795 CK_BYTE_PTR pSeed, /* the seed material */
    796 CK_ULONG ulSeedLen /* length of seed material */
    797 );
    798#endif
    799
    800
    801/* C_GenerateRandom generates random data. */
    802CK_PKCS11_FUNCTION_INFO(C_GenerateRandom)
    803#ifdef CK_NEED_ARG_LIST
    804 (CK_SESSION_HANDLE hSession, /* the session's handle */
    805 CK_BYTE_PTR RandomData, /* receives the random data */
    806 CK_ULONG ulRandomLen /* # of bytes to generate */
    807 );
    808#endif
    809
    810
    811
    812/* Parallel function management */
    813
    814/* C_GetFunctionStatus is a legacy function; it obtains an
    815 * updated status of a function running in parallel with an
    816 * application. */
    817CK_PKCS11_FUNCTION_INFO(C_GetFunctionStatus)
    818#ifdef CK_NEED_ARG_LIST
    819 (CK_SESSION_HANDLE hSession /* the session's handle */
    820 );
    821#endif
    822
    823
    824/* C_CancelFunction is a legacy function; it cancels a function
    825 * running in parallel. */
    826CK_PKCS11_FUNCTION_INFO(C_CancelFunction)
    827#ifdef CK_NEED_ARG_LIST
    828 (CK_SESSION_HANDLE hSession /* the session's handle */
    829 );
    830#endif
    831
    832
    833
    834/* Functions added in for Cryptoki Version 2.01 or later */
    835
    836/* C_WaitForSlotEvent waits for a slot event (token insertion,
    837 * removal, etc.) to occur. */
    838CK_PKCS11_FUNCTION_INFO(C_WaitForSlotEvent)
    839#ifdef CK_NEED_ARG_LIST
    840 (CK_FLAGS flags, /* blocking/nonblocking flag */
    841 CK_SLOT_ID_PTR pSlot, /* location that receives the slot ID */
    842 CK_VOID_PTR pRserved /* reserved. Should be NULL_PTR */
    843 );
    844#endif
    #define CK_PKCS11_FUNCTION_INFO(name)
    Definition: pkcs11.h:105
    CK_NOTIFICATION CK_VOID_PTR pApplication
    Definition: pkcs11t.h:975
    CK_SESSION_INFO CK_PTR CK_SESSION_INFO_PTR
    Definition: pkcs11t.h:303
    CK_INFO CK_PTR CK_INFO_PTR
    Definition: pkcs11t.h:102
    CK_FUNCTION_LIST_PTR CK_PTR CK_FUNCTION_LIST_PTR_PTR
    Definition: pkcs11t.h:986
    unsigned long int CK_ULONG
    Definition: pkcs11t.h:52
    CK_SLOT_INFO CK_PTR CK_SLOT_INFO_PTR
    Definition: pkcs11t.h:138
    CK_BYTE CK_PTR CK_BYTE_PTR
    Definition: pkcs11t.h:67
    CK_TOKEN_INFO CK_PTR CK_TOKEN_INFO_PTR
    Definition: pkcs11t.h:255
    CK_OBJECT_HANDLE CK_PTR CK_OBJECT_HANDLE_PTR
    Definition: pkcs11t.h:310
    CK_ULONG CK_SLOT_ID
    Definition: pkcs11t.h:113
    CK_ULONG CK_FLAGS
    Definition: pkcs11t.h:59
    CK_ULONG CK_SESSION_HANDLE
    Definition: pkcs11t.h:260
    CK_ATTRIBUTE CK_PTR CK_ATTRIBUTE_PTR
    Definition: pkcs11t.h:506
    CK_MECHANISM_TYPE CK_PTR CK_MECHANISM_TYPE_PTR
    Definition: pkcs11t.h:774
    CK_ULONG CK_USER_TYPE
    Definition: pkcs11t.h:268
    CK_MECHANISM_INFO CK_PTR CK_MECHANISM_INFO_PTR
    Definition: pkcs11t.h:834
    CK_ULONG CK_MECHANISM_TYPE
    Definition: pkcs11t.h:521
    CK_BYTE CK_BBOOL
    Definition: pkcs11t.h:49
    void CK_PTR CK_VOID_PTR
    Definition: pkcs11t.h:71
    CK_SLOT_ID CK_PTR CK_SLOT_ID_PTR
    Definition: pkcs11t.h:115
    CK_ULONG CK_OBJECT_HANDLE
    Definition: pkcs11t.h:308
    CK_SESSION_HANDLE CK_PTR CK_SESSION_HANDLE_PTR
    Definition: pkcs11t.h:262
    CK_ULONG CK_PTR CK_ULONG_PTR
    Definition: pkcs11t.h:70
    CK_UTF8CHAR CK_PTR CK_UTF8CHAR_PTR
    Definition: pkcs11t.h:69
    CK_MECHANISM CK_PTR CK_MECHANISM_PTR
    Definition: pkcs11t.h:788
    pam_pkcs11-0.6.12/doc/api/menudata.js0000644000175000017500000001537414367517110014151 00000000000000/* @licstart The following is the entire license notice for the JavaScript code in this file. The MIT License (MIT) Copyright (C) 1997-2020 by Dimitri van Heesch Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @licend The above is the entire license notice for the JavaScript code in this file */ var menudata={children:[ {text:"Main Page",url:"index.html"}, {text:"Data Structures",url:"annotated.html",children:[ {text:"Data Structures",url:"annotated.html"}, {text:"Data Fields",url:"functions.html",children:[ {text:"All",url:"functions.html",children:[ {text:"a",url:"functions.html#index_a"}, {text:"b",url:"functions_b.html#index_b"}, {text:"c",url:"functions_c.html#index_c"}, {text:"d",url:"functions_d.html#index_d"}, {text:"e",url:"functions_e.html#index_e"}, {text:"f",url:"functions_f.html#index_f"}, {text:"h",url:"functions_h.html#index_h"}, {text:"i",url:"functions_i.html#index_i"}, {text:"k",url:"functions_k.html#index_k"}, {text:"l",url:"functions_l.html#index_l"}, {text:"m",url:"functions_m.html#index_m"}, {text:"n",url:"functions_n.html#index_n"}, {text:"o",url:"functions_o.html#index_o"}, {text:"p",url:"functions_p.html#index_p"}, {text:"q",url:"functions_q.html#index_q"}, {text:"r",url:"functions_r.html#index_r"}, {text:"s",url:"functions_s.html#index_s"}, {text:"t",url:"functions_t.html#index_t"}, {text:"u",url:"functions_u.html#index_u"}, {text:"v",url:"functions_v.html#index_v"}, {text:"w",url:"functions_w.html#index_w"}, {text:"y",url:"functions_y.html#index_y"}]}, {text:"Variables",url:"functions_vars.html",children:[ {text:"a",url:"functions_vars.html#index_a"}, {text:"b",url:"functions_vars_b.html#index_b"}, {text:"c",url:"functions_vars_c.html#index_c"}, {text:"d",url:"functions_vars_d.html#index_d"}, {text:"e",url:"functions_vars_e.html#index_e"}, {text:"f",url:"functions_vars_f.html#index_f"}, {text:"h",url:"functions_vars_h.html#index_h"}, {text:"i",url:"functions_vars_i.html#index_i"}, {text:"k",url:"functions_vars_k.html#index_k"}, {text:"l",url:"functions_vars_l.html#index_l"}, {text:"m",url:"functions_vars_m.html#index_m"}, {text:"n",url:"functions_vars_n.html#index_n"}, {text:"o",url:"functions_vars_o.html#index_o"}, {text:"p",url:"functions_vars_p.html#index_p"}, {text:"q",url:"functions_vars_q.html#index_q"}, {text:"r",url:"functions_vars_r.html#index_r"}, {text:"s",url:"functions_vars_s.html#index_s"}, {text:"t",url:"functions_vars_t.html#index_t"}, {text:"u",url:"functions_vars_u.html#index_u"}, {text:"v",url:"functions_vars_v.html#index_v"}, {text:"w",url:"functions_vars_w.html#index_w"}, {text:"y",url:"functions_vars_y.html#index_y"}]}, {text:"Enumerator",url:"functions_eval.html"}]}]}, {text:"Files",url:"files.html",children:[ {text:"File List",url:"files.html"}, {text:"Globals",url:"globals.html",children:[ {text:"All",url:"globals.html",children:[ {text:"_",url:"globals.html#index__5F"}, {text:"a",url:"globals_a.html#index_a"}, {text:"b",url:"globals_b.html#index_b"}, {text:"c",url:"globals_c.html#index_c"}, {text:"d",url:"globals_d.html#index_d"}, {text:"e",url:"globals_e.html#index_e"}, {text:"f",url:"globals_f.html#index_f"}, {text:"g",url:"globals_g.html#index_g"}, {text:"h",url:"globals_h.html#index_h"}, {text:"i",url:"globals_i.html#index_i"}, {text:"l",url:"globals_l.html#index_l"}, {text:"m",url:"globals_m.html#index_m"}, {text:"n",url:"globals_n.html#index_n"}, {text:"o",url:"globals_o.html#index_o"}, {text:"p",url:"globals_p.html#index_p"}, {text:"r",url:"globals_r.html#index_r"}, {text:"s",url:"globals_s.html#index_s"}, {text:"t",url:"globals_t.html#index_t"}, {text:"u",url:"globals_u.html#index_u"}, {text:"v",url:"globals_v.html#index_v"}, {text:"w",url:"globals_w.html#index_w"}, {text:"x",url:"globals_x.html#index_x"}]}, {text:"Functions",url:"globals_func.html",children:[ {text:"a",url:"globals_func.html#index_a"}, {text:"b",url:"globals_func_b.html#index_b"}, {text:"c",url:"globals_func_c.html#index_c"}, {text:"d",url:"globals_func_d.html#index_d"}, {text:"e",url:"globals_func_e.html#index_e"}, {text:"f",url:"globals_func_f.html#index_f"}, {text:"g",url:"globals_func_g.html#index_g"}, {text:"h",url:"globals_func_h.html#index_h"}, {text:"i",url:"globals_func_i.html#index_i"}, {text:"l",url:"globals_func_l.html#index_l"}, {text:"m",url:"globals_func_m.html#index_m"}, {text:"o",url:"globals_func_o.html#index_o"}, {text:"p",url:"globals_func_p.html#index_p"}, {text:"r",url:"globals_func_r.html#index_r"}, {text:"s",url:"globals_func_s.html#index_s"}, {text:"t",url:"globals_func_t.html#index_t"}, {text:"u",url:"globals_func_u.html#index_u"}, {text:"v",url:"globals_func_v.html#index_v"}, {text:"w",url:"globals_func_w.html#index_w"}]}, {text:"Variables",url:"globals_vars.html"}, {text:"Typedefs",url:"globals_type.html",children:[ {text:"a",url:"globals_type.html#index_a"}, {text:"c",url:"globals_type.html#index_c"}, {text:"e",url:"globals_type.html#index_e"}, {text:"m",url:"globals_type.html#index_m"}, {text:"p",url:"globals_type.html#index_p"}, {text:"s",url:"globals_type.html#index_s"}]}, {text:"Enumerations",url:"globals_enum.html"}, {text:"Enumerator",url:"globals_eval.html"}, {text:"Macros",url:"globals_defs.html",children:[ {text:"_",url:"globals_defs.html#index__5F"}, {text:"a",url:"globals_defs_a.html#index_a"}, {text:"b",url:"globals_defs_b.html#index_b"}, {text:"c",url:"globals_defs_c.html#index_c"}, {text:"d",url:"globals_defs_d.html#index_d"}, {text:"e",url:"globals_defs_e.html#index_e"}, {text:"f",url:"globals_defs_f.html#index_f"}, {text:"m",url:"globals_defs_m.html#index_m"}, {text:"n",url:"globals_defs_n.html#index_n"}, {text:"o",url:"globals_defs_o.html#index_o"}, {text:"p",url:"globals_defs_p.html#index_p"}, {text:"r",url:"globals_defs_r.html#index_r"}, {text:"s",url:"globals_defs_s.html#index_s"}, {text:"t",url:"globals_defs_t.html#index_t"}, {text:"u",url:"globals_defs_u.html#index_u"}, {text:"x",url:"globals_defs_x.html#index_x"}]}]}]}]} pam_pkcs11-0.6.12/doc/api/subject__mapper_8h_source.html0000644000175000017500000002363314367517110020021 00000000000000 pam_pkcs11: subject_mapper.h Source File
    pam_pkcs11 0.6.12
    subject_mapper.h
    Go to the documentation of this file.
    1/*
    2 * PAM-PKCS11 mapping modules
    3 * Copyright (C) 2005 Juan Antonio Martinez <jonsito@teleline.es>
    4 * pam-pkcs11 is copyright (C) 2003-2004 of Mario Strasser <mast@gmx.net>
    5 *
    6 * This library is free software; you can redistribute it and/or
    7 * modify it under the terms of the GNU Lesser General Public
    8 * License as published by the Free Software Foundation; either
    9 * version 2.1 of the License, or (at your option) any later version.
    10 *
    11 * This library is distributed in the hope that it will be useful,
    12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14 * Lesser General Public License for more details.
    15 *
    16 * You should have received a copy of the GNU Lesser General Public
    17 * License along with this library; if not, write to the Free Software
    18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    19 *
    20 * $Id$
    21 */
    22
    23#ifndef __SUBJECT_MAPPER_H_
    24#define __SUBJECT_MAPPER_H_
    25
    26#ifdef HAVE_CONFIG_H
    27#include <config.h>
    28#endif
    29
    30#include "../scconf/scconf.h"
    31#include "mapper.h"
    32
    33#ifdef SUBJECT_MAPPER_STATIC
    34
    35#ifndef __SUBJECT_MAPPER_C_
    36#define SUBJECT_EXTERN extern
    37#else
    38#define SUBJECT_EXTERN
    39#endif
    40SUBJECT_EXTERN mapper_module * subject_mapper_module_init(scconf_block *blk,const char *mapper_name);
    41#undef SUBJECT_EXTERN
    42
    43/* end of static (if any) declarations */
    44#endif
    45
    46/* End of subject_mapper.h */
    47#endif
    Structure to be filled on mapper module initialization.
    Definition: mapper.h:40
    pam_pkcs11-0.6.12/doc/api/functions_vars_n.html0000644000175000017500000000653714367517110016264 00000000000000 pam_pkcs11: Data Fields - Variables
    pam_pkcs11 0.6.12
    pam_pkcs11-0.6.12/doc/api/structCK__C__INITIALIZE__ARGS.html0000644000175000017500000002165714367517110017702 00000000000000 pam_pkcs11: CK_C_INITIALIZE_ARGS Struct Reference
    pam_pkcs11 0.6.12
    CK_C_INITIALIZE_ARGS Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_CREATEMUTEX CreateMutex
     
    CK_DESTROYMUTEX DestroyMutex
     
    CK_LOCKMUTEX LockMutex
     
    CK_UNLOCKMUTEX UnlockMutex
     
    CK_FLAGS flags
     
    CK_VOID_PTR pReserved
     

    Detailed Description

    Definition at line 1014 of file pkcs11t.h.

    Field Documentation

    ◆ CreateMutex

    CK_CREATEMUTEX CreateMutex

    Definition at line 1015 of file pkcs11t.h.

    ◆ DestroyMutex

    CK_DESTROYMUTEX DestroyMutex

    Definition at line 1016 of file pkcs11t.h.

    ◆ flags

    CK_FLAGS flags

    Definition at line 1019 of file pkcs11t.h.

    ◆ LockMutex

    CK_LOCKMUTEX LockMutex

    Definition at line 1017 of file pkcs11t.h.

    ◆ pReserved

    CK_VOID_PTR pReserved

    Definition at line 1020 of file pkcs11t.h.

    ◆ UnlockMutex

    CK_UNLOCKMUTEX UnlockMutex

    Definition at line 1018 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/jquery.js0000644000175000017500000053125514367517110013673 00000000000000/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
    ",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
    "),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
    ").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
    "),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
    "),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element },_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler * Licensed under MIT * @author Ariel Flesler * @version 2.1.2 */ ;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 * http://www.smartmenus.org/ * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$});pam_pkcs11-0.6.12/doc/api/structCK__PKCS5__PBKD2__PARAMS.html0000644000175000017500000003200614367517110017723 00000000000000 pam_pkcs11: CK_PKCS5_PBKD2_PARAMS Struct Reference
    pam_pkcs11 0.6.12
    CK_PKCS5_PBKD2_PARAMS Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE saltSource
     
    CK_VOID_PTR pSaltSourceData
     
    CK_ULONG ulSaltSourceDataLen
     
    CK_ULONG iterations
     
    CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE prf
     
    CK_VOID_PTR pPrfData
     
    CK_ULONG ulPrfDataLen
     
    CK_UTF8CHAR_PTR pPassword
     
    CK_ULONG_PTR ulPasswordLen
     

    Detailed Description

    Definition at line 1409 of file pkcs11t.h.

    Field Documentation

    ◆ iterations

    CK_ULONG iterations

    Definition at line 1413 of file pkcs11t.h.

    ◆ pPassword

    CK_UTF8CHAR_PTR pPassword

    Definition at line 1417 of file pkcs11t.h.

    ◆ pPrfData

    CK_VOID_PTR pPrfData

    Definition at line 1415 of file pkcs11t.h.

    ◆ prf

    ◆ pSaltSourceData

    CK_VOID_PTR pSaltSourceData

    Definition at line 1411 of file pkcs11t.h.

    ◆ saltSource

    Definition at line 1410 of file pkcs11t.h.

    ◆ ulPasswordLen

    CK_ULONG_PTR ulPasswordLen

    Definition at line 1418 of file pkcs11t.h.

    ◆ ulPrfDataLen

    CK_ULONG ulPrfDataLen

    Definition at line 1416 of file pkcs11t.h.

    ◆ ulSaltSourceDataLen

    CK_ULONG ulSaltSourceDataLen

    Definition at line 1412 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/scconf_8h.html0000644000175000017500000020766214367517110014560 00000000000000 pam_pkcs11: scconf.h File Reference
    pam_pkcs11 0.6.12
    scconf.h File Reference

    Go to the source code of this file.

    Data Structures

    struct  _scconf_entry
     
    struct  _scconf_list
     
    struct  _scconf_item
     
    struct  _scconf_block
     
    struct  scconf_context
     

    Macros

    #define SCCONF_PRESENT   0x00000001
     
    #define SCCONF_MANDATORY   0x00000002
     
    #define SCCONF_ALLOC   0x00000004
     
    #define SCCONF_ALL_BLOCKS   0x00000008
     
    #define SCCONF_VERBOSE   0x00000010 /* For debugging purposes only */
     
    #define SCCONF_CALLBACK   1
     
    #define SCCONF_BLOCK   2
     
    #define SCCONF_LIST   3
     
    #define SCCONF_BOOLEAN   11
     
    #define SCCONF_INTEGER   12
     
    #define SCCONF_STRING   13
     
    #define SCCONF_ITEM_TYPE_COMMENT   0 /* key = NULL, comment */
     
    #define SCCONF_ITEM_TYPE_BLOCK   1 /* key = key, block */
     
    #define SCCONF_ITEM_TYPE_VALUE   2 /* key = key, list */
     

    Typedefs

    typedef struct _scconf_entry scconf_entry
     
    typedef struct _scconf_block scconf_block
     
    typedef struct _scconf_list scconf_list
     
    typedef struct _scconf_item scconf_item
     

    Functions

    scconf_contextscconf_new (const char *filename)
     
    void scconf_free (scconf_context *config)
     
    int scconf_parse (scconf_context *config)
     
    int scconf_parse_string (scconf_context *config, const char *string)
     
    int scconf_parse_entries (const scconf_context *config, const scconf_block *block, scconf_entry *entry)
     
    int scconf_write (scconf_context *config, const char *filename)
     
    int scconf_write_entries (scconf_context *config, scconf_block *block, scconf_entry *entry)
     
    const scconf_blockscconf_find_block (const scconf_context *config, const scconf_block *block, const char *item_name)
     
    scconf_block ** scconf_find_blocks (const scconf_context *config, const scconf_block *block, const char *item_name, const char *key)
     
    const scconf_listscconf_find_list (const scconf_block *block, const char *option)
     
    const char * scconf_get_str (const scconf_block *block, const char *option, const char *def)
     
    int scconf_get_int (const scconf_block *block, const char *option, int def)
     
    int scconf_get_bool (const scconf_block *block, const char *option, int def)
     
    const char * scconf_put_str (scconf_block *block, const char *option, const char *value)
     
    int scconf_put_int (scconf_block *block, const char *option, int value)
     
    int scconf_put_bool (scconf_block *block, const char *option, int value)
     
    scconf_blockscconf_block_add (scconf_context *config, scconf_block *block, const char *key, const scconf_list *name)
     
    scconf_blockscconf_block_copy (const scconf_block *src, scconf_block **dst)
     
    void scconf_block_destroy (scconf_block *block)
     
    scconf_itemscconf_item_add (scconf_context *config, scconf_block *block, scconf_item *item, int type, const char *key, const void *data)
     
    scconf_itemscconf_item_copy (const scconf_item *src, scconf_item **dst)
     
    void scconf_item_destroy (scconf_item *item)
     
    scconf_listscconf_list_add (scconf_list **list, const char *value)
     
    scconf_listscconf_list_copy (const scconf_list *src, scconf_list **dst)
     
    void scconf_list_destroy (scconf_list *list)
     
    int scconf_list_array_length (const scconf_list *list)
     
    int scconf_list_strings_length (const scconf_list *list)
     
    char * scconf_list_strdup (const scconf_list *list, const char *filler)
     
    const char ** scconf_list_toarray (const scconf_list *list)
     

    Macro Definition Documentation

    ◆ SCCONF_ALL_BLOCKS

    #define SCCONF_ALL_BLOCKS   0x00000008

    Definition at line 43 of file scconf.h.

    ◆ SCCONF_ALLOC

    #define SCCONF_ALLOC   0x00000004

    Definition at line 42 of file scconf.h.

    ◆ SCCONF_BLOCK

    #define SCCONF_BLOCK   2

    Definition at line 48 of file scconf.h.

    ◆ SCCONF_BOOLEAN

    #define SCCONF_BOOLEAN   11

    Definition at line 51 of file scconf.h.

    ◆ SCCONF_CALLBACK

    #define SCCONF_CALLBACK   1

    Definition at line 47 of file scconf.h.

    ◆ SCCONF_INTEGER

    #define SCCONF_INTEGER   12

    Definition at line 52 of file scconf.h.

    ◆ SCCONF_ITEM_TYPE_BLOCK

    #define SCCONF_ITEM_TYPE_BLOCK   1 /* key = key, block */

    Definition at line 63 of file scconf.h.

    ◆ SCCONF_ITEM_TYPE_COMMENT

    #define SCCONF_ITEM_TYPE_COMMENT   0 /* key = NULL, comment */

    Definition at line 62 of file scconf.h.

    ◆ SCCONF_ITEM_TYPE_VALUE

    #define SCCONF_ITEM_TYPE_VALUE   2 /* key = key, list */

    Definition at line 64 of file scconf.h.

    ◆ SCCONF_LIST

    #define SCCONF_LIST   3

    Definition at line 49 of file scconf.h.

    ◆ SCCONF_MANDATORY

    #define SCCONF_MANDATORY   0x00000002

    Definition at line 41 of file scconf.h.

    ◆ SCCONF_PRESENT

    #define SCCONF_PRESENT   0x00000001

    Definition at line 40 of file scconf.h.

    ◆ SCCONF_STRING

    #define SCCONF_STRING   13

    Definition at line 53 of file scconf.h.

    ◆ SCCONF_VERBOSE

    #define SCCONF_VERBOSE   0x00000010 /* For debugging purposes only */

    Definition at line 44 of file scconf.h.

    Typedef Documentation

    ◆ scconf_block

    typedef struct _scconf_block scconf_block

    Definition at line 55 of file scconf.h.

    ◆ scconf_entry

    typedef struct _scconf_entry scconf_entry

    ◆ scconf_item

    typedef struct _scconf_item scconf_item

    ◆ scconf_list

    typedef struct _scconf_list scconf_list

    Function Documentation

    ◆ scconf_block_add()

    scconf_block * scconf_block_add ( scconf_context config,
    scconf_block block,
    const char *  key,
    const scconf_list name 
    )

    ◆ scconf_block_copy()

    scconf_block * scconf_block_copy ( const scconf_block src,
    scconf_block **  dst 
    )

    ◆ scconf_block_destroy()

    void scconf_block_destroy ( scconf_block block)

    ◆ scconf_find_block()

    const scconf_block * scconf_find_block ( const scconf_context config,
    const scconf_block block,
    const char *  item_name 
    )

    ◆ scconf_find_blocks()

    scconf_block ** scconf_find_blocks ( const scconf_context config,
    const scconf_block block,
    const char *  item_name,
    const char *  key 
    )

    ◆ scconf_find_list()

    const scconf_list * scconf_find_list ( const scconf_block block,
    const char *  option 
    )

    ◆ scconf_free()

    void scconf_free ( scconf_context config)

    ◆ scconf_get_bool()

    int scconf_get_bool ( const scconf_block block,
    const char *  option,
    int  def 
    )

    ◆ scconf_get_int()

    int scconf_get_int ( const scconf_block block,
    const char *  option,
    int  def 
    )

    ◆ scconf_get_str()

    const char * scconf_get_str ( const scconf_block block,
    const char *  option,
    const char *  def 
    )

    ◆ scconf_item_add()

    scconf_item * scconf_item_add ( scconf_context config,
    scconf_block block,
    scconf_item item,
    int  type,
    const char *  key,
    const void *  data 
    )

    ◆ scconf_item_copy()

    scconf_item * scconf_item_copy ( const scconf_item src,
    scconf_item **  dst 
    )

    ◆ scconf_item_destroy()

    void scconf_item_destroy ( scconf_item item)

    ◆ scconf_list_add()

    scconf_list * scconf_list_add ( scconf_list **  list,
    const char *  value 
    )

    ◆ scconf_list_array_length()

    int scconf_list_array_length ( const scconf_list list)

    ◆ scconf_list_copy()

    scconf_list * scconf_list_copy ( const scconf_list src,
    scconf_list **  dst 
    )

    ◆ scconf_list_destroy()

    void scconf_list_destroy ( scconf_list list)

    ◆ scconf_list_strdup()

    char * scconf_list_strdup ( const scconf_list list,
    const char *  filler 
    )

    ◆ scconf_list_strings_length()

    int scconf_list_strings_length ( const scconf_list list)

    ◆ scconf_list_toarray()

    const char ** scconf_list_toarray ( const scconf_list list)

    ◆ scconf_new()

    scconf_context * scconf_new ( const char *  filename)

    ◆ scconf_parse()

    int scconf_parse ( scconf_context config)

    ◆ scconf_parse_entries()

    int scconf_parse_entries ( const scconf_context config,
    const scconf_block block,
    scconf_entry entry 
    )

    ◆ scconf_parse_string()

    int scconf_parse_string ( scconf_context config,
    const char *  string 
    )

    ◆ scconf_put_bool()

    int scconf_put_bool ( scconf_block block,
    const char *  option,
    int  value 
    )

    ◆ scconf_put_int()

    int scconf_put_int ( scconf_block block,
    const char *  option,
    int  value 
    )

    ◆ scconf_put_str()

    const char * scconf_put_str ( scconf_block block,
    const char *  option,
    const char *  value 
    )

    ◆ scconf_write()

    int scconf_write ( scconf_context config,
    const char *  filename 
    )

    ◆ scconf_write_entries()

    int scconf_write_entries ( scconf_context config,
    scconf_block block,
    scconf_entry entry 
    )
    pam_pkcs11-0.6.12/doc/api/nav_h.png0000644000175000017500000000014214367517110013601 00000000000000PNG  IHDR ,@)IDATxA @BQۛТ) ) aܿoRlIENDB`pam_pkcs11-0.6.12/doc/api/struct__scconf__item.html0000644000175000017500000002303614367517110017070 00000000000000 pam_pkcs11: _scconf_item Struct Reference
    pam_pkcs11 0.6.12
    _scconf_item Struct Reference

    #include <scconf.h>

    Data Fields

    struct _scconf_itemnext
     
    int type
     
    char * key
     
    union {
       char *   comment
     
       scconf_block *   block
     
       scconf_list *   list
     
    value
     

    Detailed Description

    Definition at line 66 of file scconf.h.

    Field Documentation

    ◆ block

    scconf_block* block

    Definition at line 72 of file scconf.h.

    ◆ comment

    char* comment

    Definition at line 71 of file scconf.h.

    ◆ key

    char* key

    Definition at line 69 of file scconf.h.

    ◆ list

    scconf_list* list

    Definition at line 73 of file scconf.h.

    ◆ next

    struct _scconf_item* next

    Definition at line 67 of file scconf.h.

    ◆ type

    int type

    Definition at line 68 of file scconf.h.

    ◆ 

    union { ... } value

    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/structmapfile.html0000644000175000017500000002416214367517110015560 00000000000000 pam_pkcs11: mapfile Struct Reference
    pam_pkcs11 0.6.12
    mapfile Struct Reference

    This struct is used in processing map files a map file is a list of "key" " -> " "value" text lines. More...

    #include <mapper.h>

    Data Fields

    const char * uri
     URL of mapfile. More...
     
    char * buffer
     buffer to content of mapfile More...
     
    size_t length
     lenght of buffer More...
     
    char * pt
     pointer to last readed entry in buffer More...
     
    char * key
     key entry in current buffer More...
     
    char * value
     value assigned to key More...
     

    Detailed Description

    This struct is used in processing map files a map file is a list of "key" " -> " "value" text lines.

    Definition at line 63 of file mapper.h.

    Field Documentation

    ◆ buffer

    char* buffer

    buffer to content of mapfile

    Definition at line 67 of file mapper.h.

    ◆ key

    char* key

    key entry in current buffer

    Definition at line 73 of file mapper.h.

    ◆ length

    size_t length

    lenght of buffer

    Definition at line 69 of file mapper.h.

    ◆ pt

    char* pt

    pointer to last readed entry in buffer

    Definition at line 71 of file mapper.h.

    ◆ uri

    const char* uri

    URL of mapfile.

    Definition at line 65 of file mapper.h.

    ◆ value

    char* value

    value assigned to key

    Definition at line 75 of file mapper.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/pwent__mapper_8h.html0000644000175000017500000000476014367517110016137 00000000000000 pam_pkcs11: pwent_mapper.h File Reference
    pam_pkcs11 0.6.12
    pwent_mapper.h File Reference
    pam_pkcs11-0.6.12/doc/api/null__mapper_8h.html0000644000175000017500000000475514367517110015760 00000000000000 pam_pkcs11: null_mapper.h File Reference
    pam_pkcs11 0.6.12
    null_mapper.h File Reference
    pam_pkcs11-0.6.12/doc/api/functions_vars_v.html0000644000175000017500000000431614367517110016265 00000000000000 pam_pkcs11: Data Fields - Variables
    pam_pkcs11 0.6.12
     

    - v -

    pam_pkcs11-0.6.12/doc/api/structCK__RC2__CBC__PARAMS.html0000644000175000017500000001174414367517110017257 00000000000000 pam_pkcs11: CK_RC2_CBC_PARAMS Struct Reference
    pam_pkcs11 0.6.12
    CK_RC2_CBC_PARAMS Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_ULONG ulEffectiveBits
     
    CK_BYTE iv [8]
     

    Detailed Description

    Definition at line 1191 of file pkcs11t.h.

    Field Documentation

    ◆ iv

    CK_BYTE iv[8]

    Definition at line 1196 of file pkcs11t.h.

    ◆ ulEffectiveBits

    CK_ULONG ulEffectiveBits

    Definition at line 1194 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/functions_y.html0000644000175000017500000000412014367517110015226 00000000000000 pam_pkcs11: Data Fields
    pam_pkcs11 0.6.12
    Here is a list of all struct and union fields with links to the structures/unions they belong to:

    - y -

    pam_pkcs11-0.6.12/doc/api/globals_defs_p.html0000644000175000017500000000420114367517110015631 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - p -

    pam_pkcs11-0.6.12/doc/api/sync_on.png0000644000175000017500000000151514367517110014163 00000000000000PNG  IHDRw=IDATx_HTY8i4-g6&kQ)!0URKڅ/PE>K-+K.YdEPaAZSܝ;3wgfsWK.Da'q_k DQCg 0Y:qZ)~L0HV z-C%g68%wUϿ }? ?3 K@h aaUe s~2&&B*Alji*˨,oƣT,d[3-*> LɟfkҠw#*AEjKUy>&{8m5Ki jjD*Nigw7DmzK۾M!k?o_lX#~XӑR*EՂדE;6e"Q(=Ezæ5Kؼָ_ 1zBJ X96jL^7{J1i@%8'7M_\Q#Uy Wo x8sv|Sn q_m >b[JX,4[T{Ratjjzz'ȶiIws KC^Y%6ꈺ]vhiWvh'̂|[^YrD= pam_pkcs11: CK_MECHANISM_INFO Struct Reference
    pam_pkcs11 0.6.12
    CK_MECHANISM_INFO Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_ULONG ulMinKeySize
     
    CK_ULONG ulMaxKeySize
     
    CK_FLAGS flags
     

    Detailed Description

    Definition at line 793 of file pkcs11t.h.

    Field Documentation

    ◆ flags

    CK_FLAGS flags

    Definition at line 796 of file pkcs11t.h.

    ◆ ulMaxKeySize

    CK_ULONG ulMaxKeySize

    Definition at line 795 of file pkcs11t.h.

    ◆ ulMinKeySize

    CK_ULONG ulMinKeySize

    Definition at line 794 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/structCK__RC5__MAC__GENERAL__PARAMS.html0000644000175000017500000001420714367517110020564 00000000000000 pam_pkcs11: CK_RC5_MAC_GENERAL_PARAMS Struct Reference
    pam_pkcs11 0.6.12
    CK_RC5_MAC_GENERAL_PARAMS Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_ULONG ulWordsize
     
    CK_ULONG ulRounds
     
    CK_ULONG ulMacLength
     

    Detailed Description

    Definition at line 1240 of file pkcs11t.h.

    Field Documentation

    ◆ ulMacLength

    CK_ULONG ulMacLength

    Definition at line 1243 of file pkcs11t.h.

    ◆ ulRounds

    CK_ULONG ulRounds

    Definition at line 1242 of file pkcs11t.h.

    ◆ ulWordsize

    CK_ULONG ulWordsize

    Definition at line 1241 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/globals_func_c.html0000644000175000017500000000532214367517110015633 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - c -

    pam_pkcs11-0.6.12/doc/api/strings_8h.html0000644000175000017500000006050114367517110014763 00000000000000 pam_pkcs11: strings.h File Reference
    pam_pkcs11 0.6.12
    strings.h File Reference
    #include <stdlib.h>
    #include <string.h>

    Go to the source code of this file.

    Macros

    #define M_EXTERN   extern
     String management library. More...
     

    Functions

    M_EXTERN int is_empty_str (const char *str)
     Check for a null or spaced string. More...
     
    M_EXTERN char * clone_str (const char *str)
     Duplicate a string. More...
     
    M_EXTERN char * toupper_str (const char *str)
     Duplicate a string converting all chars to upper-case. More...
     
    M_EXTERN char * tolower_str (const char *str)
     Duplicate a string converting all chars to lower-case. More...
     
    M_EXTERN char * bin2hex (const unsigned char *binstr, const int len)
     Convert a byte array into a colon-separated hexadecimal sequence. More...
     
    M_EXTERN unsigned char * hex2bin (const char *hexstr)
     Convert a colon-separated hexadecimal data into a byte array. More...
     
    M_EXTERN unsigned char * hex2bin_static (const char *hexstr, unsigned char **res, int *size)
     Convert a colon-separated hexadecimal data into a byte array, store result into a previously allocated space. More...
     
    M_EXTERN char ** split (const char *str, char sep, int nelems)
     Splits a string to an array of nelems by using sep as character separator. More...
     
    M_EXTERN char ** split_static (const char *str, char sep, int nelems, char *dst)
     Splits a string to an array of nelems by using sep as character separator, using dest as pre-allocated destination memory for the resulting array. More...
     
    M_EXTERN char * trim (const char *str)
     Remove all extra spaces from a string. More...
     

    Macro Definition Documentation

    ◆ M_EXTERN

    #define M_EXTERN   extern

    String management library.

    Definition at line 37 of file strings.h.

    Function Documentation

    ◆ bin2hex()

    M_EXTERN char * bin2hex ( const unsigned char *  binstr,
    const int  len 
    )

    Convert a byte array into a colon-separated hexadecimal sequence.

    Parameters
    binstrByteArray to be parsed
    lenNumber of bytes to be converted
    Returns
    Pointer to result string or null if error in allocating memory

    ◆ clone_str()

    M_EXTERN char * clone_str ( const char *  str)

    Duplicate a string.

    Parameters
    strString to be cloned
    Returns
    Pointer to cloned string or null if error in allocating memory

    ◆ hex2bin()

    M_EXTERN unsigned char * hex2bin ( const char *  hexstr)

    Convert a colon-separated hexadecimal data into a byte array.

    Parameters
    hexstrString to be parsed
    Returns
    Pointer to resulting byte array, or null if no memory available

    ◆ hex2bin_static()

    M_EXTERN unsigned char * hex2bin_static ( const char *  hexstr,
    unsigned char **  res,
    int *  size 
    )

    Convert a colon-separated hexadecimal data into a byte array, store result into a previously allocated space.

    Parameters
    hexstrString to be parsed
    resPointer to pre-allocated user space
    sizePointer to store lenght of data parsed
    Returns
    Pointer to resulting byte array, or null on parse error

    ◆ is_empty_str()

    M_EXTERN int is_empty_str ( const char *  str)

    Check for a null or spaced string.

    Parameters
    strTested string
    Returns
    nonzero on null, empty or spaced string, else zero

    ◆ split()

    M_EXTERN char ** split ( const char *  str,
    char  sep,
    int  nelems 
    )

    Splits a string to an array of nelems by using sep as character separator.

    To free() memory used by this call, call free(res[0]); free(res);

    Parameters
    strString to be parsed
    sepCharacter to be used as separator
    nelemsNumber of elements of resulting array
    Returns
    res: Pointer to resulting string array, or null if malloc() error

    ◆ split_static()

    M_EXTERN char ** split_static ( const char *  str,
    char  sep,
    int  nelems,
    char *  dst 
    )

    Splits a string to an array of nelems by using sep as character separator, using dest as pre-allocated destination memory for the resulting array.

    To free() memory used by this call, just call free result pointer

    Parameters
    strString to be parsed
    sepCharacter to be used as separator
    nelemsNumber of elements of resulting array
    dstChar array to store temporary data
    Returns
    Pointer to resulting string array, or null if malloc() error

    ◆ tolower_str()

    M_EXTERN char * tolower_str ( const char *  str)

    Duplicate a string converting all chars to lower-case.

    Parameters
    strString to be cloned & lowercased
    Returns
    Pointer to result string or null if error in allocating memory

    ◆ toupper_str()

    M_EXTERN char * toupper_str ( const char *  str)

    Duplicate a string converting all chars to upper-case.

    Parameters
    strString to be cloned & uppercassed
    Returns
    Pointer to result string or null if error in allocating memory

    ◆ trim()

    M_EXTERN char * trim ( const char *  str)

    Remove all extra spaces from a string.

    a char is considered space if trues isspace()

    Parameters
    strString to be trimmed
    Returns
    Pointer to cloned string with all spaces trimmed or null if error in allocating memory
    pam_pkcs11-0.6.12/doc/api/functions_vars_s.html0000644000175000017500000000730414367517110016262 00000000000000 pam_pkcs11: Data Fields - Variables
    pam_pkcs11 0.6.12
     

    - s -

    pam_pkcs11-0.6.12/doc/api/annotated.html0000644000175000017500000003677114367517110014664 00000000000000 pam_pkcs11: Data Structures
    pam_pkcs11 0.6.12
    Data Structures
    pam_pkcs11-0.6.12/doc/api/pkcs11_8h_source.html0000644000175000017500000005407714367517110015767 00000000000000 pam_pkcs11: pkcs11.h Source File
    pam_pkcs11 0.6.12
    pkcs11.h
    Go to the documentation of this file.
    1/*
    2 * PKCS #11 PAM Login Module
    3 * Copyright (C) 2003 Mario Strasser <mast@gmx.net>,
    4 *
    5 * This library is free software; you can redistribute it and/or
    6 * modify it under the terms of the GNU Lesser General Public
    7 * License as published by the Free Software Foundation; either
    8 * version 2.1 of the License, or (at your option) any later version.
    9 *
    10 * This library is distributed in the hope that it will be useful,
    11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    13 * Lesser General Public License for more details.
    14 *
    15 * $Id$
    16 */
    17
    18#ifndef PKCS11_H
    19#define PKCS11_H
    20
    21#include <openssl/x509.h>
    22
    23/* Some UNIX specific macros */
    24
    25#define CK_PTR *
    26#define CK_DEFINE_FUNCTION(returnType, name) \
    27 returnType name
    28#define CK_DECLARE_FUNCTION(returnType, name) \
    29 returnType name
    30#define CK_DECLARE_FUNCTION_POINTER(returnType, name) \
    31 returnType (* name)
    32#define CK_CALLBACK_FUNCTION(returnType, name) \
    33 returnType (* name)
    34#ifndef NULL_PTR
    35#define NULL_PTR 0
    36#endif
    37
    38/* License to copy and use this software is granted provided that it is
    39 * identified as "RSA Security Inc. PKCS #11 Cryptographic Token Interface
    40 * (Cryptoki)" in all material mentioning or referencing this software.
    41
    42 * License is also granted to make and use derivative works provided that
    43 * such works are identified as "derived from the RSA Security Inc. PKCS #11
    44 * Cryptographic Token Interface (Cryptoki)" in all material mentioning or
    45 * referencing the derived work.
    46
    47 * RSA Security Inc. makes no representations concerning either the
    48 * merchantability of this software or the suitability of this software for
    49 * any particular purpose. It is provided "as is" without express or implied
    50 * warranty of any kind.
    51 */
    52
    53/* All the various Cryptoki types and #define'd values are in the
    54 * file pkcs11t.h. */
    55#include "pkcs11t.h"
    56
    57#define __PASTE(x,y) x##y
    58
    59
    60/* ==============================================================
    61 * Define the "extern" form of all the entry points.
    62 * ==============================================================
    63 */
    64
    65#define CK_NEED_ARG_LIST 1
    66#define CK_PKCS11_FUNCTION_INFO(name) \
    67 extern CK_DECLARE_FUNCTION(CK_RV, name)
    68
    69/* pkcs11f.h has all the information about the Cryptoki
    70 * function prototypes. */
    71#include "pkcs11f.h"
    72
    73#undef CK_NEED_ARG_LIST
    74#undef CK_PKCS11_FUNCTION_INFO
    75
    76
    77/* ==============================================================
    78 * Define the typedef form of all the entry points. That is, for
    79 * each Cryptoki function C_XXX, define a type CK_C_XXX which is
    80 * a pointer to that kind of function.
    81 * ==============================================================
    82 */
    83
    84#define CK_NEED_ARG_LIST 1
    85#define CK_PKCS11_FUNCTION_INFO(name) \
    86 typedef CK_DECLARE_FUNCTION_POINTER(CK_RV, __PASTE(CK_,name))
    87
    88/* pkcs11f.h has all the information about the Cryptoki
    89 * function prototypes. */
    90#include "pkcs11f.h"
    91
    92#undef CK_NEED_ARG_LIST
    93#undef CK_PKCS11_FUNCTION_INFO
    94
    95
    96/* ==============================================================
    97 * Define structed vector of entry points. A CK_FUNCTION_LIST
    98 * contains a CK_VERSION indicating a library's Cryptoki version
    99 * and then a whole slew of function pointers to the routines in
    100 * the library. This type was declared, but not defined, in
    101 * pkcs11t.h.
    102 * ==============================================================
    103 */
    104
    105#define CK_PKCS11_FUNCTION_INFO(name) \
    106 __PASTE(CK_,name) name;
    107
    109
    110 CK_VERSION version; /* Cryptoki version */
    111
    112/* Pile all the function pointers into the CK_FUNCTION_LIST. */
    113/* pkcs11f.h has all the information about the Cryptoki
    114 * function prototypes. */
    115#include "pkcs11f.h"
    116
    117};
    118
    119#undef CK_PKCS11_FUNCTION_INFO
    120#undef __PASTE
    121
    122#endif /* PKCS11_H */
    CK_VERSION version
    Definition: pkcs11.h:110
    pam_pkcs11-0.6.12/doc/api/globals_m.html0000644000175000017500000000565714367517110014645 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:

    - m -

    pam_pkcs11-0.6.12/doc/api/uri_8h.html0000644000175000017500000002676714367517110014111 00000000000000 pam_pkcs11: uri.h File Reference
    pam_pkcs11 0.6.12
    uri.h File Reference

    This module contains several functions to retrieve data from an URL. More...

    #include <stdlib.h>

    Go to the source code of this file.

    Macros

    #define URI_EXTERN   extern
     

    Functions

    URI_EXTERN int is_uri (const char *path)
     
    URI_EXTERN int is_file (const char *path)
     
    URI_EXTERN int is_dir (const char *path)
     
    URI_EXTERN int is_symlink (const char *path)
     
    URI_EXTERN int get_from_uri (const char *uri_str, unsigned char **data, size_t *length)
     Downloads data from a given URI. More...
     

    Detailed Description

    This module contains several functions to retrieve data from an URL.

    Some examples of valid URL's:

    Definition in file uri.h.

    Macro Definition Documentation

    ◆ URI_EXTERN

    #define URI_EXTERN   extern

    Definition at line 39 of file uri.h.

    Function Documentation

    ◆ get_from_uri()

    URI_EXTERN int get_from_uri ( const char *  uri_str,
    unsigned char **  data,
    size_t *  length 
    )

    Downloads data from a given URI.

    Parameters
    uri_strURL string where to retrieve data
    dataPointer to a String buffer where data is retrieved
    lengthLength of retrieved data
    Returns
    -1 on error, 0 on sucess

    ◆ is_dir()

    URI_EXTERN int is_dir ( const char *  path)

    ◆ is_file()

    URI_EXTERN int is_file ( const char *  path)

    ◆ is_symlink()

    URI_EXTERN int is_symlink ( const char *  path)

    ◆ is_uri()

    URI_EXTERN int is_uri ( const char *  path)
    pam_pkcs11-0.6.12/doc/api/functions.html0000644000175000017500000000451014367517110014701 00000000000000 pam_pkcs11: Data Fields
    pam_pkcs11 0.6.12
    Here is a list of all struct and union fields with links to the structures/unions they belong to:

    - a -

    pam_pkcs11-0.6.12/doc/api/globals_v.html0000644000175000017500000000472014367517110014644 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:

    - v -

    pam_pkcs11-0.6.12/doc/api/structCK__KEY__WRAP__SET__OAEP__PARAMS.html0000644000175000017500000001414214367517110021313 00000000000000 pam_pkcs11: CK_KEY_WRAP_SET_OAEP_PARAMS Struct Reference
    pam_pkcs11 0.6.12
    CK_KEY_WRAP_SET_OAEP_PARAMS Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_BYTE bBC
     
    CK_BYTE_PTR pX
     
    CK_ULONG ulXLen
     

    Detailed Description

    Definition at line 1316 of file pkcs11t.h.

    Field Documentation

    ◆ bBC

    CK_BYTE bBC

    Definition at line 1317 of file pkcs11t.h.

    ◆ pX

    Definition at line 1318 of file pkcs11t.h.

    ◆ ulXLen

    CK_ULONG ulXLen

    Definition at line 1319 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/tab_a.png0000644000175000017500000000021614367517110013556 00000000000000PNG  IHDR$[UIDATxK 0C'o([Ž%x#٩ We# 3t I 3+E~\D9wM}Y_A4Y}IENDB`pam_pkcs11-0.6.12/doc/api/globals_x.html0000644000175000017500000000632414367517110014650 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:

    - x -

    pam_pkcs11-0.6.12/doc/api/functions_u.html0000644000175000017500000002771414367517110015240 00000000000000 pam_pkcs11: Data Fields
    pam_pkcs11 0.6.12
    Here is a list of all struct and union fields with links to the structures/unions they belong to:

    - u -

    pam_pkcs11-0.6.12/doc/api/functions_r.html0000644000175000017500000000460414367517110015226 00000000000000 pam_pkcs11: Data Fields
    pam_pkcs11 0.6.12
    Here is a list of all struct and union fields with links to the structures/unions they belong to:

    - r -

    pam_pkcs11-0.6.12/doc/api/globals_func_h.html0000644000175000017500000000412214367517110015635 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - h -

    pam_pkcs11-0.6.12/doc/api/structCK__SSL3__MASTER__KEY__DERIVE__PARAMS.html0000644000175000017500000001204414367517110022057 00000000000000 pam_pkcs11: CK_SSL3_MASTER_KEY_DERIVE_PARAMS Struct Reference
    pam_pkcs11 0.6.12
    CK_SSL3_MASTER_KEY_DERIVE_PARAMS Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_SSL3_RANDOM_DATA RandomInfo
     
    CK_VERSION_PTR pVersion
     

    Detailed Description

    Definition at line 1333 of file pkcs11t.h.

    Field Documentation

    ◆ pVersion

    CK_VERSION_PTR pVersion

    Definition at line 1335 of file pkcs11t.h.

    ◆ RandomInfo

    CK_SSL3_RANDOM_DATA RandomInfo

    Definition at line 1334 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/globals_defs_t.html0000644000175000017500000000471314367517110015645 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - t -

    pam_pkcs11-0.6.12/doc/api/base64_8h.html0000644000175000017500000002126514367517110014362 00000000000000 pam_pkcs11: base64.h File Reference
    pam_pkcs11 0.6.12
    base64.h File Reference

    Go to the source code of this file.

    Macros

    #define BASE64_EXTERN   extern
     

    Functions

    BASE64_EXTERN int base64_encode (const unsigned char *in, size_t len, unsigned char *out, size_t *outlen)
     Encode byte array into a base64 string. More...
     
    BASE64_EXTERN int base64_decode (const char *in, unsigned char *out, size_t outlen)
     Decode a base64 string into a byte array. More...
     

    Macro Definition Documentation

    ◆ BASE64_EXTERN

    #define BASE64_EXTERN   extern

    Definition at line 24 of file base64.h.

    Function Documentation

    ◆ base64_decode()

    BASE64_EXTERN int base64_decode ( const char *  in,
    unsigned char *  out,
    size_t  outlen 
    )

    Decode a base64 string into a byte array.

    Parameters
    inInput string data
    outPointer to pre-allocated buffer space
    outlenSize of buffer
    Returns
    Length of converted byte array, or -1 on error

    ◆ base64_encode()

    BASE64_EXTERN int base64_encode ( const unsigned char *  in,
    size_t  len,
    unsigned char *  out,
    size_t *  outlen 
    )

    Encode byte array into a base64 string.

    Parameters
    inPointer to byte array
    lenlenght of input data
    outPointer to preallocated buffer space
    outlenSize of buffer
    Returns
    0 on sucess, -1 on error
    pam_pkcs11-0.6.12/doc/api/struct__scconf__list.html0000644000175000017500000001135114367517110017102 00000000000000 pam_pkcs11: _scconf_list Struct Reference
    pam_pkcs11 0.6.12
    _scconf_list Struct Reference

    #include <scconf.h>

    Data Fields

    struct _scconf_listnext
     
    char * data
     

    Detailed Description

    Definition at line 57 of file scconf.h.

    Field Documentation

    ◆ data

    char* data

    Definition at line 59 of file scconf.h.

    ◆ next

    struct _scconf_list* next

    Definition at line 58 of file scconf.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/mapper_8h.html0000644000175000017500000011534714367517110014567 00000000000000 pam_pkcs11: mapper.h File Reference
    pam_pkcs11 0.6.12
    mapper.h File Reference
    #include <sys/types.h>
    #include <stdlib.h>
    #include <string.h>
    #include <pwd.h>
    #include <../common/cert_st.h>
    #include "../scconf/scconf.h"

    Go to the source code of this file.

    Data Structures

    struct  mapper_module_st
     Structure to be filled on mapper module initialization. More...
     
    struct  mapfile
     This struct is used in processing map files a map file is a list of "key" " -> " "value" text lines. More...
     

    Macros

    #define MAPPER_EXTERN   extern
     
    #define _DEFAULT_MAPPER_FIND_ENTRIES
     Default macro for locate certificate entry. More...
     
    #define _DEFAULT_MAPPER_FIND_USER
     Default macro for locating user. More...
     
    #define _DEFAULT_MAPPER_MATCH_USER
     Macro for match mapper function. More...
     
    #define _DEFAULT_MAPPER_END
     Macro for de-initialization routine. More...
     
    #define _DEFAULT_MAPPER_INIT
     Macro for default init function. More...
     

    Typedefs

    typedef struct mapper_module_st mapper_module
     Structure to be filled on mapper module initialization. More...
     

    Functions

    mapper_modulemapper_module_init (scconf_block *ctx, const char *mapper_name)
     Initialize module and mapper_module_st structure. More...
     
    MAPPER_EXTERN struct mapfileset_mapent (const char *uri)
     Initialize a mapper entry table. More...
     
    MAPPER_EXTERN int get_mapent (struct mapfile *mfile)
     Retrieve next entry of given map file. More...
     
    MAPPER_EXTERN void end_mapent (struct mapfile *mfile)
     Release a mapentry structure. More...
     
    MAPPER_EXTERN char * mapfile_find (const char *file, char *key, int ignorecase, int *match)
     Try to map "key" to provided mapfile. More...
     
    MAPPER_EXTERN int mapfile_match (const char *file, char *key, const char *value, int ignorecase)
     Try to match provided key to provided name by mean of a mapfile. More...
     
    MAPPER_EXTERN char * search_pw_entry (const char *item, int ignorecase)
     find the user login that matches pw_name or pw_gecos with provided item More...
     
    MAPPER_EXTERN int compare_pw_entry (const char *item, struct passwd *pw, int ignorecase)
     Test if provided item matches pw_name or pw_gecos of provided password structure. More...
     

    Macro Definition Documentation

    ◆ _DEFAULT_MAPPER_END

    #define _DEFAULT_MAPPER_END
    Value:
    static void mapper_module_end(void *context) { \
    free(context); \
    return; \
    } \

    Macro for de-initialization routine.

    Parameters
    contextMapper context

    Definition at line 219 of file mapper.h.

    ◆ _DEFAULT_MAPPER_FIND_ENTRIES

    #define _DEFAULT_MAPPER_FIND_ENTRIES
    Value:
    static char ** mapper_find_entries(X509 *x509, void *context) { \
    return NULL; \
    }

    Default macro for locate certificate entry.

    Provided as sample for debugging, not for real user

    Parameters
    x509X509 Certificate
    contextMapper context
    Returns
    String array with up to 15 results or NULL if fail

    Definition at line 174 of file mapper.h.

    ◆ _DEFAULT_MAPPER_FIND_USER

    #define _DEFAULT_MAPPER_FIND_USER
    Value:
    static char * mapper_find_user(X509 *x509,void *context,int *match) { \
    if ( !x509 ) return NULL; \
    *match = 1; \
    return "nobody"; \
    }

    Default macro for locating user.

    Should not be used except for debugging, as always returns "nobody"

    Parameters
    x509X509 Certificate
    contextMapper context
    Returns
    Found user, or NULL

    Definition at line 187 of file mapper.h.

    ◆ _DEFAULT_MAPPER_INIT

    #define _DEFAULT_MAPPER_INIT
    Value:
    mapper_module* mapper_module_init(scconf_block *blk,const char *name) { \
    mapper_module *pt= malloc(sizeof (mapper_module)); \
    if (!pt) return NULL; \
    pt->name = name; \
    pt->context = NULL; \
    pt->block = blk; \
    pt->dbg_level = get_debug_level(); \
    pt->entries = mapper_find_entries; \
    pt->finder = mapper_find_user; \
    pt->matcher = mapper_match_user; \
    pt->deinit = mapper_module_end; \
    return pt; \
    } \
    DEBUG_EXTERN int get_debug_level(void)
    get_debug_level() Returns the current debug level.
    mapper_module * mapper_module_init(scconf_block *ctx, const char *mapper_name)
    Initialize module and mapper_module_st structure.
    Structure to be filled on mapper module initialization.
    Definition: mapper.h:40

    Macro for default init function.

    Parameters
    blkMapper Configuration file block
    nameName of this mapper
    Returns
    pointer to mapper_module data, else NULL NOTE: mapper module data MUST BE defined in module

    Definition at line 232 of file mapper.h.

    ◆ _DEFAULT_MAPPER_MATCH_USER

    #define _DEFAULT_MAPPER_MATCH_USER
    Value:
    static int mapper_match_user(X509 *x509, const char *login, void *context) { \
    int match = 0; \
    char *username= mapper_find_user(x509,context,&match); \
    if (!x509) return -1; \
    if (!login) return -1; \
    if (!username) return 0; /*user not found*/ \
    if ( ! strcmp(login,username) ) return 1; /* match user */ \
    return 0; /* no match */ \
    }

    Macro for match mapper function.

    Parameters
    x509X509 Certificate
    loginuser to match, or null to find user that matches certificate
    contextMapper context
    Returns
    1 on success; login points to matched user 0 on no match -1 on error

    Definition at line 204 of file mapper.h.

    ◆ MAPPER_EXTERN

    #define MAPPER_EXTERN   extern

    Definition at line 96 of file mapper.h.

    Typedef Documentation

    ◆ mapper_module

    Structure to be filled on mapper module initialization.

    Function Documentation

    ◆ compare_pw_entry()

    MAPPER_EXTERN int compare_pw_entry ( const char *  item,
    struct passwd *  pw,
    int  ignorecase 
    )

    Test if provided item matches pw_name or pw_gecos of provided password structure.

    Parameters
    itemString to be compared
    pwpassword entry to search into
    ignorecaseFlag to check upper/lowercase in string comparisions
    Returns
    1 on match, 0 on no match, -1 on error

    ◆ end_mapent()

    MAPPER_EXTERN void end_mapent ( struct mapfile mfile)

    Release a mapentry structure.

    Parameters
    mfileMap file structure to be released

    ◆ get_mapent()

    MAPPER_EXTERN int get_mapent ( struct mapfile mfile)

    Retrieve next entry of given map file.

    Parameters
    mfileMap file entry pointer
    Returns
    1 on sucess, 0 on no more entries, -1 on error

    ◆ mapfile_find()

    MAPPER_EXTERN char * mapfile_find ( const char *  file,
    char *  key,
    int  ignorecase,
    int *  match 
    )

    Try to map "key" to provided mapfile.

    Parameters
    fileURL of map file
    keyString to be mapped
    ignorecaseFlag to indicate upper/lowercase ignore in string compare
    matchSet to 1 for mapped string return, unmodified for key return
    Returns
    key on no match, else a clone_str()'d of found mapping

    ◆ mapfile_match()

    MAPPER_EXTERN int mapfile_match ( const char *  file,
    char *  key,
    const char *  value,
    int  ignorecase 
    )

    Try to match provided key to provided name by mean of a mapfile.

    Parameters
    fileURL of map file
    keyString to be mapped
    valueString to be matched against mapped result
    ignorecaseFlag to indicate upper/lowercase ignore in string compare
    Returns
    1 on match, 0 on no match, -1 on process error

    ◆ mapper_module_init()

    mapper_module * mapper_module_init ( scconf_block ctx,
    const char *  mapper_name 
    )

    Initialize module and mapper_module_st structure.

    EVERY mapper module MUST provide and export this function if dinamycally linked

    Parameters
    ctxPointer to related configuration file context
    mapper_nameName of this mapper. Used for multi-mapper modules
    Returns
    Pointer to a mapper_module structure, or NULL if failed

    ◆ search_pw_entry()

    MAPPER_EXTERN char * search_pw_entry ( const char *  item,
    int  ignorecase 
    )

    find the user login that matches pw_name or pw_gecos with provided item

    Parameters
    itemData to be searched from password database
    ignorecaseFlag to check upper/lowercase in string comparisions
    Returns
    userlogin if match found, else NULL

    ◆ set_mapent()

    MAPPER_EXTERN struct mapfile * set_mapent ( const char *  uri)

    Initialize a mapper entry table.

    Parameters
    uriUniversal Resource Locator of the file to be mapped
    Returns
    A mapfile structure pointer or NULL
    pam_pkcs11-0.6.12/doc/api/SECerrs_8h_source.html0000644000175000017500000036436014367517110016172 00000000000000 pam_pkcs11: SECerrs.h Source File
    pam_pkcs11 0.6.12
    SECerrs.h
    Go to the documentation of this file.
    1/* ***** BEGIN LICENSE BLOCK *****
    2 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
    3 *
    4 * The contents of this file are subject to the Mozilla Public License Version
    5 * 1.1 (the "License"); you may not use this file except in compliance with
    6 * the License. You may obtain a copy of the License at
    7 * http://www.mozilla.org/MPL/
    8 *
    9 * Software distributed under the License is distributed on an "AS IS" basis,
    10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
    11 * for the specific language governing rights and limitations under the
    12 * License.
    13 *
    14 * The Original Code is the Netscape security libraries.
    15 *
    16 * The Initial Developer of the Original Code is
    17 * Netscape Communications Corporation.
    18 * Portions created by the Initial Developer are Copyright (C) 1994-2000
    19 * the Initial Developer. All Rights Reserved.
    20 *
    21 * Contributor(s):
    22 *
    23 * Alternatively, the contents of this file may be used under the terms of
    24 * either the GNU General Public License Version 2 or later (the "GPL"), or
    25 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
    26 * in which case the provisions of the GPL or the LGPL are applicable instead
    27 * of those above. If you wish to allow use of your version of this file only
    28 * under the terms of either the GPL or the LGPL, and not to allow others to
    29 * use your version of this file under the terms of the MPL, indicate your
    30 * decision by deleting the provisions above and replace them with the notice
    31 * and other provisions required by the GPL or the LGPL. If you do not delete
    32 * the provisions above, a recipient may use your version of this file under
    33 * the terms of any one of the MPL, the GPL or the LGPL.
    34 *
    35 * ***** END LICENSE BLOCK ***** */
    36
    37/* General security error codes */
    38/* Caller must #include "secerr.h" */
    39
    40ER3(SEC_ERROR_IO, SEC_ERROR_BASE + 0,
    41"An I/O error occurred during security authorization.")
    42
    43ER3(SEC_ERROR_LIBRARY_FAILURE, SEC_ERROR_BASE + 1,
    44"security library failure.")
    45
    46ER3(SEC_ERROR_BAD_DATA, SEC_ERROR_BASE + 2,
    47"security library: received bad data.")
    48
    49ER3(SEC_ERROR_OUTPUT_LEN, SEC_ERROR_BASE + 3,
    50"security library: output length error.")
    51
    52ER3(SEC_ERROR_INPUT_LEN, SEC_ERROR_BASE + 4,
    53"security library has experienced an input length error.")
    54
    55ER3(SEC_ERROR_INVALID_ARGS, SEC_ERROR_BASE + 5,
    56"security library: invalid arguments.")
    57
    58ER3(SEC_ERROR_INVALID_ALGORITHM, SEC_ERROR_BASE + 6,
    59"security library: invalid algorithm.")
    60
    61ER3(SEC_ERROR_INVALID_AVA, SEC_ERROR_BASE + 7,
    62"security library: invalid AVA.")
    63
    64ER3(SEC_ERROR_INVALID_TIME, SEC_ERROR_BASE + 8,
    65"Improperly formatted time string.")
    66
    67ER3(SEC_ERROR_BAD_DER, SEC_ERROR_BASE + 9,
    68"security library: improperly formatted DER-encoded message.")
    69
    70ER3(SEC_ERROR_BAD_SIGNATURE, SEC_ERROR_BASE + 10,
    71"Peer's certificate has an invalid signature.")
    72
    73ER3(SEC_ERROR_EXPIRED_CERTIFICATE, SEC_ERROR_BASE + 11,
    74"Peer's Certificate has expired.")
    75
    76ER3(SEC_ERROR_REVOKED_CERTIFICATE, SEC_ERROR_BASE + 12,
    77"Peer's Certificate has been revoked.")
    78
    79ER3(SEC_ERROR_UNKNOWN_ISSUER, SEC_ERROR_BASE + 13,
    80"Peer's Certificate issuer is not recognized.")
    81
    82ER3(SEC_ERROR_BAD_KEY, SEC_ERROR_BASE + 14,
    83"Peer's public key is invalid.")
    84
    85ER3(SEC_ERROR_BAD_PASSWORD, SEC_ERROR_BASE + 15,
    86"The security password entered is incorrect.")
    87
    88ER3(SEC_ERROR_RETRY_PASSWORD, SEC_ERROR_BASE + 16,
    89"New password entered incorrectly. Please try again.")
    90
    91ER3(SEC_ERROR_NO_NODELOCK, SEC_ERROR_BASE + 17,
    92"security library: no nodelock.")
    93
    94ER3(SEC_ERROR_BAD_DATABASE, SEC_ERROR_BASE + 18,
    95"security library: bad database.")
    96
    97ER3(SEC_ERROR_NO_MEMORY, SEC_ERROR_BASE + 19,
    98"security library: memory allocation failure.")
    99
    100ER3(SEC_ERROR_UNTRUSTED_ISSUER, SEC_ERROR_BASE + 20,
    101"Peer's certificate issuer has been marked as not trusted by the user.")
    102
    103ER3(SEC_ERROR_UNTRUSTED_CERT, SEC_ERROR_BASE + 21,
    104"Peer's certificate has been marked as not trusted by the user.")
    105
    106ER3(SEC_ERROR_DUPLICATE_CERT, (SEC_ERROR_BASE + 22),
    107"Certificate already exists in your database.")
    108
    109ER3(SEC_ERROR_DUPLICATE_CERT_NAME, (SEC_ERROR_BASE + 23),
    110"Downloaded certificate's name duplicates one already in your database.")
    111
    112ER3(SEC_ERROR_ADDING_CERT, (SEC_ERROR_BASE + 24),
    113"Error adding certificate to database.")
    114
    115ER3(SEC_ERROR_FILING_KEY, (SEC_ERROR_BASE + 25),
    116"Error refiling the key for this certificate.")
    117
    118ER3(SEC_ERROR_NO_KEY, (SEC_ERROR_BASE + 26),
    119"The private key for this certificate cannot be found in key database")
    120
    121ER3(SEC_ERROR_CERT_VALID, (SEC_ERROR_BASE + 27),
    122"This certificate is valid.")
    123
    124ER3(SEC_ERROR_CERT_NOT_VALID, (SEC_ERROR_BASE + 28),
    125"This certificate is not valid.")
    126
    127ER3(SEC_ERROR_CERT_NO_RESPONSE, (SEC_ERROR_BASE + 29),
    128"Cert Library: No Response")
    129
    130ER3(SEC_ERROR_EXPIRED_ISSUER_CERTIFICATE, (SEC_ERROR_BASE + 30),
    131"The certificate issuer's certificate has expired. Check your system date and time.")
    132
    133ER3(SEC_ERROR_CRL_EXPIRED, (SEC_ERROR_BASE + 31),
    134"The CRL for the certificate's issuer has expired. Update it or check your system data and time.")
    135
    136ER3(SEC_ERROR_CRL_BAD_SIGNATURE, (SEC_ERROR_BASE + 32),
    137"The CRL for the certificate's issuer has an invalid signature.")
    138
    139ER3(SEC_ERROR_CRL_INVALID, (SEC_ERROR_BASE + 33),
    140"New CRL has an invalid format.")
    141
    142ER3(SEC_ERROR_EXTENSION_VALUE_INVALID, (SEC_ERROR_BASE + 34),
    143"Certificate extension value is invalid.")
    144
    145ER3(SEC_ERROR_EXTENSION_NOT_FOUND, (SEC_ERROR_BASE + 35),
    146"Certificate extension not found.")
    147
    148ER3(SEC_ERROR_CA_CERT_INVALID, (SEC_ERROR_BASE + 36),
    149"Issuer certificate is invalid.")
    150
    151ER3(SEC_ERROR_PATH_LEN_CONSTRAINT_INVALID, (SEC_ERROR_BASE + 37),
    152"Certificate path length constraint is invalid.")
    153
    154ER3(SEC_ERROR_CERT_USAGES_INVALID, (SEC_ERROR_BASE + 38),
    155"Certificate usages field is invalid.")
    156
    157ER3(SEC_INTERNAL_ONLY, (SEC_ERROR_BASE + 39),
    158"**Internal ONLY module**")
    159
    160ER3(SEC_ERROR_INVALID_KEY, (SEC_ERROR_BASE + 40),
    161"The key does not support the requested operation.")
    162
    163ER3(SEC_ERROR_UNKNOWN_CRITICAL_EXTENSION, (SEC_ERROR_BASE + 41),
    164"Certificate contains unknown critical extension.")
    165
    166ER3(SEC_ERROR_OLD_CRL, (SEC_ERROR_BASE + 42),
    167"New CRL is not later than the current one.")
    168
    169ER3(SEC_ERROR_NO_EMAIL_CERT, (SEC_ERROR_BASE + 43),
    170"Not encrypted or signed: you do not yet have an email certificate.")
    171
    172ER3(SEC_ERROR_NO_RECIPIENT_CERTS_QUERY, (SEC_ERROR_BASE + 44),
    173"Not encrypted: you do not have certificates for each of the recipients.")
    174
    175ER3(SEC_ERROR_NOT_A_RECIPIENT, (SEC_ERROR_BASE + 45),
    176"Cannot decrypt: you are not a recipient, or matching certificate and \
    177private key not found.")
    178
    179ER3(SEC_ERROR_PKCS7_KEYALG_MISMATCH, (SEC_ERROR_BASE + 46),
    180"Cannot decrypt: key encryption algorithm does not match your certificate.")
    181
    182ER3(SEC_ERROR_PKCS7_BAD_SIGNATURE, (SEC_ERROR_BASE + 47),
    183"Signature verification failed: no signer found, too many signers found, \
    184or improper or corrupted data.")
    185
    186ER3(SEC_ERROR_UNSUPPORTED_KEYALG, (SEC_ERROR_BASE + 48),
    187"Unsupported or unknown key algorithm.")
    188
    189ER3(SEC_ERROR_DECRYPTION_DISALLOWED, (SEC_ERROR_BASE + 49),
    190"Cannot decrypt: encrypted using a disallowed algorithm or key size.")
    191
    192
    193/* Fortezza Alerts */
    194ER3(XP_SEC_FORTEZZA_BAD_CARD, (SEC_ERROR_BASE + 50),
    195"Fortezza card has not been properly initialized. \
    196Please remove it and return it to your issuer.")
    197
    198ER3(XP_SEC_FORTEZZA_NO_CARD, (SEC_ERROR_BASE + 51),
    199"No Fortezza cards Found")
    200
    201ER3(XP_SEC_FORTEZZA_NONE_SELECTED, (SEC_ERROR_BASE + 52),
    202"No Fortezza card selected")
    203
    204ER3(XP_SEC_FORTEZZA_MORE_INFO, (SEC_ERROR_BASE + 53),
    205"Please select a personality to get more info on")
    206
    207ER3(XP_SEC_FORTEZZA_PERSON_NOT_FOUND, (SEC_ERROR_BASE + 54),
    208"Personality not found")
    209
    210ER3(XP_SEC_FORTEZZA_NO_MORE_INFO, (SEC_ERROR_BASE + 55),
    211"No more information on that Personality")
    212
    213ER3(XP_SEC_FORTEZZA_BAD_PIN, (SEC_ERROR_BASE + 56),
    214"Invalid Pin")
    215
    216ER3(XP_SEC_FORTEZZA_PERSON_ERROR, (SEC_ERROR_BASE + 57),
    217"Couldn't initialize Fortezza personalities.")
    218/* end fortezza alerts. */
    219
    220ER3(SEC_ERROR_NO_KRL, (SEC_ERROR_BASE + 58),
    221"No KRL for this site's certificate has been found.")
    222
    223ER3(SEC_ERROR_KRL_EXPIRED, (SEC_ERROR_BASE + 59),
    224"The KRL for this site's certificate has expired.")
    225
    226ER3(SEC_ERROR_KRL_BAD_SIGNATURE, (SEC_ERROR_BASE + 60),
    227"The KRL for this site's certificate has an invalid signature.")
    228
    229ER3(SEC_ERROR_REVOKED_KEY, (SEC_ERROR_BASE + 61),
    230"The key for this site's certificate has been revoked.")
    231
    232ER3(SEC_ERROR_KRL_INVALID, (SEC_ERROR_BASE + 62),
    233"New KRL has an invalid format.")
    234
    235ER3(SEC_ERROR_NEED_RANDOM, (SEC_ERROR_BASE + 63),
    236"security library: need random data.")
    237
    238ER3(SEC_ERROR_NO_MODULE, (SEC_ERROR_BASE + 64),
    239"security library: no security module can perform the requested operation.")
    240
    241ER3(SEC_ERROR_NO_TOKEN, (SEC_ERROR_BASE + 65),
    242"The security card or token does not exist, needs to be initialized, or has been removed.")
    243
    244ER3(SEC_ERROR_READ_ONLY, (SEC_ERROR_BASE + 66),
    245"security library: read-only database.")
    246
    247ER3(SEC_ERROR_NO_SLOT_SELECTED, (SEC_ERROR_BASE + 67),
    248"No slot or token was selected.")
    249
    250ER3(SEC_ERROR_CERT_NICKNAME_COLLISION, (SEC_ERROR_BASE + 68),
    251"A certificate with the same nickname already exists.")
    252
    253ER3(SEC_ERROR_KEY_NICKNAME_COLLISION, (SEC_ERROR_BASE + 69),
    254"A key with the same nickname already exists.")
    255
    256ER3(SEC_ERROR_SAFE_NOT_CREATED, (SEC_ERROR_BASE + 70),
    257"error while creating safe object")
    258
    259ER3(SEC_ERROR_BAGGAGE_NOT_CREATED, (SEC_ERROR_BASE + 71),
    260"error while creating baggage object")
    261
    262ER3(XP_JAVA_REMOVE_PRINCIPAL_ERROR, (SEC_ERROR_BASE + 72),
    263"Couldn't remove the principal")
    264
    265ER3(XP_JAVA_DELETE_PRIVILEGE_ERROR, (SEC_ERROR_BASE + 73),
    266"Couldn't delete the privilege")
    267
    268ER3(XP_JAVA_CERT_NOT_EXISTS_ERROR, (SEC_ERROR_BASE + 74),
    269"This principal doesn't have a certificate")
    270
    271ER3(SEC_ERROR_BAD_EXPORT_ALGORITHM, (SEC_ERROR_BASE + 75),
    272"Required algorithm is not allowed.")
    273
    274ER3(SEC_ERROR_EXPORTING_CERTIFICATES, (SEC_ERROR_BASE + 76),
    275"Error attempting to export certificates.")
    276
    277ER3(SEC_ERROR_IMPORTING_CERTIFICATES, (SEC_ERROR_BASE + 77),
    278"Error attempting to import certificates.")
    279
    280ER3(SEC_ERROR_PKCS12_DECODING_PFX, (SEC_ERROR_BASE + 78),
    281"Unable to import. Decoding error. File not valid.")
    282
    283ER3(SEC_ERROR_PKCS12_INVALID_MAC, (SEC_ERROR_BASE + 79),
    284"Unable to import. Invalid MAC. Incorrect password or corrupt file.")
    285
    286ER3(SEC_ERROR_PKCS12_UNSUPPORTED_MAC_ALGORITHM, (SEC_ERROR_BASE + 80),
    287"Unable to import. MAC algorithm not supported.")
    288
    289ER3(SEC_ERROR_PKCS12_UNSUPPORTED_TRANSPORT_MODE,(SEC_ERROR_BASE + 81),
    290"Unable to import. Only password integrity and privacy modes supported.")
    291
    292ER3(SEC_ERROR_PKCS12_CORRUPT_PFX_STRUCTURE, (SEC_ERROR_BASE + 82),
    293"Unable to import. File structure is corrupt.")
    294
    295ER3(SEC_ERROR_PKCS12_UNSUPPORTED_PBE_ALGORITHM, (SEC_ERROR_BASE + 83),
    296"Unable to import. Encryption algorithm not supported.")
    297
    298ER3(SEC_ERROR_PKCS12_UNSUPPORTED_VERSION, (SEC_ERROR_BASE + 84),
    299"Unable to import. File version not supported.")
    300
    301ER3(SEC_ERROR_PKCS12_PRIVACY_PASSWORD_INCORRECT,(SEC_ERROR_BASE + 85),
    302"Unable to import. Incorrect privacy password.")
    303
    304ER3(SEC_ERROR_PKCS12_CERT_COLLISION, (SEC_ERROR_BASE + 86),
    305"Unable to import. Same nickname already exists in database.")
    306
    307ER3(SEC_ERROR_USER_CANCELLED, (SEC_ERROR_BASE + 87),
    308"The user pressed cancel.")
    309
    310ER3(SEC_ERROR_PKCS12_DUPLICATE_DATA, (SEC_ERROR_BASE + 88),
    311"Not imported, already in database.")
    312
    313ER3(SEC_ERROR_MESSAGE_SEND_ABORTED, (SEC_ERROR_BASE + 89),
    314"Message not sent.")
    315
    316ER3(SEC_ERROR_INADEQUATE_KEY_USAGE, (SEC_ERROR_BASE + 90),
    317"Certificate key usage inadequate for attempted operation.")
    318
    319ER3(SEC_ERROR_INADEQUATE_CERT_TYPE, (SEC_ERROR_BASE + 91),
    320"Certificate type not approved for application.")
    321
    322ER3(SEC_ERROR_CERT_ADDR_MISMATCH, (SEC_ERROR_BASE + 92),
    323"Address in signing certificate does not match address in message headers.")
    324
    325ER3(SEC_ERROR_PKCS12_UNABLE_TO_IMPORT_KEY, (SEC_ERROR_BASE + 93),
    326"Unable to import. Error attempting to import private key.")
    327
    328ER3(SEC_ERROR_PKCS12_IMPORTING_CERT_CHAIN, (SEC_ERROR_BASE + 94),
    329"Unable to import. Error attempting to import certificate chain.")
    330
    331ER3(SEC_ERROR_PKCS12_UNABLE_TO_LOCATE_OBJECT_BY_NAME, (SEC_ERROR_BASE + 95),
    332"Unable to export. Unable to locate certificate or key by nickname.")
    333
    334ER3(SEC_ERROR_PKCS12_UNABLE_TO_EXPORT_KEY, (SEC_ERROR_BASE + 96),
    335"Unable to export. Private Key could not be located and exported.")
    336
    337ER3(SEC_ERROR_PKCS12_UNABLE_TO_WRITE, (SEC_ERROR_BASE + 97),
    338"Unable to export. Unable to write the export file.")
    339
    340ER3(SEC_ERROR_PKCS12_UNABLE_TO_READ, (SEC_ERROR_BASE + 98),
    341"Unable to import. Unable to read the import file.")
    342
    343ER3(SEC_ERROR_PKCS12_KEY_DATABASE_NOT_INITIALIZED, (SEC_ERROR_BASE + 99),
    344"Unable to export. Key database corrupt or deleted.")
    345
    346ER3(SEC_ERROR_KEYGEN_FAIL, (SEC_ERROR_BASE + 100),
    347"Unable to generate public/private key pair.")
    348
    349ER3(SEC_ERROR_INVALID_PASSWORD, (SEC_ERROR_BASE + 101),
    350"Password entered is invalid. Please pick a different one.")
    351
    352ER3(SEC_ERROR_RETRY_OLD_PASSWORD, (SEC_ERROR_BASE + 102),
    353"Old password entered incorrectly. Please try again.")
    354
    355ER3(SEC_ERROR_BAD_NICKNAME, (SEC_ERROR_BASE + 103),
    356"Certificate nickname already in use.")
    357
    358ER3(SEC_ERROR_NOT_FORTEZZA_ISSUER, (SEC_ERROR_BASE + 104),
    359"Peer FORTEZZA chain has a non-FORTEZZA Certificate.")
    360
    361ER3(SEC_ERROR_CANNOT_MOVE_SENSITIVE_KEY, (SEC_ERROR_BASE + 105),
    362"A sensitive key cannot be moved to the slot where it is needed.")
    363
    364ER3(SEC_ERROR_JS_INVALID_MODULE_NAME, (SEC_ERROR_BASE + 106),
    365"Invalid module name.")
    366
    367ER3(SEC_ERROR_JS_INVALID_DLL, (SEC_ERROR_BASE + 107),
    368"Invalid module path/filename")
    369
    370ER3(SEC_ERROR_JS_ADD_MOD_FAILURE, (SEC_ERROR_BASE + 108),
    371"Unable to add module")
    372
    373ER3(SEC_ERROR_JS_DEL_MOD_FAILURE, (SEC_ERROR_BASE + 109),
    374"Unable to delete module")
    375
    376ER3(SEC_ERROR_OLD_KRL, (SEC_ERROR_BASE + 110),
    377"New KRL is not later than the current one.")
    378
    379ER3(SEC_ERROR_CKL_CONFLICT, (SEC_ERROR_BASE + 111),
    380"New CKL has different issuer than current CKL. Delete current CKL.")
    381
    382ER3(SEC_ERROR_CERT_NOT_IN_NAME_SPACE, (SEC_ERROR_BASE + 112),
    383"The Certifying Authority for this certificate is not permitted to issue a \
    384certificate with this name.")
    385
    386ER3(SEC_ERROR_KRL_NOT_YET_VALID, (SEC_ERROR_BASE + 113),
    387"The key revocation list for this certificate is not yet valid.")
    388
    389ER3(SEC_ERROR_CRL_NOT_YET_VALID, (SEC_ERROR_BASE + 114),
    390"The certificate revocation list for this certificate is not yet valid.")
    391
    392ER3(SEC_ERROR_UNKNOWN_CERT, (SEC_ERROR_BASE + 115),
    393"The requested certificate could not be found.")
    394
    395ER3(SEC_ERROR_UNKNOWN_SIGNER, (SEC_ERROR_BASE + 116),
    396"The signer's certificate could not be found.")
    397
    398ER3(SEC_ERROR_CERT_BAD_ACCESS_LOCATION, (SEC_ERROR_BASE + 117),
    399"The location for the certificate status server has invalid format.")
    400
    401ER3(SEC_ERROR_OCSP_UNKNOWN_RESPONSE_TYPE, (SEC_ERROR_BASE + 118),
    402"The OCSP response cannot be fully decoded; it is of an unknown type.")
    403
    404ER3(SEC_ERROR_OCSP_BAD_HTTP_RESPONSE, (SEC_ERROR_BASE + 119),
    405"The OCSP server returned unexpected/invalid HTTP data.")
    406
    407ER3(SEC_ERROR_OCSP_MALFORMED_REQUEST, (SEC_ERROR_BASE + 120),
    408"The OCSP server found the request to be corrupted or improperly formed.")
    409
    410ER3(SEC_ERROR_OCSP_SERVER_ERROR, (SEC_ERROR_BASE + 121),
    411"The OCSP server experienced an internal error.")
    412
    413ER3(SEC_ERROR_OCSP_TRY_SERVER_LATER, (SEC_ERROR_BASE + 122),
    414"The OCSP server suggests trying again later.")
    415
    416ER3(SEC_ERROR_OCSP_REQUEST_NEEDS_SIG, (SEC_ERROR_BASE + 123),
    417"The OCSP server requires a signature on this request.")
    418
    419ER3(SEC_ERROR_OCSP_UNAUTHORIZED_REQUEST, (SEC_ERROR_BASE + 124),
    420"The OCSP server has refused this request as unauthorized.")
    421
    422ER3(SEC_ERROR_OCSP_UNKNOWN_RESPONSE_STATUS, (SEC_ERROR_BASE + 125),
    423"The OCSP server returned an unrecognizable status.")
    424
    425ER3(SEC_ERROR_OCSP_UNKNOWN_CERT, (SEC_ERROR_BASE + 126),
    426"The OCSP server has no status for the certificate.")
    427
    428ER3(SEC_ERROR_OCSP_NOT_ENABLED, (SEC_ERROR_BASE + 127),
    429"You must enable OCSP before performing this operation.")
    430
    431ER3(SEC_ERROR_OCSP_NO_DEFAULT_RESPONDER, (SEC_ERROR_BASE + 128),
    432"You must set the OCSP default responder before performing this operation.")
    433
    434ER3(SEC_ERROR_OCSP_MALFORMED_RESPONSE, (SEC_ERROR_BASE + 129),
    435"The response from the OCSP server was corrupted or improperly formed.")
    436
    437ER3(SEC_ERROR_OCSP_UNAUTHORIZED_RESPONSE, (SEC_ERROR_BASE + 130),
    438"The signer of the OCSP response is not authorized to give status for \
    439this certificate.")
    440
    441ER3(SEC_ERROR_OCSP_FUTURE_RESPONSE, (SEC_ERROR_BASE + 131),
    442"The OCSP response is not yet valid (contains a date in the future).")
    443
    444ER3(SEC_ERROR_OCSP_OLD_RESPONSE, (SEC_ERROR_BASE + 132),
    445"The OCSP response contains out-of-date information.")
    446
    447ER3(SEC_ERROR_DIGEST_NOT_FOUND, (SEC_ERROR_BASE + 133),
    448"The CMS or PKCS #7 Digest was not found in signed message.")
    449
    450ER3(SEC_ERROR_UNSUPPORTED_MESSAGE_TYPE, (SEC_ERROR_BASE + 134),
    451"The CMS or PKCS #7 Message type is unsupported.")
    452
    453ER3(SEC_ERROR_MODULE_STUCK, (SEC_ERROR_BASE + 135),
    454"PKCS #11 module could not be removed because it is still in use.")
    455
    456ER3(SEC_ERROR_BAD_TEMPLATE, (SEC_ERROR_BASE + 136),
    457"Could not decode ASN.1 data. Specified template was invalid.")
    458
    459ER3(SEC_ERROR_CRL_NOT_FOUND, (SEC_ERROR_BASE + 137),
    460"No matching CRL was found.")
    461
    462ER3(SEC_ERROR_REUSED_ISSUER_AND_SERIAL, (SEC_ERROR_BASE + 138),
    463"You are attempting to import a cert with the same issuer/serial as \
    464an existing cert, but that is not the same cert.")
    465
    466ER3(SEC_ERROR_BUSY, (SEC_ERROR_BASE + 139),
    467"NSS could not shutdown. Objects are still in use.")
    468
    469ER3(SEC_ERROR_EXTRA_INPUT, (SEC_ERROR_BASE + 140),
    470"DER-encoded message contained extra unused data.")
    471
    472ER3(SEC_ERROR_UNSUPPORTED_ELLIPTIC_CURVE, (SEC_ERROR_BASE + 141),
    473"Unsupported elliptic curve.")
    474
    475ER3(SEC_ERROR_UNSUPPORTED_EC_POINT_FORM, (SEC_ERROR_BASE + 142),
    476"Unsupported elliptic curve point form.")
    477
    478ER3(SEC_ERROR_UNRECOGNIZED_OID, (SEC_ERROR_BASE + 143),
    479"Unrecognized Object IDentifier.")
    480
    481ER3(SEC_ERROR_OCSP_INVALID_SIGNING_CERT, (SEC_ERROR_BASE + 144),
    482"Invalid OCSP signing certificate in OCSP response.")
    483
    484ER3(SEC_ERROR_REVOKED_CERTIFICATE_CRL, (SEC_ERROR_BASE + 145),
    485"Certificate is revoked in issuer's certificate revocation list.")
    486
    487ER3(SEC_ERROR_REVOKED_CERTIFICATE_OCSP, (SEC_ERROR_BASE + 146),
    488"Issuer's OCSP responder reports certificate is revoked.")
    489
    490ER3(SEC_ERROR_CRL_INVALID_VERSION, (SEC_ERROR_BASE + 147),
    491"Issuer's Certificate Revocation List has an unknown version number.")
    492
    493ER3(SEC_ERROR_CRL_V1_CRITICAL_EXTENSION, (SEC_ERROR_BASE + 148),
    494"Issuer's V1 Certificate Revocation List has a critical extension.")
    495
    496ER3(SEC_ERROR_CRL_UNKNOWN_CRITICAL_EXTENSION, (SEC_ERROR_BASE + 149),
    497"Issuer's V2 Certificate Revocation List has an unknown critical extension.")
    498
    499ER3(SEC_ERROR_UNKNOWN_OBJECT_TYPE, (SEC_ERROR_BASE + 150),
    500"Unknown object type specified.")
    501
    502ER3(SEC_ERROR_INCOMPATIBLE_PKCS11, (SEC_ERROR_BASE + 151),
    503"PKCS #11 driver violates the spec in an incompatible way.")
    504
    505ER3(SEC_ERROR_NO_EVENT, (SEC_ERROR_BASE + 152),
    506"No new slot event is available at this time.")
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be initialized
    Definition: SECerrs.h:242
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers found
    Definition: SECerrs.h:183
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet valid(contains a date in the future).") ER3(SEC_ERROR_OCSP_OLD_RESPONSE
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification failed
    Definition: SECerrs.h:183
    security library failure security library
    Definition: SECerrs.h:52
    ER3(SEC_ERROR_IO, SEC_ERROR_BASE+0, "An I/O error occurred during security authorization.") ER3(SEC_ERROR_LIBRARY_FAILURE
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not exist
    Definition: SECerrs.h:242
    SEC_ERROR_BASE
    Definition: SECerrs.h:43
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot decrypt
    Definition: SECerrs.h:176
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not encrypted
    Definition: SECerrs.h:175
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL version
    Definition: SSLerrs.h:82
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot Cannot An unknown SSL cipher suite has been requested SSL received a record with bad block padding SSL attempted to send a record that exceeded the maximum permissible length SSL received a malformed Client Hello handshake message SSL received a malformed Certificate handshake message SSL received a malformed Certificate Request handshake message SSL received a malformed Certificate Verify handshake message SSL received a malformed Finished handshake message SSL received a malformed Alert record SSL received a malformed Application Data record SSL received an unexpected Client Hello handshake message SSL received an unexpected Certificate handshake message SSL received an unexpected Certificate Request handshake message SSL received an unexpected Certificate Verify handshake message SSL received an unexpected Finished handshake message SSL received an unexpected Alert record SSL received an unexpected Application Data record SSL received a handshake message with an unknown message type SSL peer has closed this connection SSL peer was unable to succesfully decompress an SSL record it received SSL peer rejected a handshake message for unacceptable content SSL peer had some unspecified issue with the certificate it received Unable to digitally sign data required to verify your certificate Unspecified failure while processing SSL Server Key Exchange handshake Bulk data encryption algorithm failed in selected cipher suite Attempt to write encrypted data to underlying socket failed SHA digest function failed Failure to create Symmetric Key context SSL Server attempted to use domestic grade public key with export cipher suite Failed to initialize the selected cipher suite Server has no key for the attempted key exchange algorithm No PKCS Cannot initiate another SSL handshake until current handshake is complete The certificate provided cannot be used with the selected key exchange algorithm Client s SSL session ID not found in server s session cache Peer received an SSL record that was longer than is permitted Peer received a valid certificate
    Definition: SSLerrs.h:344
    pam_pkcs11-0.6.12/doc/api/globals_defs_u.html0000644000175000017500000000372014367517110015643 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - u -

    pam_pkcs11-0.6.12/doc/api/dir_0305ef0b9c5cda6a81ea81c51a763f67.html0000644000175000017500000000650514367517110020166 00000000000000 pam_pkcs11: rsaref Directory Reference
    pam_pkcs11 0.6.12
    rsaref Directory Reference

    Files

    file  pkcs11.h [code]
     
    file  pkcs11f.h [code]
     
    file  pkcs11t.h [code]
     
    pam_pkcs11-0.6.12/doc/api/structCK__KEY__DERIVATION__STRING__DATA.html0000644000175000017500000001200214367517110021335 00000000000000 pam_pkcs11: CK_KEY_DERIVATION_STRING_DATA Struct Reference
    pam_pkcs11 0.6.12
    CK_KEY_DERIVATION_STRING_DATA Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_BYTE_PTR pData
     
    CK_ULONG ulLen
     

    Detailed Description

    Definition at line 1365 of file pkcs11t.h.

    Field Documentation

    ◆ pData

    CK_BYTE_PTR pData

    Definition at line 1366 of file pkcs11t.h.

    ◆ ulLen

    CK_ULONG ulLen

    Definition at line 1367 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/ldap__mapper_8h_source.html0000644000175000017500000002356414367517110017305 00000000000000 pam_pkcs11: ldap_mapper.h Source File
    pam_pkcs11 0.6.12
    ldap_mapper.h
    Go to the documentation of this file.
    1/*
    2 * PAM-PKCS11 mapping modules
    3 * Copyright (C) 2005 Juan Antonio Martinez <jonsito@teleline.es>
    4 * pam-pkcs11 is copyright (C) 2003-2004 of Mario Strasser <mast@gmx.net>
    5 *
    6 * This library is free software; you can redistribute it and/or
    7 * modify it under the terms of the GNU Lesser General Public
    8 * License as published by the Free Software Foundation; either
    9 * version 2.1 of the License, or (at your option) any later version.
    10 *
    11 * This library is distributed in the hope that it will be useful,
    12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14 * Lesser General Public License for more details.
    15 *
    16 * You should have received a copy of the GNU Lesser General Public
    17 * License along with this library; if not, write to the Free Software
    18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    19 *
    20 * $Id$
    21 */
    22
    23#ifndef __LDAP_MAPPER_H_
    24#define __LDAP_MAPPER_H_
    25
    26#ifdef HAVE_CONFIG_H
    27#include <config.h>
    28#endif
    29
    30#include "../scconf/scconf.h"
    31#include "mapper.h"
    32
    33#ifdef LDAP_MAPPER_STATIC
    34
    35#ifndef __LDAP_MAPPER_C_
    36#define LDAP_EXTERN extern
    37#else
    38#define LDAP_EXTERN
    39#endif
    40LDAP_EXTERN mapper_module * ldap_mapper_module_init(scconf_block *blk,const char *mapper_name);
    41#undef LDAP_EXTERN
    42
    43/* end of static (if any) declarations */
    44#endif
    45
    46/* End of ldap_mapper.h */
    47#endif
    Structure to be filled on mapper module initialization.
    Definition: mapper.h:40
    pam_pkcs11-0.6.12/doc/api/structsecuCommandFlag.html0000644000175000017500000001503414367517110017171 00000000000000 pam_pkcs11: secuCommandFlag Struct Reference
    pam_pkcs11 0.6.12
    secuCommandFlag Struct Reference

    #include <secutil.h>

    Data Fields

    char flag
     
    PRBool needsArg
     
    char * arg
     
    PRBool activated
     

    Detailed Description

    Definition at line 380 of file secutil.h.

    Field Documentation

    ◆ activated

    PRBool activated

    Definition at line 384 of file secutil.h.

    ◆ arg

    char* arg

    Definition at line 383 of file secutil.h.

    ◆ flag

    char flag

    Definition at line 381 of file secutil.h.

    ◆ needsArg

    PRBool needsArg

    Definition at line 382 of file secutil.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/structCK__SKIPJACK__RELAYX__PARAMS.html0000644000175000017500000004532414367517110020506 00000000000000 pam_pkcs11: CK_SKIPJACK_RELAYX_PARAMS Struct Reference
    pam_pkcs11 0.6.12
    CK_SKIPJACK_RELAYX_PARAMS Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_ULONG ulOldWrappedXLen
     
    CK_BYTE_PTR pOldWrappedX
     
    CK_ULONG ulOldPasswordLen
     
    CK_BYTE_PTR pOldPassword
     
    CK_ULONG ulOldPublicDataLen
     
    CK_BYTE_PTR pOldPublicData
     
    CK_ULONG ulOldRandomLen
     
    CK_BYTE_PTR pOldRandomA
     
    CK_ULONG ulNewPasswordLen
     
    CK_BYTE_PTR pNewPassword
     
    CK_ULONG ulNewPublicDataLen
     
    CK_BYTE_PTR pNewPublicData
     
    CK_ULONG ulNewRandomLen
     
    CK_BYTE_PTR pNewRandomA
     

    Detailed Description

    Definition at line 1281 of file pkcs11t.h.

    Field Documentation

    ◆ pNewPassword

    CK_BYTE_PTR pNewPassword

    Definition at line 1291 of file pkcs11t.h.

    ◆ pNewPublicData

    CK_BYTE_PTR pNewPublicData

    Definition at line 1293 of file pkcs11t.h.

    ◆ pNewRandomA

    CK_BYTE_PTR pNewRandomA

    Definition at line 1295 of file pkcs11t.h.

    ◆ pOldPassword

    CK_BYTE_PTR pOldPassword

    Definition at line 1285 of file pkcs11t.h.

    ◆ pOldPublicData

    CK_BYTE_PTR pOldPublicData

    Definition at line 1287 of file pkcs11t.h.

    ◆ pOldRandomA

    CK_BYTE_PTR pOldRandomA

    Definition at line 1289 of file pkcs11t.h.

    ◆ pOldWrappedX

    CK_BYTE_PTR pOldWrappedX

    Definition at line 1283 of file pkcs11t.h.

    ◆ ulNewPasswordLen

    CK_ULONG ulNewPasswordLen

    Definition at line 1290 of file pkcs11t.h.

    ◆ ulNewPublicDataLen

    CK_ULONG ulNewPublicDataLen

    Definition at line 1292 of file pkcs11t.h.

    ◆ ulNewRandomLen

    CK_ULONG ulNewRandomLen

    Definition at line 1294 of file pkcs11t.h.

    ◆ ulOldPasswordLen

    CK_ULONG ulOldPasswordLen

    Definition at line 1284 of file pkcs11t.h.

    ◆ ulOldPublicDataLen

    CK_ULONG ulOldPublicDataLen

    Definition at line 1286 of file pkcs11t.h.

    ◆ ulOldRandomLen

    CK_ULONG ulOldRandomLen

    Definition at line 1288 of file pkcs11t.h.

    ◆ ulOldWrappedXLen

    CK_ULONG ulOldWrappedXLen

    Definition at line 1282 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/struct__scconf__block.html0000644000175000017500000001403214367517110017220 00000000000000 pam_pkcs11: _scconf_block Struct Reference
    pam_pkcs11 0.6.12
    _scconf_block Struct Reference

    #include <scconf.h>

    Data Fields

    scconf_blockparent
     
    scconf_listname
     
    scconf_itemitems
     

    Detailed Description

    Definition at line 77 of file scconf.h.

    Field Documentation

    ◆ items

    scconf_item* items

    Definition at line 80 of file scconf.h.

    ◆ name

    scconf_list* name

    Definition at line 79 of file scconf.h.

    ◆ parent

    scconf_block* parent

    Definition at line 78 of file scconf.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/structCK__VERSION.html0000644000175000017500000001164014367517110016001 00000000000000 pam_pkcs11: CK_VERSION Struct Reference
    pam_pkcs11 0.6.12
    CK_VERSION Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_BYTE major
     
    CK_BYTE minor
     

    Detailed Description

    Definition at line 82 of file pkcs11t.h.

    Field Documentation

    ◆ major

    CK_BYTE major

    Definition at line 83 of file pkcs11t.h.

    ◆ minor

    CK_BYTE minor

    Definition at line 84 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/globals_enum.html0000644000175000017500000000425114367517110015342 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     
    pam_pkcs11-0.6.12/doc/api/globals_defs_d.html0000644000175000017500000000512714367517110015625 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - d -

    pam_pkcs11-0.6.12/doc/api/structCK__ECDH1__DERIVE__PARAMS.html0000644000175000017500000002062714367517110020044 00000000000000 pam_pkcs11: CK_ECDH1_DERIVE_PARAMS Struct Reference
    pam_pkcs11 0.6.12
    CK_ECDH1_DERIVE_PARAMS Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_EC_KDF_TYPE kdf
     
    CK_ULONG ulSharedDataLen
     
    CK_BYTE_PTR pSharedData
     
    CK_ULONG ulPublicDataLen
     
    CK_BYTE_PTR pPublicData
     

    Detailed Description

    Definition at line 1096 of file pkcs11t.h.

    Field Documentation

    ◆ kdf

    Definition at line 1097 of file pkcs11t.h.

    ◆ pPublicData

    CK_BYTE_PTR pPublicData

    Definition at line 1101 of file pkcs11t.h.

    ◆ pSharedData

    CK_BYTE_PTR pSharedData

    Definition at line 1099 of file pkcs11t.h.

    ◆ ulPublicDataLen

    CK_ULONG ulPublicDataLen

    Definition at line 1100 of file pkcs11t.h.

    ◆ ulSharedDataLen

    CK_ULONG ulSharedDataLen

    Definition at line 1098 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/splitbar.png0000644000175000017500000000047214367517110014334 00000000000000PNG  IHDRMIDATxݡJCa( %4 bȘͶ3v^EL ,b;{Ï/aYկq:\IIIIIIIIIIIIIIIIII-l揊_t/ϻYQVYivk_ۣI@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$I@$C[V=[fIENDB`pam_pkcs11-0.6.12/doc/api/NSPRerrs_8h_source.html0000644000175000017500000011622414367517110016334 00000000000000 pam_pkcs11: NSPRerrs.h Source File
    pam_pkcs11 0.6.12
    NSPRerrs.h
    Go to the documentation of this file.
    1/* ***** BEGIN LICENSE BLOCK *****
    2 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
    3 *
    4 * The contents of this file are subject to the Mozilla Public License Version
    5 * 1.1 (the "License"); you may not use this file except in compliance with
    6 * the License. You may obtain a copy of the License at
    7 * http://www.mozilla.org/MPL/
    8 *
    9 * Software distributed under the License is distributed on an "AS IS" basis,
    10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
    11 * for the specific language governing rights and limitations under the
    12 * License.
    13 *
    14 * The Original Code is the Netscape security libraries.
    15 *
    16 * The Initial Developer of the Original Code is
    17 * Netscape Communications Corporation.
    18 * Portions created by the Initial Developer are Copyright (C) 1994-2000
    19 * the Initial Developer. All Rights Reserved.
    20 *
    21 * Contributor(s):
    22 *
    23 * Alternatively, the contents of this file may be used under the terms of
    24 * either the GNU General Public License Version 2 or later (the "GPL"), or
    25 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
    26 * in which case the provisions of the GPL or the LGPL are applicable instead
    27 * of those above. If you wish to allow use of your version of this file only
    28 * under the terms of either the GPL or the LGPL, and not to allow others to
    29 * use your version of this file under the terms of the MPL, indicate your
    30 * decision by deleting the provisions above and replace them with the notice
    31 * and other provisions required by the GPL or the LGPL. If you do not delete
    32 * the provisions above, a recipient may use your version of this file under
    33 * the terms of any one of the MPL, the GPL or the LGPL.
    34 *
    35 * ***** END LICENSE BLOCK ***** */
    36/* General NSPR 2.0 errors */
    37/* Caller must #include "prerror.h" */
    38
    39ER2( PR_OUT_OF_MEMORY_ERROR, "Memory allocation attempt failed." )
    40ER2( PR_BAD_DESCRIPTOR_ERROR, "Invalid file descriptor." )
    41ER2( PR_WOULD_BLOCK_ERROR, "The operation would have blocked." )
    42ER2( PR_ACCESS_FAULT_ERROR, "Invalid memory address argument." )
    43ER2( PR_INVALID_METHOD_ERROR, "Invalid function for file type." )
    44ER2( PR_ILLEGAL_ACCESS_ERROR, "Invalid memory address argument." )
    45ER2( PR_UNKNOWN_ERROR, "Some unknown error has occurred." )
    46ER2( PR_PENDING_INTERRUPT_ERROR,"Operation interrupted by another thread." )
    47ER2( PR_NOT_IMPLEMENTED_ERROR, "function not implemented." )
    48ER2( PR_IO_ERROR, "I/O function error." )
    49ER2( PR_IO_TIMEOUT_ERROR, "I/O operation timed out." )
    50ER2( PR_IO_PENDING_ERROR, "I/O operation on busy file descriptor." )
    51ER2( PR_DIRECTORY_OPEN_ERROR, "The directory could not be opened." )
    52ER2( PR_INVALID_ARGUMENT_ERROR, "Invalid function argument." )
    53ER2( PR_ADDRESS_NOT_AVAILABLE_ERROR, "Network address not available (in use?)." )
    54ER2( PR_ADDRESS_NOT_SUPPORTED_ERROR, "Network address type not supported." )
    55ER2( PR_IS_CONNECTED_ERROR, "Already connected." )
    56ER2( PR_BAD_ADDRESS_ERROR, "Network address is invalid." )
    57ER2( PR_ADDRESS_IN_USE_ERROR, "Local Network address is in use." )
    58ER2( PR_CONNECT_REFUSED_ERROR, "Connection refused by peer." )
    59ER2( PR_NETWORK_UNREACHABLE_ERROR, "Network address is presently unreachable." )
    60ER2( PR_CONNECT_TIMEOUT_ERROR, "Connection attempt timed out." )
    61ER2( PR_NOT_CONNECTED_ERROR, "Network file descriptor is not connected." )
    62ER2( PR_LOAD_LIBRARY_ERROR, "Failure to load dynamic library." )
    63ER2( PR_UNLOAD_LIBRARY_ERROR, "Failure to unload dynamic library." )
    64ER2( PR_FIND_SYMBOL_ERROR,
    65"Symbol not found in any of the loaded dynamic libraries." )
    66ER2( PR_INSUFFICIENT_RESOURCES_ERROR, "Insufficient system resources." )
    67ER2( PR_DIRECTORY_LOOKUP_ERROR,
    68"A directory lookup on a network address has failed." )
    69ER2( PR_TPD_RANGE_ERROR,
    70"Attempt to access a TPD key that is out of range." )
    71ER2( PR_PROC_DESC_TABLE_FULL_ERROR, "Process open FD table is full." )
    72ER2( PR_SYS_DESC_TABLE_FULL_ERROR, "System open FD table is full." )
    73ER2( PR_NOT_SOCKET_ERROR,
    74"Network operation attempted on non-network file descriptor." )
    75ER2( PR_NOT_TCP_SOCKET_ERROR,
    76"TCP-specific function attempted on a non-TCP file descriptor." )
    77ER2( PR_SOCKET_ADDRESS_IS_BOUND_ERROR, "TCP file descriptor is already bound." )
    78ER2( PR_NO_ACCESS_RIGHTS_ERROR, "Access Denied." )
    79ER2( PR_OPERATION_NOT_SUPPORTED_ERROR,
    80"The requested operation is not supported by the platform." )
    81ER2( PR_PROTOCOL_NOT_SUPPORTED_ERROR,
    82"The host operating system does not support the protocol requested." )
    83ER2( PR_REMOTE_FILE_ERROR, "Access to the remote file has been severed." )
    84ER2( PR_BUFFER_OVERFLOW_ERROR,
    85"The value requested is too large to be stored in the data buffer provided." )
    86ER2( PR_CONNECT_RESET_ERROR, "TCP connection reset by peer." )
    87ER2( PR_RANGE_ERROR, "Unused." )
    88ER2( PR_DEADLOCK_ERROR, "The operation would have deadlocked." )
    89ER2( PR_FILE_IS_LOCKED_ERROR, "The file is already locked." )
    90ER2( PR_FILE_TOO_BIG_ERROR,
    91"Write would result in file larger than the system allows." )
    92ER2( PR_NO_DEVICE_SPACE_ERROR, "The device for storing the file is full." )
    93ER2( PR_PIPE_ERROR, "Unused." )
    94ER2( PR_NO_SEEK_DEVICE_ERROR, "Unused." )
    95ER2( PR_IS_DIRECTORY_ERROR,
    96"Cannot perform a normal file operation on a directory." )
    97ER2( PR_LOOP_ERROR, "Symbolic link loop." )
    98ER2( PR_NAME_TOO_LONG_ERROR, "File name is too long." )
    99ER2( PR_FILE_NOT_FOUND_ERROR, "File not found." )
    100ER2( PR_NOT_DIRECTORY_ERROR,
    101"Cannot perform directory operation on a normal file." )
    102ER2( PR_READ_ONLY_FILESYSTEM_ERROR,
    103"Cannot write to a read-only file system." )
    104ER2( PR_DIRECTORY_NOT_EMPTY_ERROR,
    105"Cannot delete a directory that is not empty." )
    106ER2( PR_FILESYSTEM_MOUNTED_ERROR,
    107"Cannot delete or rename a file object while the file system is busy." )
    108ER2( PR_NOT_SAME_DEVICE_ERROR,
    109"Cannot rename a file to a file system on another device." )
    110ER2( PR_DIRECTORY_CORRUPTED_ERROR,
    111"The directory object in the file system is corrupted." )
    112ER2( PR_FILE_EXISTS_ERROR,
    113"Cannot create or rename a filename that already exists." )
    114ER2( PR_MAX_DIRECTORY_ENTRIES_ERROR,
    115"Directory is full. No additional filenames may be added." )
    116ER2( PR_INVALID_DEVICE_STATE_ERROR,
    117"The required device was in an invalid state." )
    118ER2( PR_DEVICE_IS_LOCKED_ERROR, "The device is locked." )
    119ER2( PR_NO_MORE_FILES_ERROR, "No more entries in the directory." )
    120ER2( PR_END_OF_FILE_ERROR, "Encountered end of file." )
    121ER2( PR_FILE_SEEK_ERROR, "Seek error." )
    122ER2( PR_FILE_IS_BUSY_ERROR, "The file is busy." )
    123ER2( PR_IN_PROGRESS_ERROR,
    124"Operation is still in progress (probably a non-blocking connect)." )
    125ER2( PR_ALREADY_INITIATED_ERROR,
    126"Operation has already been initiated (probably a non-blocking connect)." )
    127
    128#ifdef PR_GROUP_EMPTY_ERROR
    129ER2( PR_GROUP_EMPTY_ERROR, "The wait group is empty." )
    130#endif
    131
    132#ifdef PR_INVALID_STATE_ERROR
    133ER2( PR_INVALID_STATE_ERROR, "Object state improper for request." )
    134#endif
    135
    136#ifdef PR_NETWORK_DOWN_ERROR
    137ER2( PR_NETWORK_DOWN_ERROR, "Network is down." )
    138#endif
    139
    140#ifdef PR_SOCKET_SHUTDOWN_ERROR
    141ER2( PR_SOCKET_SHUTDOWN_ERROR, "The socket was previously shut down." )
    142#endif
    143
    144#ifdef PR_CONNECT_ABORTED_ERROR
    145ER2( PR_CONNECT_ABORTED_ERROR, "TCP Connection aborted." )
    146#endif
    147
    148#ifdef PR_HOST_UNREACHABLE_ERROR
    149ER2( PR_HOST_UNREACHABLE_ERROR, "Host is unreachable." )
    150#endif
    151
    152/* always last */
    153ER2( PR_MAX_ERROR, "Placeholder for the end of the list" )
    ER2(PR_FIND_SYMBOL_ERROR, "Symbol not found in any of the loaded dynamic libraries.") ER2(PR_DIRECTORY_LOOKUP_ERROR
    A directory lookup on a network address has failed Network operation attempted on non network file descriptor The requested operation is not supported by the platform The value requested is too large to be stored in the data buffer provided Cannot perform a normal file operation on a directory Cannot write to a read only file system Cannot delete or rename a file object while the file system is busy The directory object in the file system is corrupted Directory is full No additional filenames may be added Operation is still in progress(probably a non-blocking connect)." ) ER2( PR_ALREADY_INITIATED_ERROR
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers found
    Definition: SECerrs.h:183
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification failed
    Definition: SECerrs.h:183
    security library failure security library
    Definition: SECerrs.h:52
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with Peer only supports SSL which is locally disabled SSL peer reports incorrect Message Authentication Code SSL peer rejected your certificate as revoked Cannot connect
    Definition: SSLerrs.h:103
    Unable to communicate securely Peer grade encryption which is not supported Unable to find the certificate or key necessary for authentication The server has encountered bad data from the client Unsupported certificate type Client authentication Unable to communicate securely with peer
    Definition: SSLerrs.h:81
    pam_pkcs11-0.6.12/doc/api/functions_vars.html0000644000175000017500000000433414367517110015740 00000000000000 pam_pkcs11: Data Fields - Variables
    pam_pkcs11 0.6.12
     

    - a -

    pam_pkcs11-0.6.12/doc/api/globals_func_d.html0000644000175000017500000000460114367517110015633 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - d -

    pam_pkcs11-0.6.12/doc/api/cert__st_8h_source.html0000644000175000017500000002322314367517110016454 00000000000000 pam_pkcs11: cert_st.h Source File
    pam_pkcs11 0.6.12
    cert_st.h
    Go to the documentation of this file.
    1/*
    2 * PKCS #11 PAM Login Module
    3 * Copyright (C) 2003-2004 Mario Strasser <mast@gmx.net>
    4 * Copyright (C) 2005 Juan Antonio Martinez <jonsito@teleline.es>
    5 *
    6 * This library is free software; you can redistribute it and/or
    7 * modify it under the terms of the GNU Lesser General Public
    8 * License as published by the Free Software Foundation; either
    9 * version 2.1 of the License, or (at your option) any later version.
    10 *
    11 * This library is distributed in the hope that it will be useful,
    12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14 * Lesser General Public License for more details.
    15 *
    16 * $Id$
    17 */
    18
    19#ifndef _CERT_ST_H
    20#define _CERT_ST_H
    21
    22#ifdef HAVE_CONFIG_H
    23#include <config.h>
    24#endif
    25
    27
    28#ifdef HAVE_NSS
    29#include <cert.h>
    30#include <secoidt.h>
    31typedef SECOidTag ALGORITHM_TYPE;
    32#define ALGORITHM_NULL SEC_OID_UNKNOWN
    33/* we really should make a neutral define for this */
    34#define X509 CERTCertificate
    35#else
    36#include "../common/pam-pkcs11-ossl-compat.h"
    37#include <openssl/x509.h>
    38typedef const char *ALGORITHM_TYPE;
    39#define ALGORITHM_NULL NULL
    40#endif
    41
    42
    43#endif /* _CERT_ST_H */
    const char * ALGORITHM_TYPE
    Definition: cert_st.h:38
    pam_pkcs11-0.6.12/doc/api/pam-pkcs11-ossl-compat_8h_source.html0000644000175000017500000017200014367517110020764 00000000000000 pam_pkcs11: pam-pkcs11-ossl-compat.h Source File
    pam_pkcs11 0.6.12
    pam-pkcs11-ossl-compat.h
    Go to the documentation of this file.
    1/*
    2 * sc-ossl-compat.h: OpenSC ecompatability for older OpenSSL versions
    3 *
    4 * Copyright (C) 2016 Douglas E. Engert <deengert@gmail.com>
    5 *
    6 * This library is free software; you can redistribute it and/or
    7 * modify it under the terms of the GNU Lesser General Public
    8 * License as published by the Free Software Foundation; either
    9 * version 2.1 of the License, or (at your option) any later version.
    10 *
    11 * This library is distributed in the hope that it will be useful,
    12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14 * Lesser General Public License for more details.
    15 *
    16 * You should have received a copy of the GNU Lesser General Public
    17 * License along with this library; if not, write to the Free Software
    18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    19 */
    20
    21#ifndef _PAM_PKCS11_OSSL_COMPAT_H
    22#define _PAM_PKCS11_OSSL_COMPAT_H
    23
    24
    25#ifdef __cplusplus
    26extern "C" {
    27#endif
    28
    29#include <openssl/opensslv.h>
    30#include <openssl/opensslconf.h>
    31/*
    32 * Provide backward compatability to older versions of OpenSSL
    33 * while using most of OpenSSL 1.1 API
    34 */
    35
    36/*
    37 * EVP_CIPHER_CTX functions:
    38 * EVP_CIPHER_CTX_new not in 0.9.7
    39 * EVP_CIPHER_CTX_free not in 0.9.7
    40 * EVP_CIPHER_CTX_init in 0.9.7 to 1.0.2. defined in 1.1 as EVP_CIPHER_CTX_reset
    41 * EVP_CIPHER_CTX_cleanup in 0.9.7 to 1.0.2, defined in 1.1 as EVP_CIPHER_CTX_reset
    42 * EVP_CIPHER_CTX_reset only in 1.1
    43 *
    44 * EVP_CIPHER_CTX_new does a EVP_CIPHER_CTX_init
    45 * EVP_CIPHER_CTX_free does a EVP_CIPHER_CTX_cleanup
    46 * EVP_CIPHER_CTX_cleanup does equivelent of a EVP_CIPHER_CTX_init
    47 * Use EVP_CIPHER_CTX_new, EVP_CIPHER_CTX_free, and EVP_CIPHER_CTX_cleanup between operations
    48 */
    49
    50#if OPENSSL_VERSION_NUMBER <= 0x009070dfL
    51
    52/* in 0.9.7 EVP_CIPHER_CTX was always allocated inline or in other structures */
    53
    54#define EVP_CIPHER_CTX_new() ({ \
    55 EVP_CIPHER_CTX * tmp = NULL; \
    56 tmp = OPENSSL_malloc(sizeof(struct evp_cipher_ctx_st)); \
    57 if (tmp) { \
    58 EVP_CIPHER_CTX_init(tmp); \
    59 } \
    60 tmp; \
    61 })
    62
    63#define EVP_CIPHER_CTX_free(x) ({ \
    64 if (x) { \
    65 EVP_CIPHER_CTX_cleanup(x); \
    66 OPENSSL_free(x); \
    67 } \
    68 })
    69#endif /* OPENSSL_VERSION_NUMBER =< 0x00907000L */
    70
    71/*
    72 * 1.1 renames RSA_PKCS1_SSLeay to RSA_PKCS1_OpenSSL
    73 * use RSA_PKCS1_OpenSSL
    74 * Previous versions are missing a number of functions to access
    75 * some hidden structures. Define them here:
    76 */
    77
    78/* EVP_PKEY_base_id introduced in 1.0.1 */
    79#if OPENSSL_VERSION_NUMBER < 0x10001000L
    80#define EVP_PKEY_base_id(x) (x->type)
    81#endif
    82
    83#if OPENSSL_VERSION_NUMBER < 0x10100000L
    84#define RSA_PKCS1_OpenSSL RSA_PKCS1_SSLeay
    85#define OPENSSL_malloc_init CRYPTO_malloc_init
    86
    87#define EVP_PKEY_get0_RSA(x) (x->pkey.rsa)
    88#define EVP_PKEY_get0_DSA(x) (x->pkey.dsa)
    89#define X509_get_extension_flags(x) (x->ex_flags)
    90#define X509_get_key_usage(x) (x->ex_kusage)
    91#define X509_get_extended_key_usage(x) (x->ex_xkusage)
    92#define EVP_MD_CTX_new EVP_MD_CTX_create
    93#define EVP_MD_CTX_free EVP_MD_CTX_destroy
    94#define EVP_PKEY_up_ref(user_key) CRYPTO_add(&user_key->references, 1, CRYPTO_LOCK_EVP_PKEY)
    95#define X509_up_ref(cert) CRYPTO_add(&cert->references, 1, CRYPTO_LOCK_X509)
    96#define X509_get0_tbs_sigalg(x) (x->cert_info->key->algor)
    97#define X509_OBJECT_get0_X509(x) (x->data.x509)
    98#define X509_OBJECT_get0_X509_CRL(x) (x->data.crl)
    99#define RSA_get0_e(x) (x->e)
    100#define RSA_get0_n(x) (x->n)
    101#define ECDSA_SIG_get0_r(x) (x->r)
    102#define ECDSA_SIG_get0_s(x) (x->s)
    103
    104#define X509_OBJECT_free(x) ({ \
    105 if (x) { \
    106 X509_OBJECT_free_contents(x); \
    107 OPENSSL_free(x); \
    108 } \
    109 })
    110#endif
    111
    112
    113/*
    114 * OpenSSL-1.1.0-pre5 has hidden the RSA and DSA structures
    115 * One can no longer use statements like rsa->n = ...
    116 * Macros and defines don't work on all systems, so use inline versions
    117 * If that is not good enough, vsersions could be added to libopensc
    118 */
    119
    120#if OPENSSL_VERSION_NUMBER < 0x10100000L
    121/* based on OpenSSL-1.1.0 e_os2.h */
    122/* pam_pkcs11_ossl_inline: portable inline definition usable in public headers */
    123# if !defined(inline) && !defined(__cplusplus)
    124# if defined(__STDC_VERSION__) && __STDC_VERSION__>=199901L
    125 /* just use inline */
    126# define pam_pkcs11_ossl_inline inline
    127# elif defined(__GNUC__) && __GNUC__>=2
    128# define pam_pkcs11_ossl_inline __inline__
    129# elif defined(_MSC_VER)
    130# define pam_pkcs11_ossl_inline __inline
    131# else
    132# define pam_pkcs11_ossl_inline
    133# endif
    134# else
    135# define pam_pkcs11_ossl_inline inline
    136# endif
    137#endif
    138
    139#if OPENSSL_VERSION_NUMBER < 0x10100000L
    140
    141#define RSA_bits(R) (BN_num_bits(R->n))
    142
    143#include <openssl/bn.h>
    144#ifndef OPENSSL_NO_RSA
    145#include <openssl/rsa.h>
    146#endif
    147#ifndef OPENSSL_NO_DSA
    148#include <openssl/dsa.h>
    149#endif
    150
    151#if 1
    152#ifndef OPENSSL_NO_RSA
    153static pam_pkcs11_ossl_inline int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d)
    154{
    155 /* d is the private component and may be NULL */
    156 if (n == NULL || e == NULL)
    157 return 0;
    158
    159 BN_free(r->n);
    160 BN_free(r->e);
    161 BN_free(r->d);
    162 r->n = n;
    163 r->e = e;
    164 r->d = d;
    165
    166 return 1;
    167}
    168
    169static pam_pkcs11_ossl_inline int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q)
    170{
    171 if (p == NULL || q == NULL)
    172 return 0;
    173
    174 BN_free(r->p);
    175 BN_free(r->q);
    176 r->p = p;
    177 r->q = q;
    178
    179 return 1;
    180}
    181
    182static pam_pkcs11_ossl_inline int RSA_set0_crt_params(RSA *r, BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp)
    183{
    184 if (dmp1 == NULL || dmq1 == NULL || iqmp == NULL)
    185 return 0;
    186
    187 BN_free(r->dmp1);
    188 BN_free(r->dmq1);
    189 BN_free(r->iqmp);
    190 r->dmp1 = dmp1;
    191 r->dmq1 = dmq1;
    192 r->iqmp = iqmp;
    193
    194 return 1;
    195}
    196
    197static pam_pkcs11_ossl_inline void RSA_get0_key(const RSA *r, const BIGNUM **n, const BIGNUM **e, const BIGNUM **d)
    198{
    199 if (n != NULL)
    200 *n = r->n;
    201 if (e != NULL)
    202 *e = r->e;
    203 if (d != NULL)
    204 *d = r->d;
    205}
    206
    207static pam_pkcs11_ossl_inline void RSA_get0_factors(const RSA *r, const BIGNUM **p, const BIGNUM **q)
    208{
    209 if (p != NULL)
    210 *p = r->p;
    211 if (q != NULL)
    212 *q = r->q;
    213}
    214
    216 const BIGNUM **dmp1, const BIGNUM **dmq1, const BIGNUM **iqmp)
    217{
    218 if (dmp1 != NULL)
    219 *dmp1 = r->dmp1;
    220 if (dmq1 != NULL)
    221 *dmq1 = r->dmq1;
    222 if (iqmp != NULL)
    223 *iqmp = r->iqmp;
    224}
    225
    226#endif /* OPENSSL_NO_RSA */
    227
    228#ifndef OPENSSL_NO_DSA
    229static pam_pkcs11_ossl_inline void DSA_get0_pqg(const DSA *d, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g)
    230{
    231 if (p != NULL)
    232 *p = d->p;
    233 if (q != NULL)
    234 *q = d->q;
    235 if (g != NULL)
    236 *g = d->g;
    237}
    238
    239static pam_pkcs11_ossl_inline void DSA_get0_key(const DSA *d, const BIGNUM **pub_key, const BIGNUM **priv_key)
    240{
    241 if (pub_key != NULL)
    242 *pub_key = d->pub_key;
    243 if (priv_key != NULL)
    244 *priv_key = d->priv_key;
    245}
    246
    247/* NOTE: DSA_set0_* functions not defined because they are not currently used in OpenSC */
    248#endif /* OPENSSL_NO_DSA */
    249
    250#else /* if we used macros */
    251
    252#define RSA_set0_key(R, N, E, D) \
    253 ({ \
    254 int ret = 0; \
    255 if (!(N) || !(E)) { \
    256 ret = 0; \
    257 } else { \
    258 BN_free(R->n); \
    259 BN_free(R->e); \
    260 BN_free(R->d); \
    261 R->n = (N); \
    262 R->e = (E); \
    263 R->d = (D); \
    264 ret = 1; \
    265 } \
    266 ret; \
    267 })
    268
    269#define RSA_set0_factors(R, P, Q) \
    270 ({ \
    271 int ret= 0; \
    272 if (!P || !Q) { \
    273 ret = 0; \
    274 } else { \
    275 BN_free(R->p); \
    276 BN_free(R->q); \
    277 R->p = P; \
    278 R->q = Q; \
    279 ret = 1; \
    280 } \
    281 ret; \
    282 })
    283
    284#define RSA_set0_crt_params(R, DMP1, DMQ1, IQMP) \
    285 ({ \
    286 int ret = 0; \
    287 if (!DMP1 || !DMQ1 || !IQMP) { \
    288 ret = 0; \
    289 } else { \
    290 BN_free(R->dmp1); \
    291 BN_free(R->dmq1); \
    292 BN_free(R->iqmp); \
    293 R->dmp1 = DMP1; \
    294 R->dmq1 = DMQ1; \
    295 R->iqmp = IQMP; \
    296 ret = 1; \
    297 } \
    298 ret; \
    299 })
    300
    301#define RSA_get0_key(R, N, E, D) { \
    302 BIGNUM **n = N; \
    303 BIGNUM **e = E; \
    304 BIGNUM **d = D; \
    305 if (n) *(n) = R->n; \
    306 if (e) *(e) = R->e; \
    307 if (d) *(d) = R->d; \
    308 }
    309
    310#define RSA_get0_factors(R, P, Q) {\
    311 BIGNUM **p = P; \
    312 BIGNUM **q = Q; \
    313 if (p) *(p) = R->p; \
    314 if (q) *(q) = R->q; \
    315 }
    316
    317#define RSA_get0_crt_params(R, DMP1, DMQ1, IQMP) { \
    318 BIGNUM **dmp1 = DMP1; \
    319 BIGNUM **dmq1 = DMQ1; \
    320 BIGNUM **iqmp = IQMP; \
    321 if (dmp1) *(dmp1) = R->dmp1; \
    322 if (dmq1) *(dmq1) = R->dmq1; \
    323 if (iqmp) *(iqmp) = R->iqmp; \
    324 }
    325
    326#define DSA_get0_key(D, PUB, PRIV) { \
    327 BIGNUM **pub = PUB; \
    328 BIGNUM **priv = PRIV; \
    329 if (pub) *(pub) = D->pub_key; \
    330 if (priv) *(priv) = D->priv_key; \
    331 }
    332
    333#define DSA_get0_pqg(D, P, Q, G) { \
    334 BIGNUM **p = P; \
    335 BIGNUM **q = Q; \
    336 BIGNUM **g = G; \
    337 if (p) *(p) = D->p; \
    338 if (q) *(q) = D->q; \
    339 if (g) *(g) = D->g; \
    340 }
    341
    342/* NOTE: DSA_set0_* functions not defined because they are not used in OpenSC */
    343#endif /* 0 */
    344#endif
    345
    346#ifdef __cplusplus
    347}
    348#endif
    349
    350#endif
    static pam_pkcs11_ossl_inline void DSA_get0_key(const DSA *d, const BIGNUM **pub_key, const BIGNUM **priv_key)
    static pam_pkcs11_ossl_inline int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q)
    static pam_pkcs11_ossl_inline int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d)
    #define pam_pkcs11_ossl_inline
    static pam_pkcs11_ossl_inline int RSA_set0_crt_params(RSA *r, BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp)
    static pam_pkcs11_ossl_inline void RSA_get0_crt_params(const RSA *r, const BIGNUM **dmp1, const BIGNUM **dmq1, const BIGNUM **iqmp)
    static pam_pkcs11_ossl_inline void RSA_get0_factors(const RSA *r, const BIGNUM **p, const BIGNUM **q)
    static pam_pkcs11_ossl_inline void RSA_get0_key(const RSA *r, const BIGNUM **n, const BIGNUM **e, const BIGNUM **d)
    static pam_pkcs11_ossl_inline void DSA_get0_pqg(const DSA *d, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g)
    pam_pkcs11-0.6.12/doc/api/error_8h_source.html0000644000175000017500000002433714367517110016012 00000000000000 pam_pkcs11: error.h Source File
    pam_pkcs11 0.6.12
    error.h
    Go to the documentation of this file.
    1/*
    2 * PKCS #11 PAM Login Module
    3 * Copyright (C) 2003 Mario Strasser <mast@gmx.net>,
    4 *
    5 * This library is free software; you can redistribute it and/or
    6 * modify it under the terms of the GNU Lesser General Public
    7 * License as published by the Free Software Foundation; either
    8 * version 2.1 of the License, or (at your option) any later version.
    9 *
    10 * This library is distributed in the hope that it will be useful,
    11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    13 * Lesser General Public License for more details.
    14 *
    15 * $Id$
    16 */
    17
    18#ifndef __ERROR_H_
    19#define __ERROR_H_
    20
    21#ifdef HAVE_CONFIG_H
    22#include <config.h>
    23#endif
    24
    25#include <config.h>
    26#include <stdarg.h>
    27#ifndef HAVE_NSS
    28#include <openssl/err.h>
    29#endif
    30#include <errno.h>
    31
    33#define ERROR_BUFFER_SIZE 512
    34
    35#ifndef __ERROR_C_
    36#define ERROR_EXTERN extern
    37#else
    38#define ERROR_EXTERN
    39#endif
    40
    46ERROR_EXTERN void set_error(const char *format, ...);
    47
    52ERROR_EXTERN const char *get_error(void);
    53
    54#undef ERROR_EXTERN
    55#endif /* __ERROR_H_ */
    ERROR_EXTERN void set_error(const char *format,...)
    store an error message into a temporary buffer, in a similar way as sprintf does
    ERROR_EXTERN const char * get_error(void)
    Retrieve error message string from buffer.
    #define ERROR_EXTERN
    Definition: error.h:36
    pam_pkcs11-0.6.12/doc/api/functions_vars_r.html0000644000175000017500000000443014367517110016256 00000000000000 pam_pkcs11: Data Fields - Variables
    pam_pkcs11 0.6.12
    pam_pkcs11-0.6.12/doc/api/tabs.css0000644000175000017500000002334514367517110013455 00000000000000.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#666;-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} pam_pkcs11-0.6.12/doc/api/uri_8h_source.html0000644000175000017500000002640714367517110015460 00000000000000 pam_pkcs11: uri.h Source File
    pam_pkcs11 0.6.12
    uri.h
    Go to the documentation of this file.
    1/*
    2 * PKCS #11 PAM Login Module
    3 * Copyright (C) 2003 Mario Strasser <mast@gmx.net>,
    4 *
    5 * This library is free software; you can redistribute it and/or
    6 * modify it under the terms of the GNU Lesser General Public
    7 * License as published by the Free Software Foundation; either
    8 * version 2.1 of the License, or (at your option) any later version.
    9 *
    10 * This library is distributed in the hope that it will be useful,
    11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    13 * Lesser General Public License for more details.
    14 *
    15 * $Id$
    16 */
    17
    30#ifndef __URI_H_
    31#define __URI_H_
    32
    33#ifdef HAVE_CONFIG_H
    34#include <config.h>
    35#endif
    36#include <stdlib.h>
    37
    38#ifndef __URI_C_
    39#define URI_EXTERN extern
    40#else
    41#define URI_EXTERN
    42#endif
    43
    44URI_EXTERN int is_uri(const char *path);
    45URI_EXTERN int is_file(const char *path);
    46URI_EXTERN int is_dir(const char *path);
    47URI_EXTERN int is_symlink(const char *path);
    48
    56URI_EXTERN int get_from_uri(const char *uri_str, unsigned char **data, size_t *length);
    57
    58#undef URI_EXTERN
    59
    60#endif /* __URI_H_ */
    URI_EXTERN int is_symlink(const char *path)
    URI_EXTERN int is_file(const char *path)
    #define URI_EXTERN
    Definition: uri.h:39
    URI_EXTERN int is_dir(const char *path)
    URI_EXTERN int is_uri(const char *path)
    URI_EXTERN int get_from_uri(const char *uri_str, unsigned char **data, size_t *length)
    Downloads data from a given URI.
    pam_pkcs11-0.6.12/doc/api/structCK__MECHANISM.html0000644000175000017500000001413514367517110016162 00000000000000 pam_pkcs11: CK_MECHANISM Struct Reference
    pam_pkcs11 0.6.12
    CK_MECHANISM Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_MECHANISM_TYPE mechanism
     
    CK_VOID_PTR pParameter
     
    CK_ULONG ulParameterLen
     

    Detailed Description

    Definition at line 779 of file pkcs11t.h.

    Field Documentation

    ◆ mechanism

    CK_MECHANISM_TYPE mechanism

    Definition at line 780 of file pkcs11t.h.

    ◆ pParameter

    CK_VOID_PTR pParameter

    Definition at line 781 of file pkcs11t.h.

    ◆ ulParameterLen

    CK_ULONG ulParameterLen

    Definition at line 785 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/globals_defs.html0000644000175000017500000000513214367517110015316 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - _ -

    pam_pkcs11-0.6.12/doc/api/doxygen.css0000644000175000017500000010161414367517110014175 00000000000000/* The standard CSS for doxygen 1.9.4 */ body, table, div, p, dl { font: 400 14px/22px Roboto,sans-serif; } p.reference, p.definition { font: 400 14px/22px Roboto,sans-serif; } /* @group Heading Levels */ h1.groupheader { font-size: 150%; } .title { font: 400 14px/28px Roboto,sans-serif; font-size: 150%; font-weight: bold; margin: 10px 2px; } h2.groupheader { border-bottom: 1px solid #879ECB; color: #354C7B; font-size: 150%; font-weight: normal; margin-top: 1.75em; padding-top: 8px; padding-bottom: 4px; width: 100%; } h3.groupheader { font-size: 100%; } h1, h2, h3, h4, h5, h6 { -webkit-transition: text-shadow 0.5s linear; -moz-transition: text-shadow 0.5s linear; -ms-transition: text-shadow 0.5s linear; -o-transition: text-shadow 0.5s linear; transition: text-shadow 0.5s linear; margin-right: 15px; } h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { text-shadow: 0 0 15px cyan; } dt { font-weight: bold; } ul.multicol { -moz-column-gap: 1em; -webkit-column-gap: 1em; column-gap: 1em; -moz-column-count: 3; -webkit-column-count: 3; column-count: 3; } p.startli, p.startdd { margin-top: 2px; } th p.starttd, th p.intertd, th p.endtd { font-size: 100%; font-weight: 700; } p.starttd { margin-top: 0px; } p.endli { margin-bottom: 0px; } p.enddd { margin-bottom: 4px; } p.endtd { margin-bottom: 2px; } p.interli { } p.interdd { } p.intertd { } /* @end */ caption { font-weight: bold; } span.legend { font-size: 70%; text-align: center; } h3.version { font-size: 90%; text-align: center; } div.navtab { border-right: 1px solid #A3B4D7; padding-right: 15px; text-align: right; line-height: 110%; } div.navtab table { border-spacing: 0; } td.navtab { padding-right: 6px; padding-left: 6px; } td.navtabHL { background-image: url('tab_a.png'); background-repeat:repeat-x; padding-right: 6px; padding-left: 6px; } td.navtabHL a, td.navtabHL a:visited { color: #fff; text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); } a.navtab { font-weight: bold; } div.qindex{ text-align: center; width: 100%; line-height: 140%; font-size: 130%; color: #A0A0A0; } dt.alphachar{ font-size: 180%; font-weight: bold; } .alphachar a{ color: black; } .alphachar a:hover, .alphachar a:visited{ text-decoration: none; } .classindex dl { padding: 25px; column-count:1 } .classindex dd { display:inline-block; margin-left: 50px; width: 90%; line-height: 1.15em; } .classindex dl.odd { background-color: #F8F9FC; } @media(min-width: 1120px) { .classindex dl { column-count:2 } } @media(min-width: 1320px) { .classindex dl { column-count:3 } } /* @group Link Styling */ a { color: #3D578C; font-weight: normal; text-decoration: none; } .contents a:visited { color: #4665A2; } a:hover { text-decoration: underline; } .contents a.qindexHL:visited { color: #FFFFFF; } a.el { font-weight: bold; } a.elRef { } a.code, a.code:visited, a.line, a.line:visited { color: #4665A2; } a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { color: #4665A2; } a.code.hl_class { /* style for links to class names in code snippets */ } a.code.hl_struct { /* style for links to struct names in code snippets */ } a.code.hl_union { /* style for links to union names in code snippets */ } a.code.hl_interface { /* style for links to interface names in code snippets */ } a.code.hl_protocol { /* style for links to protocol names in code snippets */ } a.code.hl_category { /* style for links to category names in code snippets */ } a.code.hl_exception { /* style for links to exception names in code snippets */ } a.code.hl_service { /* style for links to service names in code snippets */ } a.code.hl_singleton { /* style for links to singleton names in code snippets */ } a.code.hl_concept { /* style for links to concept names in code snippets */ } a.code.hl_namespace { /* style for links to namespace names in code snippets */ } a.code.hl_package { /* style for links to package names in code snippets */ } a.code.hl_define { /* style for links to macro names in code snippets */ } a.code.hl_function { /* style for links to function names in code snippets */ } a.code.hl_variable { /* style for links to variable names in code snippets */ } a.code.hl_typedef { /* style for links to typedef names in code snippets */ } a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } a.code.hl_friend { /* style for links to friend names in code snippets */ } a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } a.code.hl_property { /* style for links to property names in code snippets */ } a.code.hl_event { /* style for links to event names in code snippets */ } a.code.hl_sequence { /* style for links to sequence names in code snippets */ } a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } /* @end */ dl.el { margin-left: -1cm; } ul { overflow: visible; } #side-nav ul { overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ } #main-nav ul { overflow: visible; /* reset ul rule for the navigation bar drop down lists */ } .fragment { text-align: left; direction: ltr; overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ overflow-y: hidden; } pre.fragment { border: 1px solid #C4CFE5; background-color: #FBFCFD; padding: 4px 6px; margin: 4px 8px 4px 2px; overflow: auto; word-wrap: break-word; font-size: 9pt; line-height: 125%; font-family: monospace, fixed; font-size: 105%; } div.fragment { padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ margin: 4px 8px 4px 2px; background-color: #FBFCFD; border: 1px solid #C4CFE5; } div.line { font-family: monospace, fixed; font-size: 13px; min-height: 13px; line-height: 1.0; text-wrap: unrestricted; white-space: -moz-pre-wrap; /* Moz */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ white-space: pre-wrap; /* CSS3 */ word-wrap: break-word; /* IE 5.5+ */ text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition-property: background-color, box-shadow; -webkit-transition-duration: 0.5s; -moz-transition-property: background-color, box-shadow; -moz-transition-duration: 0.5s; -ms-transition-property: background-color, box-shadow; -ms-transition-duration: 0.5s; -o-transition-property: background-color, box-shadow; -o-transition-duration: 0.5s; transition-property: background-color, box-shadow; transition-duration: 0.5s; } div.line:after { content:"\000A"; white-space: pre; } div.line.glow { background-color: cyan; box-shadow: 0 0 10px cyan; } span.lineno { padding-right: 4px; margin-right: 9px; text-align: right; border-right: 2px solid #0F0; background-color: #E8E8E8; white-space: pre; } span.lineno a { background-color: #D8D8D8; } span.lineno a:hover { background-color: #C8C8C8; } .lineno { -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } div.ah, span.ah { background-color: black; font-weight: bold; color: #FFFFFF; margin-bottom: 3px; margin-top: 3px; padding: 0.2em; border: solid thin #333; border-radius: 0.5em; -webkit-border-radius: .5em; -moz-border-radius: .5em; box-shadow: 2px 2px 3px #999; -webkit-box-shadow: 2px 2px 3px #999; -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); } div.classindex ul { list-style: none; padding-left: 0; } div.classindex span.ai { display: inline-block; } div.groupHeader { margin-left: 16px; margin-top: 12px; font-weight: bold; } div.groupText { margin-left: 16px; font-style: italic; } body { background-color: white; color: black; margin: 0; } div.contents { margin-top: 10px; margin-left: 12px; margin-right: 8px; } td.indexkey { background-color: #EBEFF6; font-weight: bold; border: 1px solid #C4CFE5; margin: 2px 0px 2px 0; padding: 2px 10px; white-space: nowrap; vertical-align: top; } td.indexvalue { background-color: #EBEFF6; border: 1px solid #C4CFE5; padding: 2px 10px; margin: 2px 0px; } tr.memlist { background-color: #EEF1F7; } p.formulaDsp { text-align: center; } img.formulaDsp { } img.formulaInl, img.inline { vertical-align: middle; } div.center { text-align: center; margin-top: 0px; margin-bottom: 0px; padding: 0px; } div.center img { border: 0px; } address.footer { text-align: right; padding-right: 12px; } img.footer { border: 0px; vertical-align: middle; } .compoundTemplParams { color: #4665A2; font-size: 80%; line-height: 120%; } /* @group Code Colorization */ span.keyword { color: #008000 } span.keywordtype { color: #604020 } span.keywordflow { color: #e08000 } span.comment { color: #800000 } span.preprocessor { color: #806020 } span.stringliteral { color: #002080 } span.charliteral { color: #008080 } span.vhdldigit { color: #ff00ff } span.vhdlchar { color: #000000 } span.vhdlkeyword { color: #700070 } span.vhdllogic { color: #ff0000 } blockquote { background-color: #F7F8FB; border-left: 2px solid #9CAFD4; margin: 0 24px 0 4px; padding: 0 12px 0 16px; } blockquote.DocNodeRTL { border-left: 0; border-right: 2px solid #9CAFD4; margin: 0 4px 0 24px; padding: 0 16px 0 12px; } /* @end */ /* .search { color: #003399; font-weight: bold; } form.search { margin-bottom: 0px; margin-top: 0px; } input.search { font-size: 75%; color: #000080; font-weight: normal; background-color: #e8eef2; } */ td.tiny { font-size: 75%; } .dirtab { padding: 4px; border-collapse: collapse; border: 1px solid #A3B4D7; } th.dirtab { background: #EBEFF6; font-weight: bold; } hr { height: 0px; border: none; border-top: 1px solid #4A6AAA; } hr.footer { height: 1px; } /* @group Member Descriptions */ table.memberdecls { border-spacing: 0px; padding: 0px; } .memberdecls td, .fieldtable tr { -webkit-transition-property: background-color, box-shadow; -webkit-transition-duration: 0.5s; -moz-transition-property: background-color, box-shadow; -moz-transition-duration: 0.5s; -ms-transition-property: background-color, box-shadow; -ms-transition-duration: 0.5s; -o-transition-property: background-color, box-shadow; -o-transition-duration: 0.5s; transition-property: background-color, box-shadow; transition-duration: 0.5s; } .memberdecls td.glow, .fieldtable tr.glow { background-color: cyan; box-shadow: 0 0 15px cyan; } .mdescLeft, .mdescRight, .memItemLeft, .memItemRight, .memTemplItemLeft, .memTemplItemRight, .memTemplParams { background-color: #F9FAFC; border: none; margin: 4px; padding: 1px 0 0 8px; } .mdescLeft, .mdescRight { padding: 0px 8px 4px 8px; color: #555; } .memSeparator { border-bottom: 1px solid #DEE4F0; line-height: 1px; margin: 0px; padding: 0px; } .memItemLeft, .memTemplItemLeft { white-space: nowrap; } .memItemRight, .memTemplItemRight { width: 100%; } .memTemplParams { color: #4665A2; white-space: nowrap; font-size: 80%; } /* @end */ /* @group Member Details */ /* Styles for detailed member documentation */ .memtitle { padding: 8px; border-top: 1px solid #A8B8D9; border-left: 1px solid #A8B8D9; border-right: 1px solid #A8B8D9; border-top-right-radius: 4px; border-top-left-radius: 4px; margin-bottom: -1px; background-image: url('nav_f.png'); background-repeat: repeat-x; background-color: #E2E8F2; line-height: 1.25; font-weight: 300; float:left; } .permalink { font-size: 65%; display: inline-block; vertical-align: middle; } .memtemplate { font-size: 80%; color: #4665A2; font-weight: normal; margin-left: 9px; } .memnav { background-color: #EBEFF6; border: 1px solid #A3B4D7; text-align: center; margin: 2px; margin-right: 15px; padding: 2px; } .mempage { width: 100%; } .memitem { padding: 0; margin-bottom: 10px; margin-right: 5px; -webkit-transition: box-shadow 0.5s linear; -moz-transition: box-shadow 0.5s linear; -ms-transition: box-shadow 0.5s linear; -o-transition: box-shadow 0.5s linear; transition: box-shadow 0.5s linear; display: table !important; width: 100%; } .memitem.glow { box-shadow: 0 0 15px cyan; } .memname { font-weight: 400; margin-left: 6px; } .memname td { vertical-align: bottom; } .memproto, dl.reflist dt { border-top: 1px solid #A8B8D9; border-left: 1px solid #A8B8D9; border-right: 1px solid #A8B8D9; padding: 6px 0px 6px 0px; color: #253555; font-weight: bold; text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); background-color: #DFE5F1; /* opera specific markup */ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); border-top-right-radius: 4px; /* firefox specific markup */ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; -moz-border-radius-topright: 4px; /* webkit specific markup */ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -webkit-border-top-right-radius: 4px; } .overload { font-family: "courier new",courier,monospace; font-size: 65%; } .memdoc, dl.reflist dd { border-bottom: 1px solid #A8B8D9; border-left: 1px solid #A8B8D9; border-right: 1px solid #A8B8D9; padding: 6px 10px 2px 10px; background-color: #FBFCFD; border-top-width: 0; background-image:url('nav_g.png'); background-repeat:repeat-x; background-color: #FFFFFF; /* opera specific markup */ border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); /* firefox specific markup */ -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; /* webkit specific markup */ -webkit-border-bottom-left-radius: 4px; -webkit-border-bottom-right-radius: 4px; -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); } dl.reflist dt { padding: 5px; } dl.reflist dd { margin: 0px 0px 10px 0px; padding: 5px; } .paramkey { text-align: right; } .paramtype { white-space: nowrap; } .paramname { color: #602020; white-space: nowrap; } .paramname em { font-style: normal; } .paramname code { line-height: 14px; } .params, .retval, .exception, .tparams { margin-left: 0px; padding-left: 0px; } .params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { font-weight: bold; vertical-align: top; } .params .paramtype, .tparams .paramtype { font-style: italic; vertical-align: top; } .params .paramdir, .tparams .paramdir { font-family: "courier new",courier,monospace; vertical-align: top; } table.mlabels { border-spacing: 0px; } td.mlabels-left { width: 100%; padding: 0px; } td.mlabels-right { vertical-align: bottom; padding: 0px; white-space: nowrap; } span.mlabels { margin-left: 8px; } span.mlabel { background-color: #728DC1; border-top:1px solid #5373B4; border-left:1px solid #5373B4; border-right:1px solid #C4CFE5; border-bottom:1px solid #C4CFE5; text-shadow: none; color: white; margin-right: 4px; padding: 2px 3px; border-radius: 3px; font-size: 7pt; white-space: nowrap; vertical-align: middle; } /* @end */ /* these are for tree view inside a (index) page */ div.directory { margin: 10px 0px; border-top: 1px solid #9CAFD4; border-bottom: 1px solid #9CAFD4; width: 100%; } .directory table { border-collapse:collapse; } .directory td { margin: 0px; padding: 0px; vertical-align: top; } .directory td.entry { white-space: nowrap; padding-right: 6px; padding-top: 3px; } .directory td.entry a { outline:none; } .directory td.entry a img { border: none; } .directory td.desc { width: 100%; padding-left: 6px; padding-right: 6px; padding-top: 3px; border-left: 1px solid rgba(0,0,0,0.05); } .directory tr.even { padding-left: 6px; background-color: #F7F8FB; } .directory img { vertical-align: -30%; } .directory .levels { white-space: nowrap; width: 100%; text-align: right; font-size: 9pt; } .directory .levels span { cursor: pointer; padding-left: 2px; padding-right: 2px; color: #3D578C; } .arrow { color: #9CAFD4; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; cursor: pointer; font-size: 80%; display: inline-block; width: 16px; height: 22px; } .icon { font-family: Arial, Helvetica; font-weight: bold; font-size: 12px; height: 14px; width: 16px; display: inline-block; background-color: #728DC1; color: white; text-align: center; border-radius: 4px; margin-left: 2px; margin-right: 2px; } .icona { width: 24px; height: 22px; display: inline-block; } .iconfopen { width: 24px; height: 18px; margin-bottom: 4px; background-image:url('folderopen.png'); background-position: 0px -4px; background-repeat: repeat-y; vertical-align:top; display: inline-block; } .iconfclosed { width: 24px; height: 18px; margin-bottom: 4px; background-image:url('folderclosed.png'); background-position: 0px -4px; background-repeat: repeat-y; vertical-align:top; display: inline-block; } .icondoc { width: 24px; height: 18px; margin-bottom: 4px; background-image:url('doc.png'); background-position: 0px -4px; background-repeat: repeat-y; vertical-align:top; display: inline-block; } table.directory { font: 400 14px Roboto,sans-serif; } /* @end */ div.dynheader { margin-top: 8px; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } address { font-style: normal; color: #2A3D61; } table.doxtable caption { caption-side: top; } table.doxtable { border-collapse:collapse; margin-top: 4px; margin-bottom: 4px; } table.doxtable td, table.doxtable th { border: 1px solid #2D4068; padding: 3px 7px 2px; } table.doxtable th { background-color: #374F7F; color: #FFFFFF; font-size: 110%; padding-bottom: 4px; padding-top: 5px; } table.fieldtable { /*width: 100%;*/ margin-bottom: 10px; border: 1px solid #A8B8D9; border-spacing: 0px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); } .fieldtable td, .fieldtable th { padding: 3px 7px 2px; } .fieldtable td.fieldtype, .fieldtable td.fieldname { white-space: nowrap; border-right: 1px solid #A8B8D9; border-bottom: 1px solid #A8B8D9; vertical-align: top; } .fieldtable td.fieldname { padding-top: 3px; } .fieldtable td.fielddoc { border-bottom: 1px solid #A8B8D9; /*width: 100%;*/ } .fieldtable td.fielddoc p:first-child { margin-top: 0px; } .fieldtable td.fielddoc p:last-child { margin-bottom: 2px; } .fieldtable tr:last-child td { border-bottom: none; } .fieldtable th { background-image:url('nav_f.png'); background-repeat:repeat-x; background-color: #E2E8F2; font-size: 90%; color: #253555; padding-bottom: 4px; padding-top: 5px; text-align:left; font-weight: 400; -moz-border-radius-topleft: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-left-radius: 4px; -webkit-border-top-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom: 1px solid #A8B8D9; } .tabsearch { top: 0px; left: 10px; height: 36px; background-image: url('tab_b.png'); z-index: 101; overflow: hidden; font-size: 13px; } .navpath ul { font-size: 11px; background-image:url('tab_b.png'); background-repeat:repeat-x; background-position: 0 -5px; height:30px; line-height:30px; color:#8AA0CC; border:solid 1px #C2CDE4; overflow:hidden; margin:0px; padding:0px; } .navpath li { list-style-type:none; float:left; padding-left:10px; padding-right:15px; background-image:url('bc_s.png'); background-repeat:no-repeat; background-position:right; color:#364D7C; } .navpath li.navelem a { height:32px; display:block; text-decoration: none; outline: none; color: #283A5D; font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); text-decoration: none; } .navpath li.navelem a:hover { color:#6884BD; } .navpath li.footer { list-style-type:none; float:right; padding-left:10px; padding-right:15px; background-image:none; background-repeat:no-repeat; background-position:right; color:#364D7C; font-size: 8pt; } div.summary { float: right; font-size: 8pt; padding-right: 5px; width: 50%; text-align: right; } div.summary a { white-space: nowrap; } table.classindex { margin: 10px; white-space: nowrap; margin-left: 3%; margin-right: 3%; width: 94%; border: 0; border-spacing: 0; padding: 0; } div.ingroups { font-size: 8pt; width: 50%; text-align: left; } div.ingroups a { white-space: nowrap; } div.header { background-image:url('nav_h.png'); background-repeat:repeat-x; background-color: #F9FAFC; margin: 0px; border-bottom: 1px solid #C4CFE5; } div.headertitle { padding: 5px 5px 5px 10px; } .PageDocRTL-title div.headertitle { text-align: right; direction: rtl; } dl { padding: 0 0 0 0; } /* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ dl.section { margin-left: 0px; padding-left: 0px; } dl.section.DocNodeRTL { margin-right: 0px; padding-right: 0px; } dl.note { margin-left: -7px; padding-left: 3px; border-left: 4px solid; border-color: #D0C000; } dl.note.DocNodeRTL { margin-left: 0; padding-left: 0; border-left: 0; margin-right: -7px; padding-right: 3px; border-right: 4px solid; border-color: #D0C000; } dl.warning, dl.attention { margin-left: -7px; padding-left: 3px; border-left: 4px solid; border-color: #FF0000; } dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { margin-left: 0; padding-left: 0; border-left: 0; margin-right: -7px; padding-right: 3px; border-right: 4px solid; border-color: #FF0000; } dl.pre, dl.post, dl.invariant { margin-left: -7px; padding-left: 3px; border-left: 4px solid; border-color: #00D000; } dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { margin-left: 0; padding-left: 0; border-left: 0; margin-right: -7px; padding-right: 3px; border-right: 4px solid; border-color: #00D000; } dl.deprecated { margin-left: -7px; padding-left: 3px; border-left: 4px solid; border-color: #505050; } dl.deprecated.DocNodeRTL { margin-left: 0; padding-left: 0; border-left: 0; margin-right: -7px; padding-right: 3px; border-right: 4px solid; border-color: #505050; } dl.todo { margin-left: -7px; padding-left: 3px; border-left: 4px solid; border-color: #00C0E0; } dl.todo.DocNodeRTL { margin-left: 0; padding-left: 0; border-left: 0; margin-right: -7px; padding-right: 3px; border-right: 4px solid; border-color: #00C0E0; } dl.test { margin-left: -7px; padding-left: 3px; border-left: 4px solid; border-color: #3030E0; } dl.test.DocNodeRTL { margin-left: 0; padding-left: 0; border-left: 0; margin-right: -7px; padding-right: 3px; border-right: 4px solid; border-color: #3030E0; } dl.bug { margin-left: -7px; padding-left: 3px; border-left: 4px solid; border-color: #C08050; } dl.bug.DocNodeRTL { margin-left: 0; padding-left: 0; border-left: 0; margin-right: -7px; padding-right: 3px; border-right: 4px solid; border-color: #C08050; } dl.section dd { margin-bottom: 6px; } #projectrow { height: 56px; } #projectlogo { text-align: center; vertical-align: bottom; border-collapse: separate; } #projectlogo img { border: 0px none; } #projectalign { vertical-align: middle; padding-left: 0.5em; } #projectname { font: 200% Tahoma, Arial,sans-serif; margin: 0px; padding: 2px 0px; } #projectbrief { font: 90% Tahoma, Arial,sans-serif; margin: 0px; padding: 0px; } #projectnumber { font: 50% Tahoma, Arial,sans-serif; margin: 0px; padding: 0px; } #titlearea { padding: 0px; margin: 0px; width: 100%; border-bottom: 1px solid #5373B4; } .image { text-align: center; } .dotgraph { text-align: center; } .mscgraph { text-align: center; } .plantumlgraph { text-align: center; } .diagraph { text-align: center; } .caption { font-weight: bold; } div.zoom { border: 1px solid #90A5CE; } dl.citelist { margin-bottom:50px; } dl.citelist dt { color:#334975; float:left; font-weight:bold; margin-right:10px; padding:5px; text-align:right; width:52px; } dl.citelist dd { margin:2px 0 2px 72px; padding:5px 0; } div.toc { padding: 14px 25px; background-color: #F4F6FA; border: 1px solid #D8DFEE; border-radius: 7px 7px 7px 7px; float: right; height: auto; margin: 0 8px 10px 10px; width: 200px; } .PageDocRTL-title div.toc { float: left !important; text-align: right; } div.toc li { background: url("bdwn.png") no-repeat scroll 0 5px transparent; font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; margin-top: 5px; padding-left: 10px; padding-top: 2px; } .PageDocRTL-title div.toc li { background-position-x: right !important; padding-left: 0 !important; padding-right: 10px; } div.toc h3 { font: bold 12px/1.2 Arial,FreeSans,sans-serif; color: #4665A2; border-bottom: 0 none; margin: 0; } div.toc ul { list-style: none outside none; border: medium none; padding: 0px; } div.toc li.level1 { margin-left: 0px; } div.toc li.level2 { margin-left: 15px; } div.toc li.level3 { margin-left: 30px; } div.toc li.level4 { margin-left: 45px; } span.emoji { /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; */ } span.obfuscator { display: none; } .PageDocRTL-title div.toc li.level1 { margin-left: 0 !important; margin-right: 0; } .PageDocRTL-title div.toc li.level2 { margin-left: 0 !important; margin-right: 15px; } .PageDocRTL-title div.toc li.level3 { margin-left: 0 !important; margin-right: 30px; } .PageDocRTL-title div.toc li.level4 { margin-left: 0 !important; margin-right: 45px; } .inherit_header { font-weight: bold; color: gray; cursor: pointer; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } .inherit_header td { padding: 6px 0px 2px 5px; } .inherit { display: none; } tr.heading h2 { margin-top: 12px; margin-bottom: 4px; } /* tooltip related style info */ .ttc { position: absolute; display: none; } #powerTip { cursor: default; /*white-space: nowrap;*/ background-color: white; border: 1px solid gray; border-radius: 4px 4px 4px 4px; box-shadow: 1px 1px 7px gray; display: none; font-size: smaller; max-width: 80%; opacity: 0.9; padding: 1ex 1em 1em; position: absolute; z-index: 2147483647; } #powerTip div.ttdoc { color: grey; font-style: italic; } #powerTip div.ttname a { font-weight: bold; } #powerTip div.ttname { font-weight: bold; } #powerTip div.ttdeci { color: #006318; } #powerTip div { margin: 0px; padding: 0px; font: 12px/16px Roboto,sans-serif; } #powerTip:before, #powerTip:after { content: ""; position: absolute; margin: 0px; } #powerTip.n:after, #powerTip.n:before, #powerTip.s:after, #powerTip.s:before, #powerTip.w:after, #powerTip.w:before, #powerTip.e:after, #powerTip.e:before, #powerTip.ne:after, #powerTip.ne:before, #powerTip.se:after, #powerTip.se:before, #powerTip.nw:after, #powerTip.nw:before, #powerTip.sw:after, #powerTip.sw:before { border: solid transparent; content: " "; height: 0; width: 0; position: absolute; } #powerTip.n:after, #powerTip.s:after, #powerTip.w:after, #powerTip.e:after, #powerTip.nw:after, #powerTip.ne:after, #powerTip.sw:after, #powerTip.se:after { border-color: rgba(255, 255, 255, 0); } #powerTip.n:before, #powerTip.s:before, #powerTip.w:before, #powerTip.e:before, #powerTip.nw:before, #powerTip.ne:before, #powerTip.sw:before, #powerTip.se:before { border-color: rgba(128, 128, 128, 0); } #powerTip.n:after, #powerTip.n:before, #powerTip.ne:after, #powerTip.ne:before, #powerTip.nw:after, #powerTip.nw:before { top: 100%; } #powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { border-top-color: #FFFFFF; border-width: 10px; margin: 0px -10px; } #powerTip.n:before { border-top-color: #808080; border-width: 11px; margin: 0px -11px; } #powerTip.n:after, #powerTip.n:before { left: 50%; } #powerTip.nw:after, #powerTip.nw:before { right: 14px; } #powerTip.ne:after, #powerTip.ne:before { left: 14px; } #powerTip.s:after, #powerTip.s:before, #powerTip.se:after, #powerTip.se:before, #powerTip.sw:after, #powerTip.sw:before { bottom: 100%; } #powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { border-bottom-color: #FFFFFF; border-width: 10px; margin: 0px -10px; } #powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { border-bottom-color: #808080; border-width: 11px; margin: 0px -11px; } #powerTip.s:after, #powerTip.s:before { left: 50%; } #powerTip.sw:after, #powerTip.sw:before { right: 14px; } #powerTip.se:after, #powerTip.se:before { left: 14px; } #powerTip.e:after, #powerTip.e:before { left: 100%; } #powerTip.e:after { border-left-color: #FFFFFF; border-width: 10px; top: 50%; margin-top: -10px; } #powerTip.e:before { border-left-color: #808080; border-width: 11px; top: 50%; margin-top: -11px; } #powerTip.w:after, #powerTip.w:before { right: 100%; } #powerTip.w:after { border-right-color: #FFFFFF; border-width: 10px; top: 50%; margin-top: -10px; } #powerTip.w:before { border-right-color: #808080; border-width: 11px; top: 50%; margin-top: -11px; } @media print { #top { display: none; } #side-nav { display: none; } #nav-path { display: none; } body { overflow:visible; } h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } .summary { display: none; } .memitem { page-break-inside: avoid; } #doc-content { margin-left:0 !important; height:auto !important; width:auto !important; overflow:inherit; display:inline; } } /* @group Markdown */ table.markdownTable { border-collapse:collapse; margin-top: 4px; margin-bottom: 4px; } table.markdownTable td, table.markdownTable th { border: 1px solid #2D4068; padding: 3px 7px 2px; } table.markdownTable tr { } th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { background-color: #374F7F; color: #FFFFFF; font-size: 110%; padding-bottom: 4px; padding-top: 5px; } th.markdownTableHeadLeft, td.markdownTableBodyLeft { text-align: left } th.markdownTableHeadRight, td.markdownTableBodyRight { text-align: right } th.markdownTableHeadCenter, td.markdownTableBodyCenter { text-align: center } .DocNodeRTL { text-align: right; direction: rtl; } .DocNodeLTR { text-align: left; direction: ltr; } table.DocNodeRTL { width: auto; margin-right: 0; margin-left: auto; } table.DocNodeLTR { width: auto; margin-right: auto; margin-left: 0; } code.JavaDocCode { direction:ltr; } tt, code, kbd, samp { display: inline-block; direction:ltr; } /* @end */ u { text-decoration: underline; } pam_pkcs11-0.6.12/doc/api/pam-pkcs11-ossl-compat_8h.html0000644000175000017500000014613514367517110017416 00000000000000 pam_pkcs11: pam-pkcs11-ossl-compat.h File Reference
    pam_pkcs11 0.6.12
    pam-pkcs11-ossl-compat.h File Reference
    #include <openssl/opensslv.h>
    #include <openssl/opensslconf.h>
    #include <openssl/bn.h>
    #include <openssl/rsa.h>
    #include <openssl/dsa.h>

    Go to the source code of this file.

    Macros

    #define EVP_CIPHER_CTX_new()
     
    #define EVP_CIPHER_CTX_free(x)
     
    #define EVP_PKEY_base_id(x)   (x->type)
     
    #define RSA_PKCS1_OpenSSL   RSA_PKCS1_SSLeay
     
    #define OPENSSL_malloc_init   CRYPTO_malloc_init
     
    #define EVP_PKEY_get0_RSA(x)   (x->pkey.rsa)
     
    #define EVP_PKEY_get0_DSA(x)   (x->pkey.dsa)
     
    #define X509_get_extension_flags(x)   (x->ex_flags)
     
    #define X509_get_key_usage(x)   (x->ex_kusage)
     
    #define X509_get_extended_key_usage(x)   (x->ex_xkusage)
     
    #define EVP_MD_CTX_new   EVP_MD_CTX_create
     
    #define EVP_MD_CTX_free   EVP_MD_CTX_destroy
     
    #define EVP_PKEY_up_ref(user_key)   CRYPTO_add(&user_key->references, 1, CRYPTO_LOCK_EVP_PKEY)
     
    #define X509_up_ref(cert)   CRYPTO_add(&cert->references, 1, CRYPTO_LOCK_X509)
     
    #define X509_get0_tbs_sigalg(x)   (x->cert_info->key->algor)
     
    #define X509_OBJECT_get0_X509(x)   (x->data.x509)
     
    #define X509_OBJECT_get0_X509_CRL(x)   (x->data.crl)
     
    #define RSA_get0_e(x)   (x->e)
     
    #define RSA_get0_n(x)   (x->n)
     
    #define ECDSA_SIG_get0_r(x)   (x->r)
     
    #define ECDSA_SIG_get0_s(x)   (x->s)
     
    #define X509_OBJECT_free(x)
     
    #define pam_pkcs11_ossl_inline
     
    #define RSA_bits(R)   (BN_num_bits(R->n))
     

    Functions

    static pam_pkcs11_ossl_inline int RSA_set0_key (RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d)
     
    static pam_pkcs11_ossl_inline int RSA_set0_factors (RSA *r, BIGNUM *p, BIGNUM *q)
     
    static pam_pkcs11_ossl_inline int RSA_set0_crt_params (RSA *r, BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp)
     
    static pam_pkcs11_ossl_inline void RSA_get0_key (const RSA *r, const BIGNUM **n, const BIGNUM **e, const BIGNUM **d)
     
    static pam_pkcs11_ossl_inline void RSA_get0_factors (const RSA *r, const BIGNUM **p, const BIGNUM **q)
     
    static pam_pkcs11_ossl_inline void RSA_get0_crt_params (const RSA *r, const BIGNUM **dmp1, const BIGNUM **dmq1, const BIGNUM **iqmp)
     
    static pam_pkcs11_ossl_inline void DSA_get0_pqg (const DSA *d, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g)
     
    static pam_pkcs11_ossl_inline void DSA_get0_key (const DSA *d, const BIGNUM **pub_key, const BIGNUM **priv_key)
     

    Macro Definition Documentation

    ◆ ECDSA_SIG_get0_r

    #define ECDSA_SIG_get0_r (   x)    (x->r)

    Definition at line 101 of file pam-pkcs11-ossl-compat.h.

    ◆ ECDSA_SIG_get0_s

    #define ECDSA_SIG_get0_s (   x)    (x->s)

    Definition at line 102 of file pam-pkcs11-ossl-compat.h.

    ◆ EVP_CIPHER_CTX_free

    #define EVP_CIPHER_CTX_free (   x)
    Value:
    ({ \
    if (x) { \
    EVP_CIPHER_CTX_cleanup(x); \
    OPENSSL_free(x); \
    } \
    })

    Definition at line 63 of file pam-pkcs11-ossl-compat.h.

    ◆ EVP_CIPHER_CTX_new

    #define EVP_CIPHER_CTX_new ( )
    Value:
    ({ \
    EVP_CIPHER_CTX * tmp = NULL; \
    tmp = OPENSSL_malloc(sizeof(struct evp_cipher_ctx_st)); \
    if (tmp) { \
    EVP_CIPHER_CTX_init(tmp); \
    } \
    tmp; \
    })

    Definition at line 54 of file pam-pkcs11-ossl-compat.h.

    ◆ EVP_MD_CTX_free

    #define EVP_MD_CTX_free   EVP_MD_CTX_destroy

    Definition at line 93 of file pam-pkcs11-ossl-compat.h.

    ◆ EVP_MD_CTX_new

    #define EVP_MD_CTX_new   EVP_MD_CTX_create

    Definition at line 92 of file pam-pkcs11-ossl-compat.h.

    ◆ EVP_PKEY_base_id

    #define EVP_PKEY_base_id (   x)    (x->type)

    Definition at line 80 of file pam-pkcs11-ossl-compat.h.

    ◆ EVP_PKEY_get0_DSA

    #define EVP_PKEY_get0_DSA (   x)    (x->pkey.dsa)

    Definition at line 88 of file pam-pkcs11-ossl-compat.h.

    ◆ EVP_PKEY_get0_RSA

    #define EVP_PKEY_get0_RSA (   x)    (x->pkey.rsa)

    Definition at line 87 of file pam-pkcs11-ossl-compat.h.

    ◆ EVP_PKEY_up_ref

    #define EVP_PKEY_up_ref (   user_key)    CRYPTO_add(&user_key->references, 1, CRYPTO_LOCK_EVP_PKEY)

    Definition at line 94 of file pam-pkcs11-ossl-compat.h.

    ◆ OPENSSL_malloc_init

    #define OPENSSL_malloc_init   CRYPTO_malloc_init

    Definition at line 85 of file pam-pkcs11-ossl-compat.h.

    ◆ pam_pkcs11_ossl_inline

    #define pam_pkcs11_ossl_inline

    Definition at line 132 of file pam-pkcs11-ossl-compat.h.

    ◆ RSA_bits

    #define RSA_bits (   R)    (BN_num_bits(R->n))

    Definition at line 141 of file pam-pkcs11-ossl-compat.h.

    ◆ RSA_get0_e

    #define RSA_get0_e (   x)    (x->e)

    Definition at line 99 of file pam-pkcs11-ossl-compat.h.

    ◆ RSA_get0_n

    #define RSA_get0_n (   x)    (x->n)

    Definition at line 100 of file pam-pkcs11-ossl-compat.h.

    ◆ RSA_PKCS1_OpenSSL

    #define RSA_PKCS1_OpenSSL   RSA_PKCS1_SSLeay

    Definition at line 84 of file pam-pkcs11-ossl-compat.h.

    ◆ X509_get0_tbs_sigalg

    #define X509_get0_tbs_sigalg (   x)    (x->cert_info->key->algor)

    Definition at line 96 of file pam-pkcs11-ossl-compat.h.

    ◆ X509_get_extended_key_usage

    #define X509_get_extended_key_usage (   x)    (x->ex_xkusage)

    Definition at line 91 of file pam-pkcs11-ossl-compat.h.

    ◆ X509_get_extension_flags

    #define X509_get_extension_flags (   x)    (x->ex_flags)

    Definition at line 89 of file pam-pkcs11-ossl-compat.h.

    ◆ X509_get_key_usage

    #define X509_get_key_usage (   x)    (x->ex_kusage)

    Definition at line 90 of file pam-pkcs11-ossl-compat.h.

    ◆ X509_OBJECT_free

    #define X509_OBJECT_free (   x)
    Value:
    ({ \
    if (x) { \
    X509_OBJECT_free_contents(x); \
    OPENSSL_free(x); \
    } \
    })

    Definition at line 104 of file pam-pkcs11-ossl-compat.h.

    ◆ X509_OBJECT_get0_X509

    #define X509_OBJECT_get0_X509 (   x)    (x->data.x509)

    Definition at line 97 of file pam-pkcs11-ossl-compat.h.

    ◆ X509_OBJECT_get0_X509_CRL

    #define X509_OBJECT_get0_X509_CRL (   x)    (x->data.crl)

    Definition at line 98 of file pam-pkcs11-ossl-compat.h.

    ◆ X509_up_ref

    #define X509_up_ref (   cert)    CRYPTO_add(&cert->references, 1, CRYPTO_LOCK_X509)

    Definition at line 95 of file pam-pkcs11-ossl-compat.h.

    Function Documentation

    ◆ DSA_get0_key()

    static pam_pkcs11_ossl_inline void DSA_get0_key ( const DSA *  d,
    const BIGNUM **  pub_key,
    const BIGNUM **  priv_key 
    )
    static

    Definition at line 239 of file pam-pkcs11-ossl-compat.h.

    ◆ DSA_get0_pqg()

    static pam_pkcs11_ossl_inline void DSA_get0_pqg ( const DSA *  d,
    const BIGNUM **  p,
    const BIGNUM **  q,
    const BIGNUM **  g 
    )
    static

    Definition at line 229 of file pam-pkcs11-ossl-compat.h.

    ◆ RSA_get0_crt_params()

    static pam_pkcs11_ossl_inline void RSA_get0_crt_params ( const RSA *  r,
    const BIGNUM **  dmp1,
    const BIGNUM **  dmq1,
    const BIGNUM **  iqmp 
    )
    static

    Definition at line 215 of file pam-pkcs11-ossl-compat.h.

    ◆ RSA_get0_factors()

    static pam_pkcs11_ossl_inline void RSA_get0_factors ( const RSA *  r,
    const BIGNUM **  p,
    const BIGNUM **  q 
    )
    static

    Definition at line 207 of file pam-pkcs11-ossl-compat.h.

    ◆ RSA_get0_key()

    static pam_pkcs11_ossl_inline void RSA_get0_key ( const RSA *  r,
    const BIGNUM **  n,
    const BIGNUM **  e,
    const BIGNUM **  d 
    )
    static

    Definition at line 197 of file pam-pkcs11-ossl-compat.h.

    ◆ RSA_set0_crt_params()

    static pam_pkcs11_ossl_inline int RSA_set0_crt_params ( RSA *  r,
    BIGNUM *  dmp1,
    BIGNUM *  dmq1,
    BIGNUM *  iqmp 
    )
    static

    Definition at line 182 of file pam-pkcs11-ossl-compat.h.

    ◆ RSA_set0_factors()

    static pam_pkcs11_ossl_inline int RSA_set0_factors ( RSA *  r,
    BIGNUM *  p,
    BIGNUM *  q 
    )
    static

    Definition at line 169 of file pam-pkcs11-ossl-compat.h.

    ◆ RSA_set0_key()

    static pam_pkcs11_ossl_inline int RSA_set0_key ( RSA *  r,
    BIGNUM *  n,
    BIGNUM *  e,
    BIGNUM *  d 
    )
    static

    Definition at line 153 of file pam-pkcs11-ossl-compat.h.

    pam_pkcs11-0.6.12/doc/api/structCK__DATE.html0000644000175000017500000001377414367517110015403 00000000000000 pam_pkcs11: CK_DATE Struct Reference
    pam_pkcs11 0.6.12
    CK_DATE Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_CHAR year [4]
     
    CK_CHAR month [2]
     
    CK_CHAR day [2]
     

    Detailed Description

    Definition at line 510 of file pkcs11t.h.

    Field Documentation

    ◆ day

    CK_CHAR day[2]

    Definition at line 513 of file pkcs11t.h.

    ◆ month

    CK_CHAR month[2]

    Definition at line 512 of file pkcs11t.h.

    ◆ year

    CK_CHAR year[4]

    Definition at line 511 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/pam__config_8h.html0000644000175000017500000001124214367517110015531 00000000000000 pam_pkcs11: pam_config.h File Reference
    pam_pkcs11 0.6.12
    pam_config.h File Reference

    Go to the source code of this file.

    Data Structures

    struct  configuration_st
     

    Functions

    struct configuration_stpk_configure (int argc, const char **argv)
     

    Function Documentation

    ◆ pk_configure()

    struct configuration_st * pk_configure ( int  argc,
    const char **  argv 
    )
    pam_pkcs11-0.6.12/doc/api/globals_n.html0000644000175000017500000000637314367517110014642 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:

    - n -

    pam_pkcs11-0.6.12/doc/api/functions_c.html0000644000175000017500000000743714367517110015216 00000000000000 pam_pkcs11: Data Fields
    pam_pkcs11 0.6.12
    Here is a list of all struct and union fields with links to the structures/unions they belong to:

    - c -

    pam_pkcs11-0.6.12/doc/api/mail__mapper_8h_source.html0000644000175000017500000002356414367517110017307 00000000000000 pam_pkcs11: mail_mapper.h Source File
    pam_pkcs11 0.6.12
    mail_mapper.h
    Go to the documentation of this file.
    1/*
    2 * PAM-PKCS11 mapping modules
    3 * Copyright (C) 2005 Juan Antonio Martinez <jonsito@teleline.es>
    4 * pam-pkcs11 is copyright (C) 2003-2004 of Mario Strasser <mast@gmx.net>
    5 *
    6 * This library is free software; you can redistribute it and/or
    7 * modify it under the terms of the GNU Lesser General Public
    8 * License as published by the Free Software Foundation; either
    9 * version 2.1 of the License, or (at your option) any later version.
    10 *
    11 * This library is distributed in the hope that it will be useful,
    12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14 * Lesser General Public License for more details.
    15 *
    16 * You should have received a copy of the GNU Lesser General Public
    17 * License along with this library; if not, write to the Free Software
    18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    19 *
    20 * $Id$
    21 */
    22
    23#ifndef __MAIL_MAPPER_H_
    24#define __MAIL_MAPPER_H_
    25
    26#ifdef HAVE_CONFIG_H
    27#include <config.h>
    28#endif
    29
    30#include "../scconf/scconf.h"
    31#include "mapper.h"
    32
    33#ifdef MAIL_MAPPER_STATIC
    34
    35#ifndef __MAIL_MAPPER_C_
    36#define MAIL_EXTERN extern
    37#else
    38#define MAIL_EXTERN
    39#endif
    40MAIL_EXTERN mapper_module * mail_mapper_module_init(scconf_block *blk,const char *mapper_name);
    41#undef MAIL_EXTERN
    42
    43/* end of static (if any) declarations */
    44#endif
    45
    46/* End of mail_mapper.h */
    47#endif
    Structure to be filled on mapper module initialization.
    Definition: mapper.h:40
    pam_pkcs11-0.6.12/doc/api/tab_b.png0000644000175000017500000000025114367517110013556 00000000000000PNG  IHDR$[pIDATxM EǻԸu`V0}:t]Ds䮂u|x>1&m8SxLU޲iEOsnxKN~jIENDB`pam_pkcs11-0.6.12/doc/api/doc.png0000644000175000017500000000135214367517110013257 00000000000000PNG  IHDR}\IDATxMOS[sa?-XZ(PD4 AWbu`b 77wHFCԁ/`voAPqP@ 980 +y^Z9SW\83g3'Nçl_bpV"ֆXd]3xM[1W *PGz/Eg{ aoV:这1$RW,@56-,m/蹖 r5T*S(Vf89u գwa=<{ҡUr+dDF$`zNܮ0Q3~_^N=vpTLT}kqm<?ZhX_ݥ[) `ga_*2`'=F2EP l=8Wv%THqɿ<"GxH{#֫aJmKsVءM^ T ݛr߽m_?Wİ#uIENDB`pam_pkcs11-0.6.12/doc/api/sync_off.png0000644000175000017500000000152514367517110014322 00000000000000PNG  IHDRw=IDATxKhTW1I&38MII3b$c I1V1-(T.* t!K[čf`l(l"Y6gT}sgܹ d{8?̝;u`:!FB?Űm'y>ѝlU_?]Y(N8f1qn-etm 0}b%׌=0?1s08;_ W|%\Zð >舽lnp.a{ )t; b n652?>Oдunm`׭ZWjC~>־0+ {{fMŕټ` ݛ%uA6,]kWu]7ihu1 l Ҷ̺:\cxhRQt$ fd<4B[fd7=.M9//O a},j?.5ښm?X2#d p(?c!a1ޗةܾ7dK:)3],H+ku<|`LhC7e םt H$^2%l.aeÉ|s }D^hz~Rá]|#@חև[k<|(*ݹdtM:,]' X_n| /cfOIENDB`pam_pkcs11-0.6.12/doc/api/mapper__mgr_8h_source.html0000644000175000017500000005441214367517110017146 00000000000000 pam_pkcs11: mapper_mgr.h Source File
    pam_pkcs11 0.6.12
    mapper_mgr.h
    Go to the documentation of this file.
    1/*
    2 * PKCS #11 PAM Login Module
    3 * Copyright (C) 2003 Mario Strasser <mast@gmx.net>,
    4 * Mapper module copyright (c) 2005 Juan Antonio Martinez <jonsito@teleline.es>
    5 *
    6 * This library is free software; you can redistribute it and/or
    7 * modify it under the terms of the GNU Lesser General Public
    8 * License as published by the Free Software Foundation; either
    9 * version 2.1 of the License, or (at your option) any later version.
    10 *
    11 * This library is distributed in the hope that it will be useful,
    12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14 * Lesser General Public License for more details.
    15 *
    16 * $Id$
    17 */
    18
    19/*
    20* this module manages dynamic load of mapping modules
    21* also is used as entry point for cert matching routines
    22*/
    23
    24#ifndef _MAPPER_MGR_H_
    25#define _MAPPER_MGR_H_
    26
    27#ifdef HAVE_CONFIG_H
    28#include <config.h>
    29#endif
    30
    31#include "../common/cert_st.h"
    32#include "../scconf/scconf.h"
    33#include "../mappers/mapper.h"
    34
    35/*
    36* mapper module descriptor
    37*/
    40 const char *module_name;
    41 const char *module_path;
    43};
    44
    45/*
    46* mapper module list
    47*/
    51};
    52
    53/*
    54* load and initialize a module
    55* returns descriptor on success, null on fail
    56*/
    57struct mapper_instance *load_module(scconf_context *ctx, const char * name);
    58
    62void unload_module( struct mapper_instance *module );
    63
    68
    72void unload_mappers(void);
    73
    74/*
    75* this function search mapper module list until
    76* find a module that returns a login name for
    77* provided certificate
    78*/
    79char * find_user(X509 *x509);
    80
    89int match_user(X509 *x509, const char *login);
    90
    91/*
    92* This funcions goest throught the mapper list
    93* and trying to get the certificate strings to be used on each
    94* module to perform find/match functions.
    95* No map / match are done: just print found strings on stdout.
    96* This function is mostly used in pkcert_view toool
    97*/
    98void inspect_certificate(X509 *x509);
    99
    100#endif
    void inspect_certificate(X509 *x509)
    struct mapper_instance * load_module(scconf_context *ctx, const char *name)
    void unload_module(struct mapper_instance *module)
    Unload a module.
    void unload_mappers(void)
    unload mapper module chain
    char * find_user(X509 *x509)
    int match_user(X509 *x509, const char *login)
    This function search mapper module list until find a module that match provided login name if login i...
    struct mapper_listitem * load_mappers(scconf_context *ctx)
    compose mapper module chain
    const char * module_path
    Definition: mapper_mgr.h:41
    void * module_handler
    Definition: mapper_mgr.h:39
    const char * module_name
    Definition: mapper_mgr.h:40
    mapper_module * module_data
    Definition: mapper_mgr.h:42
    struct mapper_instance * module
    Definition: mapper_mgr.h:49
    struct mapper_listitem * next
    Definition: mapper_mgr.h:50
    Structure to be filled on mapper module initialization.
    Definition: mapper.h:40
    pam_pkcs11-0.6.12/doc/api/functions_b.html0000644000175000017500000000532314367517110015205 00000000000000 pam_pkcs11: Data Fields
    pam_pkcs11 0.6.12
    Here is a list of all struct and union fields with links to the structures/unions they belong to:

    - b -

    pam_pkcs11-0.6.12/doc/api/dir_8adf8e45060761504798219bdd80cc32.html0000644000175000017500000000572114367517110017702 00000000000000 pam_pkcs11: pam_pkcs11 Directory Reference
    pam_pkcs11 0.6.12
    pam_pkcs11 Directory Reference

    Files

    file  mapper_mgr.h [code]
     
    file  pam_config.h [code]
     
    pam_pkcs11-0.6.12/doc/api/structmapper__instance.html0000644000175000017500000001554414367517110017456 00000000000000 pam_pkcs11: mapper_instance Struct Reference
    pam_pkcs11 0.6.12
    mapper_instance Struct Reference

    #include <mapper_mgr.h>

    Data Fields

    void * module_handler
     
    const char * module_name
     
    const char * module_path
     
    mapper_modulemodule_data
     

    Detailed Description

    Definition at line 38 of file mapper_mgr.h.

    Field Documentation

    ◆ module_data

    mapper_module* module_data

    Definition at line 42 of file mapper_mgr.h.

    ◆ module_handler

    void* module_handler

    Definition at line 39 of file mapper_mgr.h.

    ◆ module_name

    const char* module_name

    Definition at line 40 of file mapper_mgr.h.

    ◆ module_path

    const char* module_path

    Definition at line 41 of file mapper_mgr.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/cert__st_8h.html0000644000175000017500000001441114367517110015073 00000000000000 pam_pkcs11: cert_st.h File Reference
    pam_pkcs11 0.6.12
    cert_st.h File Reference
    #include "../common/pam-pkcs11-ossl-compat.h"
    #include <openssl/x509.h>

    Go to the source code of this file.

    Macros

    #define ALGORITHM_NULL   NULL
     

    Typedefs

    typedef struct cert_policy_st cert_policy
     
    typedef const char * ALGORITHM_TYPE
     

    Macro Definition Documentation

    ◆ ALGORITHM_NULL

    #define ALGORITHM_NULL   NULL

    Definition at line 39 of file cert_st.h.

    Typedef Documentation

    ◆ ALGORITHM_TYPE

    typedef const char* ALGORITHM_TYPE

    Definition at line 38 of file cert_st.h.

    ◆ cert_policy

    typedef struct cert_policy_st cert_policy

    Definition at line 26 of file cert_st.h.

    pam_pkcs11-0.6.12/doc/api/functions_k.html0000644000175000017500000000544414367517110015222 00000000000000 pam_pkcs11: Data Fields
    pam_pkcs11 0.6.12
    Here is a list of all struct and union fields with links to the structures/unions they belong to:

    - k -

    pam_pkcs11-0.6.12/doc/api/nav_g.png0000644000175000017500000000013714367517110013604 00000000000000PNG  IHDR1&IDATx1 OHf_ ->~M iMS<IENDB`pam_pkcs11-0.6.12/doc/api/functions_vars_o.html0000644000175000017500000000416514367517110016260 00000000000000 pam_pkcs11: Data Fields - Variables
    pam_pkcs11 0.6.12
     

    - o -

    pam_pkcs11-0.6.12/doc/api/classes.html0000644000175000017500000001503414367517110014331 00000000000000 pam_pkcs11: Data Structure Index
    pam_pkcs11 0.6.12
    Data Structure Index
    pam_pkcs11-0.6.12/doc/api/structCK__SSL3__RANDOM__DATA.html0000644000175000017500000001645214367517110017535 00000000000000 pam_pkcs11: CK_SSL3_RANDOM_DATA Struct Reference
    pam_pkcs11 0.6.12
    CK_SSL3_RANDOM_DATA Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_BYTE_PTR pClientRandom
     
    CK_ULONG ulClientRandomLen
     
    CK_BYTE_PTR pServerRandom
     
    CK_ULONG ulServerRandomLen
     

    Detailed Description

    Definition at line 1325 of file pkcs11t.h.

    Field Documentation

    ◆ pClientRandom

    CK_BYTE_PTR pClientRandom

    Definition at line 1326 of file pkcs11t.h.

    ◆ pServerRandom

    CK_BYTE_PTR pServerRandom

    Definition at line 1328 of file pkcs11t.h.

    ◆ ulClientRandomLen

    CK_ULONG ulClientRandomLen

    Definition at line 1327 of file pkcs11t.h.

    ◆ ulServerRandomLen

    CK_ULONG ulServerRandomLen

    Definition at line 1329 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/globals_o.html0000644000175000017500000000526614367517110014643 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:

    - o -

    pam_pkcs11-0.6.12/doc/api/debug_8h.html0000644000175000017500000010124714367517110014363 00000000000000 pam_pkcs11: debug.h File Reference
    pam_pkcs11 0.6.12
    debug.h File Reference

    Go to the source code of this file.

    Macros

    #define DBG(f)   debug_print(1, __FILE__, __LINE__, f )
     This module contains macros for generate debugging messages Will be compiled an linked only when -DDEBUG CFLAG is used. More...
     
    #define DBG1(f, a)   debug_print(1, __FILE__, __LINE__, f , a )
     
    #define DBG2(f, a, b)   debug_print(1, __FILE__, __LINE__, f , a , b )
     
    #define DBG3(f, a, b, c)   debug_print(1, __FILE__, __LINE__, f , a , b , c )
     
    #define DBG4(f, a, b, c, d)   debug_print(1, __FILE__, __LINE__, f , a , b , c , d )
     
    #define DBG5(f, a, b, c, d, e)   debug_print(1, __FILE__, __LINE__, f , a , b , c , d , e )
     
    #define ERR(f)   debug_print(-1, __FILE__, __LINE__, f )
     
    #define ERR1(f, a)   debug_print(-1, __FILE__, __LINE__, f , a )
     
    #define ERR2(f, a, b)   debug_print(-1, __FILE__, __LINE__, f , a , b )
     
    #define ERR3(f, a, b, c)   debug_print(-1, __FILE__, __LINE__, f , a , b , c )
     
    #define ERR4(f, a, b, c, d)   debug_print(-1, __FILE__, __LINE__, f , a , b , c , d )
     
    #define ERR5(f, a, b, c, d, e)   debug_print(-1, __FILE__, __LINE__, f , a , b , c , d , e )
     
    #define DEBUG_EXTERN   extern
     

    Functions

    DEBUG_EXTERN void set_debug_level (int level)
     set_debug_level() Sets the current debug level. More...
     
    DEBUG_EXTERN int get_debug_level (void)
     get_debug_level() Returns the current debug level. More...
     
    DEBUG_EXTERN void debug_print (int level, const char *file, int line, const char *format,...)
     debug_print() prints the given message More...
     

    Macro Definition Documentation

    ◆ DBG

    #define DBG (   f)    debug_print(1, __FILE__, __LINE__, f )

    This module contains macros for generate debugging messages Will be compiled an linked only when -DDEBUG CFLAG is used.

    Definition at line 54 of file debug.h.

    ◆ DBG1

    #define DBG1 (   f,
     
    )    debug_print(1, __FILE__, __LINE__, f , a )

    Definition at line 55 of file debug.h.

    ◆ DBG2

    #define DBG2 (   f,
      a,
     
    )    debug_print(1, __FILE__, __LINE__, f , a , b )

    Definition at line 56 of file debug.h.

    ◆ DBG3

    #define DBG3 (   f,
      a,
      b,
     
    )    debug_print(1, __FILE__, __LINE__, f , a , b , c )

    Definition at line 57 of file debug.h.

    ◆ DBG4

    #define DBG4 (   f,
      a,
      b,
      c,
     
    )    debug_print(1, __FILE__, __LINE__, f , a , b , c , d )

    Definition at line 58 of file debug.h.

    ◆ DBG5

    #define DBG5 (   f,
      a,
      b,
      c,
      d,
     
    )    debug_print(1, __FILE__, __LINE__, f , a , b , c , d , e )

    Definition at line 59 of file debug.h.

    ◆ DEBUG_EXTERN

    #define DEBUG_EXTERN   extern

    Definition at line 69 of file debug.h.

    ◆ ERR

    #define ERR (   f)    debug_print(-1, __FILE__, __LINE__, f )

    Definition at line 61 of file debug.h.

    ◆ ERR1

    #define ERR1 (   f,
     
    )    debug_print(-1, __FILE__, __LINE__, f , a )

    Definition at line 62 of file debug.h.

    ◆ ERR2

    #define ERR2 (   f,
      a,
     
    )    debug_print(-1, __FILE__, __LINE__, f , a , b )

    Definition at line 63 of file debug.h.

    ◆ ERR3

    #define ERR3 (   f,
      a,
      b,
     
    )    debug_print(-1, __FILE__, __LINE__, f , a , b , c )

    Definition at line 64 of file debug.h.

    ◆ ERR4

    #define ERR4 (   f,
      a,
      b,
      c,
     
    )    debug_print(-1, __FILE__, __LINE__, f , a , b , c , d )

    Definition at line 65 of file debug.h.

    ◆ ERR5

    #define ERR5 (   f,
      a,
      b,
      c,
      d,
     
    )    debug_print(-1, __FILE__, __LINE__, f , a , b , c , d , e )

    Definition at line 66 of file debug.h.

    Function Documentation

    ◆ debug_print()

    DEBUG_EXTERN void debug_print ( int  level,
    const char *  file,
    int  line,
    const char *  format,
      ... 
    )

    debug_print() prints the given message

    if the current debug-level is greater or equal to the defined level. The format string as well as all further arguments are interpreted as by the printf() function.

    Parameters
    levelDebug level of message
    fileName of the file where message is generated
    lineLine number where message is generated
    formatMessage format
    ....Optional arguments

    ◆ get_debug_level()

    DEBUG_EXTERN int get_debug_level ( void  )

    get_debug_level() Returns the current debug level.

    Returns
    Current debug level

    ◆ set_debug_level()

    DEBUG_EXTERN void set_debug_level ( int  level)

    set_debug_level() Sets the current debug level.

    Parameters
    levelNew debug level
    pam_pkcs11-0.6.12/doc/api/structCK__FUNCTION__LIST.html0000644000175000017500000000744614367517110017104 00000000000000 pam_pkcs11: CK_FUNCTION_LIST Struct Reference
    pam_pkcs11 0.6.12
    CK_FUNCTION_LIST Struct Reference

    #include <pkcs11.h>

    Data Fields

    CK_VERSION version
     

    Detailed Description

    Definition at line 108 of file pkcs11.h.

    Field Documentation

    ◆ version

    CK_VERSION version

    Definition at line 110 of file pkcs11.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/globals_vars.html0000644000175000017500000000712214367517110015351 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     
    pam_pkcs11-0.6.12/doc/api/functions_vars_t.html0000644000175000017500000000471414367517110016265 00000000000000 pam_pkcs11: Data Fields - Variables
    pam_pkcs11 0.6.12
     

    - t -

    pam_pkcs11-0.6.12/doc/api/folderclosed.png0000644000175000017500000000115014367517110015153 00000000000000PNG  IHDR}\/IDATx]MO@~uؐlp]#]PYEC\9y`xC &=qvZv3m؃vLN}}ޝZA@n ONp xKxj8s _[D'yye+ 7#rNlk* 0Ь_d_(Öz=xvhzP-䍒̪u$\DJcB4.:Ϗ-}LE #gN;B6䬜@p&h>p9EEάʑ"un$R"?{<%PNt$߶+^<"2Dqq\ҙaA"ԵP}#Ez{.8i p(ADwDE߂z;Kק8t q:uvvݛvEn{MFXgfZ֝*ߩ:jYq#3SWr'  IENDB`pam_pkcs11-0.6.12/doc/api/structsecuCommand.html0000644000175000017500000001543314367517110016402 00000000000000 pam_pkcs11: secuCommand Struct Reference
    pam_pkcs11 0.6.12
    secuCommand Struct Reference

    #include <secutil.h>

    Data Fields

    int numCommands
     
    int numOptions
     
    secuCommandFlagcommands
     
    secuCommandFlagoptions
     

    Detailed Description

    Definition at line 388 of file secutil.h.

    Field Documentation

    ◆ commands

    secuCommandFlag* commands

    Definition at line 393 of file secutil.h.

    ◆ numCommands

    int numCommands

    Definition at line 390 of file secutil.h.

    ◆ numOptions

    int numOptions

    Definition at line 391 of file secutil.h.

    ◆ options

    secuCommandFlag* options

    Definition at line 394 of file secutil.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/secutil_8h_source.html0000644000175000017500000034356714367517110016342 00000000000000 pam_pkcs11: secutil.h Source File
    pam_pkcs11 0.6.12
    secutil.h
    Go to the documentation of this file.
    1/* ***** BEGIN LICENSE BLOCK *****
    2 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
    3 *
    4 * The contents of this file are subject to the Mozilla Public License Version
    5 * 1.1 (the "License"); you may not use this file except in compliance with
    6 * the License. You may obtain a copy of the License at
    7 * http://www.mozilla.org/MPL/
    8 *
    9 * Software distributed under the License is distributed on an "AS IS" basis,
    10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
    11 * for the specific language governing rights and limitations under the
    12 * License.
    13 *
    14 * The Original Code is the Netscape security libraries.
    15 *
    16 * The Initial Developer of the Original Code is
    17 * Netscape Communications Corporation.
    18 * Portions created by the Initial Developer are Copyright (C) 1994-2000
    19 * the Initial Developer. All Rights Reserved.
    20 *
    21 * Contributor(s):
    22 *
    23 * Alternatively, the contents of this file may be used under the terms of
    24 * either the GNU General Public License Version 2 or later (the "GPL"), or
    25 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
    26 * in which case the provisions of the GPL or the LGPL are applicable instead
    27 * of those above. If you wish to allow use of your version of this file only
    28 * under the terms of either the GPL or the LGPL, and not to allow others to
    29 * use your version of this file under the terms of the MPL, indicate your
    30 * decision by deleting the provisions above and replace them with the notice
    31 * and other provisions required by the GPL or the LGPL. If you do not delete
    32 * the provisions above, a recipient may use your version of this file under
    33 * the terms of any one of the MPL, the GPL or the LGPL.
    34 *
    35 * ***** END LICENSE BLOCK ***** */
    36#ifndef _SEC_UTIL_H_
    37#define _SEC_UTIL_H_
    38
    39#include "seccomon.h"
    40#include "secitem.h"
    41#include "prerror.h"
    42#include "base64.h"
    43#include "key.h"
    44#include "secpkcs7.h"
    45#include "secasn1.h"
    46#include "secder.h"
    47#include <stdio.h>
    48
    49#define SEC_CT_PRIVATE_KEY "private-key"
    50#define SEC_CT_PUBLIC_KEY "public-key"
    51#define SEC_CT_CERTIFICATE "certificate"
    52#define SEC_CT_CERTIFICATE_REQUEST "certificate-request"
    53#define SEC_CT_PKCS7 "pkcs7"
    54#define SEC_CT_CRL "crl"
    55
    56#define NS_CERTREQ_HEADER "-----BEGIN NEW CERTIFICATE REQUEST-----"
    57#define NS_CERTREQ_TRAILER "-----END NEW CERTIFICATE REQUEST-----"
    58
    59#define NS_CERT_HEADER "-----BEGIN CERTIFICATE-----"
    60#define NS_CERT_TRAILER "-----END CERTIFICATE-----"
    61
    62#define NS_CRL_HEADER "-----BEGIN CRL-----"
    63#define NS_CRL_TRAILER "-----END CRL-----"
    64
    65/* From libsec/pcertdb.c --- it's not declared in sec.h */
    66extern SECStatus SEC_AddPermCertificate(CERTCertDBHandle *handle,
    67 SECItem *derCert, char *nickname, CERTCertTrust *trust);
    68
    69
    70#ifdef SECUTIL_NEW
    71typedef int (*SECU_PPFunc)(PRFileDesc *out, SECItem *item,
    72 char *msg, int level);
    73#else
    74typedef int (*SECU_PPFunc)(FILE *out, SECItem *item, char *msg, int level);
    75#endif
    76
    77typedef struct {
    78 enum {
    79 PW_NONE = 0,
    80 PW_FROMFILE = 1,
    81 PW_PLAINTEXT = 2,
    82 PW_EXTERNAL = 3
    83 } source;
    84 char *data;
    86
    87/*
    88** Change a password on a token, or initialize a token with a password
    89** if it does not already have one.
    90** Use passwd to send the password in plaintext, pwFile to specify a
    91** file containing the password, or NULL for both to prompt the user.
    92*/
    93SECStatus SECU_ChangePW(PK11SlotInfo *slot, char *passwd, char *pwFile);
    94
    95/* These were stolen from the old sec.h... */
    96/*
    97** Check a password for legitimacy. Passwords must be at least 8
    98** characters long and contain one non-alphabetic. Return DSTrue if the
    99** password is ok, DSFalse otherwise.
    100*/
    101extern PRBool SEC_CheckPassword(char *password);
    102
    103/*
    104** Blind check of a password. Complement to SEC_CheckPassword which
    105** ignores length and content type, just retuning DSTrue is the password
    106** exists, DSFalse if NULL
    107*/
    108extern PRBool SEC_BlindCheckPassword(char *password);
    109
    110/*
    111** Get a password.
    112** First prompt with "msg" on "out", then read the password from "in".
    113** The password is then checked using "chkpw".
    114*/
    115extern char *SEC_GetPassword(FILE *in, FILE *out, char *msg,
    116 PRBool (*chkpw)(char *));
    117
    118char *SECU_FilePasswd(PK11SlotInfo *slot, PRBool retry, void *arg);
    119
    120char *SECU_GetPasswordString(void *arg, char *prompt);
    121
    122/*
    123** Write a dongle password.
    124** Uses MD5 to hash constant system data (hostname, etc.), and then
    125** creates RC4 key to encrypt a password "pw" into a file "fd".
    126*/
    127extern SECStatus SEC_WriteDongleFile(int fd, char *pw);
    128
    129/*
    130** Get a dongle password.
    131** Uses MD5 to hash constant system data (hostname, etc.), and then
    132** creates RC4 key to decrypt and return a password from file "fd".
    133*/
    134extern char *SEC_ReadDongleFile(int fd);
    135
    136
    137/* End stolen headers */
    138
    139/* Just sticks the two strings together with a / if needed */
    140char *SECU_AppendFilenameToDir(char *dir, char *filename);
    141
    142/* Returns result of getenv("SSL_DIR") or NULL */
    143extern char *SECU_DefaultSSLDir(void);
    144
    145/*
    146** Should be called once during initialization to set the default
    147** directory for looking for cert.db, key.db, and cert-nameidx.db files
    148** Removes trailing '/' in 'base'
    149** If 'base' is NULL, defaults to set to .netscape in home directory.
    150*/
    151extern char *SECU_ConfigDirectory(const char* base);
    152
    153/*
    154** Basic callback function for SSL_GetClientAuthDataHook
    155*/
    156extern int
    157SECU_GetClientAuthData(void *arg, PRFileDesc *fd,
    158 struct CERTDistNamesStr *caNames,
    159 struct CERTCertificateStr **pRetCert,
    160 struct SECKEYPrivateKeyStr **pRetKey);
    161
    162/* print out an error message */
    163extern void SECU_PrintError(char *progName, char *msg, ...);
    164
    165/* print out a system error message */
    166extern void SECU_PrintSystemError(char *progName, char *msg, ...);
    167
    168/* Return informative error string */
    169extern const char * SECU_Strerror(PRErrorCode errNum);
    170
    171/* print information about cert verification failure */
    172extern void
    173SECU_printCertProblems(FILE *outfile, CERTCertDBHandle *handle,
    174 CERTCertificate *cert, PRBool checksig,
    175 SECCertificateUsage certUsage, void *pinArg, PRBool verbose);
    176
    177/* Read the contents of a file into a SECItem */
    178extern SECStatus SECU_FileToItem(SECItem *dst, PRFileDesc *src);
    179extern SECStatus SECU_TextFileToItem(SECItem *dst, PRFileDesc *src);
    180
    181/* Read in a DER from a file, may be ascii */
    182extern SECStatus
    183SECU_ReadDERFromFile(SECItem *der, PRFileDesc *inFile, PRBool ascii);
    184
    185/* Indent based on "level" */
    186extern void SECU_Indent(FILE *out, int level);
    187
    188/* Print integer value and hex */
    189extern void SECU_PrintInteger(FILE *out, SECItem *i, char *m, int level);
    190
    191/* Print ObjectIdentifier symbolically */
    192extern SECOidTag SECU_PrintObjectID(FILE *out, SECItem *oid, char *m, int level);
    193
    194/* Print AlgorithmIdentifier symbolically */
    195extern void SECU_PrintAlgorithmID(FILE *out, SECAlgorithmID *a, char *m,
    196 int level);
    197
    198/* Print SECItem as hex */
    199extern void SECU_PrintAsHex(FILE *out, SECItem *i, const char *m, int level);
    200
    201/* dump a buffer in hex and ASCII */
    202extern void SECU_PrintBuf(FILE *out, const char *msg, const void *vp, int len);
    203
    204/*
    205 * Format and print the UTC Time "t". If the tag message "m" is not NULL,
    206 * do indent formatting based on "level" and add a newline afterward;
    207 * otherwise just print the formatted time string only.
    208 */
    209extern void SECU_PrintUTCTime(FILE *out, SECItem *t, char *m, int level);
    210
    211/*
    212 * Format and print the Generalized Time "t". If the tag message "m"
    213 * is not NULL, * do indent formatting based on "level" and add a newline
    214 * afterward; otherwise just print the formatted time string only.
    215 */
    216extern void SECU_PrintGeneralizedTime(FILE *out, SECItem *t, char *m,
    217 int level);
    218
    219/*
    220 * Format and print the UTC or Generalized Time "t". If the tag message
    221 * "m" is not NULL, do indent formatting based on "level" and add a newline
    222 * afterward; otherwise just print the formatted time string only.
    223 */
    224extern void SECU_PrintTimeChoice(FILE *out, SECItem *t, char *m, int level);
    225
    226/* callback for listing certs through pkcs11 */
    227extern SECStatus SECU_PrintCertNickname(CERTCertListNode* cert, void *data);
    228
    229/* Dump all certificate nicknames in a database */
    230extern SECStatus
    231SECU_PrintCertificateNames(CERTCertDBHandle *handle, PRFileDesc* out,
    232 PRBool sortByName, PRBool sortByTrust);
    233
    234/* See if nickname already in database. Return 1 true, 0 false, -1 error */
    235int SECU_CheckCertNameExists(CERTCertDBHandle *handle, char *nickname);
    236
    237/* Dump contents of cert req */
    238extern int SECU_PrintCertificateRequest(FILE *out, SECItem *der, char *m,
    239 int level);
    240
    241/* Dump contents of certificate */
    242extern int SECU_PrintCertificate(FILE *out, SECItem *der, char *m, int level);
    243
    244/* print trust flags on a cert */
    245extern void SECU_PrintTrustFlags(FILE *out, CERTCertTrust *trust, char *m, int level);
    246
    247/* Dump contents of public key */
    248extern int SECU_PrintPublicKey(FILE *out, SECItem *der, char *m, int level);
    249
    250#ifdef HAVE_EPV_TEMPLATE
    251/* Dump contents of private key */
    252extern int SECU_PrintPrivateKey(FILE *out, SECItem *der, char *m, int level);
    253#endif
    254
    255/* Print the MD5 and SHA1 fingerprints of a cert */
    256extern int SECU_PrintFingerprints(FILE *out, SECItem *derCert, char *m,
    257 int level);
    258
    259/* Pretty-print any PKCS7 thing */
    260extern int SECU_PrintPKCS7ContentInfo(FILE *out, SECItem *der, char *m,
    261 int level);
    262
    263/* Init PKCS11 stuff */
    264extern SECStatus SECU_PKCS11Init(PRBool readOnly);
    265
    266/* Dump contents of signed data */
    267extern int SECU_PrintSignedData(FILE *out, SECItem *der, char *m, int level,
    268 SECU_PPFunc inner);
    269
    270extern int SECU_PrintCrl(FILE *out, SECItem *der, char *m, int level);
    271
    272extern void
    273SECU_PrintCRLInfo(FILE *out, CERTCrl *crl, char *m, int level);
    274
    275extern void SECU_PrintString(FILE *out, SECItem *si, char *m, int level);
    276extern void SECU_PrintAny(FILE *out, SECItem *i, char *m, int level);
    277
    278extern void SECU_PrintPolicy(FILE *out, SECItem *value, char *msg, int level);
    279extern void SECU_PrintPrivKeyUsagePeriodExtension(FILE *out, SECItem *value,
    280 char *msg, int level);
    281
    282extern void SECU_PrintExtensions(FILE *out, CERTCertExtension **extensions,
    283 char *msg, int level);
    284
    285extern void SECU_PrintName(FILE *out, CERTName *name, char *msg, int level);
    286
    287#ifdef SECU_GetPassword
    288/* Convert a High public Key to a Low public Key */
    289extern SECKEYLowPublicKey *SECU_ConvHighToLow(SECKEYPublicKey *pubHighKey);
    290#endif
    291
    292extern SECItem *SECU_GetPBEPassword(void *arg);
    293
    294extern char *SECU_GetModulePassword(PK11SlotInfo *slot, PRBool retry, void *arg);
    295
    296extern SECStatus DER_PrettyPrint(FILE *out, SECItem *it, PRBool raw);
    297extern void SEC_Init(void);
    298
    299extern char *SECU_SECModDBName(void);
    300
    301extern void SECU_PrintPRandOSError(char *progName);
    302
    303extern SECStatus SECU_RegisterDynamicOids(void);
    304
    305/* Identifies hash algorithm tag by its string representation. */
    306extern SECOidTag SECU_StringToSignatureAlgTag(const char *alg);
    307
    308/* Store CRL in output file or pk11 db. Also
    309 * encodes with base64 and exports to file if ascii flag is set
    310 * and file is not NULL. */
    311extern SECStatus SECU_StoreCRL(PK11SlotInfo *slot, SECItem *derCrl,
    312 PRFileDesc *outFile, int ascii, char *url);
    313
    314
    315/*
    316** DER sign a single block of data using private key encryption and the
    317** MD5 hashing algorithm. This routine first computes a digital signature
    318** using SEC_SignData, then wraps it with an CERTSignedData and then der
    319** encodes the result.
    320** "arena" is the memory arena to use to allocate data from
    321** "sd" returned CERTSignedData
    322** "result" the final der encoded data (memory is allocated)
    323** "buf" the input data to sign
    324** "len" the amount of data to sign
    325** "pk" the private key to encrypt with
    326*/
    327extern SECStatus SECU_DerSignDataCRL(PRArenaPool *arena, CERTSignedData *sd,
    328 unsigned char *buf, int len,
    329 SECKEYPrivateKey *pk, SECOidTag algID);
    330
    331typedef enum {
    336 noMem = 5
    338
    339extern SECStatus
    340SECU_SignAndEncodeCRL(CERTCertificate *issuer, CERTSignedCrl *signCrl,
    341 SECOidTag hashAlgTag, SignAndEncodeFuncExitStat *resCode);
    342
    343extern SECStatus
    344SECU_CopyCRL(PRArenaPool *destArena, CERTCrl *destCrl, CERTCrl *srcCrl);
    345
    346/*
    347** Finds the crl Authority Key Id extension. Returns NULL if no such extension
    348** was found.
    349*/
    350CERTAuthKeyID *
    351SECU_FindCRLAuthKeyIDExten (PRArenaPool *arena, CERTSignedCrl *crl);
    352
    353/*
    354 * Find the issuer of a crl. Cert usage should be checked before signing a crl.
    355 */
    356CERTCertificate *
    357SECU_FindCrlIssuer(CERTCertDBHandle *dbHandle, SECItem* subject,
    358 CERTAuthKeyID* id, PRTime validTime);
    359
    360
    361/* call back function used in encoding of an extension. Called from
    362 * SECU_EncodeAndAddExtensionValue */
    363typedef SECStatus (* EXTEN_EXT_VALUE_ENCODER) (PRArenaPool *extHandleArena,
    364 void *value, SECItem *encodedValue);
    365
    366/* Encodes and adds extensions to the CRL or CRL entries. */
    367SECStatus
    368SECU_EncodeAndAddExtensionValue(PRArenaPool *arena, void *extHandle,
    369 void *value, PRBool criticality, int extenType,
    370 EXTEN_EXT_VALUE_ENCODER EncodeValueFn);
    371
    372
    373/*
    374 *
    375 * Utilities for parsing security tools command lines
    376 *
    377 */
    378
    379/* A single command flag */
    380typedef struct {
    381 char flag;
    382 PRBool needsArg;
    383 char *arg;
    384 PRBool activated;
    386
    387/* A full array of command/option flags */
    388typedef struct
    389{
    392
    396
    397/* fill the "arg" and "activated" fields for each flag */
    398SECStatus
    399SECU_ParseCommandLine(int argc, char **argv, char *progName, secuCommand *cmd);
    400char *
    401SECU_GetOptionArg(secuCommand *cmd, int optionNum);
    402
    403/*
    404 *
    405 * Error messaging
    406 *
    407 */
    408
    409/* Return informative error string */
    410char *SECU_ErrorString(int16 err);
    411
    412/* Return informative error string. Does not call XP_GetString */
    413char *SECU_ErrorStringRaw(int16 err);
    414
    415void printflags(char *trusts, unsigned int flags);
    416
    417#ifndef XP_UNIX
    418extern int ffs(unsigned int i);
    419#endif
    420
    421#include "secerr.h"
    422#include "sslerr.h"
    423
    424#endif /* _SEC_UTIL_H_ */
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information The CMS or PKCS Could not decode ASN data Specified template was invalid You are attempting to import a cert with the same issuer serial as an existing cert
    Definition: SECerrs.h:464
    char * SECU_GetPasswordString(void *arg, char *prompt)
    char * SECU_DefaultSSLDir(void)
    SignAndEncodeFuncExitStat
    Definition: secutil.h:331
    @ failToSign
    Definition: secutil.h:335
    @ noSignatureMatch
    Definition: secutil.h:333
    @ noKeyFound
    Definition: secutil.h:332
    @ noMem
    Definition: secutil.h:336
    @ failToEncode
    Definition: secutil.h:334
    SECStatus SECU_PrintCertNickname(CERTCertListNode *cert, void *data)
    SECStatus SEC_AddPermCertificate(CERTCertDBHandle *handle, SECItem *derCert, char *nickname, CERTCertTrust *trust)
    void SECU_PrintGeneralizedTime(FILE *out, SECItem *t, char *m, int level)
    char * SEC_GetPassword(FILE *in, FILE *out, char *msg, PRBool(*chkpw)(char *))
    PRBool SEC_BlindCheckPassword(char *password)
    char * SECU_ErrorStringRaw(int16 err)
    char * SECU_GetOptionArg(secuCommand *cmd, int optionNum)
    void SECU_PrintPrivKeyUsagePeriodExtension(FILE *out, SECItem *value, char *msg, int level)
    SECStatus(* EXTEN_EXT_VALUE_ENCODER)(PRArenaPool *extHandleArena, void *value, SECItem *encodedValue)
    Definition: secutil.h:363
    int SECU_PrintCrl(FILE *out, SECItem *der, char *m, int level)
    void SECU_PrintPRandOSError(char *progName)
    void SECU_PrintPolicy(FILE *out, SECItem *value, char *msg, int level)
    int SECU_PrintSignedData(FILE *out, SECItem *der, char *m, int level, SECU_PPFunc inner)
    SECStatus SECU_FileToItem(SECItem *dst, PRFileDesc *src)
    char * SECU_FilePasswd(PK11SlotInfo *slot, PRBool retry, void *arg)
    void SECU_PrintSystemError(char *progName, char *msg,...)
    void SECU_PrintError(char *progName, char *msg,...)
    int SECU_PrintCertificate(FILE *out, SECItem *der, char *m, int level)
    SECStatus SECU_TextFileToItem(SECItem *dst, PRFileDesc *src)
    char * SECU_AppendFilenameToDir(char *dir, char *filename)
    int SECU_CheckCertNameExists(CERTCertDBHandle *handle, char *nickname)
    void SECU_PrintCRLInfo(FILE *out, CERTCrl *crl, char *m, int level)
    void SECU_Indent(FILE *out, int level)
    SECStatus SECU_DerSignDataCRL(PRArenaPool *arena, CERTSignedData *sd, unsigned char *buf, int len, SECKEYPrivateKey *pk, SECOidTag algID)
    int(* SECU_PPFunc)(FILE *out, SECItem *item, char *msg, int level)
    Definition: secutil.h:74
    SECStatus DER_PrettyPrint(FILE *out, SECItem *it, PRBool raw)
    SECStatus SECU_EncodeAndAddExtensionValue(PRArenaPool *arena, void *extHandle, void *value, PRBool criticality, int extenType, EXTEN_EXT_VALUE_ENCODER EncodeValueFn)
    int SECU_PrintCertificateRequest(FILE *out, SECItem *der, char *m, int level)
    SECItem * SECU_GetPBEPassword(void *arg)
    void printflags(char *trusts, unsigned int flags)
    SECStatus SECU_CopyCRL(PRArenaPool *destArena, CERTCrl *destCrl, CERTCrl *srcCrl)
    SECStatus SECU_ChangePW(PK11SlotInfo *slot, char *passwd, char *pwFile)
    const char * SECU_Strerror(PRErrorCode errNum)
    void SECU_PrintName(FILE *out, CERTName *name, char *msg, int level)
    void SECU_PrintAsHex(FILE *out, SECItem *i, const char *m, int level)
    void SECU_PrintString(FILE *out, SECItem *si, char *m, int level)
    char * SECU_GetModulePassword(PK11SlotInfo *slot, PRBool retry, void *arg)
    PRBool SEC_CheckPassword(char *password)
    void SECU_PrintAny(FILE *out, SECItem *i, char *m, int level)
    char * SECU_ErrorString(int16 err)
    void SECU_PrintBuf(FILE *out, const char *msg, const void *vp, int len)
    SECStatus SECU_PrintCertificateNames(CERTCertDBHandle *handle, PRFileDesc *out, PRBool sortByName, PRBool sortByTrust)
    SECStatus SECU_ParseCommandLine(int argc, char **argv, char *progName, secuCommand *cmd)
    char * SECU_SECModDBName(void)
    void SECU_PrintInteger(FILE *out, SECItem *i, char *m, int level)
    void SECU_PrintTrustFlags(FILE *out, CERTCertTrust *trust, char *m, int level)
    void SEC_Init(void)
    int SECU_PrintFingerprints(FILE *out, SECItem *derCert, char *m, int level)
    int SECU_PrintPublicKey(FILE *out, SECItem *der, char *m, int level)
    void SECU_PrintUTCTime(FILE *out, SECItem *t, char *m, int level)
    char * SEC_ReadDongleFile(int fd)
    SECStatus SEC_WriteDongleFile(int fd, char *pw)
    SECOidTag SECU_StringToSignatureAlgTag(const char *alg)
    void SECU_PrintTimeChoice(FILE *out, SECItem *t, char *m, int level)
    SECStatus SECU_RegisterDynamicOids(void)
    SECStatus SECU_SignAndEncodeCRL(CERTCertificate *issuer, CERTSignedCrl *signCrl, SECOidTag hashAlgTag, SignAndEncodeFuncExitStat *resCode)
    SECStatus SECU_PKCS11Init(PRBool readOnly)
    int ffs(unsigned int i)
    CERTCertificate * SECU_FindCrlIssuer(CERTCertDBHandle *dbHandle, SECItem *subject, CERTAuthKeyID *id, PRTime validTime)
    SECStatus SECU_StoreCRL(PK11SlotInfo *slot, SECItem *derCrl, PRFileDesc *outFile, int ascii, char *url)
    int SECU_GetClientAuthData(void *arg, PRFileDesc *fd, struct CERTDistNamesStr *caNames, struct CERTCertificateStr **pRetCert, struct SECKEYPrivateKeyStr **pRetKey)
    SECStatus SECU_ReadDERFromFile(SECItem *der, PRFileDesc *inFile, PRBool ascii)
    void SECU_PrintExtensions(FILE *out, CERTCertExtension **extensions, char *msg, int level)
    int SECU_PrintPKCS7ContentInfo(FILE *out, SECItem *der, char *m, int level)
    void SECU_PrintAlgorithmID(FILE *out, SECAlgorithmID *a, char *m, int level)
    char * SECU_ConfigDirectory(const char *base)
    SECOidTag SECU_PrintObjectID(FILE *out, SECItem *oid, char *m, int level)
    void SECU_printCertProblems(FILE *outfile, CERTCertDBHandle *handle, CERTCertificate *cert, PRBool checksig, SECCertificateUsage certUsage, void *pinArg, PRBool verbose)
    CERTAuthKeyID * SECU_FindCRLAuthKeyIDExten(PRArenaPool *arena, CERTSignedCrl *crl)
    PRBool needsArg
    Definition: secutil.h:382
    PRBool activated
    Definition: secutil.h:384
    char * arg
    Definition: secutil.h:383
    int numCommands
    Definition: secutil.h:390
    int numOptions
    Definition: secutil.h:391
    secuCommandFlag * options
    Definition: secutil.h:394
    secuCommandFlag * commands
    Definition: secutil.h:393
    char * data
    Definition: secutil.h:84
    pam_pkcs11-0.6.12/doc/api/cn__mapper_8h_source.html0000644000175000017500000002353214367517110016760 00000000000000 pam_pkcs11: cn_mapper.h Source File
    pam_pkcs11 0.6.12
    cn_mapper.h
    Go to the documentation of this file.
    1/*
    2 * PAM-PKCS11 mapping modules
    3 * Copyright (C) 2005 Juan Antonio Martinez <jonsito@teleline.es>
    4 * pam-pkcs11 is copyright (C) 2003-2004 of Mario Strasser <mast@gmx.net>
    5 *
    6 * This library is free software; you can redistribute it and/or
    7 * modify it under the terms of the GNU Lesser General Public
    8 * License as published by the Free Software Foundation; either
    9 * version 2.1 of the License, or (at your option) any later version.
    10 *
    11 * This library is distributed in the hope that it will be useful,
    12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14 * Lesser General Public License for more details.
    15 *
    16 * You should have received a copy of the GNU Lesser General Public
    17 * License along with this library; if not, write to the Free Software
    18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    19 *
    20 * $Id$
    21 */
    22
    23#ifndef __CN_MAPPER_H_
    24#define __CN_MAPPER_H_
    25
    26#ifdef HAVE_CONFIG_H
    27#include <config.h>
    28#endif
    29
    30#include "../scconf/scconf.h"
    31#include "mapper.h"
    32
    33#ifdef CN_MAPPER_STATIC
    34
    35#ifndef __CN_MAPPER_C_
    36#define CN_EXTERN extern
    37#else
    38#define CN_EXTERN
    39#endif
    40CN_EXTERN mapper_module * cn_mapper_module_init(scconf_block *blk,const char *mapper_name);
    41#undef CN_EXTERN
    42
    43/* end of static (if any) declarations */
    44#endif
    45
    46/* End of cn_mapper.h */
    47#endif
    Structure to be filled on mapper module initialization.
    Definition: mapper.h:40
    pam_pkcs11-0.6.12/doc/api/uid__mapper_8h.html0000644000175000017500000000475214367517110015564 00000000000000 pam_pkcs11: uid_mapper.h File Reference
    pam_pkcs11 0.6.12
    uid_mapper.h File Reference
    pam_pkcs11-0.6.12/doc/api/dir_29c88563d03148ba4c309ff3e02018c1.html0000644000175000017500000001612114367517110017660 00000000000000 pam_pkcs11: mappers Directory Reference
    pam_pkcs11 0.6.12
    mappers Directory Reference
    pam_pkcs11-0.6.12/doc/api/globals_func_l.html0000644000175000017500000000435014367517110015644 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - l -

    pam_pkcs11-0.6.12/doc/api/mail__mapper_8h.html0000644000175000017500000000475514367517110015730 00000000000000 pam_pkcs11: mail_mapper.h File Reference
    pam_pkcs11 0.6.12
    mail_mapper.h File Reference
    pam_pkcs11-0.6.12/doc/api/closed.png0000644000175000017500000000020414367517110013756 00000000000000PNG  IHDR KIDATxm @!Gk7-`&sts@k}2 P%_N .:0Dk›x" ֛)x5IENDB`pam_pkcs11-0.6.12/doc/api/structsecuPWData.html0000644000175000017500000001613114367517110016140 00000000000000 pam_pkcs11: secuPWData Struct Reference
    pam_pkcs11 0.6.12
    secuPWData Struct Reference

    #include <secutil.h>

    Public Types

    enum  { PW_NONE = 0 , PW_FROMFILE = 1 , PW_PLAINTEXT = 2 , PW_EXTERNAL = 3 }
     

    Data Fields

    enum secuPWData:: { ... }  source
     
    char * data
     

    Detailed Description

    Definition at line 77 of file secutil.h.

    Member Enumeration Documentation

    ◆ anonymous enum

    anonymous enum
    Enumerator
    PW_NONE 
    PW_FROMFILE 
    PW_PLAINTEXT 
    PW_EXTERNAL 

    Definition at line 78 of file secutil.h.

    Field Documentation

    ◆ data

    char* data

    Definition at line 84 of file secutil.h.

    ◆ 

    enum { ... } source

    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/structCK__X9__42__DH1__DERIVE__PARAMS.html0000644000175000017500000002070314367517110021012 00000000000000 pam_pkcs11: CK_X9_42_DH1_DERIVE_PARAMS Struct Reference
    pam_pkcs11 0.6.12
    CK_X9_42_DH1_DERIVE_PARAMS Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_X9_42_DH_KDF_TYPE kdf
     
    CK_ULONG ulOtherInfoLen
     
    CK_BYTE_PTR pOtherInfo
     
    CK_ULONG ulPublicDataLen
     
    CK_BYTE_PTR pPublicData
     

    Detailed Description

    Definition at line 1138 of file pkcs11t.h.

    Field Documentation

    ◆ kdf

    Definition at line 1139 of file pkcs11t.h.

    ◆ pOtherInfo

    CK_BYTE_PTR pOtherInfo

    Definition at line 1141 of file pkcs11t.h.

    ◆ pPublicData

    CK_BYTE_PTR pPublicData

    Definition at line 1143 of file pkcs11t.h.

    ◆ ulOtherInfoLen

    CK_ULONG ulOtherInfoLen

    Definition at line 1140 of file pkcs11t.h.

    ◆ ulPublicDataLen

    CK_ULONG ulPublicDataLen

    Definition at line 1142 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/globals_a.html0000644000175000017500000000664414367517110014626 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:

    - a -

    pam_pkcs11-0.6.12/doc/api/functions_vars_b.html0000644000175000017500000000514714367517110016244 00000000000000 pam_pkcs11: Data Fields - Variables
    pam_pkcs11 0.6.12
    pam_pkcs11-0.6.12/doc/api/structmapper__list__st.html0000644000175000017500000001211014367517110017454 00000000000000 pam_pkcs11: mapper_list_st Struct Reference
    pam_pkcs11 0.6.12
    mapper_list_st Struct Reference

    #include <mapperlist.h>

    Data Fields

    const char * name
     
    mapper_module *(* init )(scconf_block *blk, const char *mapper_name)
     

    Detailed Description

    Definition at line 35 of file mapperlist.h.

    Field Documentation

    ◆ init

    mapper_module *(* init) (scconf_block *blk, const char *mapper_name)

    Definition at line 37 of file mapperlist.h.

    ◆ name

    const char* name

    Definition at line 36 of file mapperlist.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/globals_func_f.html0000644000175000017500000000521314367517110015635 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - f -

    pam_pkcs11-0.6.12/doc/api/functions_v.html0000644000175000017500000000447214367517110015235 00000000000000 pam_pkcs11: Data Fields
    pam_pkcs11 0.6.12
    Here is a list of all struct and union fields with links to the structures/unions they belong to:

    - v -

    pam_pkcs11-0.6.12/doc/api/base64_8h_source.html0000644000175000017500000002256014367517110015741 00000000000000 pam_pkcs11: base64.h Source File
    pam_pkcs11 0.6.12
    base64.h
    Go to the documentation of this file.
    1/*
    2 * BASE64 Encoding funtions
    3 * Copyright (C) 2001, 2002 Juha Yrj\uffffl\uffff <juha.yrjola@iki.fi>
    4 * Copyright (C) 2003-2004 Mario Strasser <mast@gmx.net>
    5 * Copyright (C) 2005 Juan Antonio Martinez <jonsito@teleline.es>
    6 *
    7 * This library is free software; you can redistribute it and/or
    8 * modify it under the terms of the GNU Lesser General Public
    9 * License as published by the Free Software Foundation; either
    10 * version 2.1 of the License, or (at your option) any later version.
    11 *
    12 * This library is distributed in the hope that it will be useful,
    13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    15 * Lesser General Public License for more details.
    16 *
    17 * $Id$
    18 */
    19
    20#ifndef __BASE64_H_
    21#define __BASE64_H_
    22
    23#ifndef __BASE64_C_
    24#define BASE64_EXTERN extern
    25#else
    26#define BASE64_EXTERN
    27#endif
    28
    37BASE64_EXTERN int base64_encode(const unsigned char *in, size_t len, unsigned char *out, size_t *outlen);
    38
    46BASE64_EXTERN int base64_decode(const char *in, unsigned char *out, size_t outlen);
    47
    48#undef BASE64_EXTERN
    49
    50#endif /* __BASE64_H_ */
    #define BASE64_EXTERN
    Definition: base64.h:24
    BASE64_EXTERN int base64_encode(const unsigned char *in, size_t len, unsigned char *out, size_t *outlen)
    Encode byte array into a base64 string.
    BASE64_EXTERN int base64_decode(const char *in, unsigned char *out, size_t outlen)
    Decode a base64 string into a byte array.
    pam_pkcs11-0.6.12/doc/api/globals_r.html0000644000175000017500000000714414367517110014643 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:

    - r -

    pam_pkcs11-0.6.12/doc/api/structCK__RSA__PKCS__PSS__PARAMS.html0000644000175000017500000001416514367517110020353 00000000000000 pam_pkcs11: CK_RSA_PKCS_PSS_PARAMS Struct Reference
    pam_pkcs11 0.6.12
    CK_RSA_PKCS_PSS_PARAMS Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_MECHANISM_TYPE hashAlg
     
    CK_RSA_PKCS_MGF_TYPE mgf
     
    CK_ULONG sLen
     

    Detailed Description

    Definition at line 1076 of file pkcs11t.h.

    Field Documentation

    ◆ hashAlg

    Definition at line 1077 of file pkcs11t.h.

    ◆ mgf

    Definition at line 1078 of file pkcs11t.h.

    ◆ sLen

    CK_ULONG sLen

    Definition at line 1079 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/functions_h.html0000644000175000017500000000651214367517110015214 00000000000000 pam_pkcs11: Data Fields
    pam_pkcs11 0.6.12
    Here is a list of all struct and union fields with links to the structures/unions they belong to:

    - h -

    pam_pkcs11-0.6.12/doc/api/struct__scconf__entry.html0000644000175000017500000001671714367517110017303 00000000000000 pam_pkcs11: _scconf_entry Struct Reference
    pam_pkcs11 0.6.12
    _scconf_entry Struct Reference

    #include <scconf.h>

    Data Fields

    const char * name
     
    unsigned int type
     
    unsigned int flags
     
    void * parm
     
    void * arg
     

    Detailed Description

    Definition at line 31 of file scconf.h.

    Field Documentation

    ◆ arg

    void* arg

    Definition at line 36 of file scconf.h.

    ◆ flags

    unsigned int flags

    Definition at line 34 of file scconf.h.

    ◆ name

    const char* name

    Definition at line 32 of file scconf.h.

    ◆ parm

    void* parm

    Definition at line 35 of file scconf.h.

    ◆ type

    unsigned int type

    Definition at line 33 of file scconf.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/globals_func_t.html0000644000175000017500000000430414367517110015653 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - t -

    pam_pkcs11-0.6.12/doc/api/structCK__SKIPJACK__PRIVATE__WRAP__PARAMS.html0000644000175000017500000003636014367517110021604 00000000000000 pam_pkcs11: CK_SKIPJACK_PRIVATE_WRAP_PARAMS Struct Reference
    pam_pkcs11 0.6.12
    CK_SKIPJACK_PRIVATE_WRAP_PARAMS Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_ULONG ulPasswordLen
     
    CK_BYTE_PTR pPassword
     
    CK_ULONG ulPublicDataLen
     
    CK_BYTE_PTR pPublicData
     
    CK_ULONG ulPAndGLen
     
    CK_ULONG ulQLen
     
    CK_ULONG ulRandomLen
     
    CK_BYTE_PTR pRandomA
     
    CK_BYTE_PTR pPrimeP
     
    CK_BYTE_PTR pBaseG
     
    CK_BYTE_PTR pSubprimeQ
     

    Detailed Description

    Definition at line 1261 of file pkcs11t.h.

    Field Documentation

    ◆ pBaseG

    CK_BYTE_PTR pBaseG

    Definition at line 1271 of file pkcs11t.h.

    ◆ pPassword

    CK_BYTE_PTR pPassword

    Definition at line 1263 of file pkcs11t.h.

    ◆ pPrimeP

    CK_BYTE_PTR pPrimeP

    Definition at line 1270 of file pkcs11t.h.

    ◆ pPublicData

    CK_BYTE_PTR pPublicData

    Definition at line 1265 of file pkcs11t.h.

    ◆ pRandomA

    CK_BYTE_PTR pRandomA

    Definition at line 1269 of file pkcs11t.h.

    ◆ pSubprimeQ

    CK_BYTE_PTR pSubprimeQ

    Definition at line 1272 of file pkcs11t.h.

    ◆ ulPAndGLen

    CK_ULONG ulPAndGLen

    Definition at line 1266 of file pkcs11t.h.

    ◆ ulPasswordLen

    CK_ULONG ulPasswordLen

    Definition at line 1262 of file pkcs11t.h.

    ◆ ulPublicDataLen

    CK_ULONG ulPublicDataLen

    Definition at line 1264 of file pkcs11t.h.

    ◆ ulQLen

    CK_ULONG ulQLen

    Definition at line 1267 of file pkcs11t.h.

    ◆ ulRandomLen

    CK_ULONG ulRandomLen

    Definition at line 1268 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/cert__info_8h.html0000644000175000017500000006732514367517110015414 00000000000000 pam_pkcs11: cert_info.h File Reference
    pam_pkcs11 0.6.12
    cert_info.h File Reference
    #include "cert_st.h"

    Go to the source code of this file.

    Macros

    #define CERT_CN   1
     Certificate Common Name. More...
     
    #define CERT_SUBJECT   2
     Certificate subject. More...
     
    #define CERT_KPN   3
     Kerberos principal name. More...
     
    #define CERT_EMAIL   4
     Certificate e-mail. More...
     
    #define CERT_UPN   5
     Microsoft's Universal Principal Name. More...
     
    #define CERT_UID   6
     Certificate Unique Identifier. More...
     
    #define CERT_PUK   7
     Certificate Public Key (PEM Format) More...
     
    #define CERT_DIGEST   8
     Certificate Digest. More...
     
    #define CERT_SSHPUK   9
     Certificate Public key in OpenSSH format. More...
     
    #define CERT_PEM   10
     Certificate in PEM format. More...
     
    #define CERT_ISSUER   11
     Certificate issuer. More...
     
    #define CERT_SERIAL   12
     Certificate serial number. More...
     
    #define CERT_KEY_ALG   13
     Certificate key algorithm. More...
     
    #define CERT_INFO_SIZE   16
     Max size of returned certificate content array. More...
     
    #define CERT_INFO_MAX_ENTRIES   ( CERT_INFO_SIZE - 1 )
     Max number of entries to find from certificate. More...
     
    #define CERTINFO_EXTERN   extern
     

    Functions

    void add_cert (X509 *cert, X509 ***certs, int *ncerts)
     Generate and compose a certificate chain. More...
     
    CERTINFO_EXTERN char ** cert_info (X509 *x509, int type, ALGORITHM_TYPE algorithm)
     Request info on certificate. More...
     

    Macro Definition Documentation

    ◆ CERT_CN

    #define CERT_CN   1

    Certificate Common Name.

    Definition at line 25 of file cert_info.h.

    ◆ CERT_DIGEST

    #define CERT_DIGEST   8

    Certificate Digest.

    Definition at line 39 of file cert_info.h.

    ◆ CERT_EMAIL

    #define CERT_EMAIL   4

    Certificate e-mail.

    Definition at line 31 of file cert_info.h.

    ◆ CERT_INFO_MAX_ENTRIES

    #define CERT_INFO_MAX_ENTRIES   ( CERT_INFO_SIZE - 1 )

    Max number of entries to find from certificate.

    Definition at line 54 of file cert_info.h.

    ◆ CERT_INFO_SIZE

    #define CERT_INFO_SIZE   16

    Max size of returned certificate content array.

    Definition at line 52 of file cert_info.h.

    ◆ CERT_ISSUER

    #define CERT_ISSUER   11

    Certificate issuer.

    Definition at line 45 of file cert_info.h.

    ◆ CERT_KEY_ALG

    #define CERT_KEY_ALG   13

    Certificate key algorithm.

    Definition at line 49 of file cert_info.h.

    ◆ CERT_KPN

    #define CERT_KPN   3

    Kerberos principal name.

    Definition at line 29 of file cert_info.h.

    ◆ CERT_PEM

    #define CERT_PEM   10

    Certificate in PEM format.

    Definition at line 43 of file cert_info.h.

    ◆ CERT_PUK

    #define CERT_PUK   7

    Certificate Public Key (PEM Format)

    Definition at line 37 of file cert_info.h.

    ◆ CERT_SERIAL

    #define CERT_SERIAL   12

    Certificate serial number.

    Definition at line 47 of file cert_info.h.

    ◆ CERT_SSHPUK

    #define CERT_SSHPUK   9

    Certificate Public key in OpenSSH format.

    Definition at line 41 of file cert_info.h.

    ◆ CERT_SUBJECT

    #define CERT_SUBJECT   2

    Certificate subject.

    Definition at line 27 of file cert_info.h.

    ◆ CERT_UID

    #define CERT_UID   6

    Certificate Unique Identifier.

    Definition at line 35 of file cert_info.h.

    ◆ CERT_UPN

    #define CERT_UPN   5

    Microsoft's Universal Principal Name.

    Definition at line 33 of file cert_info.h.

    ◆ CERTINFO_EXTERN

    #define CERTINFO_EXTERN   extern

    Definition at line 57 of file cert_info.h.

    Function Documentation

    ◆ add_cert()

    void add_cert ( X509 *  cert,
    X509 ***  certs,
    int *  ncerts 
    )

    Generate and compose a certificate chain.

    Parameters
    certCertificate to add
    certspointer to list of certificates
    ncertspointer to number of certificates in list

    ◆ cert_info()

    CERTINFO_EXTERN char ** cert_info ( X509 *  x509,
    int  type,
    ALGORITHM_TYPE  algorithm 
    )

    Request info on certificate.

    Parameters
    x509certificate to parse
    typeinformation to retrieve
    algorithmto use in evaluate certificate digest; else null
    Returns
    utf-8 string array with provided information
    pam_pkcs11-0.6.12/doc/api/digest__mapper_8h_source.html0000644000175000017500000002361614367517110017642 00000000000000 pam_pkcs11: digest_mapper.h Source File
    pam_pkcs11 0.6.12
    digest_mapper.h
    Go to the documentation of this file.
    1/*
    2 * PAM-PKCS11 mapping modules
    3 * Copyright (C) 2005 Juan Antonio Martinez <jonsito@teleline.es>
    4 * pam-pkcs11 is copyright (C) 2003-2004 of Mario Strasser <mast@gmx.net>
    5 *
    6 * This library is free software; you can redistribute it and/or
    7 * modify it under the terms of the GNU Lesser General Public
    8 * License as published by the Free Software Foundation; either
    9 * version 2.1 of the License, or (at your option) any later version.
    10 *
    11 * This library is distributed in the hope that it will be useful,
    12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14 * Lesser General Public License for more details.
    15 *
    16 * You should have received a copy of the GNU Lesser General Public
    17 * License along with this library; if not, write to the Free Software
    18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    19 *
    20 * $Id$
    21 */
    22
    23#ifndef __DIGEST_MAPPER_H_
    24#define __DIGEST_MAPPER_H_
    25
    26#ifdef HAVE_CONFIG_H
    27#include <config.h>
    28#endif
    29
    30#include "../scconf/scconf.h"
    31#include "mapper.h"
    32
    33#ifdef DIGEST_MAPPER_STATIC
    34
    35#ifndef __DIGEST_MAPPER_C_
    36#define DIGEST_EXTERN extern
    37#else
    38#define DIGEST_EXTERN
    39#endif
    40DIGEST_EXTERN mapper_module * digest_mapper_module_init(scconf_block *blk,const char *mapper_name);
    41#undef DIGEST_EXTERN
    42
    43/* end of static (if any) declarations */
    44#endif
    45
    46/* End of digest_mapper.h */
    47#endif
    Structure to be filled on mapper module initialization.
    Definition: mapper.h:40
    pam_pkcs11-0.6.12/doc/api/globals_func_b.html0000644000175000017500000000430714367517110015634 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - b -

    pam_pkcs11-0.6.12/doc/api/globals_func_w.html0000644000175000017500000000416414367517110015662 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - w -

    pam_pkcs11-0.6.12/doc/api/functions_vars_c.html0000644000175000017500000000726314367517110016246 00000000000000 pam_pkcs11: Data Fields - Variables
    pam_pkcs11 0.6.12
     

    - c -

    pam_pkcs11-0.6.12/doc/api/functions_i.html0000644000175000017500000000521114367517110015210 00000000000000 pam_pkcs11: Data Fields
    pam_pkcs11 0.6.12
    Here is a list of all struct and union fields with links to the structures/unions they belong to:

    - i -

    pam_pkcs11-0.6.12/doc/api/cn__mapper_8h.html0000644000175000017500000000474714367517110015407 00000000000000 pam_pkcs11: cn_mapper.h File Reference
    pam_pkcs11 0.6.12
    cn_mapper.h File Reference
    pam_pkcs11-0.6.12/doc/api/functions_vars_y.html0000644000175000017500000000374414367517110016274 00000000000000 pam_pkcs11: Data Fields - Variables
    pam_pkcs11 0.6.12
     

    - y -

    pam_pkcs11-0.6.12/doc/api/folderopen.png0000644000175000017500000000112514367517110014645 00000000000000PNG  IHDR}\IDATx]?oP9i4i;iiZ7`b٬,HU'$*T]TDP6w};C; aӝߟjAInS}9Hӎ|? =_Ɗue*;YEsYBėsٌ ɫYq !Gǿv̇خ F}qb]70)d-}PfY{4@}2ԗNIǃc%UImcƝ>xt9$ OVE*Û#׈r@l$PrHaa dZrqIoT\,tj2FAxv-Lp׌p TI/ \sf; jViTo^cpb]€<a՜y9:+,E f6NEKU}^;nZuUS4 ѬbN.kjT% iV )GJ@TxIENDB`pam_pkcs11-0.6.12/doc/api/opensc__mapper_8h_source.html0000644000175000017500000002361614367517110017652 00000000000000 pam_pkcs11: opensc_mapper.h Source File
    pam_pkcs11 0.6.12
    opensc_mapper.h
    Go to the documentation of this file.
    1/*
    2 * PAM-PKCS11 mapping modules
    3 * Copyright (C) 2005 Juan Antonio Martinez <jonsito@teleline.es>
    4 * pam-pkcs11 is copyright (C) 2003-2004 of Mario Strasser <mast@gmx.net>
    5 *
    6 * This library is free software; you can redistribute it and/or
    7 * modify it under the terms of the GNU Lesser General Public
    8 * License as published by the Free Software Foundation; either
    9 * version 2.1 of the License, or (at your option) any later version.
    10 *
    11 * This library is distributed in the hope that it will be useful,
    12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14 * Lesser General Public License for more details.
    15 *
    16 * You should have received a copy of the GNU Lesser General Public
    17 * License along with this library; if not, write to the Free Software
    18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    19 *
    20 * $Id$
    21 */
    22
    23#ifndef __OPENSC_MAPPER_H_
    24#define __OPENSC_MAPPER_H_
    25
    26#ifdef HAVE_CONFIG_H
    27#include <config.h>
    28#endif
    29
    30#include "../scconf/scconf.h"
    31#include "mapper.h"
    32
    33#ifdef OPENSC_MAPPER_STATIC
    34
    35#ifndef __OPENSC_MAPPER_C_
    36#define OPENSC_EXTERN extern
    37#else
    38#define OPENSC_EXTERN
    39#endif
    40OPENSC_EXTERN mapper_module * opensc_mapper_module_init(scconf_block *blk,const char *mapper_name);
    41#undef OPENSC_EXTERN
    42
    43/* end of static (if any) declarations */
    44#endif
    45
    46/* End of opensc_mapper.h */
    47#endif
    Structure to be filled on mapper module initialization.
    Definition: mapper.h:40
    pam_pkcs11-0.6.12/doc/api/mapperlist_8h_source.html0000644000175000017500000002641514367517110017040 00000000000000 pam_pkcs11: mapperlist.h Source File
    pam_pkcs11 0.6.12
    mapperlist.h
    Go to the documentation of this file.
    1/*
    2 * PAM-PKCS11 mapping modules
    3 * Copyright (C) 2005 Juan Antonio Martinez <jonsito@teleline.es>
    4 * pam-pkcs11 is copyright (C) 2003-2004 of Mario Strasser <mast@gmx.net>
    5 *
    6 * This library is free software; you can redistribute it and/or
    7 * modify it under the terms of the GNU Lesser General Public
    8 * License as published by the Free Software Foundation; either
    9 * version 2.1 of the License, or (at your option) any later version.
    10 *
    11 * This library is distributed in the hope that it will be useful,
    12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14 * Lesser General Public License for more details.
    15 *
    16 * You should have received a copy of the GNU Lesser General Public
    17 * License along with this library; if not, write to the Free Software
    18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    19 *
    20 * $Id$
    21 */
    22
    23#ifndef __MAPPERLIST_H_
    24#define __MAPPERLIST_H_
    25
    26#ifdef HAVE_CONFIG_H
    27#include <config.h>
    28#endif
    29
    30#include "../mappers/mapper.h"
    31
    32/*
    33* list of mappers that are statically linked
    34*/
    35typedef struct mapper_list_st {
    36 const char *name;
    37 mapper_module * (*init)(scconf_block *blk, const char *mapper_name);
    39
    40#ifndef __MAPPERLIST_C_
    42#endif
    43
    44/* End of mapperlist.h */
    45#endif
    mapper_list static_mapper_list[]
    struct mapper_list_st mapper_list
    const char * name
    Definition: mapperlist.h:36
    Structure to be filled on mapper module initialization.
    Definition: mapper.h:40
    pam_pkcs11-0.6.12/doc/api/functions_n.html0000644000175000017500000000671314367517110015225 00000000000000 pam_pkcs11: Data Fields
    pam_pkcs11 0.6.12
    Here is a list of all struct and union fields with links to the structures/unions they belong to:

    - n -

    pam_pkcs11-0.6.12/doc/api/globals_defs_b.html0000644000175000017500000000373114367517110015622 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - b -

    pam_pkcs11-0.6.12/doc/api/globals_h.html0000644000175000017500000000433114367517110014624 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:

    - h -

    pam_pkcs11-0.6.12/doc/api/subject__mapper_8h.html0000644000175000017500000000476614367517110016447 00000000000000 pam_pkcs11: subject_mapper.h File Reference
    pam_pkcs11 0.6.12
    subject_mapper.h File Reference
    pam_pkcs11-0.6.12/doc/api/functions_vars_m.html0000644000175000017500000000752014367517110016254 00000000000000 pam_pkcs11: Data Fields - Variables
    pam_pkcs11 0.6.12
     

    - m -

    pam_pkcs11-0.6.12/doc/api/mapperlist_8h.html0000644000175000017500000001314514367517110015454 00000000000000 pam_pkcs11: mapperlist.h File Reference
    pam_pkcs11 0.6.12
    mapperlist.h File Reference

    Go to the source code of this file.

    Data Structures

    struct  mapper_list_st
     

    Typedefs

    typedef struct mapper_list_st mapper_list
     

    Variables

    mapper_list static_mapper_list []
     

    Typedef Documentation

    ◆ mapper_list

    typedef struct mapper_list_st mapper_list

    Variable Documentation

    ◆ static_mapper_list

    mapper_list static_mapper_list[]
    extern
    pam_pkcs11-0.6.12/doc/api/files.html0000644000175000017500000003560714367517110014006 00000000000000 pam_pkcs11: File List
    pam_pkcs11 0.6.12
    File List
    Here is a list of all files with brief descriptions:
    pam_pkcs11-0.6.12/doc/api/functions_l.html0000644000175000017500000000615014367517110015216 00000000000000 pam_pkcs11: Data Fields
    pam_pkcs11 0.6.12
    Here is a list of all struct and union fields with links to the structures/unions they belong to:

    - l -

    pam_pkcs11-0.6.12/doc/api/structscconf__context.html0000644000175000017500000001523714367517110017324 00000000000000 pam_pkcs11: scconf_context Struct Reference
    pam_pkcs11 0.6.12
    scconf_context Struct Reference

    #include <scconf.h>

    Data Fields

    char * filename
     
    int debug
     
    scconf_blockroot
     
    char * errmsg
     

    Detailed Description

    Definition at line 83 of file scconf.h.

    Field Documentation

    ◆ debug

    int debug

    Definition at line 85 of file scconf.h.

    ◆ errmsg

    char* errmsg

    Definition at line 87 of file scconf.h.

    ◆ filename

    char* filename

    Definition at line 84 of file scconf.h.

    ◆ root

    scconf_block* root

    Definition at line 86 of file scconf.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/structCK__KEA__DERIVE__PARAMS.html0000644000175000017500000002276114367517110017661 00000000000000 pam_pkcs11: CK_KEA_DERIVE_PARAMS Struct Reference
    pam_pkcs11 0.6.12
    CK_KEA_DERIVE_PARAMS Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_BBOOL isSender
     
    CK_ULONG ulRandomLen
     
    CK_BYTE_PTR pRandomA
     
    CK_BYTE_PTR pRandomB
     
    CK_ULONG ulPublicDataLen
     
    CK_BYTE_PTR pPublicData
     

    Detailed Description

    Definition at line 1169 of file pkcs11t.h.

    Field Documentation

    ◆ isSender

    CK_BBOOL isSender

    Definition at line 1170 of file pkcs11t.h.

    ◆ pPublicData

    CK_BYTE_PTR pPublicData

    Definition at line 1175 of file pkcs11t.h.

    ◆ pRandomA

    CK_BYTE_PTR pRandomA

    Definition at line 1172 of file pkcs11t.h.

    ◆ pRandomB

    CK_BYTE_PTR pRandomB

    Definition at line 1173 of file pkcs11t.h.

    ◆ ulPublicDataLen

    CK_ULONG ulPublicDataLen

    Definition at line 1174 of file pkcs11t.h.

    ◆ ulRandomLen

    CK_ULONG ulRandomLen

    Definition at line 1171 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/openssh__mapper_8h.html0000644000175000017500000000476614367517110016467 00000000000000 pam_pkcs11: openssh_mapper.h File Reference
    pam_pkcs11 0.6.12
    openssh_mapper.h File Reference
    pam_pkcs11-0.6.12/doc/api/structCK__RC2__MAC__GENERAL__PARAMS.html0000644000175000017500000001203414367517110020555 00000000000000 pam_pkcs11: CK_RC2_MAC_GENERAL_PARAMS Struct Reference
    pam_pkcs11 0.6.12
    CK_RC2_MAC_GENERAL_PARAMS Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_ULONG ulEffectiveBits
     
    CK_ULONG ulMacLength
     

    Detailed Description

    Definition at line 1205 of file pkcs11t.h.

    Field Documentation

    ◆ ulEffectiveBits

    CK_ULONG ulEffectiveBits

    Definition at line 1206 of file pkcs11t.h.

    ◆ ulMacLength

    CK_ULONG ulMacLength

    Definition at line 1207 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/functions_w.html0000644000175000017500000000435714367517110015240 00000000000000 pam_pkcs11: Data Fields
    pam_pkcs11 0.6.12
    Here is a list of all struct and union fields with links to the structures/unions they belong to:

    - w -

    pam_pkcs11-0.6.12/doc/api/bc_s.png0000644000175000017500000000124414367517110013420 00000000000000PNG  IHDR_ kIDATxkQϝ̤I&m&156*nąܸR,4 +H(Ub1J.(EmߏhJmKS'C(х & r3g(z&_9}՟@mu ` h`ԯ &~M4%3?h)\Yi>Jb @giވkg\轭EUv+?E"pB\Y&$vM+Dn)}:Xo 3گ'.f0u9Ljf6%3Gf#sm(,k*ʒJJˢou_~ r]%%mnu]zr5[ưXeI pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - a -

    pam_pkcs11-0.6.12/doc/api/uid__mapper_8h_source.html0000644000175000017500000002354714367517110017147 00000000000000 pam_pkcs11: uid_mapper.h Source File
    pam_pkcs11 0.6.12
    uid_mapper.h
    Go to the documentation of this file.
    1/*
    2 * PAM-PKCS11 mapping modules
    3 * Copyright (C) 2005 Juan Antonio Martinez <jonsito@teleline.es>
    4 * pam-pkcs11 is copyright (C) 2003-2004 of Mario Strasser <mast@gmx.net>
    5 *
    6 * This library is free software; you can redistribute it and/or
    7 * modify it under the terms of the GNU Lesser General Public
    8 * License as published by the Free Software Foundation; either
    9 * version 2.1 of the License, or (at your option) any later version.
    10 *
    11 * This library is distributed in the hope that it will be useful,
    12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14 * Lesser General Public License for more details.
    15 *
    16 * You should have received a copy of the GNU Lesser General Public
    17 * License along with this library; if not, write to the Free Software
    18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    19 *
    20 * $Id$
    21 */
    22
    23#ifndef __UID_MAPPER_H_
    24#define __UID_MAPPER_H_
    25
    26#ifdef HAVE_CONFIG_H
    27#include <config.h>
    28#endif
    29
    30#include "../scconf/scconf.h"
    31#include "mapper.h"
    32
    33#ifdef UID_MAPPER_STATIC
    34
    35#ifndef __UID_MAPPER_C_
    36#define UID_EXTERN extern
    37#else
    38#define UID_EXTERN
    39#endif
    40UID_EXTERN mapper_module * uid_mapper_module_init(scconf_block *blk,const char *mapper_name);
    41#undef UID_EXTERN
    42
    43/* end of static (if any) declarations */
    44#endif
    45
    46/* End of uid_mapper.h */
    47#endif
    Structure to be filled on mapper module initialization.
    Definition: mapper.h:40
    pam_pkcs11-0.6.12/doc/api/functions_vars_u.html0000644000175000017500000002754014367517110016270 00000000000000 pam_pkcs11: Data Fields - Variables
    pam_pkcs11 0.6.12
     

    - u -

    pam_pkcs11-0.6.12/doc/api/openssh__mapper_8h_source.html0000644000175000017500000002363314367517110020041 00000000000000 pam_pkcs11: openssh_mapper.h Source File
    pam_pkcs11 0.6.12
    openssh_mapper.h
    Go to the documentation of this file.
    1/*
    2 * PAM-PKCS11 mapping modules
    3 * Copyright (C) 2005 Juan Antonio Martinez <jonsito@teleline.es>
    4 * pam-pkcs11 is copyright (C) 2003-2004 of Mario Strasser <mast@gmx.net>
    5 *
    6 * This library is free software; you can redistribute it and/or
    7 * modify it under the terms of the GNU Lesser General Public
    8 * License as published by the Free Software Foundation; either
    9 * version 2.1 of the License, or (at your option) any later version.
    10 *
    11 * This library is distributed in the hope that it will be useful,
    12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14 * Lesser General Public License for more details.
    15 *
    16 * You should have received a copy of the GNU Lesser General Public
    17 * License along with this library; if not, write to the Free Software
    18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    19 *
    20 * $Id$
    21 */
    22
    23#ifndef __OPENSSH_MAPPER_H_
    24#define __OPENSSH_MAPPER_H_
    25
    26#ifdef HAVE_CONFIG_H
    27#include <config.h>
    28#endif
    29
    30#include "../scconf/scconf.h"
    31#include "mapper.h"
    32
    33#ifdef OPENSSH_MAPPER_STATIC
    34
    35#ifndef __OPENSSH_MAPPER_C_
    36#define OPENSSH_EXTERN extern
    37#else
    38#define OPENSSH_EXTERN
    39#endif
    40OPENSSH_EXTERN mapper_module * openssh_mapper_module_init(scconf_block *blk,const char *mapper_name);
    41#undef OPENSSH_EXTERN
    42
    43/* end of static (if any) declarations */
    44#endif
    45
    46/* End of openssh_mapper.h */
    47#endif
    Structure to be filled on mapper module initialization.
    Definition: mapper.h:40
    pam_pkcs11-0.6.12/doc/api/krb__mapper_8h.html0000644000175000017500000000475214367517110015561 00000000000000 pam_pkcs11: krb_mapper.h File Reference
    pam_pkcs11 0.6.12
    krb_mapper.h File Reference
    pam_pkcs11-0.6.12/doc/api/structmapper__module__st.html0000644000175000017500000003340514367517110020000 00000000000000 pam_pkcs11: mapper_module_st Struct Reference
    pam_pkcs11 0.6.12
    mapper_module_st Struct Reference

    Structure to be filled on mapper module initialization. More...

    #include <mapper.h>

    Data Fields

    const char * name
     mapper name More...
     
    scconf_blockblock
     mapper configuration block More...
     
    int dbg_level
     debug level to set before call entry points More...
     
    void * context
     pointer to mapper local data More...
     
    char **(* entries )(X509 *x509, void *context)
     cert. More...
     
    char *(* finder )(X509 *x509, void *context, int *match)
     cert. More...
     
    int(* matcher )(X509 *x509, const char *login, void *context)
     cert-to-login matcher More...
     
    void(* deinit )(void *context)
     module de-initialization More...
     

    Detailed Description

    Structure to be filled on mapper module initialization.

    Definition at line 40 of file mapper.h.

    Field Documentation

    ◆ block

    scconf_block* block

    mapper configuration block

    Definition at line 44 of file mapper.h.

    ◆ context

    void* context

    pointer to mapper local data

    Definition at line 48 of file mapper.h.

    ◆ dbg_level

    int dbg_level

    debug level to set before call entry points

    Definition at line 46 of file mapper.h.

    ◆ deinit

    void(* deinit) (void *context)

    module de-initialization

    Definition at line 56 of file mapper.h.

    ◆ entries

    char **(* entries) (X509 *x509, void *context)

    cert.

    entries enumerator

    Definition at line 50 of file mapper.h.

    ◆ finder

    char *(* finder) (X509 *x509, void *context, int *match)

    cert.

    login finder

    Definition at line 52 of file mapper.h.

    ◆ matcher

    int(* matcher) (X509 *x509, const char *login, void *context)

    cert-to-login matcher

    Definition at line 54 of file mapper.h.

    ◆ name

    const char* name

    mapper name

    Definition at line 42 of file mapper.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/tab_h.png0000644000175000017500000000026114367517110013565 00000000000000PNG  IHDR$[xIDATxM@~ΒEv"!d*rGq={SݧH uO^[_Xvyұ=VCff{R%_rug(?gh\i>|sIENDB`pam_pkcs11-0.6.12/doc/api/globals_func_v.html0000644000175000017500000000432714367517110015662 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - v -

    pam_pkcs11-0.6.12/doc/api/structCK__RC5__PARAMS.html0000644000175000017500000001172014367517110016446 00000000000000 pam_pkcs11: CK_RC5_PARAMS Struct Reference
    pam_pkcs11 0.6.12
    CK_RC5_PARAMS Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_ULONG ulWordsize
     
    CK_ULONG ulRounds
     

    Detailed Description

    Definition at line 1216 of file pkcs11t.h.

    Field Documentation

    ◆ ulRounds

    CK_ULONG ulRounds

    Definition at line 1218 of file pkcs11t.h.

    ◆ ulWordsize

    CK_ULONG ulWordsize

    Definition at line 1217 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/functions_e.html0000644000175000017500000000517014367517110015210 00000000000000 pam_pkcs11: Data Fields
    pam_pkcs11 0.6.12
    Here is a list of all struct and union fields with links to the structures/unions they belong to:

    - e -

    pam_pkcs11-0.6.12/doc/api/structCK__PBE__PARAMS.html0000644000175000017500000002266214367517110016472 00000000000000 pam_pkcs11: CK_PBE_PARAMS Struct Reference
    pam_pkcs11 0.6.12
    CK_PBE_PARAMS Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_BYTE_PTR pInitVector
     
    CK_UTF8CHAR_PTR pPassword
     
    CK_ULONG ulPasswordLen
     
    CK_BYTE_PTR pSalt
     
    CK_ULONG ulSaltLen
     
    CK_ULONG ulIteration
     

    Detailed Description

    Definition at line 1301 of file pkcs11t.h.

    Field Documentation

    ◆ pInitVector

    CK_BYTE_PTR pInitVector

    Definition at line 1302 of file pkcs11t.h.

    ◆ pPassword

    CK_UTF8CHAR_PTR pPassword

    Definition at line 1303 of file pkcs11t.h.

    ◆ pSalt

    CK_BYTE_PTR pSalt

    Definition at line 1305 of file pkcs11t.h.

    ◆ ulIteration

    CK_ULONG ulIteration

    Definition at line 1307 of file pkcs11t.h.

    ◆ ulPasswordLen

    CK_ULONG ulPasswordLen

    Definition at line 1304 of file pkcs11t.h.

    ◆ ulSaltLen

    CK_ULONG ulSaltLen

    Definition at line 1306 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/structCK__X9__42__DH2__DERIVE__PARAMS.html0000644000175000017500000003202114367517110021007 00000000000000 pam_pkcs11: CK_X9_42_DH2_DERIVE_PARAMS Struct Reference
    pam_pkcs11 0.6.12
    CK_X9_42_DH2_DERIVE_PARAMS Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_X9_42_DH_KDF_TYPE kdf
     
    CK_ULONG ulOtherInfoLen
     
    CK_BYTE_PTR pOtherInfo
     
    CK_ULONG ulPublicDataLen
     
    CK_BYTE_PTR pPublicData
     
    CK_ULONG ulPrivateDataLen
     
    CK_OBJECT_HANDLE hPrivateData
     
    CK_ULONG ulPublicDataLen2
     
    CK_BYTE_PTR pPublicData2
     

    Detailed Description

    Definition at line 1152 of file pkcs11t.h.

    Field Documentation

    ◆ hPrivateData

    CK_OBJECT_HANDLE hPrivateData

    Definition at line 1159 of file pkcs11t.h.

    ◆ kdf

    Definition at line 1153 of file pkcs11t.h.

    ◆ pOtherInfo

    CK_BYTE_PTR pOtherInfo

    Definition at line 1155 of file pkcs11t.h.

    ◆ pPublicData

    CK_BYTE_PTR pPublicData

    Definition at line 1157 of file pkcs11t.h.

    ◆ pPublicData2

    CK_BYTE_PTR pPublicData2

    Definition at line 1161 of file pkcs11t.h.

    ◆ ulOtherInfoLen

    CK_ULONG ulOtherInfoLen

    Definition at line 1154 of file pkcs11t.h.

    ◆ ulPrivateDataLen

    CK_ULONG ulPrivateDataLen

    Definition at line 1158 of file pkcs11t.h.

    ◆ ulPublicDataLen

    CK_ULONG ulPublicDataLen

    Definition at line 1156 of file pkcs11t.h.

    ◆ ulPublicDataLen2

    CK_ULONG ulPublicDataLen2

    Definition at line 1160 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/functions_t.html0000644000175000017500000000507014367517110015226 00000000000000 pam_pkcs11: Data Fields
    pam_pkcs11 0.6.12
    Here is a list of all struct and union fields with links to the structures/unions they belong to:

    - t -

    pam_pkcs11-0.6.12/doc/api/digest__mapper_8h.html0000644000175000017500000000476314367517110016264 00000000000000 pam_pkcs11: digest_mapper.h File Reference
    pam_pkcs11 0.6.12
    digest_mapper.h File Reference
    pam_pkcs11-0.6.12/doc/api/pkcs11f_8h.html0000644000175000017500000000453214367517110014544 00000000000000 pam_pkcs11: pkcs11f.h File Reference
    pam_pkcs11 0.6.12
    pkcs11f.h File Reference
    pam_pkcs11-0.6.12/doc/api/dir_68267d1309a1af8e8297ef4c3efbcdba.html0000644000175000017500000000660414367517110020346 00000000000000 pam_pkcs11: src Directory Reference
    pam_pkcs11 0.6.12
    src Directory Reference

    Directories

    directory  common
     
    directory  mappers
     
    directory  pam_pkcs11
     
    directory  scconf
     
    pam_pkcs11-0.6.12/doc/api/globals_defs_x.html0000644000175000017500000000611514367517110015647 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - x -

    pam_pkcs11-0.6.12/doc/api/globals_g.html0000644000175000017500000000657514367517110014637 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:

    - g -

    pam_pkcs11-0.6.12/doc/api/dir_fdedb0aba14d44ce9d99bc100e026e6a.html0000644000175000017500000001771514367517110020461 00000000000000 pam_pkcs11: common Directory Reference
    pam_pkcs11 0.6.12
    common Directory Reference

    Directories

    directory  rsaref
     

    Files

    file  alg_st.h [code]
     
    file  base64.h [code]
     
    file  cert_info.h [code]
     
    file  cert_st.h [code]
     
    file  cert_vfy.h [code]
     Several routines to:
     
    file  debug.h [code]
     
    file  error.h [code]
     
    file  NSPRerrs.h [code]
     
    file  pam-pkcs11-ossl-compat.h [code]
     
    file  pkcs11_lib.h [code]
     
    file  SECerrs.h [code]
     
    file  secutil.h [code]
     
    file  SSLerrs.h [code]
     
    file  strings.h [code]
     
    file  strndup.h [code]
     
    file  uri.h [code]
     This module contains several functions to retrieve data from an URL.
     
    pam_pkcs11-0.6.12/doc/api/functions_vars_i.html0000644000175000017500000000503514367517110016247 00000000000000 pam_pkcs11: Data Fields - Variables
    pam_pkcs11 0.6.12
     

    - i -

    pam_pkcs11-0.6.12/doc/api/debug_8h_source.html0000644000175000017500000004227314367517110015746 00000000000000 pam_pkcs11: debug.h Source File
    pam_pkcs11 0.6.12
    debug.h
    Go to the documentation of this file.
    1/*
    2 * PKCS #11 PAM Login Module
    3 * Copyright (C) 2003 Mario Strasser <mast@gmx.net>,
    4 *
    5 * This library is free software; you can redistribute it and/or
    6 * modify it under the terms of the GNU Lesser General Public
    7 * License as published by the Free Software Foundation; either
    8 * version 2.1 of the License, or (at your option) any later version.
    9 *
    10 * This library is distributed in the hope that it will be useful,
    11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    13 * Lesser General Public License for more details.
    14 *
    15 * $Id$
    16 */
    17
    24#ifndef __DEBUG_H_
    25#define __DEBUG_H_
    26
    27#ifdef HAVE_CONFIG_H
    28#include <config.h>
    29#endif
    30
    31#ifndef DEBUG
    32
    33#warning "Debugging is completely disabled!"
    34#define DBG
    35#define DBG1
    36#define DBG2
    37#define DBG3
    38#define DBG4
    39#define DBG5
    40
    41#define ERR
    42#define ERR1
    43#define ERR2
    44#define ERR3
    45#define ERR4
    46#define ERR5
    47
    48#else
    49
    50/*
    51#define DBG(f, ...) debug_print(1, __FILE__, __LINE__, f, ## __VA_ARGS__)
    52*/
    53/* this syntax is redundant in GCC, just used to avoid warns in -pedantic */
    54#define DBG(f) debug_print(1, __FILE__, __LINE__, f )
    55#define DBG1(f,a) debug_print(1, __FILE__, __LINE__, f , a )
    56#define DBG2(f,a,b) debug_print(1, __FILE__, __LINE__, f , a , b )
    57#define DBG3(f,a,b,c) debug_print(1, __FILE__, __LINE__, f , a , b , c )
    58#define DBG4(f,a,b,c,d) debug_print(1, __FILE__, __LINE__, f , a , b , c , d )
    59#define DBG5(f,a,b,c,d,e) debug_print(1, __FILE__, __LINE__, f , a , b , c , d , e )
    60
    61#define ERR(f) debug_print(-1, __FILE__, __LINE__, f )
    62#define ERR1(f,a) debug_print(-1, __FILE__, __LINE__, f , a )
    63#define ERR2(f,a,b) debug_print(-1, __FILE__, __LINE__, f , a , b )
    64#define ERR3(f,a,b,c) debug_print(-1, __FILE__, __LINE__, f , a , b , c )
    65#define ERR4(f,a,b,c,d) debug_print(-1, __FILE__, __LINE__, f , a , b , c , d )
    66#define ERR5(f,a,b,c,d,e) debug_print(-1, __FILE__, __LINE__, f , a , b , c , d , e )
    67
    68#ifndef __DEBUG_C_
    69#define DEBUG_EXTERN extern
    70#else
    71#define DEBUG_EXTERN
    72#endif
    73
    79
    85
    98DEBUG_EXTERN void debug_print(int level, const char *file, int line, const char *format, ...)
    99#if defined __GNUC__
    100 __attribute__((format(printf, 4, 5)))
    101#endif
    102 ;
    103
    104#undef DEBUG_EXTERN
    105
    106#endif /* DEBUG */
    107
    108#endif /* __DEBUG_H_ */
    DEBUG_EXTERN int get_debug_level(void)
    get_debug_level() Returns the current debug level.
    DEBUG_EXTERN void debug_print(int level, const char *file, int line, const char *format,...)
    debug_print() prints the given message
    DEBUG_EXTERN void set_debug_level(int level)
    set_debug_level() Sets the current debug level.
    #define DEBUG_EXTERN
    Definition: debug.h:69
    pam_pkcs11-0.6.12/doc/api/globals.html0000644000175000017500000000534114367517110014317 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:

    - _ -

    pam_pkcs11-0.6.12/doc/api/globals_func_u.html0000644000175000017500000000414614367517110015660 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - u -

    pam_pkcs11-0.6.12/doc/api/structconfiguration__st.html0000644000175000017500000005503114367517110017656 00000000000000 pam_pkcs11: configuration_st Struct Reference
    pam_pkcs11 0.6.12
    configuration_st Struct Reference

    #include <pam_config.h>

    Data Fields

    const char * config_file
     
    scconf_contextctx
     
    int debug
     
    int nullok
     
    int try_first_pass
     
    int use_first_pass
     
    int use_authok
     
    int card_only
     
    int wait_for_card
     
    const char * pkcs11_module
     
    const char * pkcs11_modulepath
     
    const char ** screen_savers
     
    const char * slot_description
     
    int slot_num
     
    int support_threads
     
    cert_policy policy
     
    const char * token_type
     
    const char * username
     
    int quiet
     
    int err_display_time
     

    Detailed Description

    Definition at line 28 of file pam_config.h.

    Field Documentation

    ◆ card_only

    int card_only

    Definition at line 36 of file pam_config.h.

    ◆ config_file

    const char* config_file

    Definition at line 29 of file pam_config.h.

    ◆ ctx

    Definition at line 30 of file pam_config.h.

    ◆ debug

    int debug

    Definition at line 31 of file pam_config.h.

    ◆ err_display_time

    int err_display_time

    Definition at line 48 of file pam_config.h.

    ◆ nullok

    int nullok

    Definition at line 32 of file pam_config.h.

    ◆ pkcs11_module

    const char* pkcs11_module

    Definition at line 38 of file pam_config.h.

    ◆ pkcs11_modulepath

    const char* pkcs11_modulepath

    Definition at line 39 of file pam_config.h.

    ◆ policy

    cert_policy policy

    Definition at line 44 of file pam_config.h.

    ◆ quiet

    int quiet

    Definition at line 47 of file pam_config.h.

    ◆ screen_savers

    const char** screen_savers

    Definition at line 40 of file pam_config.h.

    ◆ slot_description

    const char* slot_description

    Definition at line 41 of file pam_config.h.

    ◆ slot_num

    int slot_num

    Definition at line 42 of file pam_config.h.

    ◆ support_threads

    int support_threads

    Definition at line 43 of file pam_config.h.

    ◆ token_type

    const char* token_type

    Definition at line 45 of file pam_config.h.

    ◆ try_first_pass

    int try_first_pass

    Definition at line 33 of file pam_config.h.

    ◆ use_authok

    int use_authok

    Definition at line 35 of file pam_config.h.

    ◆ use_first_pass

    int use_first_pass

    Definition at line 34 of file pam_config.h.

    ◆ username

    const char* username

    Definition at line 46 of file pam_config.h.

    ◆ wait_for_card

    int wait_for_card

    Definition at line 37 of file pam_config.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/globals_func_o.html0000644000175000017500000000375214367517110015654 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - o -

    pam_pkcs11-0.6.12/doc/api/globals_defs_s.html0000644000175000017500000001034414367517110015641 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - s -

    pam_pkcs11-0.6.12/doc/api/functions_m.html0000644000175000017500000000767414367517110015233 00000000000000 pam_pkcs11: Data Fields
    pam_pkcs11 0.6.12
    Here is a list of all struct and union fields with links to the structures/unions they belong to:

    - m -

    pam_pkcs11-0.6.12/doc/api/doxygen.svg0000644000175000017500000003602614367517110014210 00000000000000 pam_pkcs11-0.6.12/doc/api/globals_defs_n.html0000644000175000017500000000526114367517110015636 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - n -

    pam_pkcs11-0.6.12/doc/api/tab_s.png0000644000175000017500000000027014367517110013600 00000000000000PNG  IHDR$[IDATx݁ @@ѣ?Q"%If6[HQ<]dr s?O=w'F -~rÍ[芭m֬ݯнF)Y% `n,9B!ь\<#IENDB`pam_pkcs11-0.6.12/doc/api/globals_defs_e.html0000644000175000017500000001031414367517110015620 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - e -

    pam_pkcs11-0.6.12/doc/api/globals_s.html0000644000175000017500000004516314367517110014647 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:

    - s -

    pam_pkcs11-0.6.12/doc/api/globals_l.html0000644000175000017500000000474114367517110014635 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:

    - l -

    pam_pkcs11-0.6.12/doc/api/functions_s.html0000644000175000017500000000746014367517110015232 00000000000000 pam_pkcs11: Data Fields
    pam_pkcs11 0.6.12
    Here is a list of all struct and union fields with links to the structures/unions they belong to:

    - s -

    pam_pkcs11-0.6.12/doc/api/globals_func_s.html0000644000175000017500000003566014367517110015663 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - s -

    pam_pkcs11-0.6.12/doc/api/ms__mapper_8h_source.html0000644000175000017500000002353214367517110016777 00000000000000 pam_pkcs11: ms_mapper.h Source File
    pam_pkcs11 0.6.12
    ms_mapper.h
    Go to the documentation of this file.
    1/*
    2 * PAM-PKCS11 mapping modules
    3 * Copyright (C) 2005 Juan Antonio Martinez <jonsito@teleline.es>
    4 * pam-pkcs11 is copyright (C) 2003-2004 of Mario Strasser <mast@gmx.net>
    5 *
    6 * This library is free software; you can redistribute it and/or
    7 * modify it under the terms of the GNU Lesser General Public
    8 * License as published by the Free Software Foundation; either
    9 * version 2.1 of the License, or (at your option) any later version.
    10 *
    11 * This library is distributed in the hope that it will be useful,
    12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14 * Lesser General Public License for more details.
    15 *
    16 * You should have received a copy of the GNU Lesser General Public
    17 * License along with this library; if not, write to the Free Software
    18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    19 *
    20 * $Id$
    21 */
    22
    23#ifndef __MS_MAPPER_H_
    24#define __MS_MAPPER_H_
    25
    26#ifdef HAVE_CONFIG_H
    27#include <config.h>
    28#endif
    29
    30#include "../scconf/scconf.h"
    31#include "mapper.h"
    32
    33#ifdef MS_MAPPER_STATIC
    34
    35#ifndef __MS_MAPPER_C_
    36#define MS_EXTERN extern
    37#else
    38#define MS_EXTERN
    39#endif
    40MS_EXTERN mapper_module * ms_mapper_module_init(scconf_block *blk,const char *mapper_name);
    41#undef MS_EXTERN
    42
    43/* end of static (if any) declarations */
    44#endif
    45
    46/* End of ms_mapper.h */
    47#endif
    Structure to be filled on mapper module initialization.
    Definition: mapper.h:40
    pam_pkcs11-0.6.12/doc/api/globals_defs_m.html0000644000175000017500000000411414367517110015631 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - m -

    pam_pkcs11-0.6.12/doc/api/mapper_8h_source.html0000644000175000017500000011714014367517110016140 00000000000000 pam_pkcs11: mapper.h Source File
    pam_pkcs11 0.6.12
    mapper.h
    Go to the documentation of this file.
    1/*
    2 * PAM-PKCS11 mapping modules
    3 * Copyright (C) 2005 Juan Antonio Martinez <jonsito@teleline.es>
    4 * pam-pkcs11 is copyright (C) 2003-2004 of Mario Strasser <mast@gmx.net>
    5 *
    6 * This library is free software; you can redistribute it and/or
    7 * modify it under the terms of the GNU Lesser General Public
    8 * License as published by the Free Software Foundation; either
    9 * version 2.1 of the License, or (at your option) any later version.
    10 *
    11 * This library is distributed in the hope that it will be useful,
    12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14 * Lesser General Public License for more details.
    15 *
    16 * You should have received a copy of the GNU Lesser General Public
    17 * License along with this library; if not, write to the Free Software
    18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    19 *
    20 * $Id$
    21 */
    22
    23#ifndef __MAPPER_H_
    24#define __MAPPER_H_
    25
    26#ifdef HAVE_CONFIG_H
    27#include <config.h>
    28#endif
    29
    30#include <sys/types.h>
    31#include <stdlib.h>
    32#include <string.h>
    33#include <pwd.h>
    34#include <../common/cert_st.h>
    35#include "../scconf/scconf.h"
    36
    40typedef struct mapper_module_st {
    42 const char *name;
    48 void *context;
    50 char **(*entries)(X509 *x509, void *context);
    52 char *(*finder)(X509 *x509, void *context, int *match);
    54 int (*matcher)(X509 *x509, const char *login, void *context);
    56 void (*deinit)( void *context);
    58
    63struct mapfile {
    65 const char *uri;
    67 char *buffer;
    69 size_t length;
    71 char *pt;
    73 char *key;
    75 char *value;
    76};
    77
    78/* ------------------------------------------------------- */
    79
    88mapper_module * mapper_module_init(scconf_block *ctx,const char *mapper_name);
    89
    90/* ------------------------------------------------------- */
    91
    92/*
    93* mapper.c prototype functions
    94*/
    95#ifndef __MAPPER_C_
    96#define MAPPER_EXTERN extern
    97#else
    98#define MAPPER_EXTERN
    99#endif
    100
    101/* mapfile related functions */
    102
    108MAPPER_EXTERN struct mapfile *set_mapent(const char *uri);
    109
    116
    121MAPPER_EXTERN void end_mapent(struct mapfile *mfile);
    122
    131MAPPER_EXTERN char *mapfile_find(const char *file,char *key,int ignorecase,int *match);
    132
    141MAPPER_EXTERN int mapfile_match(const char *file,char *key,const char *value,int ignorecase);
    142
    143/* pwent related functions */
    144
    151MAPPER_EXTERN char *search_pw_entry(const char *item, int ignorecase);
    152
    160MAPPER_EXTERN int compare_pw_entry(const char *item, struct passwd *pw,int ignorecase);
    161
    162#undef MAPPER_EXTERN
    163
    164/* ------------------------------------------------------- */
    165
    174#define _DEFAULT_MAPPER_FIND_ENTRIES \
    175static char ** mapper_find_entries(X509 *x509, void *context) { \
    176 return NULL; \
    177}
    178
    187#define _DEFAULT_MAPPER_FIND_USER \
    188static char * mapper_find_user(X509 *x509,void *context,int *match) { \
    189 if ( !x509 ) return NULL; \
    190 *match = 1; \
    191 return "nobody"; \
    192}
    193
    204#define _DEFAULT_MAPPER_MATCH_USER \
    205static int mapper_match_user(X509 *x509, const char *login, void *context) { \
    206 int match = 0; \
    207 char *username= mapper_find_user(x509,context,&match); \
    208 if (!x509) return -1; \
    209 if (!login) return -1; \
    210 if (!username) return 0; /*user not found*/ \
    211 if ( ! strcmp(login,username) ) return 1; /* match user */ \
    212 return 0; /* no match */ \
    213}
    214
    219#define _DEFAULT_MAPPER_END \
    220static void mapper_module_end(void *context) { \
    221 free(context); \
    222 return; \
    223} \
    224
    232#define _DEFAULT_MAPPER_INIT \
    233mapper_module* mapper_module_init(scconf_block *blk,const char *name) { \
    234 mapper_module *pt= malloc(sizeof (mapper_module)); \
    235 if (!pt) return NULL; \
    236 pt->name = name; \
    237 pt->context = NULL; \
    238 pt->block = blk; \
    239 pt->dbg_level = get_debug_level(); \
    240 pt->entries = mapper_find_entries; \
    241 pt->finder = mapper_find_user; \
    242 pt->matcher = mapper_match_user; \
    243 pt->deinit = mapper_module_end; \
    244 return pt; \
    245} \
    246
    247/* end of mapper.h file */
    248#endif
    #define MAPPER_EXTERN
    Definition: mapper.h:96
    MAPPER_EXTERN int get_mapent(struct mapfile *mfile)
    Retrieve next entry of given map file.
    MAPPER_EXTERN char * search_pw_entry(const char *item, int ignorecase)
    find the user login that matches pw_name or pw_gecos with provided item
    MAPPER_EXTERN int compare_pw_entry(const char *item, struct passwd *pw, int ignorecase)
    Test if provided item matches pw_name or pw_gecos of provided password structure.
    MAPPER_EXTERN struct mapfile * set_mapent(const char *uri)
    Initialize a mapper entry table.
    MAPPER_EXTERN int mapfile_match(const char *file, char *key, const char *value, int ignorecase)
    Try to match provided key to provided name by mean of a mapfile.
    mapper_module * mapper_module_init(scconf_block *ctx, const char *mapper_name)
    Initialize module and mapper_module_st structure.
    struct mapper_module_st mapper_module
    Structure to be filled on mapper module initialization.
    MAPPER_EXTERN void end_mapent(struct mapfile *mfile)
    Release a mapentry structure.
    MAPPER_EXTERN char * mapfile_find(const char *file, char *key, int ignorecase, int *match)
    Try to map "key" to provided mapfile.
    This struct is used in processing map files a map file is a list of "key" " -> " "value" text lines.
    Definition: mapper.h:63
    char * value
    value assigned to key
    Definition: mapper.h:75
    char * key
    key entry in current buffer
    Definition: mapper.h:73
    const char * uri
    URL of mapfile.
    Definition: mapper.h:65
    char * pt
    pointer to last readed entry in buffer
    Definition: mapper.h:71
    size_t length
    lenght of buffer
    Definition: mapper.h:69
    char * buffer
    buffer to content of mapfile
    Definition: mapper.h:67
    Structure to be filled on mapper module initialization.
    Definition: mapper.h:40
    void(* deinit)(void *context)
    module de-initialization
    Definition: mapper.h:56
    int(* matcher)(X509 *x509, const char *login, void *context)
    cert-to-login matcher
    Definition: mapper.h:54
    const char * name
    mapper name
    Definition: mapper.h:42
    int dbg_level
    debug level to set before call entry points
    Definition: mapper.h:46
    scconf_block * block
    mapper configuration block
    Definition: mapper.h:44
    void * context
    pointer to mapper local data
    Definition: mapper.h:48
    pam_pkcs11-0.6.12/doc/api/globals_p.html0000644000175000017500000000634214367517110014640 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:

    - p -

    pam_pkcs11-0.6.12/doc/api/krb__mapper_8h_source.html0000644000175000017500000002354714367517110017144 00000000000000 pam_pkcs11: krb_mapper.h Source File
    pam_pkcs11 0.6.12
    krb_mapper.h
    Go to the documentation of this file.
    1/*
    2 * PAM-PKCS11 mapping modules
    3 * Copyright (C) 2005 Juan Antonio Martinez <jonsito@teleline.es>
    4 * pam-pkcs11 is copyright (C) 2003-2004 of Mario Strasser <mast@gmx.net>
    5 *
    6 * This library is free software; you can redistribute it and/or
    7 * modify it under the terms of the GNU Lesser General Public
    8 * License as published by the Free Software Foundation; either
    9 * version 2.1 of the License, or (at your option) any later version.
    10 *
    11 * This library is distributed in the hope that it will be useful,
    12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14 * Lesser General Public License for more details.
    15 *
    16 * You should have received a copy of the GNU Lesser General Public
    17 * License along with this library; if not, write to the Free Software
    18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    19 *
    20 * $Id$
    21 */
    22
    23#ifndef __KRB_MAPPER_H_
    24#define __KRB_MAPPER_H_
    25
    26#ifdef HAVE_CONFIG_H
    27#include <config.h>
    28#endif
    29
    30#include "../scconf/scconf.h"
    31#include "mapper.h"
    32
    33#ifdef KRB_MAPPER_STATIC
    34
    35#ifndef __KRB_MAPPER_C_
    36#define KRB_EXTERN extern
    37#else
    38#define KRB_EXTERN
    39#endif
    40KRB_EXTERN mapper_module * krb_mapper_module_init(scconf_block *blk,const char *mapper_name);
    41#undef KRB_EXTERN
    42
    43/* end of static (if any) declarations */
    44#endif
    45
    46/* End of krb_mapper.h */
    47#endif
    Structure to be filled on mapper module initialization.
    Definition: mapper.h:40
    pam_pkcs11-0.6.12/doc/api/globals_defs_o.html0000644000175000017500000000377714367517110015651 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - o -

    pam_pkcs11-0.6.12/doc/api/scconf_8h_source.html0000644000175000017500000021125114367517110016125 00000000000000 pam_pkcs11: scconf.h Source File
    pam_pkcs11 0.6.12
    scconf.h
    Go to the documentation of this file.
    1/*
    2 * $Id$
    3 *
    4 * Copyright (C) 2002
    5 * Antti Tapaninen <aet@cc.hut.fi>
    6 *
    7 * Originally based on source by Timo Sirainen <tss@iki.fi>
    8 *
    9 * This library is free software; you can redistribute it and/or
    10 * modify it under the terms of the GNU Lesser General Public
    11 * License as published by the Free Software Foundation; either
    12 * version 2.1 of the License, or (at your option) any later version.
    13 *
    14 * This library is distributed in the hope that it will be useful,
    15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    17 * Lesser General Public License for more details.
    18 *
    19 * You should have received a copy of the GNU Lesser General Public
    20 * License along with this library; if not, write to the Free Software
    21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    22 */
    23
    24#ifndef _SC_CONF_H
    25#define _SC_CONF_H
    26
    27#ifdef __cplusplus
    28extern "C" {
    29#endif
    30
    31typedef struct _scconf_entry {
    32 const char *name;
    33 unsigned int type;
    34 unsigned int flags;
    35 void *parm;
    36 void *arg;
    38
    39/* Entry flags */
    40#define SCCONF_PRESENT 0x00000001
    41#define SCCONF_MANDATORY 0x00000002
    42#define SCCONF_ALLOC 0x00000004
    43#define SCCONF_ALL_BLOCKS 0x00000008
    44#define SCCONF_VERBOSE 0x00000010 /* For debugging purposes only */
    45
    46/* Entry types */
    47#define SCCONF_CALLBACK 1
    48#define SCCONF_BLOCK 2
    49#define SCCONF_LIST 3
    50
    51#define SCCONF_BOOLEAN 11
    52#define SCCONF_INTEGER 12
    53#define SCCONF_STRING 13
    54
    56
    57typedef struct _scconf_list {
    59 char *data;
    61
    62#define SCCONF_ITEM_TYPE_COMMENT 0 /* key = NULL, comment */
    63#define SCCONF_ITEM_TYPE_BLOCK 1 /* key = key, block */
    64#define SCCONF_ITEM_TYPE_VALUE 2 /* key = key, list */
    65
    66typedef struct _scconf_item {
    68 int type;
    69 char *key;
    70 union {
    71 char *comment;
    76
    81};
    82
    83typedef struct {
    84 char *filename;
    85 int debug;
    87 char *errmsg;
    89
    90/* Allocate scconf_context
    91 * The filename can be NULL
    92 */
    93extern scconf_context *scconf_new(const char *filename);
    94
    95/* Free scconf_context
    96 */
    97extern void scconf_free(scconf_context * config);
    98
    99/* Parse configuration
    100 * Returns 1 = ok, 0 = error, -1 = error opening config file
    101 */
    102extern int scconf_parse(scconf_context * config);
    103
    104/* Parse a static configuration string
    105 * Returns 1 = ok, 0 = error
    106 */
    107extern int scconf_parse_string(scconf_context * config, const char *string);
    108
    109/* Parse entries
    110 */
    111extern int scconf_parse_entries(const scconf_context * config, const scconf_block * block, scconf_entry * entry);
    112
    113/* Write config to a file
    114 * If the filename is NULL, use the config->filename
    115 * Returns 0 = ok, else = errno
    116 */
    117extern int scconf_write(scconf_context * config, const char *filename);
    118
    119/* Write configuration entries to block
    120 */
    121extern int scconf_write_entries(scconf_context * config, scconf_block * block, scconf_entry * entry);
    122
    123/* Find a block by the item_name
    124 * If the block is NULL, the root block is used
    125 */
    126extern const scconf_block *scconf_find_block(const scconf_context * config, const scconf_block * block, const char *item_name);
    127
    128/* Find blocks by the item_name
    129 * If the block is NULL, the root block is used
    130 * The key can be used to specify what the blocks first name should be
    131 */
    132extern scconf_block **scconf_find_blocks(const scconf_context * config, const scconf_block * block, const char *item_name, const char *key);
    133
    134/* Get a list of values for option
    135 */
    136extern const scconf_list *scconf_find_list(const scconf_block * block, const char *option);
    137
    138/* Return the first string of the option
    139 * If no option found, return def
    140 */
    141extern const char *scconf_get_str(const scconf_block * block, const char *option, const char *def);
    142
    143/* Return the first value of the option as integer
    144 * If no option found, return def
    145 */
    146extern int scconf_get_int(const scconf_block * block, const char *option, int def);
    147
    148/* Return the first value of the option as boolean
    149 * If no option found, return def
    150 */
    151extern int scconf_get_bool(const scconf_block * block, const char *option, int def);
    152
    153/* Write value to a block as a string
    154 */
    155extern const char *scconf_put_str(scconf_block * block, const char *option, const char *value);
    156
    157/* Write value to a block as an integer
    158 */
    159extern int scconf_put_int(scconf_block * block, const char *option, int value);
    160
    161/* Write value to a block as a boolean
    162 */
    163extern int scconf_put_bool(scconf_block * block, const char *option, int value);
    164
    165/* Add block structure
    166 * If the block is NULL, the root block is used
    167 */
    168extern scconf_block *scconf_block_add(scconf_context * config, scconf_block * block, const char *key, const scconf_list *name);
    169
    170/* Copy block structure (recursive)
    171 */
    173
    174/* Free block structure (recursive)
    175 */
    177
    178/* Add item to block structure
    179 * If the block is NULL, the root block is used
    180 */
    181extern scconf_item *scconf_item_add(scconf_context * config, scconf_block * block, scconf_item * item, int type, const char *key, const void *data);
    182
    183/* Copy item structure (recursive)
    184 */
    186
    187/* Free item structure (recursive)
    188 */
    190
    191/* Add a new value to the list
    192 */
    193extern scconf_list *scconf_list_add(scconf_list ** list, const char *value);
    194
    195/* Copy list structure
    196 */
    198
    199/* Free list structure
    200 */
    202
    203/* Return the length of an list array
    204 */
    205extern int scconf_list_array_length(const scconf_list * list);
    206
    207/* Return the combined length of the strings on all arrays
    208 */
    210
    211/* Return an allocated string that contains all
    212 * the strings in a list separated by the filler
    213 * The filler can be NULL
    214 */
    215extern char *scconf_list_strdup(const scconf_list * list, const char *filler);
    216
    217/* Returns an allocated array of const char *pointers to
    218 * list elements.
    219 * Last pointer is NULL
    220 * Array must be freed, but pointers to strings belong to scconf_list
    221 */
    222extern const char **scconf_list_toarray(const scconf_list * list);
    223
    224#ifdef __cplusplus
    225}
    226#endif
    227#endif
    scconf_block ** scconf_find_blocks(const scconf_context *config, const scconf_block *block, const char *item_name, const char *key)
    int scconf_write_entries(scconf_context *config, scconf_block *block, scconf_entry *entry)
    int scconf_write(scconf_context *config, const char *filename)
    const char * scconf_get_str(const scconf_block *block, const char *option, const char *def)
    struct _scconf_list scconf_list
    char * scconf_list_strdup(const scconf_list *list, const char *filler)
    scconf_block * scconf_block_add(scconf_context *config, scconf_block *block, const char *key, const scconf_list *name)
    struct _scconf_entry scconf_entry
    const scconf_block * scconf_find_block(const scconf_context *config, const scconf_block *block, const char *item_name)
    const char * scconf_put_str(scconf_block *block, const char *option, const char *value)
    void scconf_item_destroy(scconf_item *item)
    const scconf_list * scconf_find_list(const scconf_block *block, const char *option)
    scconf_item * scconf_item_copy(const scconf_item *src, scconf_item **dst)
    void scconf_block_destroy(scconf_block *block)
    scconf_context * scconf_new(const char *filename)
    int scconf_list_array_length(const scconf_list *list)
    void scconf_free(scconf_context *config)
    const char ** scconf_list_toarray(const scconf_list *list)
    int scconf_put_bool(scconf_block *block, const char *option, int value)
    int scconf_parse_string(scconf_context *config, const char *string)
    scconf_block * scconf_block_copy(const scconf_block *src, scconf_block **dst)
    int scconf_put_int(scconf_block *block, const char *option, int value)
    scconf_list * scconf_list_add(scconf_list **list, const char *value)
    scconf_item * scconf_item_add(scconf_context *config, scconf_block *block, scconf_item *item, int type, const char *key, const void *data)
    void scconf_list_destroy(scconf_list *list)
    int scconf_get_bool(const scconf_block *block, const char *option, int def)
    struct _scconf_item scconf_item
    int scconf_list_strings_length(const scconf_list *list)
    scconf_list * scconf_list_copy(const scconf_list *src, scconf_list **dst)
    int scconf_get_int(const scconf_block *block, const char *option, int def)
    int scconf_parse_entries(const scconf_context *config, const scconf_block *block, scconf_entry *entry)
    int scconf_parse(scconf_context *config)
    scconf_list * name
    Definition: scconf.h:79
    scconf_block * parent
    Definition: scconf.h:78
    scconf_item * items
    Definition: scconf.h:80
    Definition: scconf.h:31
    void * parm
    Definition: scconf.h:35
    unsigned int type
    Definition: scconf.h:33
    const char * name
    Definition: scconf.h:32
    void * arg
    Definition: scconf.h:36
    unsigned int flags
    Definition: scconf.h:34
    char * comment
    Definition: scconf.h:71
    union _scconf_item::@1 value
    char * key
    Definition: scconf.h:69
    scconf_list * list
    Definition: scconf.h:73
    scconf_block * block
    Definition: scconf.h:72
    int type
    Definition: scconf.h:68
    struct _scconf_item * next
    Definition: scconf.h:67
    struct _scconf_list * next
    Definition: scconf.h:58
    char * data
    Definition: scconf.h:59
    char * errmsg
    Definition: scconf.h:87
    scconf_block * root
    Definition: scconf.h:86
    char * filename
    Definition: scconf.h:84
    pam_pkcs11-0.6.12/doc/api/dynsections.js0000644000175000017500000001130214367517110014700 00000000000000/* @licstart The following is the entire license notice for the JavaScript code in this file. The MIT License (MIT) Copyright (C) 1997-2020 by Dimitri van Heesch Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @licend The above is the entire license notice for the JavaScript code in this file */ function toggleVisibility(linkObj) { var base = $(linkObj).attr('id'); var summary = $('#'+base+'-summary'); var content = $('#'+base+'-content'); var trigger = $('#'+base+'-trigger'); var src=$(trigger).attr('src'); if (content.is(':visible')===true) { content.hide(); summary.show(); $(linkObj).addClass('closed').removeClass('opened'); $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); } else { content.show(); summary.hide(); $(linkObj).removeClass('closed').addClass('opened'); $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); } return false; } function updateStripes() { $('table.directory tr'). removeClass('even').filter(':visible:even').addClass('even'); } function toggleLevel(level) { $('table.directory tr').each(function() { var l = this.id.split('_').length-1; var i = $('#img'+this.id.substring(3)); var a = $('#arr'+this.id.substring(3)); if (l pam_pkcs11: strings.h Source File
    pam_pkcs11 0.6.12
    strings.h
    Go to the documentation of this file.
    1/*
    2 * PAM-PKCS11 string tools
    3 * Copyright (C) 2005 Juan Antonio Martinez <jonsito@teleline.es>
    4 * pam-pkcs11 is copyright (C) 2003-2004 of Mario Strasser <mast@gmx.net>
    5 *
    6 * This library is free software; you can redistribute it and/or
    7 * modify it under the terms of the GNU Lesser General Public
    8 * License as published by the Free Software Foundation; either
    9 * version 2.1 of the License, or (at your option) any later version.
    10 *
    11 * This library is distributed in the hope that it will be useful,
    12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14 * Lesser General Public License for more details.
    15 *
    16 * You should have received a copy of the GNU Lesser General Public
    17 * License along with this library; if not, write to the Free Software
    18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    19 *
    20 * $Id$
    21 */
    22
    23#ifndef __STRINGS_H_
    24#define __STRINGS_H_
    25
    26#ifdef HAVE_CONFIG_H
    27#include <config.h>
    28#endif
    29
    30#include <stdlib.h>
    31#include <string.h>
    32
    36#ifndef _STRINGS_C_
    37#define M_EXTERN extern
    38#else
    39#define M_EXTERN
    40#endif
    41
    47M_EXTERN int is_empty_str(const char *str);
    48
    54M_EXTERN char *clone_str(const char *str);
    55
    61M_EXTERN char *toupper_str(const char *str);
    62
    68M_EXTERN char *tolower_str(const char *str);
    69
    76M_EXTERN char *bin2hex(const unsigned char *binstr,const int len);
    77
    83M_EXTERN unsigned char *hex2bin(const char *hexstr);
    84
    93M_EXTERN unsigned char *hex2bin_static(const char *hexstr,unsigned char **res,int *size);
    94
    104M_EXTERN char **split(const char *str,char sep, int nelems);
    105
    117M_EXTERN char **split_static(const char *str,char sep, int nelems,char *dst);
    118
    126M_EXTERN char *trim(const char *str);
    127
    128#undef M_EXTERN
    129
    130#endif
    M_EXTERN char * tolower_str(const char *str)
    Duplicate a string converting all chars to lower-case.
    M_EXTERN unsigned char * hex2bin_static(const char *hexstr, unsigned char **res, int *size)
    Convert a colon-separated hexadecimal data into a byte array, store result into a previously allocate...
    M_EXTERN char * clone_str(const char *str)
    Duplicate a string.
    M_EXTERN char ** split_static(const char *str, char sep, int nelems, char *dst)
    Splits a string to an array of nelems by using sep as character separator, using dest as pre-allocate...
    M_EXTERN int is_empty_str(const char *str)
    Check for a null or spaced string.
    M_EXTERN char * bin2hex(const unsigned char *binstr, const int len)
    Convert a byte array into a colon-separated hexadecimal sequence.
    M_EXTERN unsigned char * hex2bin(const char *hexstr)
    Convert a colon-separated hexadecimal data into a byte array.
    M_EXTERN char ** split(const char *str, char sep, int nelems)
    Splits a string to an array of nelems by using sep as character separator.
    M_EXTERN char * toupper_str(const char *str)
    Duplicate a string converting all chars to upper-case.
    M_EXTERN char * trim(const char *str)
    Remove all extra spaces from a string.
    #define M_EXTERN
    String management library.
    Definition: strings.h:37
    pam_pkcs11-0.6.12/doc/api/globals_func_i.html0000644000175000017500000000523214367517110015641 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - i -

    pam_pkcs11-0.6.12/doc/api/functions_q.html0000644000175000017500000000414314367517110015223 00000000000000 pam_pkcs11: Data Fields
    pam_pkcs11 0.6.12
    Here is a list of all struct and union fields with links to the structures/unions they belong to:

    - q -

    pam_pkcs11-0.6.12/doc/api/nav_f.png0000644000175000017500000000023114367517110013576 00000000000000PNG  IHDR8`IDATxK Eі[BmkHprӼ.ꎤR6Z VIE5jliIJ0/u޿6sH yIENDB`pam_pkcs11-0.6.12/doc/api/functions_vars_k.html0000644000175000017500000000527014367517110016252 00000000000000 pam_pkcs11: Data Fields - Variables
    pam_pkcs11 0.6.12
    pam_pkcs11-0.6.12/doc/api/cert__info_8h_source.html0000644000175000017500000004113714367517110016765 00000000000000 pam_pkcs11: cert_info.h Source File
    pam_pkcs11 0.6.12
    cert_info.h
    Go to the documentation of this file.
    1/*
    2 * PKCS #11 PAM Login Module
    3 * Copyright (C) 2003-2004 Mario Strasser <mast@gmx.net>
    4 * Copyright (C) 2005 Juan Antonio Martinez <jonsito@teleline.es>
    5 *
    6 * This library is free software; you can redistribute it and/or
    7 * modify it under the terms of the GNU Lesser General Public
    8 * License as published by the Free Software Foundation; either
    9 * version 2.1 of the License, or (at your option) any later version.
    10 *
    11 * This library is distributed in the hope that it will be useful,
    12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14 * Lesser General Public License for more details.
    15 *
    16 * $Id$
    17 */
    18
    19#ifndef __CERT_INFO_H_
    20#define __CERT_INFO_H_
    21
    22#include "cert_st.h"
    23
    25#define CERT_CN 1
    27#define CERT_SUBJECT 2
    29#define CERT_KPN 3
    31#define CERT_EMAIL 4
    33#define CERT_UPN 5
    35#define CERT_UID 6
    37#define CERT_PUK 7
    39#define CERT_DIGEST 8
    41#define CERT_SSHPUK 9
    43#define CERT_PEM 10
    45#define CERT_ISSUER 11
    47#define CERT_SERIAL 12
    49#define CERT_KEY_ALG 13
    50
    52#define CERT_INFO_SIZE 16
    54#define CERT_INFO_MAX_ENTRIES ( CERT_INFO_SIZE - 1 )
    55
    56#ifndef __CERT_INFO_C_
    57#define CERTINFO_EXTERN extern
    58#else
    59#define CERTINFO_EXTERN
    60#endif
    61
    68void add_cert(X509 *cert, X509 ***certs, int *ncerts);
    69
    77CERTINFO_EXTERN char **cert_info(X509 *x509, int type, ALGORITHM_TYPE algorithm);
    78
    79#undef CERTINFO_EXTERN
    80
    81#endif /* __CERT_INFO_H_ */
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information The CMS or PKCS Could not decode ASN data Specified template was invalid You are attempting to import a cert with the same issuer serial as an existing cert
    Definition: SECerrs.h:464
    void add_cert(X509 *cert, X509 ***certs, int *ncerts)
    Generate and compose a certificate chain.
    CERTINFO_EXTERN char ** cert_info(X509 *x509, int type, ALGORITHM_TYPE algorithm)
    Request info on certificate.
    #define CERTINFO_EXTERN
    Definition: cert_info.h:57
    const char * ALGORITHM_TYPE
    Definition: cert_st.h:38
    pam_pkcs11-0.6.12/doc/api/globals_defs_f.html0000644000175000017500000000372314367517110015627 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - f -

    pam_pkcs11-0.6.12/doc/api/globals_type.html0000644000175000017500000004401014367517110015354 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - a -

    - c -

    - e -

    - m -

    - p -

    - s -

    pam_pkcs11-0.6.12/doc/api/functions_eval.html0000644000175000017500000000466614367517110015724 00000000000000 pam_pkcs11: Data Fields - Enumerator
    pam_pkcs11 0.6.12
     
    pam_pkcs11-0.6.12/doc/api/globals_func.html0000644000175000017500000000434214367517110015332 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - a -

    pam_pkcs11-0.6.12/doc/api/globals_d.html0000644000175000017500000000655614367517110014633 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:

    - d -

    pam_pkcs11-0.6.12/doc/api/SECerrs_8h.html0000644000175000017500000233053714367517110014613 00000000000000 pam_pkcs11: SECerrs.h File Reference
    pam_pkcs11 0.6.12
    SECerrs.h File Reference

    Go to the source code of this file.

    Functions

     ER3 (SEC_ERROR_IO, SEC_ERROR_BASE+0, "An I/O error occurred during security authorization.") ER3(SEC_ERROR_LIBRARY_FAILURE
     
    security library failure ER3 (SEC_ERROR_BAD_DATA, SEC_ERROR_BASE+2, "security library: received bad data.") ER3(SEC_ERROR_OUTPUT_LEN
     
    security library failure security security library has experienced an input length error ER3 (SEC_ERROR_INVALID_ARGS, SEC_ERROR_BASE+5, "security library: invalid arguments.") ER3(SEC_ERROR_INVALID_ALGORITHM
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string ER3 (SEC_ERROR_BAD_DER, SEC_ERROR_BASE+9, "security library: improperly formatted DER-encoded message.") ER3(SEC_ERROR_BAD_SIGNATURE
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature ER3 (SEC_ERROR_EXPIRED_CERTIFICATE, SEC_ERROR_BASE+11, "Peer's Certificate has expired.") ER3(SEC_ERROR_REVOKED_CERTIFICATE
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked ER3 (SEC_ERROR_UNKNOWN_ISSUER, SEC_ERROR_BASE+13, "Peer's Certificate issuer is not recognized.") ER3(SEC_ERROR_BAD_KEY
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid ER3 (SEC_ERROR_BAD_PASSWORD, SEC_ERROR_BASE+15, "The security password entered is incorrect.") ER3(SEC_ERROR_RETRY_PASSWORD
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again ER3 (SEC_ERROR_NO_NODELOCK, SEC_ERROR_BASE+17, "security library: no nodelock.") ER3(SEC_ERROR_BAD_DATABASE
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user ER3 (SEC_ERROR_UNTRUSTED_CERT, SEC_ERROR_BASE+21, "Peer's certificate has been marked as not trusted by the user.") ER3(SEC_ERROR_DUPLICATE_CERT
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database ER3 (SEC_ERROR_DUPLICATE_CERT_NAME,(SEC_ERROR_BASE+23), "Downloaded certificate's name duplicates one already in your database.") ER3(SEC_ERROR_ADDING_CERT
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database ER3 (SEC_ERROR_FILING_KEY,(SEC_ERROR_BASE+25), "Error refiling the key for this certificate.") ER3(SEC_ERROR_NO_KEY
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database ER3 (SEC_ERROR_CERT_VALID,(SEC_ERROR_BASE+27), "This certificate is valid.") ER3(SEC_ERROR_CERT_NOT_VALID
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid ER3 (SEC_ERROR_CERT_NO_RESPONSE,(SEC_ERROR_BASE+29), "Cert Library: No Response") ER3(SEC_ERROR_EXPIRED_ISSUER_CERTIFICATE
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time ER3 (SEC_ERROR_CRL_EXPIRED,(SEC_ERROR_BASE+31), "The CRL for the certificate's issuer has expired. Update it or check your system data and time.") ER3(SEC_ERROR_CRL_BAD_SIGNATURE
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature ER3 (SEC_ERROR_CRL_INVALID,(SEC_ERROR_BASE+33), "New CRL has an invalid format.") ER3(SEC_ERROR_EXTENSION_VALUE_INVALID
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid ER3 (SEC_ERROR_EXTENSION_NOT_FOUND,(SEC_ERROR_BASE+35), "Certificate extension not found.") ER3(SEC_ERROR_CA_CERT_INVALID
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid ER3 (SEC_ERROR_PATH_LEN_CONSTRAINT_INVALID,(SEC_ERROR_BASE+37), "Certificate path length constraint is invalid.") ER3(SEC_ERROR_CERT_USAGES_INVALID
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid ER3 (SEC_INTERNAL_ONLY,(SEC_ERROR_BASE+39), "**Internal ONLY module**") ER3(SEC_ERROR_INVALID_KEY
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation ER3 (SEC_ERROR_UNKNOWN_CRITICAL_EXTENSION,(SEC_ERROR_BASE+41), "Certificate contains unknown critical extension.") ER3(SEC_ERROR_OLD_CRL
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one ER3 (SEC_ERROR_NO_EMAIL_CERT,(SEC_ERROR_BASE+43), "Not encrypted or signed: you do not yet have an email certificate.") ER3(SEC_ERROR_NO_RECIPIENT_CERTS_QUERY
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found ER3 (SEC_ERROR_PKCS7_KEYALG_MISMATCH,(SEC_ERROR_BASE+46), "Cannot decrypt: key encryption algorithm does not match your certificate.") ER3(SEC_ERROR_PKCS7_BAD_SIGNATURE
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data ER3 (SEC_ERROR_UNSUPPORTED_KEYALG,(SEC_ERROR_BASE+48), "Unsupported or unknown key algorithm.") ER3(SEC_ERROR_DECRYPTION_DISALLOWED
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer ER3 (XP_SEC_FORTEZZA_NO_CARD,(SEC_ERROR_BASE+51), "No Fortezza cards Found") ER3(XP_SEC_FORTEZZA_NONE_SELECTED
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected ER3 (XP_SEC_FORTEZZA_MORE_INFO,(SEC_ERROR_BASE+53), "Please select a personality to get more info on") ER3(XP_SEC_FORTEZZA_PERSON_NOT_FOUND
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found ER3 (XP_SEC_FORTEZZA_NO_MORE_INFO,(SEC_ERROR_BASE+55), "No more information on that Personality") ER3(XP_SEC_FORTEZZA_BAD_PIN
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin ER3 (XP_SEC_FORTEZZA_PERSON_ERROR,(SEC_ERROR_BASE+57), "Couldn't initialize Fortezza personalities.") ER3(SEC_ERROR_NO_KRL
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found ER3 (SEC_ERROR_KRL_EXPIRED,(SEC_ERROR_BASE+59), "The KRL for this site's certificate has expired.") ER3(SEC_ERROR_KRL_BAD_SIGNATURE
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature ER3 (SEC_ERROR_REVOKED_KEY,(SEC_ERROR_BASE+61), "The key for this site's certificate has been revoked.") ER3(SEC_ERROR_KRL_INVALID
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format ER3 (SEC_ERROR_NEED_RANDOM,(SEC_ERROR_BASE+63), "security library: need random data.") ER3(SEC_ERROR_NO_MODULE
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed ER3 (SEC_ERROR_READ_ONLY,(SEC_ERROR_BASE+66), "security library: read-only database.") ER3(SEC_ERROR_NO_SLOT_SELECTED
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected ER3 (SEC_ERROR_CERT_NICKNAME_COLLISION,(SEC_ERROR_BASE+68), "A certificate with the same nickname already exists.") ER3(SEC_ERROR_KEY_NICKNAME_COLLISION
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists ER3 (SEC_ERROR_SAFE_NOT_CREATED,(SEC_ERROR_BASE+70), "error while creating safe object") ER3(SEC_ERROR_BAGGAGE_NOT_CREATED
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object ER3 (XP_JAVA_REMOVE_PRINCIPAL_ERROR,(SEC_ERROR_BASE+72), "Couldn't remove the principal") ER3(XP_JAVA_DELETE_PRIVILEGE_ERROR
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege ER3 (XP_JAVA_CERT_NOT_EXISTS_ERROR,(SEC_ERROR_BASE+74), "This principal doesn't have a certificate") ER3(SEC_ERROR_BAD_EXPORT_ALGORITHM
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed ER3 (SEC_ERROR_EXPORTING_CERTIFICATES,(SEC_ERROR_BASE+76), "Error attempting to export certificates.") ER3(SEC_ERROR_IMPORTING_CERTIFICATES
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates ER3 (SEC_ERROR_PKCS12_DECODING_PFX,(SEC_ERROR_BASE+78), "Unable to import. Decoding error. File not valid.") ER3(SEC_ERROR_PKCS12_INVALID_MAC
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file ER3 (SEC_ERROR_PKCS12_UNSUPPORTED_MAC_ALGORITHM,(SEC_ERROR_BASE+80), "Unable to import. MAC algorithm not supported.") ER3(SEC_ERROR_PKCS12_UNSUPPORTED_TRANSPORT_MODE
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported ER3 (SEC_ERROR_PKCS12_CORRUPT_PFX_STRUCTURE,(SEC_ERROR_BASE+82), "Unable to import. File structure is corrupt.") ER3(SEC_ERROR_PKCS12_UNSUPPORTED_PBE_ALGORITHM
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported ER3 (SEC_ERROR_PKCS12_UNSUPPORTED_VERSION,(SEC_ERROR_BASE+84), "Unable to import. File version not supported.") ER3(SEC_ERROR_PKCS12_PRIVACY_PASSWORD_INCORRECT
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password ER3 (SEC_ERROR_PKCS12_CERT_COLLISION,(SEC_ERROR_BASE+86), "Unable to import. Same nickname already exists in database.") ER3(SEC_ERROR_USER_CANCELLED
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel ER3 (SEC_ERROR_PKCS12_DUPLICATE_DATA,(SEC_ERROR_BASE+88), "Not imported, already in database.") ER3(SEC_ERROR_MESSAGE_SEND_ABORTED
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent ER3 (SEC_ERROR_INADEQUATE_KEY_USAGE,(SEC_ERROR_BASE+90), "Certificate key usage inadequate for attempted operation.") ER3(SEC_ERROR_INADEQUATE_CERT_TYPE
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application ER3 (SEC_ERROR_CERT_ADDR_MISMATCH,(SEC_ERROR_BASE+92), "Address in signing certificate does not match address in message headers.") ER3(SEC_ERROR_PKCS12_UNABLE_TO_IMPORT_KEY
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key ER3 (SEC_ERROR_PKCS12_IMPORTING_CERT_CHAIN,(SEC_ERROR_BASE+94), "Unable to import. Error attempting to import certificate chain.") ER3(SEC_ERROR_PKCS12_UNABLE_TO_LOCATE_OBJECT_BY_NAME
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname ER3 (SEC_ERROR_PKCS12_UNABLE_TO_EXPORT_KEY,(SEC_ERROR_BASE+96), "Unable to export. Private Key could not be located and exported.") ER3(SEC_ERROR_PKCS12_UNABLE_TO_WRITE
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file ER3 (SEC_ERROR_PKCS12_UNABLE_TO_READ,(SEC_ERROR_BASE+98), "Unable to import. Unable to read the import file.") ER3(SEC_ERROR_PKCS12_KEY_DATABASE_NOT_INITIALIZED
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted ER3 (SEC_ERROR_KEYGEN_FAIL,(SEC_ERROR_BASE+100), "Unable to generate public/private key pair.") ER3(SEC_ERROR_INVALID_PASSWORD
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one ER3 (SEC_ERROR_RETRY_OLD_PASSWORD,(SEC_ERROR_BASE+102), "Old password entered incorrectly. Please try again.") ER3(SEC_ERROR_BAD_NICKNAME
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use ER3 (SEC_ERROR_NOT_FORTEZZA_ISSUER,(SEC_ERROR_BASE+104), "Peer FORTEZZA chain has a non-FORTEZZA Certificate.") ER3(SEC_ERROR_CANNOT_MOVE_SENSITIVE_KEY
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed ER3 (SEC_ERROR_JS_INVALID_MODULE_NAME,(SEC_ERROR_BASE+106), "Invalid module name.") ER3(SEC_ERROR_JS_INVALID_DLL
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename ER3 (SEC_ERROR_JS_ADD_MOD_FAILURE,(SEC_ERROR_BASE+108), "Unable to add module") ER3(SEC_ERROR_JS_DEL_MOD_FAILURE
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module ER3 (SEC_ERROR_OLD_KRL,(SEC_ERROR_BASE+110), "New KRL is not later than the current one.") ER3(SEC_ERROR_CKL_CONFLICT
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL ER3 (SEC_ERROR_CERT_NOT_IN_NAME_SPACE,(SEC_ERROR_BASE+112), "The Certifying Authority for this certificate is not permitted to issue a \ certificate with this name.") ER3(SEC_ERROR_KRL_NOT_YET_VALID
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid ER3 (SEC_ERROR_CRL_NOT_YET_VALID,(SEC_ERROR_BASE+114), "The certificate revocation list for this certificate is not yet valid.") ER3(SEC_ERROR_UNKNOWN_CERT
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found ER3 (SEC_ERROR_UNKNOWN_SIGNER,(SEC_ERROR_BASE+116), "The signer's certificate could not be found.") ER3(SEC_ERROR_CERT_BAD_ACCESS_LOCATION
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format ER3 (SEC_ERROR_OCSP_UNKNOWN_RESPONSE_TYPE,(SEC_ERROR_BASE+118), "The OCSP response cannot be fully decoded; it is of an unknown type.") ER3(SEC_ERROR_OCSP_BAD_HTTP_RESPONSE
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data ER3 (SEC_ERROR_OCSP_MALFORMED_REQUEST,(SEC_ERROR_BASE+120), "The OCSP server found the request to be corrupted or improperly formed.") ER3(SEC_ERROR_OCSP_SERVER_ERROR
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error ER3 (SEC_ERROR_OCSP_TRY_SERVER_LATER,(SEC_ERROR_BASE+122), "The OCSP server suggests trying again later.") ER3(SEC_ERROR_OCSP_REQUEST_NEEDS_SIG
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request ER3 (SEC_ERROR_OCSP_UNAUTHORIZED_REQUEST,(SEC_ERROR_BASE+124), "The OCSP server has refused this request as unauthorized.") ER3(SEC_ERROR_OCSP_UNKNOWN_RESPONSE_STATUS
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status ER3 (SEC_ERROR_OCSP_UNKNOWN_CERT,(SEC_ERROR_BASE+126), "The OCSP server has no status for the certificate.") ER3(SEC_ERROR_OCSP_NOT_ENABLED
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation ER3 (SEC_ERROR_OCSP_NO_DEFAULT_RESPONDER,(SEC_ERROR_BASE+128), "You must set the OCSP default responder before performing this operation.") ER3(SEC_ERROR_OCSP_MALFORMED_RESPONSE
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed ER3 (SEC_ERROR_OCSP_UNAUTHORIZED_RESPONSE,(SEC_ERROR_BASE+130), "The signer of the OCSP response is not authorized to give status for \ this certificate.") ER3(SEC_ERROR_OCSP_FUTURE_RESPONSE
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet valid (contains a date in the future).") ER3(SEC_ERROR_OCSP_OLD_RESPONSE
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information ER3 (SEC_ERROR_DIGEST_NOT_FOUND,(SEC_ERROR_BASE+133), "The CMS or PKCS #7 Digest was not found in signed message.") ER3(SEC_ERROR_UNSUPPORTED_MESSAGE_TYPE
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information The CMS or PKCS ER3 (SEC_ERROR_MODULE_STUCK,(SEC_ERROR_BASE+135), "PKCS #11 module could not be removed because it is still in use.") ER3(SEC_ERROR_BAD_TEMPLATE
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information The CMS or PKCS Could not decode ASN data Specified template was invalid ER3 (SEC_ERROR_CRL_NOT_FOUND,(SEC_ERROR_BASE+137), "No matching CRL was found.") ER3(SEC_ERROR_REUSED_ISSUER_AND_SERIAL
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information The CMS or PKCS Could not decode ASN data Specified template was invalid You are attempting to import a cert with the same issuer serial as an existing but that is not the same cert ER3 (SEC_ERROR_BUSY,(SEC_ERROR_BASE+139), "NSS could not shutdown. Objects are still in use.") ER3(SEC_ERROR_EXTRA_INPUT
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information The CMS or PKCS Could not decode ASN data Specified template was invalid You are attempting to import a cert with the same issuer serial as an existing but that is not the same cert DER encoded message contained extra unused data ER3 (SEC_ERROR_UNSUPPORTED_ELLIPTIC_CURVE,(SEC_ERROR_BASE+141), "Unsupported elliptic curve.") ER3(SEC_ERROR_UNSUPPORTED_EC_POINT_FORM
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information The CMS or PKCS Could not decode ASN data Specified template was invalid You are attempting to import a cert with the same issuer serial as an existing but that is not the same cert DER encoded message contained extra unused data Unsupported elliptic curve point form ER3 (SEC_ERROR_UNRECOGNIZED_OID,(SEC_ERROR_BASE+143), "Unrecognized Object IDentifier.") ER3(SEC_ERROR_OCSP_INVALID_SIGNING_CERT
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information The CMS or PKCS Could not decode ASN data Specified template was invalid You are attempting to import a cert with the same issuer serial as an existing but that is not the same cert DER encoded message contained extra unused data Unsupported elliptic curve point form Invalid OCSP signing certificate in OCSP response ER3 (SEC_ERROR_REVOKED_CERTIFICATE_CRL,(SEC_ERROR_BASE+145), "Certificate is revoked in issuer's certificate revocation list.") ER3(SEC_ERROR_REVOKED_CERTIFICATE_OCSP
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information The CMS or PKCS Could not decode ASN data Specified template was invalid You are attempting to import a cert with the same issuer serial as an existing but that is not the same cert DER encoded message contained extra unused data Unsupported elliptic curve point form Invalid OCSP signing certificate in OCSP response Issuer s OCSP responder reports certificate is revoked ER3 (SEC_ERROR_CRL_INVALID_VERSION,(SEC_ERROR_BASE+147), "Issuer's Certificate Revocation List has an unknown version number.") ER3(SEC_ERROR_CRL_V1_CRITICAL_EXTENSION
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information The CMS or PKCS Could not decode ASN data Specified template was invalid You are attempting to import a cert with the same issuer serial as an existing but that is not the same cert DER encoded message contained extra unused data Unsupported elliptic curve point form Invalid OCSP signing certificate in OCSP response Issuer s OCSP responder reports certificate is revoked Issuer s V1 Certificate Revocation List has a critical extension ER3 (SEC_ERROR_CRL_UNKNOWN_CRITICAL_EXTENSION,(SEC_ERROR_BASE+149), "Issuer's V2 Certificate Revocation List has an unknown critical extension.") ER3(SEC_ERROR_UNKNOWN_OBJECT_TYPE
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information The CMS or PKCS Could not decode ASN data Specified template was invalid You are attempting to import a cert with the same issuer serial as an existing but that is not the same cert DER encoded message contained extra unused data Unsupported elliptic curve point form Invalid OCSP signing certificate in OCSP response Issuer s OCSP responder reports certificate is revoked Issuer s V1 Certificate Revocation List has a critical extension Unknown object type specified ER3 (SEC_ERROR_INCOMPATIBLE_PKCS11,(SEC_ERROR_BASE+151), "PKCS #11 driver violates the spec in an incompatible way.") ER3(SEC_ERROR_NO_EVENT
     

    Variables

     SEC_ERROR_BASE
     
    security library failure security library
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not encrypted
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot decrypt
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification failed
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers found
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not exist
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be initialized
     
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information The CMS or PKCS Could not decode ASN data Specified template was invalid You are attempting to import a cert with the same issuer serial as an existing cert
     

    Function Documentation

    ◆ ER3() [1/72]

    security library failure ER3 ( SEC_ERROR_BAD_DATA  ,
    SEC_ERROR_BASE 2,
    "security library: received bad data."   
    )

    ◆ ER3() [2/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string ER3 ( SEC_ERROR_BAD_DER  ,
    SEC_ERROR_BASE 9,
    "security library: improperly formatted DER-encoded message."   
    )

    ◆ ER3() [3/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid ER3 ( SEC_ERROR_BAD_PASSWORD  ,
    SEC_ERROR_BASE 15,
    "The security password entered is incorrect."   
    )

    ◆ ER3() [4/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information The CMS or PKCS Could not decode ASN data Specified template was invalid You are attempting to import a cert with the same issuer serial as an existing but that is not the same cert ER3 ( SEC_ERROR_BUSY  ,
    (SEC_ERROR_BASE+139)  ,
    "NSS could not shutdown. Objects are still in use."   
    )

    ◆ ER3() [5/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application ER3 ( SEC_ERROR_CERT_ADDR_MISMATCH  ,
    (SEC_ERROR_BASE+92)  ,
    "Address in signing certificate does not match address in message headers."   
    )

    ◆ ER3() [6/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected ER3 ( SEC_ERROR_CERT_NICKNAME_COLLISION  ,
    (SEC_ERROR_BASE+68)  ,
    "A certificate with the same nickname already exists."   
    )

    ◆ ER3() [7/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid ER3 ( SEC_ERROR_CERT_NO_RESPONSE  ,
    (SEC_ERROR_BASE+29)  ,
    "Cert Library: No Response"   
    )

    ◆ ER3() [8/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL ER3 ( SEC_ERROR_CERT_NOT_IN_NAME_SPACE  ,
    (SEC_ERROR_BASE+112)  ,
    "The Certifying Authority for this certificate is not permitted to issue a \certificate with this name."   
    )

    ◆ ER3() [9/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database ER3 ( SEC_ERROR_CERT_VALID  ,
    (SEC_ERROR_BASE+27)  ,
    "This certificate is valid."   
    )

    ◆ ER3() [10/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time ER3 ( SEC_ERROR_CRL_EXPIRED  ,
    (SEC_ERROR_BASE+31)  ,
    "The CRL for the certificate's issuer has expired. Update it or check your system data and time."   
    )

    ◆ ER3() [11/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature ER3 ( SEC_ERROR_CRL_INVALID  ,
    (SEC_ERROR_BASE+33)  ,
    "New CRL has an invalid format."   
    )

    ◆ ER3() [12/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information The CMS or PKCS Could not decode ASN data Specified template was invalid You are attempting to import a cert with the same issuer serial as an existing but that is not the same cert DER encoded message contained extra unused data Unsupported elliptic curve point form Invalid OCSP signing certificate in OCSP response Issuer s OCSP responder reports certificate is revoked ER3 ( SEC_ERROR_CRL_INVALID_VERSION  ,
    (SEC_ERROR_BASE+147)  ,
    "Issuer's Certificate Revocation List has an unknown version number."   
    )

    ◆ ER3() [13/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information The CMS or PKCS Could not decode ASN data Specified template was invalid ER3 ( SEC_ERROR_CRL_NOT_FOUND  ,
    (SEC_ERROR_BASE+137)  ,
    "No matching CRL was found."   
    )

    ◆ ER3() [14/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid ER3 ( SEC_ERROR_CRL_NOT_YET_VALID  ,
    (SEC_ERROR_BASE+114)  ,
    "The certificate revocation list for this certificate is not yet valid."   
    )

    ◆ ER3() [15/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information The CMS or PKCS Could not decode ASN data Specified template was invalid You are attempting to import a cert with the same issuer serial as an existing but that is not the same cert DER encoded message contained extra unused data Unsupported elliptic curve point form Invalid OCSP signing certificate in OCSP response Issuer s OCSP responder reports certificate is revoked Issuer s V1 Certificate Revocation List has a critical extension ER3 ( SEC_ERROR_CRL_UNKNOWN_CRITICAL_EXTENSION  ,
    (SEC_ERROR_BASE+149)  ,
    "Issuer's V2 Certificate Revocation List has an unknown critical extension."   
    )

    ◆ ER3() [16/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information ER3 ( SEC_ERROR_DIGEST_NOT_FOUND  ,
    (SEC_ERROR_BASE+133)  ,
    "The CMS or PKCS #7 Digest was not found in signed message."   
    )

    ◆ ER3() [17/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database ER3 ( SEC_ERROR_DUPLICATE_CERT_NAME  ,
    (SEC_ERROR_BASE+23)  ,
    "Downloaded certificate's name duplicates one already in your database."   
    )

    ◆ ER3() [18/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature ER3 ( SEC_ERROR_EXPIRED_CERTIFICATE  ,
    SEC_ERROR_BASE 11,
    "Peer's Certificate has expired."   
    )

    ◆ ER3() [19/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed ER3 ( SEC_ERROR_EXPORTING_CERTIFICATES  ,
    (SEC_ERROR_BASE+76)  ,
    "Error attempting to export certificates."   
    )

    ◆ ER3() [20/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid ER3 ( SEC_ERROR_EXTENSION_NOT_FOUND  ,
    (SEC_ERROR_BASE+35)  ,
    "Certificate extension not found."   
    )

    ◆ ER3() [21/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database ER3 ( SEC_ERROR_FILING_KEY  ,
    (SEC_ERROR_BASE+25)  ,
    "Error refiling the key for this certificate."   
    )

    ◆ ER3() [22/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent ER3 ( SEC_ERROR_INADEQUATE_KEY_USAGE  ,
    (SEC_ERROR_BASE+90)  ,
    "Certificate key usage inadequate for attempted operation."   
    )

    ◆ ER3() [23/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information The CMS or PKCS Could not decode ASN data Specified template was invalid You are attempting to import a cert with the same issuer serial as an existing but that is not the same cert DER encoded message contained extra unused data Unsupported elliptic curve point form Invalid OCSP signing certificate in OCSP response Issuer s OCSP responder reports certificate is revoked Issuer s V1 Certificate Revocation List has a critical extension Unknown object type specified ER3 ( SEC_ERROR_INCOMPATIBLE_PKCS11  ,
    (SEC_ERROR_BASE+151)  ,
    "PKCS #11 driver violates the spec in an incompatible way."   
    )

    ◆ ER3() [24/72]

    security library failure security security library has experienced an input length error ER3 ( SEC_ERROR_INVALID_ARGS  ,
    SEC_ERROR_BASE 5,
    "security library: invalid arguments."   
    )

    ◆ ER3() [25/72]

    ER3 ( SEC_ERROR_IO  ,
    SEC_ERROR_BASE 0,
    "An I/O error occurred during security authorization."   
    )

    ◆ ER3() [26/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename ER3 ( SEC_ERROR_JS_ADD_MOD_FAILURE  ,
    (SEC_ERROR_BASE+108)  ,
    "Unable to add module"   
    )

    ◆ ER3() [27/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed ER3 ( SEC_ERROR_JS_INVALID_MODULE_NAME  ,
    (SEC_ERROR_BASE+106)  ,
    "Invalid module name."   
    )

    ◆ ER3() [28/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted ER3 ( SEC_ERROR_KEYGEN_FAIL  ,
    (SEC_ERROR_BASE+100)  ,
    "Unable to generate public/private key pair."   
    )

    ◆ ER3() [29/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found ER3 ( SEC_ERROR_KRL_EXPIRED  ,
    (SEC_ERROR_BASE+59)  ,
    "The KRL for this site's certificate has expired."   
    )

    ◆ ER3() [30/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information The CMS or PKCS ER3 ( SEC_ERROR_MODULE_STUCK  ,
    (SEC_ERROR_BASE+135)  ,
    "PKCS #11 module could not be removed because it is still in use."   
    )

    ◆ ER3() [31/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format ER3 ( SEC_ERROR_NEED_RANDOM  ,
    (SEC_ERROR_BASE+63)  ,
    "security library: need random data."   
    )

    ◆ ER3() [32/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one ER3 ( SEC_ERROR_NO_EMAIL_CERT  ,
    (SEC_ERROR_BASE+43)  ,
    "Not encrypted or signed: you do not yet have an email certificate."   
    )

    ◆ ER3() [33/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again ER3 ( SEC_ERROR_NO_NODELOCK  ,
    SEC_ERROR_BASE 17,
    "security library: no nodelock."   
    )

    ◆ ER3() [34/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use ER3 ( SEC_ERROR_NOT_FORTEZZA_ISSUER  ,
    (SEC_ERROR_BASE+104)  ,
    "Peer FORTEZZA chain has a non-FORTEZZA Certificate."   
    )

    ◆ ER3() [35/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data ER3 ( SEC_ERROR_OCSP_MALFORMED_REQUEST  ,
    (SEC_ERROR_BASE+120)  ,
    "The OCSP server found the request to be corrupted or improperly formed."   
    )

    ◆ ER3() [36/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation ER3 ( SEC_ERROR_OCSP_NO_DEFAULT_RESPONDER  ,
    (SEC_ERROR_BASE+128)  ,
    "You must set the OCSP default responder before performing this operation."   
    )

    ◆ ER3() [37/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error ER3 ( SEC_ERROR_OCSP_TRY_SERVER_LATER  ,
    (SEC_ERROR_BASE+122)  ,
    "The OCSP server suggests trying again later."   
    )

    ◆ ER3() [38/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request ER3 ( SEC_ERROR_OCSP_UNAUTHORIZED_REQUEST  ,
    (SEC_ERROR_BASE+124)  ,
    "The OCSP server has refused this request as unauthorized."   
    )

    ◆ ER3() [39/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed ER3 ( SEC_ERROR_OCSP_UNAUTHORIZED_RESPONSE  ,
    (SEC_ERROR_BASE+130)  ,
    "The signer of the OCSP response is not authorized to give status for \this certificate."   
    )

    ◆ ER3() [40/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status ER3 ( SEC_ERROR_OCSP_UNKNOWN_CERT  ,
    (SEC_ERROR_BASE+126)  ,
    "The OCSP server has no status for the certificate."   
    )

    ◆ ER3() [41/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format ER3 ( SEC_ERROR_OCSP_UNKNOWN_RESPONSE_TYPE  ,
    (SEC_ERROR_BASE+118)  ,
    "The OCSP response cannot be fully decoded; it is of an unknown type."   
    )

    ◆ ER3() [42/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module ER3 ( SEC_ERROR_OLD_KRL  ,
    (SEC_ERROR_BASE+110)  ,
    "New KRL is not later than the current one."   
    )

    ◆ ER3() [43/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid ER3 ( SEC_ERROR_PATH_LEN_CONSTRAINT_INVALID  ,
    (SEC_ERROR_BASE+37)  ,
    "Certificate path length constraint is invalid."   
    )

    ◆ ER3() [44/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password ER3 ( SEC_ERROR_PKCS12_CERT_COLLISION  ,
    (SEC_ERROR_BASE+86)  ,
    "Unable to import. Same nickname already exists in database."   
    )

    ◆ ER3() [45/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported ER3 ( SEC_ERROR_PKCS12_CORRUPT_PFX_STRUCTURE  ,
    (SEC_ERROR_BASE+82)  ,
    "Unable to import. File structure is corrupt."   
    )

    ◆ ER3() [46/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates ER3 ( SEC_ERROR_PKCS12_DECODING_PFX  ,
    (SEC_ERROR_BASE+78)  ,
    "Unable to import. Decoding error. File not valid."   
    )

    ◆ ER3() [47/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel ER3 ( SEC_ERROR_PKCS12_DUPLICATE_DATA  ,
    (SEC_ERROR_BASE+88)  ,
    "Not  imported,
    already in database."   
    )

    ◆ ER3() [48/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key ER3 ( SEC_ERROR_PKCS12_IMPORTING_CERT_CHAIN  ,
    (SEC_ERROR_BASE+94)  ,
    "Unable to import. Error attempting to import certificate chain."   
    )

    ◆ ER3() [49/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname ER3 ( SEC_ERROR_PKCS12_UNABLE_TO_EXPORT_KEY  ,
    (SEC_ERROR_BASE+96)  ,
    "Unable to export. Private Key could not be located and exported."   
    )

    ◆ ER3() [50/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file ER3 ( SEC_ERROR_PKCS12_UNABLE_TO_READ  ,
    (SEC_ERROR_BASE+98)  ,
    "Unable to import. Unable to read the import file."   
    )

    ◆ ER3() [51/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file ER3 ( SEC_ERROR_PKCS12_UNSUPPORTED_MAC_ALGORITHM  ,
    (SEC_ERROR_BASE+80)  ,
    "Unable to import. MAC algorithm not supported."   
    )

    ◆ ER3() [52/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported ER3 ( SEC_ERROR_PKCS12_UNSUPPORTED_VERSION  ,
    (SEC_ERROR_BASE+84)  ,
    "Unable to import. File version not supported."   
    )

    ◆ ER3() [53/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found ER3 ( SEC_ERROR_PKCS7_KEYALG_MISMATCH  ,
    (SEC_ERROR_BASE+46)  ,
    "Cannot decrypt: key encryption algorithm does not match your certificate."   
    )

    ◆ ER3() [54/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed ER3 ( SEC_ERROR_READ_ONLY  ,
    (SEC_ERROR_BASE+66)  ,
    "security library: read-only database."   
    )

    ◆ ER3() [55/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one ER3 ( SEC_ERROR_RETRY_OLD_PASSWORD  ,
    (SEC_ERROR_BASE+102)  ,
    "Old password entered incorrectly. Please try again."   
    )

    ◆ ER3() [56/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information The CMS or PKCS Could not decode ASN data Specified template was invalid You are attempting to import a cert with the same issuer serial as an existing but that is not the same cert DER encoded message contained extra unused data Unsupported elliptic curve point form Invalid OCSP signing certificate in OCSP response ER3 ( SEC_ERROR_REVOKED_CERTIFICATE_CRL  ,
    (SEC_ERROR_BASE+145)  ,
    "Certificate is revoked in issuer's certificate revocation list."   
    )

    ◆ ER3() [57/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature ER3 ( SEC_ERROR_REVOKED_KEY  ,
    (SEC_ERROR_BASE+61)  ,
    "The key for this site's certificate has been revoked."   
    )

    ◆ ER3() [58/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists ER3 ( SEC_ERROR_SAFE_NOT_CREATED  ,
    (SEC_ERROR_BASE+70)  ,
    "error while creating safe object"   
    )

    ◆ ER3() [59/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation ER3 ( SEC_ERROR_UNKNOWN_CRITICAL_EXTENSION  ,
    (SEC_ERROR_BASE+41)  ,
    "Certificate contains unknown critical extension."   
    )

    ◆ ER3() [60/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked ER3 ( SEC_ERROR_UNKNOWN_ISSUER  ,
    SEC_ERROR_BASE 13,
    "Peer's Certificate issuer is not recognized."   
    )

    ◆ ER3() [61/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found ER3 ( SEC_ERROR_UNKNOWN_SIGNER  ,
    (SEC_ERROR_BASE+116)  ,
    "The signer's certificate could not be found."   
    )

    ◆ ER3() [62/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information The CMS or PKCS Could not decode ASN data Specified template was invalid You are attempting to import a cert with the same issuer serial as an existing but that is not the same cert DER encoded message contained extra unused data Unsupported elliptic curve point form ER3 ( SEC_ERROR_UNRECOGNIZED_OID  ,
    (SEC_ERROR_BASE+143)  ,
    "Unrecognized Object IDentifier."   
    )

    ◆ ER3() [63/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information The CMS or PKCS Could not decode ASN data Specified template was invalid You are attempting to import a cert with the same issuer serial as an existing but that is not the same cert DER encoded message contained extra unused data ER3 ( SEC_ERROR_UNSUPPORTED_ELLIPTIC_CURVE  ,
    (SEC_ERROR_BASE+141)  ,
    "Unsupported elliptic curve."   
    )

    ◆ ER3() [64/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data ER3 ( SEC_ERROR_UNSUPPORTED_KEYALG  ,
    (SEC_ERROR_BASE+48)  ,
    "Unsupported or unknown key algorithm."   
    )

    ◆ ER3() [65/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user ER3 ( SEC_ERROR_UNTRUSTED_CERT  ,
    SEC_ERROR_BASE 21,
    "Peer's certificate has been marked as not trusted by the user."   
    )

    ◆ ER3() [66/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid ER3 ( SEC_INTERNAL_ONLY  ,
    (SEC_ERROR_BASE+39)  ,
    "**Internal ONLY module**"   
    )

    ◆ ER3() [67/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege ER3 ( XP_JAVA_CERT_NOT_EXISTS_ERROR  ,
    (SEC_ERROR_BASE+74)  ,
    "This principal doesn't have a certificate  
    )

    ◆ ER3() [68/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object ER3 ( XP_JAVA_REMOVE_PRINCIPAL_ERROR  ,
    (SEC_ERROR_BASE+72)  ,
    "Couldn't remove the principal"   
    )

    ◆ ER3() [69/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected ER3 ( XP_SEC_FORTEZZA_MORE_INFO  ,
    (SEC_ERROR_BASE+53)  ,
    "Please select a personality to get more info on"   
    )

    ◆ ER3() [70/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer ER3 ( XP_SEC_FORTEZZA_NO_CARD  ,
    (SEC_ERROR_BASE+51)  ,
    "No Fortezza cards Found"   
    )

    ◆ ER3() [71/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found ER3 ( XP_SEC_FORTEZZA_NO_MORE_INFO  ,
    (SEC_ERROR_BASE+55)  ,
    "No more information on that Personality"   
    )

    ◆ ER3() [72/72]

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin ER3 ( XP_SEC_FORTEZZA_PERSON_ERROR  ,
    (SEC_ERROR_BASE+57)  ,
    "Couldn't initialize Fortezza personalities."   
    )

    ◆ valid()

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet valid ( contains a date in the  future)

    Variable Documentation

    ◆ cert

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information The CMS or PKCS Could not decode ASN data Specified template was invalid You are attempting to import a cert with the same issuer serial as an existing cert

    Definition at line 464 of file SECerrs.h.

    ◆ decrypt

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot decrypt

    Definition at line 176 of file SECerrs.h.

    ◆ encrypted

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not encrypted

    Definition at line 173 of file SECerrs.h.

    ◆ exist

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not exist

    Definition at line 242 of file SECerrs.h.

    ◆ failed

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification failed

    Definition at line 183 of file SECerrs.h.

    ◆ found

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers found

    Definition at line 183 of file SECerrs.h.

    ◆ initialized

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be initialized

    Definition at line 242 of file SECerrs.h.

    ◆ library

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security library

    Definition at line 50 of file SECerrs.h.

    ◆ SEC_ERROR_BASE

    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information The CMS or PKCS Could not decode ASN data Specified template was invalid You are attempting to import a cert with the same issuer serial as an existing but that is not the same cert DER encoded message contained extra unused data Unsupported elliptic curve point form Invalid OCSP signing certificate in OCSP response Issuer s OCSP responder reports certificate is revoked Issuer s V1 Certificate Revocation List has a critical extension Unknown object type specified SEC_ERROR_BASE

    Definition at line 43 of file SECerrs.h.

    pam_pkcs11-0.6.12/doc/api/pkcs11__lib_8h_source.html0000644000175000017500000010767214367517110016754 00000000000000 pam_pkcs11: pkcs11_lib.h Source File
    pam_pkcs11 0.6.12
    pkcs11_lib.h
    Go to the documentation of this file.
    1/*
    2 * PKCS #11 PAM Login Module
    3 * Copyright (C) 2003 Mario Strasser <mast@gmx.net>,
    4 *
    5 * This library is free software; you can redistribute it and/or
    6 * modify it under the terms of the GNU Lesser General Public
    7 * License as published by the Free Software Foundation; either
    8 * version 2.1 of the License, or (at your option) any later version.
    9 *
    10 * This library is distributed in the hope that it will be useful,
    11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    13 * Lesser General Public License for more details.
    14 *
    15 * $Id$
    16 */
    17#ifndef __PKCS11_LIB_H__
    18#define __PKCS11_LIB_H__
    19
    20#include "cert_st.h"
    21
    22typedef struct cert_object_str cert_object_t;
    23typedef struct pkcs11_handle_str pkcs11_handle_t;
    24
    25#ifndef __PKCS11_LIB_C__
    26#define PKCS11_EXTERN extern
    27#else
    28#define PKCS11_EXTERN
    29#endif
    30
    35 unsigned int *slot);
    37 int slot_num, const char *slot_label,
    38 unsigned int *slot);
    41 int wanted_slot_num,
    42 const char *wanted_token_label,
    43 unsigned int *slot);
    45 const char *wanted_slot_label,
    46 unsigned int *slot);
    48 const char *wanted_slot_label,
    49 const char *wanted_token_label,
    50 unsigned int *slot);
    52 const char *wanted_slot_label,
    53 const char *wanted_token_label,
    54 unsigned int *slot);
    64 int *ncert);
    67 unsigned char *data, unsigned long length,
    68 unsigned char **signature, unsigned long *signature_length);
    69PKCS11_EXTERN int get_random_value(unsigned char *data, int length);
    70PKCS11_EXTERN void cleanse(void *ptr, size_t len);
    71
    72#undef PKCS11_EXTERN
    73
    74/* end of pkcs11_lib.h */
    75#endif
    security library failure security security library has experienced an input length error security security Improperly formatted time string Peer s certificate has an invalid signature Peer s Certificate has been revoked Peer s public key is invalid New password entered incorrectly Please try again security security Peer s certificate issuer has been marked as not trusted by the user Certificate already exists in your database Error adding certificate to database The private key for this certificate cannot be found in key database This certificate is not valid The certificate issuer s certificate has expired Check your system date and time The CRL for the certificate s issuer has an invalid signature Certificate extension value is invalid Issuer certificate is invalid Certificate usages field is invalid The key does not support the requested operation New CRL is not later than the current one Not Cannot or matching certificate and private key not found Signature verification too many signers or improper or corrupted data Cannot Fortezza card has not been properly initialized Please remove it and return it to your issuer No Fortezza card selected Personality not found Invalid Pin No KRL for this site s certificate has been found The KRL for this site s certificate has an invalid signature New KRL has an invalid format security The security card or token does not needs to be or has been removed No slot or token was selected A key with the same nickname already exists error while creating baggage object Couldn t delete the privilege Required algorithm is not allowed Error attempting to import certificates Unable to import Invalid MAC Incorrect password or corrupt file Unable to import Only password integrity and privacy modes supported Unable to import Encryption algorithm not supported Unable to import Incorrect privacy password The user pressed cancel Message not sent Certificate type not approved for application Unable to import Error attempting to import private key Unable to export Unable to locate certificate or key by nickname Unable to export Unable to write the export file Unable to export Key database corrupt or deleted Password entered is invalid Please pick a different one Certificate nickname already in use A sensitive key cannot be moved to the slot where it is needed Invalid module path filename Unable to delete module New CKL has different issuer than current CKL Delete current CKL The key revocation list for this certificate is not yet valid The requested certificate could not be found The location for the certificate status server has invalid format The OCSP server returned unexpected invalid HTTP data The OCSP server experienced an internal error The OCSP server signature on this request The OCSP server returned an unrecognizable status You must enable OCSP before performing this operation The response from the OCSP server was corrupted or improperly formed The OCSP response is not yet The OCSP response contains out of date information The CMS or PKCS Could not decode ASN data Specified template was invalid You are attempting to import a cert with the same issuer serial as an existing cert
    Definition: SECerrs.h:464
    PKCS11_EXTERN int get_slot_protected_authentication_path(pkcs11_handle_t *h)
    PKCS11_EXTERN X509 * get_X509_certificate(cert_object_t *cert)
    PKCS11_EXTERN int find_slot_by_slotlabel_and_tokenlabel(pkcs11_handle_t *h, const char *wanted_slot_label, const char *wanted_token_label, unsigned int *slot)
    struct pkcs11_handle_str pkcs11_handle_t
    Definition: pkcs11_lib.h:23
    PKCS11_EXTERN int get_private_key(pkcs11_handle_t *h, cert_object_t *)
    PKCS11_EXTERN int crypto_init(cert_policy *policy)
    PKCS11_EXTERN int pkcs11_pass_login(pkcs11_handle_t *h, int nullok)
    PKCS11_EXTERN int find_slot_by_number(pkcs11_handle_t *h, unsigned int slot_num, unsigned int *slot)
    PKCS11_EXTERN int get_slot_login_required(pkcs11_handle_t *h)
    #define PKCS11_EXTERN
    Definition: pkcs11_lib.h:26
    PKCS11_EXTERN int wait_for_token(pkcs11_handle_t *h, int wanted_slot_num, const char *wanted_token_label, unsigned int *slot)
    PKCS11_EXTERN int open_pkcs11_session(pkcs11_handle_t *h, unsigned int slot)
    PKCS11_EXTERN void cleanse(void *ptr, size_t len)
    struct cert_object_str cert_object_t
    Definition: pkcs11_lib.h:22
    PKCS11_EXTERN int load_pkcs11_module(const char *module, pkcs11_handle_t **h)
    PKCS11_EXTERN int wait_for_token_by_slotlabel(pkcs11_handle_t *h, const char *wanted_slot_label, const char *wanted_token_label, unsigned int *slot)
    PKCS11_EXTERN cert_object_t ** get_certificate_list(pkcs11_handle_t *h, int *ncert)
    PKCS11_EXTERN int find_slot_by_number_and_label(pkcs11_handle_t *h, int slot_num, const char *slot_label, unsigned int *slot)
    PKCS11_EXTERN int find_slot_by_slotlabel(pkcs11_handle_t *h, const char *wanted_slot_label, unsigned int *slot)
    PKCS11_EXTERN int pkcs11_login(pkcs11_handle_t *h, char *password)
    PKCS11_EXTERN void release_pkcs11_module(pkcs11_handle_t *h)
    PKCS11_EXTERN int close_pkcs11_session(pkcs11_handle_t *h)
    PKCS11_EXTERN int init_pkcs11_module(pkcs11_handle_t *h, int flag)
    PKCS11_EXTERN int get_random_value(unsigned char *data, int length)
    PKCS11_EXTERN int sign_value(pkcs11_handle_t *h, cert_object_t *, unsigned char *data, unsigned long length, unsigned char **signature, unsigned long *signature_length)
    PKCS11_EXTERN const char * get_slot_tokenlabel(pkcs11_handle_t *h)
    pam_pkcs11-0.6.12/doc/api/strndup_8h.html0000644000175000017500000000736014367517110014775 00000000000000 pam_pkcs11: strndup.h File Reference
    pam_pkcs11 0.6.12
    strndup.h File Reference

    Go to the source code of this file.

    Functions

    char * strndup (const char *s, size_t size)
     

    Function Documentation

    ◆ strndup()

    char * strndup ( const char *  s,
    size_t  size 
    )
    pam_pkcs11-0.6.12/doc/api/functions_vars_f.html0000644000175000017500000000632114367517110016243 00000000000000 pam_pkcs11: Data Fields - Variables
    pam_pkcs11 0.6.12
    pam_pkcs11-0.6.12/doc/api/functions_p.html0000644000175000017500000002361014367517110015222 00000000000000 pam_pkcs11: Data Fields
    pam_pkcs11 0.6.12
    Here is a list of all struct and union fields with links to the structures/unions they belong to:

    - p -

    pam_pkcs11-0.6.12/doc/api/structCK__ECDH2__DERIVE__PARAMS.html0000644000175000017500000003171514367517110020045 00000000000000 pam_pkcs11: CK_ECDH2_DERIVE_PARAMS Struct Reference
    pam_pkcs11 0.6.12
    CK_ECDH2_DERIVE_PARAMS Struct Reference

    #include <pkcs11t.h>

    Data Fields

    CK_EC_KDF_TYPE kdf
     
    CK_ULONG ulSharedDataLen
     
    CK_BYTE_PTR pSharedData
     
    CK_ULONG ulPublicDataLen
     
    CK_BYTE_PTR pPublicData
     
    CK_ULONG ulPrivateDataLen
     
    CK_OBJECT_HANDLE hPrivateData
     
    CK_ULONG ulPublicDataLen2
     
    CK_BYTE_PTR pPublicData2
     

    Detailed Description

    Definition at line 1110 of file pkcs11t.h.

    Field Documentation

    ◆ hPrivateData

    CK_OBJECT_HANDLE hPrivateData

    Definition at line 1117 of file pkcs11t.h.

    ◆ kdf

    Definition at line 1111 of file pkcs11t.h.

    ◆ pPublicData

    CK_BYTE_PTR pPublicData

    Definition at line 1115 of file pkcs11t.h.

    ◆ pPublicData2

    CK_BYTE_PTR pPublicData2

    Definition at line 1119 of file pkcs11t.h.

    ◆ pSharedData

    CK_BYTE_PTR pSharedData

    Definition at line 1113 of file pkcs11t.h.

    ◆ ulPrivateDataLen

    CK_ULONG ulPrivateDataLen

    Definition at line 1116 of file pkcs11t.h.

    ◆ ulPublicDataLen

    CK_ULONG ulPublicDataLen

    Definition at line 1114 of file pkcs11t.h.

    ◆ ulPublicDataLen2

    CK_ULONG ulPublicDataLen2

    Definition at line 1118 of file pkcs11t.h.

    ◆ ulSharedDataLen

    CK_ULONG ulSharedDataLen

    Definition at line 1112 of file pkcs11t.h.


    The documentation for this struct was generated from the following file:
    pam_pkcs11-0.6.12/doc/api/globals_func_e.html0000644000175000017500000000515014367517110015634 00000000000000 pam_pkcs11: Globals
    pam_pkcs11 0.6.12
     

    - e -

    pam_pkcs11-0.6.12/doc/api/pkcs11__lib_8h.html0000644000175000017500000013115114367517110015361 00000000000000 pam_pkcs11: pkcs11_lib.h File Reference
    pam_pkcs11 0.6.12
    pkcs11_lib.h File Reference
    #include "cert_st.h"

    Go to the source code of this file.

    Macros

    #define PKCS11_EXTERN   extern
     

    Typedefs

    typedef struct cert_object_str cert_object_t
     
    typedef struct pkcs11_handle_str pkcs11_handle_t
     

    Functions

    PKCS11_EXTERN int crypto_init (cert_policy *policy)
     
    PKCS11_EXTERN int load_pkcs11_module (const char *module, pkcs11_handle_t **h)
     
    PKCS11_EXTERN int init_pkcs11_module (pkcs11_handle_t *h, int flag)
     
    PKCS11_EXTERN int find_slot_by_number (pkcs11_handle_t *h, unsigned int slot_num, unsigned int *slot)
     
    PKCS11_EXTERN int find_slot_by_number_and_label (pkcs11_handle_t *h, int slot_num, const char *slot_label, unsigned int *slot)
     
    PKCS11_EXTERN const char * get_slot_tokenlabel (pkcs11_handle_t *h)
     
    PKCS11_EXTERN int wait_for_token (pkcs11_handle_t *h, int wanted_slot_num, const char *wanted_token_label, unsigned int *slot)
     
    PKCS11_EXTERN int find_slot_by_slotlabel (pkcs11_handle_t *h, const char *wanted_slot_label, unsigned int *slot)
     
    PKCS11_EXTERN int find_slot_by_slotlabel_and_tokenlabel (pkcs11_handle_t *h, const char *wanted_slot_label, const char *wanted_token_label, unsigned int *slot)
     
    PKCS11_EXTERN int wait_for_token_by_slotlabel (pkcs11_handle_t *h, const char *wanted_slot_label, const char *wanted_token_label, unsigned int *slot)
     
    PKCS11_EXTERN X509 * get_X509_certificate (cert_object_t *cert)
     
    PKCS11_EXTERN void release_pkcs11_module (pkcs11_handle_t *h)
     
    PKCS11_EXTERN int open_pkcs11_session (pkcs11_handle_t *h, unsigned int slot)
     
    PKCS11_EXTERN int close_pkcs11_session (pkcs11_handle_t *h)
     
    PKCS11_EXTERN int pkcs11_login (pkcs11_handle_t *h, char *password)
     
    PKCS11_EXTERN int pkcs11_pass_login (pkcs11_handle_t *h, int nullok)
     
    PKCS11_EXTERN int get_slot_login_required (pkcs11_handle_t *h)
     
    PKCS11_EXTERN int get_slot_protected_authentication_path (pkcs11_handle_t *h)
     
    PKCS11_EXTERN cert_object_t ** get_certificate_list (pkcs11_handle_t *h, int *ncert)
     
    PKCS11_EXTERN int get_private_key (pkcs11_handle_t *h, cert_object_t *)
     
    PKCS11_EXTERN int sign_value (pkcs11_handle_t *h, cert_object_t *, unsigned char *data, unsigned long length, unsigned char **signature, unsigned long *signature_length)
     
    PKCS11_EXTERN int get_random_value (unsigned char *data, int length)
     
    PKCS11_EXTERN void cleanse (void *ptr, size_t len)
     

    Macro Definition Documentation

    ◆ PKCS11_EXTERN

    #define PKCS11_EXTERN   extern

    Definition at line 26 of file pkcs11_lib.h.

    Typedef Documentation

    ◆ cert_object_t

    typedef struct cert_object_str cert_object_t

    Definition at line 22 of file pkcs11_lib.h.

    ◆ pkcs11_handle_t

    typedef struct pkcs11_handle_str pkcs11_handle_t

    Definition at line 23 of file pkcs11_lib.h.

    Function Documentation

    ◆ cleanse()

    PKCS11_EXTERN void cleanse ( void *  ptr,
    size_t  len 
    )

    ◆ close_pkcs11_session()

    PKCS11_EXTERN int close_pkcs11_session ( pkcs11_handle_t h)

    ◆ crypto_init()

    PKCS11_EXTERN int crypto_init ( cert_policy policy)

    ◆ find_slot_by_number()

    PKCS11_EXTERN int find_slot_by_number ( pkcs11_handle_t h,
    unsigned int  slot_num,
    unsigned int *  slot 
    )

    ◆ find_slot_by_number_and_label()

    PKCS11_EXTERN int find_slot_by_number_and_label ( pkcs11_handle_t h,
    int  slot_num,
    const char *  slot_label,
    unsigned int *  slot 
    )

    ◆ find_slot_by_slotlabel()

    PKCS11_EXTERN int find_slot_by_slotlabel ( pkcs11_handle_t h,
    const char *  wanted_slot_label,
    unsigned int *  slot 
    )

    ◆ find_slot_by_slotlabel_and_tokenlabel()

    PKCS11_EXTERN int find_slot_by_slotlabel_and_tokenlabel ( pkcs11_handle_t h,
    const char *  wanted_slot_label,
    const char *  wanted_token_label,
    unsigned int *  slot 
    )

    ◆ get_certificate_list()

    PKCS11_EXTERN cert_object_t ** get_certificate_list ( pkcs11_handle_t h,
    int *  ncert 
    )

    ◆ get_private_key()

    PKCS11_EXTERN int get_private_key ( pkcs11_handle_t h,
    cert_object_t  
    )

    ◆ get_random_value()

    PKCS11_EXTERN int get_random_value ( unsigned char *  data,
    int  length 
    )

    ◆ get_slot_login_required()

    PKCS11_EXTERN int get_slot_login_required ( pkcs11_handle_t h)

    ◆ get_slot_protected_authentication_path()

    PKCS11_EXTERN int get_slot_protected_authentication_path ( pkcs11_handle_t h)

    ◆ get_slot_tokenlabel()

    PKCS11_EXTERN const char * get_slot_tokenlabel ( pkcs11_handle_t h)

    ◆ get_X509_certificate()

    PKCS11_EXTERN X509 * get_X509_certificate ( cert_object_t cert)

    ◆ init_pkcs11_module()

    PKCS11_EXTERN int init_pkcs11_module ( pkcs11_handle_t h,
    int  flag 
    )

    ◆ load_pkcs11_module()

    PKCS11_EXTERN int load_pkcs11_module ( const char *  module,
    pkcs11_handle_t **  h 
    )

    ◆ open_pkcs11_session()

    PKCS11_EXTERN int open_pkcs11_session ( pkcs11_handle_t h,
    unsigned int  slot 
    )

    ◆ pkcs11_login()

    PKCS11_EXTERN int pkcs11_login ( pkcs11_handle_t h,
    char *  password 
    )

    ◆ pkcs11_pass_login()

    PKCS11_EXTERN int pkcs11_pass_login ( pkcs11_handle_t h,
    int  nullok 
    )

    ◆ release_pkcs11_module()

    PKCS11_EXTERN void release_pkcs11_module ( pkcs11_handle_t h)

    ◆ sign_value()

    PKCS11_EXTERN int sign_value ( pkcs11_handle_t h,
    cert_object_t ,
    unsigned char *  data,
    unsigned long  length,
    unsigned char **  signature,
    unsigned long *  signature_length 
    )

    ◆ wait_for_token()

    PKCS11_EXTERN int wait_for_token ( pkcs11_handle_t h,
    int  wanted_slot_num,
    const char *  wanted_token_label,
    unsigned int *  slot 
    )

    ◆ wait_for_token_by_slotlabel()

    PKCS11_EXTERN int wait_for_token_by_slotlabel ( pkcs11_handle_t h,
    const char *  wanted_slot_label,
    const char *  wanted_token_label,
    unsigned int *  slot 
    )
    pam_pkcs11-0.6.12/doc/export-wiki.sh0000755000175000017500000000365513553631305014063 00000000000000#!/bin/sh set -e test -z "$XSLTPROC" && XSLTPROC="xsltproc" test -z "$WGET" && WGET="wget" test -z "$WGET_OPTS" && WGET_OPTS="$WGET_OPTS" test -z "$SED" && SED="sed" test -z "$TR" && TR="tr" test -z "$SERVER" && SERVER="http://www.opensc-project.org" test -z "$PROJECT" && PROJECT="pam_pkcs11" SRCDIR=. OUTDIR=wiki test -n "$1" && SRCDIR="$1" test -n "$2" && OUTDIR="$2" WIKI="$PROJECT/wiki" XSL="$SRCDIR/export-wiki.xsl" test -f "$SRCDIR"/`basename $0` test -e "$OUTDIR" && rm -fr "$OUTDIR" mkdir "$OUTDIR" || exit 1 $WGET $WGET_OPTS $SERVER/$WIKI/TitleIndex -O "$OUTDIR"/TitleIndex.tmp $SED -e "s##\n#g" < "$OUTDIR"/TitleIndex.tmp \ | grep "\"/$WIKI/[^\"]*\"" \ |$SED -e "s#.*\"/$WIKI/\([^\"]*\)\".*#\1#g" \ > "$OUTDIR"/WikiWords.tmp $SED -e /^Trac/d -e /^Wiki/d -e /^TitleIndex/d -e /^RecentChanges/d \ -e /^CamelCase/d -e /^SandBox/d -e /^InterMapTxt/d -e /^InterWiki/d \ -e /^InterTrac/d -i "$OUTDIR"/WikiWords.tmp for A in WikiStart `cat "$OUTDIR"/WikiWords.tmp` do F=`echo $A|$SED -e 's/\//_/g'` $WGET $WGET_OPTS $SERVER/$WIKI/$A -O "$OUTDIR"/$F.tmp $XSLTPROC --nonet --output "$OUTDIR"/$F.html "$XSL" "$OUTDIR"/$F.tmp $SED -e "s# PAM-PKCS11 Mappers API 2005-Mar-29 Release 0.5.3 30 Ago 2005 Juan Antonio Martinez jonsito@teleline.es PAM-PKCS#11 is a PAM (Pluggable Authentication Module) library and related tools to perform login into Linux/UNIX systems by mean of X509 Certificates through any pkcs#11 compliant library. This manual describes how to create, compile and install pam_pkcs11 mappers. It also describes their API and related functions, and provide sample code Copyright. License Copyright (C) 2005 Juan Antonio Martinez jonsito@teleline.es Copyright (C) 2003-2004 of Mario Strasser mstt@gmx.net ScConf library Copyright (C) Antti Tapaninen aet@cc.hut.fi and Timo Sirainen tss@iki.fi Release 0.5beta1. 30 Mar 2005 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA What is a <application>pam_pkcs11</application> mapper? Definition When an X509 Certificate is provided, there are no direct way to map a cert to a login. With a certificate we can check validity and revocation, but user mapping depends entirely on the certificate content. So we need a configurable, stackable, and definable way to specify cert-to-user mapping. pam-pkcs11 cert mappers should provide these functions: Extract a item (cn, digest, or so) from provided certificate Deduce a login from the extracted item Test if a provided login matches with the previously deduced login (de)initialization routines A structure to access all internal methods Runtime options A mapper can be dinamycally or statically compiled against pam_pkcs11 An static mapper is one that is statically linked with pam_pkcs11. A dynamic mapper needs to be loaded at runtime, and the path to the dynamic module must be provided Multiple mapping support A mapper can provide several ways to realize mapping functions. As the mapper name is provided to initialization routines, the mapper cand adjust their internal pointers according name. In this case, the same mapper will be instantiated (or dynloaded) as many times as different mappings required Mapfile support Most of certificate fields are not valid for login names. We need a way to map field to login. This is done by mean of mapfiles. The mapper API provides several functions to manage mapfiles Mapper tools and libraries Pam_pkcs11 provides several utility functions to manage certificate contents. Instead of start from scratch these functions may be used to ease mapper coding. You'll find: Mapfile functions String tools Debugging macros URL handling functions Configuration file tools Etc... Configuration support Althought all mappers have default values, most of then have configuration options. The file /etc/pam_pkcs11/pam_pkcs11.conf stores them. Writting a mapper Before starting Decide if the mapper will be statically or dinamically compiled The first way is for simple, quick and easy mappers that doesn't need aditional/optional libraries, just inspect certificate contents. The second way is for those mappers that need some optional libraries, such as ldap, kerberos, openssh or so Decide on single or multiple items mapper Choose a name and configuration options Study provided mappers and libcommon / libmapper code The best way to start is by mean of these skeleton files: Sample mapper configuration entry All mappers should have a configuration entry in /etc/pam_pkcs11/pam_pkcs11.conf. These entry should at least define: The name of the mapper The dynamic library to be runtime loaded, or the keyword if the mapper is statically linked # foo - Maps FOO certificate field (if exist) to login mapper foo { debug = false; # For dinamycally loaded mappers # module = /usr/lib/pam_pkcs11/foo_mapper.so; # For statically linked mappers module = internal; ignorecase = false; mapfile = "none"; } Note the option. It says pam_pkcs11 if the mapper is static or must be dynloaded in runtime. If so, it must include the full path to the mapper dynamic library When the mapper is used to map more than one field, you should add one entry for each mapped field. Each entry must have an unique mapper name, and (if the mapper is to be dynamically loaded) the same library name path See bellow on how to set up code to include multiple fields mappers to be statically compiled Sample mapper include file Here comes a sample mapper include file. Note that their main use is to allow export internal data when statically compiled. Unless you need several files to define a mapper, no need of more data to be included /* * PAM-PKCS11 mapping modules * ------------- YOUR COPYRIGHT CREDITS HERE -------------------- * Copyright (C) 2005 Juan Antonio Martinez <jonsito@teleline.es> * pam-pkcs11 is copyright (C) 2003-2004 of Mario Strasser <mast@gmx.net> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * $Id$ */ #ifndef __FOO_MAPPER_H_ #define __FOO_MAPPER_H_ #ifdef HAVE_CONFIG_H #include <config.h> #endif #include "../scconf/scconf.h" #include "mapper.h" /* include here container declaration if you intend to declare and use several instances of this mapper */ typedef struct myContext_st { /* local declarations here */ } myContext; #ifdef FOO_MAPPER_STATIC #ifndef __FOO_MAPPER_C_ #define FOO_EXTERN extern #else #define FOO_EXTERN #endif FOO_EXTERN mapper_module * foo_mapper_module_init(scconf_block *blk,const char *mapper_name); #undef FOO_EXTERN /* end of static (if any) declarations */ #endif /* End of foo_mapper.h */ #endif Skeleton code for mapper C file. This is a sample skeleton file for single field mappers. It provides all the methods and data required by the API. Is up to you to include aditional functions as required. They only need to export one symbol: the entry point of the init routine If the mapper is to be dynamically loaded, this symbol has a fixed name: mapper_module_init If the mapper is to be statically linked, is up to you to decide the exported symbol name, but it's suggested for comodity, just prepend the mapper name as prefix, to avoid collisions. Remember that these names will be added into the static mapper table list Note that this skeleton file provides support for either static or dynamic linking. Our suggestion is follow this convention, making your mapper as versatile as possible /* * PAM-PKCS11 FOO mapper module * -------------- YOUR COPYRIGHTS CREDITS HERE -------------------- * Copyright (C) 2005 Juan Antonio Martinez <jonsito@teleline.es> * pam-pkcs11 is copyright (C) 2003-2004 of Mario Strasser <mast@gmx.net> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * $Id$ */ #define __FOO_MAPPER_C_ #ifdef HAVE_CONFIG_H #include <config.h> #endif /* required standard headers here */ #include <openssl/x509.h> /* Pam_pkcs11 API headers here */ #include "../scconf/scconf.h" #include "../common/debug.h" #include "../common/error.h" #include "../common/strings.h" #include "../common/cert_info.h" /* mandatory includes */ #include "mapper.h" #include "foo_mapper.h" /* * Summary: * This mapper uses the FOO entry in the certificate to deduce * user name */ /* local variables */ /* NOTE: When multiple instances of an static module are declared, it's a bad idea to use local variables. Declare and use a context container instead */ static const char *mapfile="none"; static int ignorecase=0; static int debug=0; /** * Return array of found FOO's */ static char ** mapper_find_entries(X509 *x509, void *context) { /* your code here* */ } /* * Parses the certificate and return the first FOO entry found, or NULL */ static char * mapper_find_user(X509 *x509, void *context) { /* your code here */ } /* * parses the certificate and try to macht any FOO entry in the certificate * with provided user * returns: 1 on success * 0 on no match * -1 on fail */ static int mapper_match_user(X509 *x509,const char *login, void *context) { /* your code here */ } /* * Closes and frees all resources for this mapper */ static void mapper_module_end(void, void *context) { /* your code here */ } /* * initialize entry points */ static mapper_module * init_mapper_st( scconf_block *blk, /* pointer to configuration block */ const char *name /* mapper name */ ) { mapper_module *pt=malloc(sizeof(mapper_module)); if (!pt) return NULL; pt->name = name; pt->block = blk; pt->context = NULL; pt->dbg_level = get_debug_level(); pt->entries = mapper_find_entries; pt->finder = mapper_find_user; pt->matcher = mapper_match_user; pt->mapper_module_end = mapper_module_end; return pt; } /** * Initialization entry point * return mapper_module pointer on success * NULL on fail */ #ifndef FOO_MAPPER_STATIC mapper_module * mapper_module_init(scconf_block *blk,const char *mapper_name) { #else mapper_module * foo_mapper_module_init(scconf_block *blk,const char *mapper_name) { #endif mapper_module *pt; /* Read configuration */ if(blk) { debug= scconf_get_bool(blk,"debug",0); mapfile= scconf_get_str(blk,"mapfile",mapfile); ignorecase= scconf_get_bool(blk,"ignorecase",ignorecase); set_debug_level(debug); } else { set_debug_level(debug); DBG1("No configuration entry for mapper '%s'. Assume defaults",mapper_name); } /* set up internal variables */ /* initialize function entry points */ pt = init_mapper_st(pt,blk,mapper_name); return pt; } /* end of foo_mapper.c */ #undef __FOO_MAPPER_C_ See bellow on what's each function is intended to do, comodity macros, and some examples on how to code them Insert mapper into tables Next task is insert mapper into mappers list, by adding it to mapperlist.c Add "foo_mapper.h" to #include list Add exported entries to static mapper entries table: #include "foo_mapper.h" ...... mapper_list static_mapper_list [] = { .... #ifdef FOO_MAPPER_STATIC { "foo", foo_mapper_module_init }, /* if your mapper manages more than one mapping scheme, add it */ { "foo2", foo_mapper_module_init }, { "foo3", foo_mapper_module_init }, #endif .... { NULL, NULL } }; As you can see, if your module support several mapping schemes, you should insert one entry for each one. All the entries will share the same entry point, but differs in module name Adding mapper to Makefile.am to be compiled Finally add entry to src/mappers/Makefile.am file and recompile. Note that with the current pam_pkcs11 version you cannot compile a dynamically loaded mapper in a separate way. This is a job in progress To compile as static mapper Add to options Add "foo_mapper.c" and "foo_mapper.h" to entry To compile as dynamic mapper: Add "foo_mapper.la" to lib_LTLIBRARIES entry Add compile options for "foo_mapper.la" , for instance: ..... foo_mapper_la_SOURCES = foo_mapper.c foo_mapper.h foo_mapper_la_LDFLAGS = -module -avoid-version foo_mapper_la_LIBADD = libmappers.la ..... Compilation That's all: recompile and install root# cd /base/directory root# make maintainer-clean root# ./bootstrap root# ./configure --your-configure-options root# make root# make install A Detailed look on mappers The mapper chain Take a look at src/pam_pkcs11/mapper_mgr.h. This file contains the data structures used to load a mapper and create a mapper chain Mapper instance entry declaration: struct mapper_instance { void *module_handler; /* dynamic module descriptor */ const char *module_name; /* mapper module name */ const char *module_path; /* dynamic module path */ mapper_module *module_data; /* mapper module entries table */ }; On statically compiled mappers, and equals to Mapper chain entry declaration: struct mapper_listitem { struct mapper_instance *module; /* pointer to module instance */ struct mapper_listitem *next; /* pointer to next item in chain */ }; The list of mappers to be loaded are declared by mean of entry in /etc/pam_pkcs11/pam_pksc11.conf configuration file. Each declared mapper is loaded in turn. The first in the list will be the first one in the mapper chain On each mapper entry, pam_pkcs11 search for the keyword. If not found, or equals to "", the code assumes that reffers to an statically linked mapper, and search it in the list of mappers declared at src/mappers/mapperlist.c. Otherwise assume that we provide the full pathname to a dynamic library, and try to load by mean of dlopen() function When module is found or loaded, the module_load() calls to the mapper_module_init() function, and if the result is not null assumes to be returned a pointer to the internal mapper entries table. These entries will be used to call finder, matcher, and deinit functions on the mapper If, for any reason, the mapper loading process, a warn is sent, and the mapper entry module is skipped Exported data and structures The mapper_module_init() should return a pointer to the following structure (declared in src/mappers/mapper.h /** * Structure to be filled on mapper module initialization */ typedef struct mapper_module_st { const char *name; scconf_block *block; void *context; int dbg_level; char **(*entries)(X509 *x509, void *context); char *(*finder)(X509 *x509, void *context); int (*matcher)(X509 *x509, const char *login, void *context); void (*deinit)( void *context); } mapper_module; Here comes the meaning of each entry: is the name of the mapper module, as provided in the init() call is a pointer to the mapper configuration entry as defined in /etc/pam_pkcs11/pam_pkcs11.conf, as provided int the init() call is a pointer to a user-defined local declarations internals to the mapper. If not used it's safe to set to NULL. See below about how to use this entry in multiple instances of same static compiled mapper entries() is the entry point to the mapper listing method finder() is the entry point to the mapper login finder method matcher() is the entry point to the mapper login matcher method entries() is called when the mapper module is to be removed from mapper chain stores the debugging level to be used when calling any function inside the mapper. Note that the programmer doesn't need to take care on this field: when mapper_module_init() successfully returns, the module loader assumes that returning debug level is the one selected for the mapper, and store it in this field Note that pointer is passed as void * as there are no way to know how the programmer will use it Comodity macros Many of the mapper functions are repetitive. Many others are nonsense in some mappers. So the API provide several comodity macros, defined in src/mappers/mapper.h to serve as a replacement for entries() listing method to serve as a replacement for finder() login mapper method to serve as a replacement for matcher() login matching method to serve as a replacement for deinit() de-initialization method to serve as a replacement for init() initialization method The only usefull one is _DEFAULT_MAPPER_END, but the other ones are provided for compile work-in-progress mappers See the code, to provide you an idea of how to code real functions Multifield mappers The sample code provided in first section can be used directly to create single field mappers. When writting multiple fields mappers ( a mapper, that can resolve two or more different certificate contents, ie CN and KPN ), a different approach is needed: You should provided one mapper entry for each mapper personality in the configuration file If the mapper is to be statically linked, you should also declare one entry for each personality in the src/mappers/mapperlist.c mapper list declaration file The mapper loader will make as many calls to mapper_module_init() as declared in mapper chain definition. On each call a different name and configuration context will be provided, and a different mapper_module structure should be returned There are an additional problem when use statically linked mappers: They cannot contain any global variable, as consecutive init call will overwrite previous value. This is not the case of dynloaded mappers, as each instance has its own address space If the above case is yours one, then you must define and create by mean of malloc() an internal environment structure, and store it in the field of the returned mapper_module structure. pam_pkcs11 will include this data in every calls to your entry points, to get sure you can retrieve correct internal data Configuration entries on static mappers As stated above, to specify that a mapper is not to be dynamically linked, we should remove the keyword "", or set it to "" Most of statically linked mappers share common configuration options: Must be set to The debug level. Defaults to Ignore letter case on matching functions. Defaults to Mapping file to be used. Defaults to So if up to the system administrator, if agreed with default values, to ommit in the configuration file /etc/pam_pkcs11/pam_pkcs11.conf the mapper entry for this module. The module loader will look for proper mapper entry. If not found, assume that the module is static, and will try to load it and set up with default values. This behaviour is coded in the provided sample skeleton file for coding mappers Above note does not apply, of course, to dynamically loaded mappers, as they always need at least the "" entry to be specified See PAM-PKCS#11 Manual to see specific notes on provided mappers The Mapper API Debugging macros and functions Several functions and macros are provided to generate and display debug and error messages. See files src/common/debug.[ch] and src/common/error.[ch] void set_debug_level(int level); Sets the debug level int get_debug_level(void); Gets the debug level void debug_print(int level, char *file, int line, char *format, ...); Prints a message if is greater than current debug level DBG(), DBG1(), ... DBG5() Are shortcut macros to debug_print() function void set_error(char *format, ...); Sets the "last error" message entry const char *get_error(); Gets the last error message The mapfile API The mapper API provides several functions to manage mapfiles. They are declared in src/mappers/mapper.h To use a mapfile, we must create a mapfile entry, then make sucessive calls to retrieve data, and finally destroy the structure. It works in a similar way as setpwent(), getpwent() and endpwent() functions works in walking throught a password file The mapfile structure is defined as: /* * This struct is used in processing map files * a map file is a list of "key" " -> " "value" text lines */ struct mapfile { const char *uri;/* URL of mapfile */ char *buffer; /* buffer to content of mapfile */ size_t length; /* lenght of buffer */ char *pt; /* pointer to last readed entry in buffer */ char *key; /* key entry in current buffer */ char *value; /* value assigned to key */ }; The API defines following functions: struct mapfile *set_mapent(const char *uri); Initializes mapfile data structure int get_mapent(struct mapfile *mfile); Iterative calls returns next key/value pairs in mapfile void end_mapent(struct mapfile *mfile); Closes and releases mapfile char *mapfile_find(const char *file,char *key,int ignorecase); To find a given key/value pair in a mapfile int mapfile_match(const char *file,char *key,const char *value,int ignorecase); To test if any entry on mapfile matches key/value pair An important note is that mapfiles names can be provided as standard UNIX path names, or Universal Resource Locators. For instance, you can use either /etc/pam_pkcs11/subject_mapping or file:///etc/pam_pkcs11/subject_mapping. Our recommentation is to use second format as is not restricted to local files NOTE: The returned "" and "" entries should be used as const char *, that is, contents cannot be modified nor free()'d. If the programmer needs to modify these values, please make a copy with the clone_str() API provided function Configuration parsing API PAM-PKCS#11 configuration files are based in the SCConf library of the OpenSC Project. See the file src/scconf/README.scconf for a detailed description of the scconf As a resume, bellow are shown the most relevants scconf API functions for the mapper programmer: const char *scconf_get_str(const scconf_block * block, const char *option, const char *default); To retrieve the string value assigned to keyword or return if keyword not found int scconf_get_int(const scconf_block * block, const char *option, int default); To retrieve the integer value assigned to keyword or return if keyword not found int scconf_get_bool(const scconf_block * block, const char *option, int default); To retrieve the boolean value assigned to keyword or return if keyword not found With these functions, we can easily parse all "" entries on the mapper configuration block of the configuration file NOTE: The user should not modify nor free() values returned from scconf_get_str(). Instead, call clone_str() API method to get a working copy String tools API The string.h standard library is so powerfull. But lacks on some usefull routines. The file src/common/strings.c contains some of them, as declared at src/common/strings.h int is_empty_str(const char *str); Returns true if is null, empty, or has only spaces char *clone_str(const char *str); Returns a duplicate of provided string char *toupper_str(const char *str); Same as above, but string is upper-case'd char *tolower_str(const char *str); Same as above, but string is lower-case'd char *bin2hex(const unsigned char *binstr,const int len); Return a string that contains the hexadecimal representation of the provided binary array of given length. Returned format is :XX:YY:ZZ:...: unsigned char *hex2bin(const char *hexstr); Convert a colon-separated hexadecimal string into a binary array unsigned char *hex2bin_static(const char *hexstr,unsigned char **res,int *size); Same as above, but programmer supplies pre-allocated memory space for conversion char **split(const char *str,char sep, int nelems); Splits provided string in an string array of nelems elements, using sep as character separator char **split_static(const char *str,char sep, int nelems,char *dst); Same as above, but user provides pre-allocated buffer for storeing result char *trim(const char *str); Return an string that has all superfluous spaces trimmed. Also converts any space char ( newline, tabs, etc ) in normal " " space character A note on split(), and split_static() functions. To free allocated resources, is enough to call free() on the first element of the array Note that trim() function behaviour is different from Java or PHP counterparts, as remove ALL extra spaces, not only at the begining and at the end of string See the code for further reference :-) BASE64 Encoding functions In order to read/write public SSH keys, two funtions are provided to manage base64 encoding: int base64_encode(const unsigned char *in, size_t len, unsigned char *out, size_t outlen) To encode a byte array into a base64 string int base64_decode(const char *in, unsigned char *out, size_t outlen) To decode a base64 data into a byte array See doxygen documentation and source code for more info X509 Cert Tools API The mapper API provides several adittional tools to inspect the contents of a certificate. They are described in src/common/cert_info.h The basic library call is: char **cert_info(X509 *x509, int type, const char *algorithm); This function takes an argument, the X509 certificate to be inspected, and a macro that shows the certificate content to be searched. Some contents needs an aditional third parameters. When not used should be set to NULL The mapper API defines following macros: Certificate Common Name Certificate subject Kerberos principal name Certificate e-mail Microsoft's Universal Principal Name Certificate Unique Identifier Certificate Public Key (PEM Format) Certificate Digest Certificate Public key in OpenSSH format Certificate in PEM format Aditionally, when requesting you must provide a valid digest algorithm: "", "", "", "", "", "", "", "" or "" cert_info() returns an array of up to 15 string entries, corresponding to as many entry founds in the provided certificate. Last entry in the returned array is set to NULL; If some error ocurrs, or the certificate does not contain any entry, return NULL There are two additional methods to check certificate/signatures: int verify_certificate(X509 * x509, char *ca_dir, char *crl_dir, crl_policy_t policy); To check a certificate int verify_signature(X509 * x509, unsigned char *data, int data_length, unsigned char *signature, int signature_length); To verify a signature Going further Hints It's really recommended the study of provided mappers, and the comodity macros Before start writting a new mapper, perhaps you'd better to check if there are already one mapper that performs your desired map. For instance, pwent and generic mapper can use Naming Swictch Service (NSS) to lookup pasword entries, and NSS is capable of perform some LDAP or Kerberos authentication task Don't hessitate in use of debugging functions. They are really usefull It's recommended write mappers in a way that they could be statically or dynamically linked without code change, Doing so you'll make maintainer life easier :-) Also, in order to ease debugging, single field mappers is preferred over multifield mappers Avoid write access to any global variable from the mapper code. Use comodity functions Don't make assumptions on the code. Allways add checks. Use Universal Resource Locators -and the curl library- instead of hardcoded pathnames to specify files Getting help Send questions, patches, suggestions and so to OpenSC Mailing list: opensc-devel at opensc-project.org For additional specific info, contact with the authors: Juan Antonio Martinez jonsito at teleline.es Mario Strasser mast at gmx.net Ludovic Rousseau ludovic.rousseau at free.fr pam_pkcs11-0.6.12/doc/card_eventmgr.10000644000175000017500000000442013553631305014133 00000000000000.TH card_eventmgr 1 "Aug 2005" "Juan Antonio Martinez" PAM-PKCS#11 .SH NAME card_eventmgr \- PCSC\-Lite Event Manager .SH SYNTAX .B card_eventmgr .RB [ debug ] .RB [[ no ] daemon ] .RB [ timeout=\fI\fP ] .RB [ config_file=\fI\fP ] .RB [ kill ] .RB [ pidfile=\fI\fP ] .SH DESCRIPTION .B card_eventmgr is a smart card monitoring tool that listen to the status of the card reader and dispatch actions on several events. .B card_eventmgr can be used for several actions: like screen lock on card removal. .P Three events are supported: card insertion, card removal and timeout on removed card. Actions are specified in a configuration file. .SH OPTIONS .TP .B debug Enable debugging output. .TP .RB [ no ] daemon Runs in background if daemon or in foreground if nodaemon (default). If debug is unset, the program dettaches itself from the tty. .TP .BI timeout= Set polling timeout in milliseconds. Defaults to 1000 (1 second). .TP .BI config_file= "" Sets de configuration file. Default value is .IR /etc/pam_pkcs11/card_eventmgr.conf . .TP .BI pidfile= Store the .B card_eventmgr process ID (pid) in the file .IR pidfile . .TP .B kill Read a process id from .I pidfile and kill that process. You must use the argument .BI pidfile= to use .BR kill . .SH FILES \fI/etc/pam_pkcs11/card_eventmgr.conf\fP .SH EXAMPLES To run this program the standard way type: .P card_eventmgr .P Alternatively you can specify options: .P card_eventmgr debug nodaemon timeout=500 config_file=$HOME/.card_eventmgr.conf .P If you want to start and stop card_eventmgr automatically in an X11 session you can create a \fI~/.xsession\fR file containing: # start the card autolock card_eventmgr pidfile=$HOME/.card_eventmgr.pid # start Gnome or something else /usr/bin/x-session-manager # kill the card autolock card_eventmgr kill pidfile=$HOME/.card_eventmgr.pid .SH BUGS Some applications like .B xscreensaver\-command may fail due to external events (eg: try to unlock an unlocked session). In this case, the command incorrectly returns error code. .SH AUTHORS Juan Antonio Martinez .br Ludovic Rousseau .SH "SEE ALSO" .BR pam_pkcs11 (8), .BR pkcs11_eventmgr (1), README.eventmgr, PAM\-PKCS11 User Manual pam_pkcs11-0.6.12/doc/pkcs11_listcerts.10000644000175000017500000000063113553631305014511 00000000000000.TH "pkcs11_listcerts" "1" .SH "NAME" .LP pkcs11_listcerts \- SmartCard PKCS#11 certificates listing .SH "SYNTAX" .LP pkcs11_listcerts [\fIdebug\fP] .SH "DESCRIPTION" .LP pkcs11_listcerts display all the certificates. .SH "OPTIONS" .LP .TP \fBdebug\fR Enable debugging output. .SH "AUTHORS" .LP Juan Antonio Martinez .SH "SEE ALSO" .LP pam_pkcs11(8) .br PAM\-PKCS11 User Manual pam_pkcs11-0.6.12/doc/pam_pkcs11.xml0000644000175000017500000021034114367517037013724 00000000000000 PAM-PKCS11 User Manual 2005-Sep-27 Release 0.5beta2, 27 Sep 2005 Juan Antonio Martinez jonsito@teleline.es Mario Strasser mstt@gmx.net Antti Tapaninen aet@cc.hut.fi Timo Sirainen tss@iki.fi Ludovic Rousseau ludovic.rousseau@free.fr PAM-PKCS#11 is a PAM (Pluggable Authentication Module) library and related tools to perform login into Linux/UNIX systems by mean of X509 Certificates through any PKCS #11 compliant library. This manual describes how to compile, install, configure and use pam-pkcs11 PAM module and related tools. Copyright License Copyright (C) 2005 Juan Antonio Martinez jonsito@teleline.es Copyright (C) 2003-2004 of Mario Strasser mstt@gmx.net ScConf library Copyright (C) Antti Tapaninen aet@cc.hut.fi and Timo Sirainen tss@iki.fi This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Introduction pam_pkcs11 is a set of libraries and tools to controls the login process using a PKCS#11 token. The Linux-PAM login module allows a X.509 certificate based user login. The certificate and its dedicated private key are thereby accessed by means of an appropriate PKCS #11 module. For the verification of the users' certificates, locally stored CA certificates as well as either online or locally accessible CRLs are used. pkcs11_eventmgr is a tool to execute commands at insert or removal of a smart card from the reader. Alternatively, you can use the pcsc-lite's based version: card_eventmgr. pkcs11_inspect tool allows you to look at the content of a certificate, in order to help you in the process of Certificate-to-User mapping configuration. pklogin_finder tool can be used to check the PAM module without need to do the entire login process, just verifying that login names are properly found and matched. Detailed information about the Linux-PAM system can be found in The Linux-PAM System Administrators' Guide, The Linux-PAM Module Writers' Guide and The Linux-PAM Application Developers' Guide. The specification of the Cryptographic Token Interface Standard (PKCS #11) is available at PKCS #11 - Cryptographic Token Interface Standard. Fundamentals Pam-pkcs11 is a PAM (Pluggable Authentication Module) pluggin to allow logging into a UNIX/Linux System that supports PAM by mean of use Digital Certificates stored in a smart card. To do this, a PKCS #11 library is needed to access the Cards. Details on how certificates are stored/retrieved, etc are hidden to pam-pkcs11 and handled by PKCS #11 library. This allows independence of the module from a specific card. PKCS #11 Module Requirements The PKCS #11 modules must full-fit the requirements given by the RSA Asymmetric Client Signing Profile, which has been specified in the PKCS #11: Conformance Profile Specification by RSA Laboratories. User Matching To approve the ownership of a certificate, that is, to allow the owner of a certificate to login as a particular user, pam-pkcs11 uses several modules called mappers that perform cert-to-login mapping. See mappers section. [Note: This is still a work in progress, any suggestions for improvements or alternative matching algorithms are welcome.] Installation Download source code from the official site. Unpack source tarball: tar xvzf pam_pkcs11-X.Y.Z.tar.gz cd pam_pkcs11-X.Y.Z If using SVN tree, re-create environment: ./bootstrap Execute the "standard" install sequence :-) ./configure make make install Alternatively, on RedHat Linux systems, you can use rpmbuild tools and the provided .spec file to create and install RPM packages: rpmbuild -ta /path/to/pam_pkcs11.X.Y.tar.gz rpm -v -i /usr/src/redhat/RPMS/i386/pam_pkcs11-X.Y-Z.i386.rpm rpm -v -i /usr/src/redhat/RPMS/i386/pam_pkcs11-tools-X.Y-Z.i386.rpm Configure package: Create the base configuration directory: /etc/pam_pkcs11/ Copy ${base}/etc/pam_pkcs11.conf.example to /etc/pam_pkcs11/, rename it to /etc/pam_pkcs11/pam_pkcs11.conf and personalize it Create /etc/pam_pkcs11/crls/ and /etc/pam_pkcs11/cacerts/ directories corresponding to the configuration file, and fill them with proper data. The tools/ directory provides a tool pkcs11_make_hash_link that can be used to create hash files on every valid Cert and CRL file. Choose one or more mappers to install, set up configuration file, and if needed configure mappers. File /etc/pam_pkcs11.conf is documented to allow an easy editing Edit and configure /etc/pam.d/xxx entries. See instructions bellow Use pkcs11_inspect and pklogin_finder provided tools to see if you can read certificate data and perform correct user mapping Try to log in. For instance, switch to a new tty console If things go wrong: Ensure that the PKCS #11 library works properly. You can, for instance, try to use the PKCS #11 module as an engine for OpenSSL or Mozilla/Firefox Re-check the configuration If a mapping file is used, check it. There are some known problems on some certificates that uses obscure character encodings (non utf-8), that makes CN mappings fail NOTES To avoid locking the computer, it is recommended to try to configure only one non-critical service the first time (e.g. /etc/pam.d/xscreensaver), and allow normal login on the other services (/etc/pam.d/gdm). PAM modules used for remote authentication (e.g. /etc/pam.d/sshd) cannot be used with pam-pkcs11 since there is no local smart card on the server. To do remote logging, you should use a kind of Single Sign On (SSO) service (Kerberos, winbind, etc.) and authenticate against a local (client) smart card. This is a job in progress. Configuring pam-pkcs11 Configuration of pam-pkcs11 involves two steps: Configure pam-pkcs11 Configure global PAM options This chapter explains pam-pkcs11 configuration-related issues. Next chapter deals with generic PAM options. You should read this manual and study the provided configuration sample files before doing any change. You must know: Which PKCS #11 module you are going to use, and its filename Which mapper(s) module(s) you need, and if needed, how to create and edit related mapping files You'll also need the root Certificate Authority files, and if required, the Certificate Revocation Lists ones Of course, the list of authorized users to login, and their corresponding certificates. When a remote certificate authentication is performed (e.g., via LDAP, ADS or NSS), this information must reside on, or be accessible by the server Setting up Configuration file The configuration file uses the scconf library. Parameters and data are grouped into blocks. Blocks can be nested in a tree. A pam-pkcs11 configuration file looks like: pam-pkcs11 { global options ... use_pkcs11_module = pkcs11 module to be used pkcs11_module module1 { module1 specific options } pkcs11_module module2 { module2 specific options } [...] use_mappers = mapper1, mapper2,... ; mapper mapper1 { mapper1 specific options } mapper mapper2 { mapper2 specific options } [...] mapper mapperN { mapperN specific options } } For detailed description see the pam_pkcs11.conf.example file. Details on scconf syntax and API are provided in the src/scconf/README.scconf file. Setting up CRL's and CA's lists pam-pkcs11 needs a list of recognized Certificate Authorities, to properly validate user certificates. The same applies to Certificate Revocation Lists (if configured to be used). So the process to setup ca and crl entries is: Create ca_dir and crl_dir directory entries, according to configuration file Copy CA Certificates (either DER or PEM format) to the ca_dir directory Create hash links to CA certificates with provided pkcs11_make_hash_link. Note that OpenSSL must be installed cd /etc/pam_pkcs11/cacerts /usr/bin/pkcs11_make_hash_link Repeat above procedure for CRL entries (if used) Select your Certificate verification policy ("" option in "" entry) NOTE: Due to OpenSSL library limitations, CA root certificate entries must reside in the local file system, and cannot be accessed from a remote server. So although user auth can be done in a remote way, certificate trust chain validation must be done locally. Create map files If your selected mapper module(s) use(s) login mapping, you'll need to create and setup mapping files. Some examples are provided with the source code. As a general rule, a mapping file has a new line terminated list of certificate contents -> login entries: Certificate1 data -> login1 Certificate2 data -> login2 Certificate2 data -> login3 Remember that this file is parsed from the first line to the end, and returns on the first match. As you can see bellow, mapfile specification doesn't need to be a regular file: you can retrieve data from any legal URL. Anyway, data format must be preserved. See mapfile for additional info. PAM Configuration Configuring pam.d files To make use of the PKCS #11 login module add the line auth sufficient pam_pkcs11.so ... in the /etc/pam.d/serviceXXX configuration file. Some mappers doesn't map to an existing user. To allow correct login, you may need to install also pam-mkhomedir in session PAM stack See for details. The following options are recognized by pam-pkcs11.so: debug Enable debugging support. err_display_time Seconds to wait after error message is shown to give users a chance to read the message. config_file To specify up configuration file (default /etc/pam_pkcs11/pam_pkcs11.conf) The next options should be taken from the configuration file (default /etc/pam_pkcs11/pam_pkcs11.conf), but is up to the user to specify them in the command line. If so, it takes precedence over the configuration file. nullok Allow empty passwords. use_first_pass Do not prompt the user for the passwords but take them from the PAM_ items instead. try_first_pass Do not prompt the user for the passwords unless PAM_(OLD)AUTHTOK is unset. use_authtok Like try_first_pass, but fail if the new PAM_AUTHTOK has not been previously set (intended for stacking password modules only). Next options are PKCS #11 module specific: pkcs11_module=<file> Filename of the PKCS #11 module. The default value is /etc/pam_pkcs11/pkcs11_module.so Note that this option takes precedence over "module" entry in proper pkcs11_module section, but this section is still needed slot_num=<nr> Slot-number to use: 1 for the first, 2 for the second and so on. The default value is 0, which means to use the first slot with an available token. ca_dir=<path> Path to the directory where the CA certificates are stored. The directory must contain an OpenSSL hash-link to each certificate. The default value is /etc/pam_pkcs11/cacerts/. Pam-pkcs11 provides a utility: pkcs11_make_hash_link that can be used to create hash links to certificate files. Hashes are used to check certification validity and revocation. crl_dir=<path> Path to the directory where the CRLs are stored. The directory must contain an openssl hash-link to each CRL. The default value is /etc/pam_pkcs11/crls/. cert_policy={none, ca, signature, crl_online, crl_offline, crl_auto} Sets the Certificate verification policy: none: Performs no verification at all ca: Checks that Certificate has a recognized CA from ca_dir signature>: Does a signature check to ensure that private and public key matches crl_online: Downloads the CRL from the location given by the CRL distribution point extension of the certificate crl_offline: Uses the locally stored CRLs. crl_auto: Is a combination of online and offline: it first tries to download the CRL from a possibly given CRL distribution point and if this fails it uses the local CRLs. You can use a comma-separated list to specify all desired options, eg . The default setting is . Sample pam.d/ entries Here is the normal way to use pam-pkcs11 into the PAM stack. Only the first auth line is added. You configuration may be different depending on your Unix system. #%PAM-1.0 auth sufficient pam_pkcs11.so auth required pam_securetty.so auth required pam_stack.so service=system-auth auth required pam_nologin.so account required pam_stack.so service=system-auth password required pam_stack.so service=system-auth session required pam_stack.so service=system-auth session optional pam_console.so An alternate way is to use explicit options. This is not recommended, but still possible: #%PAM-1.0 auth sufficient pam_pkcs11.so nullok debug try_first_pass \ config_file=/etc/pam_pkcs11/pam_pkcs11.conf \ pkcs11_module=/usr/lib/pkcs11/pkcs11_module.so \ ca_dir=/etc/cacerts/ crl_dir=/etc/cacerts/ cert_policy=none auth required pam_securetty.so auth required pam_stack.so service=system-auth auth required pam_nologin.so account required pam_stack.so service=system-auth password required pam_stack.so service=system-auth session required pam_stack.so service=system-auth session optional pam_console.so In this second example the configuration file is still needed to get the mapper module options and flags. Using Login auto-detect features Starting at pam_pkcs11-0.4.2 a new feature is provided: pam-pkcs11 can deduce the username from the user certificate without using the login prompt. This is done when pam_get_user() call returns null or an empty string. In this case, pam-pcks11 uses the module mapper "find" feature instead of normal "match". If the finder returns with success, the found username is set to PAM using pam_set_item(PAM_USER) call, and PAM_AUTH_OK is returned. So it is no longer needed to enter the login name if a certificate is provided and can be mapped to a user. There are to ways for using this feature: Patch "gdm" and "login" programs to detect card presence and return null as user name, without prompt for a user login. This is a work to be done :-( Use unpatched versions, and do the following procedures: When login from console, just enter " " (space) + Enter. When login from gdm, just key Enter at login prompt. In both cases the procedure follows as: If a card is not present, "login" will ask for a password and then fail; "gdm" will prompt again for a user login If a card is present, pam-pkcs11 will ask for the PIN, and then invoke finder in module mapper list. When a user is found, this user become the logged user This feature can be used with pam-mkhomedir.so PAM session module. In this case, you can create on-the-fly accounts. This scenario is ideal for centralized auth services (Winbind, LDAP, Kerberos, RDBMS auth...). As example, here comes my tested /etc/pam.d/gdm file: #%PAM-1.0 auth sufficient pam_pkcs11.so debug config_file=/etc/pam_pkcs11/pam_pkcs11.conf auth required pam_env.so auth required pam_stack.so service=system-auth auth required pam_nologin.so account required pam_stack.so service=system-auth password required pam_stack.so service=system-auth session required pam_stack.so service=system-auth session optional pam_mkhomedir.so skel=/etc/skel umask=0022 session optional pam_console.so IMPORTANT NOTES: For pam_set_item(PAM_USER) to succeed, the application using PAM must have enough permission. If this condition is not met, setting user process will fail and proper log message registered. So this feature is mainly provided for logging processes running as root. Improper mapper chain' configurations with unauthorized certificates can lead to the creation of fake accounts in the system if pam_mkhomedir.so module is used. So be really careful when authenticate users directly from certificates. Using the Event Manager Tools PAM-PKCS11 includes several tools: card_eventmgr and pkcs11_eventmgr that can be used to monitor the status of the card reader and dispatch actions on several events. These programs can be used to several actions, like lock screen on card removal. Note that these programs have no direct interaction with pam-pkcs11 module: they are just card status monitors. It is the system administrator job to define and configure actions to take on events. Using the Card Event Manager card_eventmgr is a card status monitor based on the PCSC-Lite library. To invoke the program, just type card_eventmgr. Several command lines options are recognized: to enable debugging. Default is no debug to run as a daemon in the background. If is unset, also detach from the tty. Default is to run in the foreground time in milliseconds between two consecutive status poll. Defaults is 1000 (1 second) configuration file to use. Default is /etc/pam_pkcs11/card_eventmgr.conf Structure of configuration file Here is an example of configuration file. It is auto-descriptive: card_eventmgr { # Run in background? Implies debug=false if set to true daemon = false; # show debug messages? debug = false; # polling time in milliseconds timeout = 1000; # # list of events and actions # Card inserted event card_insert { # what to do if an action fail? # ignore : continue to next action # return : end action sequence # quit : end program on_error = ignore ; # You can enter several, comma-separated action entries # they will be executed in turn action = "/usr/bin/play /usr/share/sounds/warning.wav", "/usr/X11R6/bin/xscreensaver-command -deactivate"; } # Card has been removed event card_remove { on_error = ignore; action = "/usr/bin/play /usr/share/sounds/error.wav", "/usr/X11R6/bin/xscreensaver-command -lock"; } } Using the PKCS#11 Event Manager pkcs11_eventmgr is very similar to card_eventmgr, with some improvements: It uses the PKCS#11 library, instead the low-level PCSC-Lite API Polling time, and expire time unit is the second, not the millisecond New command line options: to enable/disable debugging. Defaults to "" to run as daemon or foreground. If debug is unset, daemon mode also detaches from tty. Default to "" time in seconds between two consecutive status poll. Defaults to 1 second time in second on card removed to trigger "expire_time" event. Default to 0 (no expire) configuration file to use. Defaults to /etc/pam_pkcs11/card_eventmgr.conf PKCS #11 dynamic library to use. Defaults to /usr/lib/pkcs11/opensc-pkcs11.so Expire time on card removal is now supported Configuration file is slightly different. See provided example Here is a pkcs11_cardmgr sample file, with defaults # Sample pkcs11_eventmgr configuration file # pkcs11_eventmgr { # Run in background? Implies debug=false if true daemon = true; # show debug messages? debug = false; # polling time in seconds polling_time = 1; # expire time in seconds # default = 0 (no expire) expire_time = 0; # pkcs11 module to use pkcs11_module = /usr/lib/opensc-pkcs11.so; # # list of events and actions # Card inserted event card_insert { # what to do if an action fail? # ignore : continue to next action # return : end action sequence # quit : end program on_error = ignore ; # You can enter several, comma-separated action entries # they will be executed in turn action = "/usr/bin/play /usr/share/sounds/warning.wav", "/usr/X11R6/bin/xscreensaver-command -deactivate"; } # Card has been removed event card_remove { on_error = ignore; action = "/usr/bin/play /usr/share/sounds/error.wav", "/usr/X11R6/bin/xscreensaver-command -lock"; } # Too much time card removed event expire_time { on_error = ignore; action = "/bin/false"; } } As you can see, on each event you can define a list of actions, and what to do if an action fails. Security issues The best way to start card monitoring is at user login. If so, note that all event commands will be executed with user privileges. So it is up to the user to take care that he has permissions to execute the desired actions. Special checks should be done when invoking setuid/segid programs: these commands usually ignore the user environment and set up their own. So these applications may not work as expected. Command actions are executed via execve("/bin/sh","-c","provided command",null,environ) in order to avoid security risks if using system() library call. Example: use xscreensaver to lock screen on card removal Just add to your ~/.xsession or KDE/GNOME Autostart directory an invocation to card_eventmgr in daemon mode. Your ~/.xsession should look like: FIXME Additionally you can add this line to /etc/pam.d/xscreensaver configuration file: auth sufficient pam_pkcs11.so In this case, when card is removed the X screen will lock. When card is re-inserted, screen will prompt for the card PIN, check it and if access granted the screen will unlock NOTES: Starting pam_pkcs11-0.4.4, card_eventmgr tool is no longer supported by pam-pkcs11, and may be removed in newer versions on the package. Users are encouraged to upgrade to pkcs11_eventmgr. This is done to avoid dependencies on low level card management routines Some PKCS#11 implementations do not properly support C_WaitForSlotEvent() function as defined in PKCS #11 v2.1 API. So current pkcs11_eventmgr doesn't use it at all, just sleep+rescan tokens. This is a time-consuming behavior, and may change in future versions of the tool Using the Login Finder Tool PAM-PKCS#11 provides another tool: pklogin-finder that can be used to find Cert-to-login maps, outside the PAM environment. This tool can be used to create and test map files, or to check environment and configuration files, without need to use PAM related tools. pklogin_finder uses the same structure and configuration than pam-pkcs11 module. It reads certificate, and try all specified mappers to find a user match. When found, login name is displayed on stdout. To invoke, just type from console: pklogin_finder [[no]debug] [config_file=<file>] By default, debug is set to false, and config_file to /etc/pam_pkcs11/pam-pkcs11.conf. All PAM related options (, , and so) in configuration file are ignored Return values are: 0 0n success, and login name displayed on stdout 1 On no login match found 2 On process error Using the PKCS#11 CertInspect tool Starting at version 0.5 a new tool pkcs11_inspect is provided. pkcs11_inspect is a PKCS #11 based tool to explore certificate contents. It's similar to pklogin_finder, but no mapping is done at all: just load mappers' chains, and in turn, try to get proper data from certificate (i.e.: cn_mapper looks for CN entries, and so). When desired info is found, pkcs11_inspect print found data to stdout, without doing any mapping, that is, mapfile entries in configuration file are ignored. The reason to exist for this tool is to ease the making of mapping files: Insert your smart card Invoke pkcs11_inspect Store result as "left side" of mapfile Edit mapfile and assign contents to a login Same command line options and configuration file than pklogin_finder applies to pkcs11_inspect command, but note that and options will be ignored. See the manual page for details. HOWTO install pam_pkcs11 We will now describe a complete installation of pam_pkcs11 as an example case. This configuration will use a local root CA certificate and the subject mapper. Many other configurations are also possible. Install the software You should install pre-compiled binaries since that is the easiest way to install a software. See the documentation of your distribution to know how to install RPM, DEB or whatever packages. If you want to recompile from source read Installation. Configure pam_pkcs11 Create the needed directories mkdir /etc/pam_pkcs11 mkdir /etc/pam_pkcs11/cacerts mkdir /etc/pam_pkcs11/crls Copy and install the root CA certificate I used tinyCA to generate the root CA and the user certificates. Your root CA certificate name may be different. Make sure that all the files in /etc/pam_pkcs11/cacerts/ can be read by any user. cp testCA-cacert.der /etc/pam_pkcs11/cacerts/ cd /etc/pam_pkcs11/cacerts chmod a+r * pkcs11_make_hash_link Configure pam_pkcs11 Copy the sample file: cp /usr/share/doc/pam-pkcs11/examples/pam_pkcs11.conf.example.gz /etc/pam_pkcs11/ cd /etc/pam_pkcs11/ gunzip pam_pkcs11.conf.example.gz mv pam_pkcs11.conf.example pam_pkcs11.conf The sample file uses the OpenSC PKCS#11 library. You may need to edit /etc/pam_pkcs11/pam_pkcs11.conf if you want to use another PKCS#11 library. Configure the subject mapper Copy the sample file: cp /usr/share/doc/pam-pkcs11/examples/subject_mapping.example /etc/pam_pkcs11/subject_mapping Then use pkcs11_inspect to get the information you need for the mapper. In our case you are looking for something like: Printing data for mapper subject: /C=ES/O=FNMT/OU=FNMT Clase 2 CA/OU=500051483/CN=NOMBRE MARTINEZ CASTA\xF1O JUAN ANTONIO - NIF 50431138G Note that this is one line but it is wrapped to be displayed here in the form of three lines. Then edit /etc/pam_pkcs11/subject_mapping to add the strings above followed by -> login name. The file should then contain something like: # Mapping file for Certificate Subject # format: Certificate Subject -> login # /C=ES/O=FNMT/OU=FNMT Clase 2 CA/OU=500051483/CN=NOMBRE MARTINEZ CASTA\xF1O JUAN ANTONIO - NIF 50431138G -> jantonio Again note that the two last lines displayed should be only one. Install and test your PAM configuration You will now configure your PAM system to use pam_pkcs11. We recommend you to start with an easy-to-debug application like login. The advantage of login is that you can see the debug messages from pam_pkcs11. Edit /etc/pam.d/login and add, at the beginning of the file, the lines: # pam_pkcs11: smart card login auth sufficient pam_pkcs11.so Since /etc/pam_pkcs11/pam_pkcs11.conf has "debug = true" you should see lots of debug on the console you use to log in. You should also see any error that would occur. If everything works correctly you can change the configuration file and use "debug = false". Once your PAM configuration is tested and working you can configure all the PAM applications you want to use with a smart card. A possible list is: gdm (Gnome Display Manager) kdm (KDE Display Manager) xdm (X11 display manager) login (text console login) xscreensaver (X11 screen saver) etc. Secure your PAM configuration We used "sufficient" in the PAM configuration file. If the pam_pkcs11 module fails to authenticate the user the PAM system will go on with the next PAM module, the next PAM module should ask for a password. If you want to use the smart card only and not the password any more just replace "sufficient" by "required". The authentication process will then fail if pam_pkcs11 fails. Note: with the "required" option, if there is a bug in any smart card related software you will not be able to log in even as root. It should be safer to keep the possibility to log in using a password but at the same time disable password login for normal users. So you will still be able to login as root with the root password. Using card_eventmgr card_eventmgr is a helper tool to automatically launch an application to lock or unlock the screen when the card is removed or inserted. A natural application is to lock the X11 screen when the card is removed. Configuring and testing card_eventmgr Copy the sample file: cp /usr/share/doc/pam-pkcs11/examples/card_eventmgr.conf.example /etc/pam_pkcs11/card_eventmgr.conf Edit the configuration file to set the actions to be processes when the card is removed and inserted. You may have to change the command to play a sound. You can now test your card_eventmgr configuration file by executing card_eventmgr debug nodaemon You will see some debug messages and, possibly, why the command you configured as action does not work properly. Starting card_eventmgr After debugging your card_eventmgr configuration file you can start it automatically. One solution is to create a ~/.xsession file containing: # start the card autolock card_eventmgr pidfile=$HOME/.card_eventmgr.pid # start Gnome or something else /usr/bin/x-session-manager # kill the card autolock card_eventmgr kill pidfile=$HOME/.card_eventmgr.pid What is a cert mapper? Fundamentals When a X509 Certificate is provided, there are no direct ways to map a cert to a login. With a certificate we can check validity and revocation, but user mapping depends entirely on certificate contents. So we need a configurable, stackable, and definable way to specify cert-to-user mapping. pam-pkcs11 cert mappers provides several functions to: Search an specific item in certificate Deduce a login from certificate Test if a login and a certificate matches Normal pam-pkcs11 login process involves following procedures: Enter login Ask for PIN Open and validate certificate Map certificate into an user (*) Check if login and user matches (**) An alternate way of working is by mean of not providing user name: Detect if a card is inserted Ask for PIN Open and validate certificate Map certificate into an user (*) Open session for deduced login Last way needs an additional pam-mkhomedir.so PAM module, which can dynamically create an account. Operations (*) and (**) are the reason for cert-mappers to exist. Implementation of cert mappers in pam-pkcs11 pam-pkcs11 implements cert mapper in form of dynamic loaded modules. Additionally, most of simplest mappers doesn't need to be dynamically loaded, as they are already statically linked with pam-pkcs11. You can add as many modules as desired, and the system will try all of them in turn, until match is done, or end of list get reached. The mapper list is defined in the configuration file: pam-pkcs11 { .... use_mappers = mapper1 [ [[,] mapper2 ] ... ] ; .... mapper mapper1 { debug = false; # When the mapper module is to be dynamically loaded, specify path module = /path/to/module.so; # When the mapper module is statically linked set to "internal" # module = internal; [ additional mapper dependent options ] } .... } "module" option is mandatory: says pam_pkcs11 where to find dynamic library. Additional entries can be defined but are module dependent How to use mapfiles Most of mappers supports the concept of mapfile, that is, a system to convert a given certificate data item to a user login. The reasons are simple: Most certificate contents are no valid for use as login name, and need some way to manage it We can store and manage a list of authorized certificates in a centralized way. The mapfile scheme used in pam-pkcs11 is powerful: it's not only restricted to files, so we can specify HTTP, LDAP, FTP and so connections, to retrieve mapfile. So this scheme is ideal for centralized accounting systems. The common structure of all mapfiles is: Certificate 1 entry data -> login1 Cert 2 data -> login2 string from -> string to That is: a string, the sequence " -> " (space, dash, greater, space) and a login NOTE: It's syntactically correct to specify more than one word in the right side of a map entry. But be aware that most mappers expect to be returned a single word that provides a user login. Otherwise a strange behavior may occur. See specific notes on mappers. When a mapper module uses mapfiles, has a structure like: ... mapper my_mapper { ... mapfile = URL; } ... URL is a Universal Resource Locator as defined in corresponding RFC: ftp://user:password@my.host.com/file file:///path/to/local/file https://www.weirdserver.com:8000/ ldap://ldap.frontec.se/o=frontec??sub?mail=*sth.frontec.se Note that depending on compile time options pam-pkcs11 may not support all URL syntax. See Install section and use of --use-curl configure option Provided source code includes several example mapping files Mappers provided by Pam-pkcs11 The standard pam-pkcs11 provides following mapper modules: Common Name (CN) mapper Assumes CN field on certificate to be the login name. When used as finder, module returns the first CN field found or NULL When used as matcher, it parses certificate and compare all CN fields found against provided login name, returning OK if match found In either case, if a mapfile is used, the mapper will try to map CN into a login and use it. Configuration entry is as follow: # Common Name (CN) to login mapper mapper cn { debug = false; module = internal; # module = /usr/lib/pam_pkcs11/cn_mapper.so; # mapfile = "file:///etc/pam_pkcs11/cn_mapfile; ignorecase = false; mapfile = "none" } Starting pam-pkcs11-0.5.3 this module is now statically linked, so no need to provide library pathname Subject mapper Extract Certificate Subject and assume it as login. When used as finder, returns mapped login, or assume login=subject if no map found or provided When used as matcher, try to match provided login, with result obtained by previous find operation In either case, if a mapfile is used, the mapper will try to map subject into a login and use it. Configuration file is like: # Certificate Subject to login mapper mapper file { debug = false; module = internal; # module = /usr/lib/pam_pkcs11/subject_mapper.so; ignorecase = true; # mapfile = file:///etc/pam_pkcs11/subject_map; mapfile = "none"; } The mapping file must follow this structure: .... Certificate Subject -> login .... Note that some certificates handle strange char mappings (non utf-8) so you must ensure correct byte-to-byte match. You can use provided pkcs11_inspect tool to get and store correct data from certificate Starting pam-pkcs11-0.5.3 this module is now statically linked, so no need to provide library pathname Getpwent() CN to login mapper Compare CN against getpwent() library call login or gecos returned values to match user login When used as finder use getpwent() system call to retrieve every users on the system. If pw_name or pw_gecos fields match with CN, pw_name is returned as login name When used as matcher, maps CN to an user with via the finder and matches result with login name provided by PAM, returning the result (match or no) Note: newer implementations of getpwent() libraries, use an additional Name Service Swicth (NSS) infrastructure, that allows administrators to specify how to obtain requested data. This means you can setup /etc/nsswitch.conf password entries to lookup in to /etc/passwd, or LDAP/Kerberos/NIS+/YP services pw_mapper configuration file shows like: mapper pw { debug = true; ignorecase = false; module = internal; # module = /usr/lib/pam_pkcs11/pw_mapper.so; } Starting pam-pkcs11-0.5.3 this module is now statically linked, so no need to provide library pathname LDAP (lightweight directory access protocol) mapper Uses an LDAP server to retrieve user name. An additional file tells module the mapping between Cert fields and LDAP entries. This mapper is still under development. ldap_mapper configuration file shows like: # Directory ( ldap style ) mapper mapper ldap { debug = false; module = /usr/lib/pam_pkcs11/ldap_mapper.so; ldaphost = ""; ldapport = ; URI = ""; scope = 2; binddn = "cn=pam,o=example,c=com"; passwd = ""; base = "ou=People,o=example,c=com"; attribute = "userCertificate"; filter = "" uid_attribute = "uid"; attribute_map = "", ""; # SSL/TLS-Settings ssl = tls # tls_randfile = ... tls_cacertfile = /etc/ssl/cacert.pem # tls_cacertdir = ... tls_checkpeer = 0 #tls_ciphers = ... #tls_cert = ... #tls_key = ... } The following options are recognized by ldaphost The FQDN (hostname) oder IP-address of the ldap server. URI A space separated list of LDAP URIs. The URIs are used in the given order. If a ldaphost is also submitted, it will be appended to the URI list. ldapport The LDAP Port on the server (default: 389 for LDAP and LDAP-TLS and 636 for SSL) scope Scope of search: 0-2 "base", search only the basedn "one", only the set of records one level below the basedn is searched (default) "sub" means the union of entries at the "base" level and all levels below are searched binddn The bind-DN if needed. passwd Password for bind-DN base The DN of the searchbase (see scope) attribute The user attribute in LDAP entry, which contains the certificate. This can be an multi-value attribute. That implies you can store more than one certificate under this attribute. All certificates are utilized. uid_attribute The attribute in an LDAP entry which contains the user's login name. When the module needs to determine the user's login name from the information in the certificate, if this option is set, the module can search for an LDAP entry which contains the certificate that was read from the card in the attribute named by the setting and read the user's login name from this attribute. If not, the module must iterate through all known users, checking for each user if the certificate on the card matches that user. attribute_map A list of sets of conditions which can specify how the module should locate an entry which corresponds to the user. Each list item consists of a set of one or more conditions consisting of an LDAP attribute and a certificate attribute, with conditions in the same set being separated by a character. An LDAP entry is considered to match a user if all of the conditions are met. The recognized certificate attributes include "cn" a commonName attribute value from the certificate's subject "subject" the certificate's entire subject name "kpn" a Kerberos principal name subjectAltName value "email" an rfc822Name subjectAltName value "upn" a Microsoft Universal Principal Name subjectAltName value "uid" a UID attribute value from the certificate's subject "cert" the entire certificate If no is specified, the default method is to search for entries which contain the card certificate in the attribute named by the setting. filter LDAP filter string. You can use ist to restrict the entries returned by the LDAP server, e.g. by checking other attributes of the user entry. %s is substituted by the user name. means, only that LDAP entry is returned which has an objectClass "posixAccount" and the uid with the user name. IMPORTANT NOTE: The filter string must be choosen in such a way that only one entry for the user is returned. If an user has more certifactes than these should be collected under the attribute. ssl Enable or disable the usage of TLS or SSL TLS/SSL off(default) enable TLS enable SSL tls_randfile Specifies the path to an entropy source. tls_cacertfile Specifies the path to the X.509 certificate for peer authentication. tls_cacertdir Specifies the directory containing X.509 certificates for peer authentication. tls_checkpeer Specifies whether to require and verify the server certificate or not. check the certificate off (default) tls_ciphers Specifies the ciphers to use. tls_cert Specifies the path to the file containing the local certificate for client TLS authentication if required. tls_key Specifies the path to the file containing the private key for client TLS authentication. OpenSC library mapper Search certificate in ${HOME}/.eid/autorized_certificates in a similar way as OpenSC does. When used as login finder, returns the user that owns ${HOME} directory where certificate is found. This mapper is still under development. OpenSSH library mapper Search certificate public key in ${HOME}/.ssh/authorized_keys in a similar way as OpenSSH does. The openssh mapper uses Naming Service Switch (NSS) via getpwent() to get the list of users and home directories When used as login finder, returns the user that owns the authorized_keys file where the public key is found. If several users share the same public key, returns first found login. On no public key match returns NULL When used as matcher, the module uses getpwnam() to evaluate user home directory, then tries to open ${HOME}/.ssh/authorized_keys file and finally tries to find a public key that matches with public keys found in certificate. Returns ok if match found, or fail on no match ( or process error ) Configuration file entry looks like: mapper openssh { debug = false; module = /usr/lib/pam_pkcs11/openssh_mapper.so; } NOTE: This mapper is still under development. Email Cert to login mapper Email mapper tries to extract an e-mail from certificate. If found does following procedures: if option is set and file is provided, the module tries to map email field from the certificate to a user (or an alternate email). if is not set, just use email address from certificate to perform find/match Once we have a mapped user, module does: When used as finder, just return email or mapped email/user (see above) When used as matcher, compare found email/user against provided by PAM. Additionally you can set or flags: Domain check (if set) is done by testing if provided email domain part (@ie.this.domain) matches host domain. E.g. user@my.company.com email in host host.in.my.company.com host matches domain. Configuration file entry looks like: mapper mail { debug = false; module = internal; # module = /usr/lib/pam_pkcs11/mail_mapper.so; # MapFile to use mapfile = file:///etc/pam_pkcs11/mail_mapping; # Some certs store email in uppercase. Take care on this ignorecase = true; # Also check that host matches mx domain ignoredomain = false; } Starting pam-pkcs11-0.5.3 this module is now statically linked, so no need to provide library pathname Microsoft Universal Principal Name mapper Try to find and use Microsoft Universal Principal Name (UPN) extension to evaluate login name. Microsoft Universal Principal Name is a ASN1-encoded UTF8 string with the syntax login@ADS_Domain. When an UPN is found, the mapper extracts login part as login user. Then, if ignoredomain is unset, try to match domain. When used as finder, returns UPN login as login name (or NULL on fail) When used as matcher compares UPN login against PAM provided login Configuration file entry looks like: mapper ms { debug = false; module = internal; # module = /usr/lib/pam_pkcs11/ms_mapper.so; ignorecase = false; ignoredomain = false; domainname = "domain.com"; } Starting pam-pkcs11-0.5.3 this module is now statically linked, so no need to provide library pathname Kerberos mapper Try to find and use Kerberos Principal Name as login name. if mapfile is specified, maps KPN into a login. NOTES: Kerberos V5 Principal name syntax is assumed: component/component@realm. It's supposed to be stored in ASN1String format in the certificate This mapper does not perform PKINIT Kerberos authentication, just retrieve and use KPN to map login name. (PKINIT auth is still a work in progress) Configuration entry: mapper krb { debug = false; module = internal; # module = /usr/lib/pam_pkcs11/krb_mapper.so; ignorecase = false; mapfile = "none"; } Starting pam-pkcs11-0.5.3 this module is now statically linked, so no need to provide library pathname Unique ID to login mapper Use Unique ID (UID) field as login name. Similar to CN mapper, but using UID as field to find/match. Configuration entry: mapper uid { debug = false; module = internal; # module = /usr/lib/pam_pkcs11/uid_mapper.so; ignorecase = false; mapfile = "none"; } Starting pam-pkcs11-0.5.3 this module is now statically linked, so no need to provide library pathname Certificate Digest to login mapper Evaluates a certificate digest, and try to map result into a login by using a mapfile. Configuration file should provide the digest algorithm. Depending on OpenSSL configuration all of listed bellow may or not be present in your system. Configuration entry: mapper digest { debug = false; module = internal; # module = /usr/lib/pam_pkcs11/digest_mapper.so; # Algorithm used to evaluate certificate digest # Select one of: # "null","md2","md4","md5","sha","sha1","dss","dss1","ripemd160" algorithm = "sha1"; mapfile = file:///etc/pam_pkcs11/digest_map; } Starting pam-pkcs11-0.5.3 this module is now statically linked, so no need to provide library pathname Generic mapper This mapper groups several mappers in one. You can select which certificate content should be used to deduce/match login, optionally perform a file mapping, and, if desired consult mapped string to NSS services to get final user login. Three arguments are needed: The certificate field to be used. Allowed values are: "cn" To use Certificate CommonName "subject" To use Certificate Subject "kpn" To use Kerberos PrincipalName "email" To use Certificate Email "upn" To use Microsoft Universal Principal Name "uid" To use Certificate UniqueID "serial" To use Certificate SerialNumber A map file name or "none" if no mapping is desired A "use_getpwent" flag, to decide if NSS services are required Note that fields are taken literally: i.e. no post-processing is done, just take string "as is", and pass it to next step. So if you need some data processing (i.e. use ADS name field in upn) this mapper is not for you. The first step is extract string from certificate. If a mapping file is required, the string is mapped against mapfile, obtaining a new string. If use_pwent is also required, the mapper compare last one against pw_login or pw_gecos. If a match is done, the pw_login is returned as user login. When module is user as login finder, returns result of above operations. When user as login matcher, compares provided login with above result. generic_mapper configuration file shows like: mapper generic { debug = true; module = internal; # module = /usr/lib/pam_pkcs11/generic_mapper.so; # ignore letter case on match/compare ignorecase = false; # Use one of "cn" , "subject" , "kpn" , "email" , "upn" , "uid" or "serial" cert_item = cn; # Declare mapfile if needed, else select "none" mapfile = file:///etc/pam_pkcs11/generic_mapfile # Decide if use getpwent() to map login use_getpwent = false; } Note: As for every other mappers, pklogin_finder tool, doesn't perform the entire process, just returns certificate contents. Starting pam-pkcs11-0.5.3 this module is now statically linked, so no need to provide library pathname Null mapper Blind access/deny mapper. If is set to true: When used as finder always returns configuration provided (default: "nobody") When used as matcher always returns OK If is set to false: When used as finder always returns NULL When used as matcher always returns FAIL Configuration entry: mapper null { debug = false; module = internal; # module = /usr/lib/pam_pkcs11/null_mapper.so; # select behaviour: always match, or always fail default_match = false; # on match, select returned user default_user = nobody; } NOTE: This mapper should be the last one in the mapper chain, as it always return valid -- although meaningless -- data Starting pam-pkcs11-0.5.3 this module is now statically linked, so no need to provide library pathname Adding new mappers Creating new mappers is easy: just retrieve and study the PAM-PKCS#11 Mapper API reference Manual You'll find sample code, compiling instructions, and a complete list of provided library calls Wish list Make all mappers to use an unified library Only ask for PIN only when needed (to extract private key for signature verification or pkinit challenge process) Check that certificate is valid for authentication instead of using first found cert Finish coding all mappers (OpenSSH, OpenSSL, LDAP to be done) Implement pkinit to talk Kerberos server Debug. I cannot test all cases Lots of docs and samples needs to be written Check data types on same certificate contents instead of assume utf8or asn1string Define and document a mapper API. Create pam_pkcs11-devel package Contact Any comments, suggestions and bug reports are welcome. Please, mention the keywords 'pkcs' and 'pam' in the subject. Juan Antonio Martinez jonsito at teleline.es Mario Strasser mast at gmx.net pam_pkcs11-0.6.12/doc/pam_pkcs11.80000644000175000017500000000304414367517104013266 00000000000000.\" . .TH "pam_pkcs11" "8" "15-Feb-2005" "Mario Strasser" "System Administration tools" .SH "NAME" pam_pkcs11 \- PAM Authentication Module for PKCS#11 token libraries .SH "SYNOPSIS" .B pam_pkcs11.so .RB [ debug ] .RB [ configfile= \fI "" ] .SH "DESCRIPTION" This Linux\-PAM login module allows a X.509 certificate based user login. The certificate and its dedicated private key are thereby accessed by means of an appropriate PKCS #11 module. For the verification of the users' certificates, locally stored CA certificates as well as either online or locally accessible CRLs are used. .SH "CONFIGURATION" The program that needs a PAM service should be configured in .I /etc/pam.conf or .IR /etc/pam.d/ . .P .B pam_pkcs11 can be used in the PAM chain. .P For details on how to configure PAM services, see the PAM documentation for your system. This manual does not cover PAM configuration details. The existing PAM service definitions for other applications on your system is also a good source for examples on how to configure a PAM service. .SH "FILES" \fI/etc/pam_pkcs11/pam_pkcs11.conf\fP .br \fI/usr/lib/pam_pkcs11/*_mapper.so\fP .SH "AUTHOR" Original PAM\-pkcs11 was written by Mario Strasser . Newer versions are from Juan Antonio Martinez . .SH "REPORTING BUGS" Report bugs ideas, comments, bug\-fixes and so to: .I Juan Antonio Martinez .SH "SEE ALSO" .BR pam (8), .BR pam_pkcs11.conf (5), PAM Systems Administrator Guide, .I README.mappers file, PAM\-PKCS#11 User Manual. pam_pkcs11-0.6.12/doc/README.eventmgr0000644000175000017500000000570114367517037013753 00000000000000Using the Card Event Manager ---------------------------- PAM-PKCS11 includes a tool "card_eventmgr" that can be used to monitor the status of the card reader and dispatch actions on several events. This program can be used for several actions, like screen lock on card removal. Note that this program has no interaction with pam-pkcs11: is just a card status monitor. It's up to the sysadmin to define and configure actions to take on events. To invoke the program, just type "card_eventmgr". Several command lines are recognized: - debug - to enable debugging. Defaults to unset - daemon - to run as daemon. If debug is unset, also dettach from tty. Default to unset - timeout= - time in msec between two consecutive status poll. Defaults to 1000 (1 second) - config_file= - configuration file to use. Defaults to /etc/pam_pkcs11/card_eventmgr.conf Structure of configuration file is described bellow: card_eventmgr { # Run in background. daemon = false; # show debug messages debug = false; # polling time in mili-seconds timeout = 1000; # # list of events and actions # Card inserted event card_insert { # what to do if an action fail? # ignore : continue to next action # return : end action sequence # quit : end program on_error = ignore ; # You can enter several, comma-separated action entries # they will be executed in turn action = "/usr/bin/play /usr/share/sounds/warning.wav", "/usr/X11R6/bin/xscreensaver-command -deactivate"; } # Card has been removed event card_remove { on_error = ignore; action = "/usr/bin/play /usr/share/sounds/error.wav", "/usr/X11R6/bin/xscreensaver-command -lock"; } # Too much time locked session event timeout { } } As you can see, on each event you can define a list of actions, and what to do if an action fails. SECURITY ISSUES: The best way to start card monitoring is at user login into the system. If so, note that all event commands will be executed with user privileges. So is up to the user to take care that he has the rights to execute the desired actions. EXAMPLE: use xscreensaver to lock the screen at card removal you can use the provided configuration sample file. Just add to your .xsession or KDE/GNOME Autostart directory an invocation to card_eventmgr in daemon mode. Additionally you can add this entry to /etc/pam.d/xscreensaver configuration: #%PAM-1.0 # Red Hat says this is right for them, as of 7.3: auth sufficient pam_pkcs11.so debug config_file=/etc/pam_pkcs11/pam_pkcs11.conf auth required pam_stack.so service=system-auth # This is what we were using before: # auth required pam_pwdb.so shadow nullok At pam-pkcs11-0.4.3 handling of timeout event is not managed yet In this case, when the card is removed the X screen will be locked. When the card is re-inserted, screen will prompt for the card PIN, check it and if access is granted the screen will unlock. pam_pkcs11-0.6.12/doc/doxygen.conf.in0000644000175000017500000031330214367517037014175 00000000000000# Doxyfile 1.8.9.1 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. # # All text after a double hash (##) is considered a comment and is placed in # front of the TAG it is preceding. # # All text after a single hash (#) is considered a comment and will be ignored. # The format is: # TAG = value [value, ...] # For lists, items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (\" \"). #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all text # before the first occurrence of this tag. Doxygen uses libiconv (or the iconv # built into libc) for the transcoding. See http://www.gnu.org/software/libiconv # for the list of possible encodings. # The default value is: UTF-8. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded by # double-quotes, unless you are using Doxywizard) that should identify the # project for which the documentation is generated. This name is used in the # title of most generated pages and in a few other places. # The default value is: My Project. PROJECT_NAME = pam_pkcs11 # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version # control system is used. PROJECT_NUMBER = @PACKAGE_VERSION@ # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a # quick idea about the purpose of the project. Keep the description short. PROJECT_BRIEF = # With the PROJECT_LOGO tag one can specify a logo or an icon that is included # in the documentation. The maximum height of the logo should not exceed 55 # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # the logo to the output directory. PROJECT_LOGO = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. OUTPUT_DIRECTORY = doc # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- # directories (in 2 levels) under the output directory of each output format and # will distribute the generated files over these directories. Enabling this # option can be useful when feeding doxygen a huge amount of source files, where # putting all generated files in the same directory would otherwise causes # performance problems for the file system. # The default value is: NO. CREATE_SUBDIRS = NO # If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII # characters to appear in the names of generated files. If set to NO, non-ASCII # characters will be escaped, for example _xE3_x81_x84 will be used for Unicode # U+3044. # The default value is: NO. ALLOW_UNICODE_NAMES = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, # Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), # Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, # Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), # Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, # Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, # Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, # Ukrainian and Vietnamese. # The default value is: English. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member # descriptions after the members that are listed in the file and class # documentation (similar to Javadoc). Set to NO to disable this. # The default value is: YES. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief # description of a member or function before the detailed description # # Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. # The default value is: YES. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator that is # used to form the text in various listings. Each string in this list, if found # as the leading text of the brief description, will be stripped from the text # and the result, after processing the whole list, is used as the annotated # text. Otherwise, the brief description is used as-is. If left blank, the # following values are used ($name is automatically replaced with the name of # the entity):The $name class, The $name widget, The $name file, is, provides, # specifies, contains, represents, a, an and the. ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # doxygen will generate a detailed section even if there is only a brief # description. # The default value is: NO. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. # The default value is: NO. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path # before files name in the file list and in the header files. If set to NO the # shortest path that makes the file name unique will be used # The default value is: YES. FULL_PATH_NAMES = NO # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. # Stripping is only done if one of the specified strings matches the left-hand # part of the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the path to # strip. # # Note that you can specify absolute paths here, but also relative paths, which # will be relative from the directory where doxygen is started. # This tag requires that the tag FULL_PATH_NAMES is set to YES. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the # path mentioned in the documentation of a class, which tells the reader which # header file to include in order to use a class. If left blank only the name of # the header file containing the class definition is used. Otherwise one should # specify the list of include paths that are normally passed to the compiler # using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but # less readable) file names. This can be useful is your file systems doesn't # support long names like on DOS, Mac, or CD-ROM. # The default value is: NO. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the # first line (until the first dot) of a Javadoc-style comment as the brief # description. If set to NO, the Javadoc-style will behave just like regular Qt- # style comments (thus requiring an explicit @brief command for a brief # description.) # The default value is: NO. JAVADOC_AUTOBRIEF = YES # If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first # line (until the first dot) of a Qt-style comment as the brief description. If # set to NO, the Qt-style will behave just like regular Qt-style comments (thus # requiring an explicit \brief command for a brief description.) # The default value is: NO. QT_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a # multi-line C++ special comment block (i.e. a block of //! or /// comments) as # a brief description. This used to be the default behavior. The new default is # to treat a multi-line C++ comment block as a detailed description. Set this # tag to YES if you prefer the old behavior instead. # # Note that setting this tag to YES also means that rational rose comments are # not recognized any more. # The default value is: NO. MULTILINE_CPP_IS_BRIEF = NO # If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the # documentation from any documented member that it re-implements. # The default value is: YES. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new # page for each member. If set to NO, the documentation of a member will be part # of the file/class/namespace that contains it. # The default value is: NO. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen # uses this value to replace tabs by spaces in code fragments. # Minimum value: 1, maximum value: 16, default value: 4. TAB_SIZE = 8 # This tag can be used to specify a number of aliases that act as commands in # the documentation. An alias has the form: # name=value # For example adding # "sideeffect=@par Side Effects:\n" # will allow you to put the command \sideeffect (or @sideeffect) in the # documentation, which will result in a user-defined paragraph with heading # "Side Effects:". You can put \n's in the value part of an alias to insert # newlines. ALIASES = # This tag can be used to specify a number of word-keyword mappings (TCL only). # A mapping has the form "name=value". For example adding "class=itcl::class" # will allow you to use the command class in the itcl::class meaning. TCL_SUBST = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. For # instance, some of the names that are used will be different. The list of all # members will be omitted, etc. # The default value is: NO. OPTIMIZE_OUTPUT_FOR_C = YES # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or # Python sources only. Doxygen will then generate output that is more tailored # for that language. For instance, namespaces will be presented as packages, # qualified scopes will look different, etc. # The default value is: NO. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources. Doxygen will then generate output that is tailored for Fortran. # The default value is: NO. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for VHDL. # The default value is: NO. OPTIMIZE_OUTPUT_VHDL = NO # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext=language, where ext is a file extension, and # language is one of the parsers supported by doxygen: IDL, Java, Javascript, # C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: # FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: # Fortran. In the later case the parser tries to guess whether the code is fixed # or free formatted code, this is the default for Fortran type files), VHDL. For # instance to make doxygen treat .inc files as Fortran files (default is PHP), # and .f files as C (default is Fortran), use: inc=Fortran f=C. # # Note: For files without extension you can use no_extension as a placeholder. # # Note that for custom extensions you also need to set FILE_PATTERNS otherwise # the files are not read by doxygen. EXTENSION_MAPPING = # If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments # according to the Markdown format, which allows for more readable # documentation. See http://daringfireball.net/projects/markdown/ for details. # The output of markdown processing is further processed by doxygen, so you can # mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in # case of backward compatibilities issues. # The default value is: YES. MARKDOWN_SUPPORT = YES # When enabled doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can # be prevented in individual cases by putting a % sign in front of the word or # globally by setting AUTOLINK_SUPPORT to NO. # The default value is: YES. AUTOLINK_SUPPORT = YES # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should set this # tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); # versus func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. # The default value is: NO. BUILTIN_STL_SUPPORT = NO # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. # The default value is: NO. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip (see: # http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen # will parse them like normal C++ but will assume all classes use public instead # of private inheritance when no explicit protection keyword is present. # The default value is: NO. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate # getter and setter methods for a property. Setting this option to YES will make # doxygen to replace the get and set methods by a property in the documentation. # This will only work if the methods are indeed getting or setting a simple # type. If this is not the case, or you want to show the methods anyway, you # should set this option to NO. # The default value is: YES. IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. # The default value is: NO. DISTRIBUTE_GROUP_DOC = NO # Set the SUBGROUPING tag to YES to allow class member groups of the same type # (for instance a group of public functions) to be put as a subgroup of that # type (e.g. under the Public Functions section). Set it to NO to prevent # subgrouping. Alternatively, this can be done per class using the # \nosubgrouping command. # The default value is: YES. SUBGROUPING = YES # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions # are shown inside the group in which they are included (e.g. using \ingroup) # instead of on a separate page (for HTML and Man pages) or section (for LaTeX # and RTF). # # Note that this feature does not work in combination with # SEPARATE_MEMBER_PAGES. # The default value is: NO. INLINE_GROUPED_CLASSES = NO # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions # with only public data fields or simple typedef fields will be shown inline in # the documentation of the scope in which they are defined (i.e. file, # namespace, or group documentation), provided this scope is documented. If set # to NO, structs, classes, and unions are shown on a separate page (for HTML and # Man pages) or section (for LaTeX and RTF). # The default value is: NO. INLINE_SIMPLE_STRUCTS = NO # When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or # enum is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically be # useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. # The default value is: NO. TYPEDEF_HIDES_STRUCT = NO # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This # cache is used to resolve symbols given their name and scope. Since this can be # an expensive process and often the same symbol appears multiple times in the # code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small # doxygen will become slower. If the cache is too large, memory is wasted. The # cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range # is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 # symbols. At the end of a run doxygen will report the cache usage and suggest # the optimal cache size from a speed point of view. # Minimum value: 0, maximum value: 9, default value: 0. LOOKUP_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in # documentation are documented, even if no documentation was available. Private # class members and static file members will be hidden unless the # EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. # Note: This will also disable the warnings about undocumented members that are # normally produced when WARNINGS is set to YES. # The default value is: NO. EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will # be included in the documentation. # The default value is: NO. EXTRACT_PRIVATE = NO # If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal # scope will be included in the documentation. # The default value is: NO. EXTRACT_PACKAGE = NO # If the EXTRACT_STATIC tag is set to YES, all static members of a file will be # included in the documentation. # The default value is: NO. EXTRACT_STATIC = YES # If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined # locally in source files will be included in the documentation. If set to NO, # only classes defined in header files are included. Does not have any effect # for Java sources. # The default value is: YES. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. If set to YES, local methods, # which are defined in the implementation section but not in the interface are # included in the documentation. If set to NO, only methods in the interface are # included. # The default value is: NO. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base name of # the file that contains the anonymous namespace. By default anonymous namespace # are hidden. # The default value is: NO. EXTRACT_ANON_NSPACES = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all # undocumented members inside documented classes or files. If set to NO these # members will be included in the various overviews, but no documentation # section is generated. This option has no effect if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. If set # to NO, these classes will be included in the various overviews. This option # has no effect if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend # (class|struct|union) declarations. If set to NO, these declarations will be # included in the documentation. # The default value is: NO. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any # documentation blocks found inside the body of a function. If set to NO, these # blocks will be appended to the function's detailed documentation block. # The default value is: NO. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation that is typed after a # \internal command is included. If the tag is set to NO then the documentation # will be excluded. Set it to YES to include the internal documentation. # The default value is: NO. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file # names in lower-case letters. If set to YES, upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. # The default value is: system dependent. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with # their full class and namespace scopes in the documentation. If set to YES, the # scope will be hidden. # The default value is: NO. HIDE_SCOPE_NAMES = YES # If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will # append additional text to a page's title, such as Class Reference. If set to # YES the compound reference will be hidden. # The default value is: NO. HIDE_COMPOUND_REFERENCE= NO # If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of # the files that are included by a file in the documentation of that file. # The default value is: YES. SHOW_INCLUDE_FILES = YES # If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each # grouped member an include statement to the documentation, telling the reader # which file to include in order to use the member. # The default value is: NO. SHOW_GROUPED_MEMB_INC = NO # If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include # files with double quotes in the documentation rather than with sharp brackets. # The default value is: NO. FORCE_LOCAL_INCLUDES = NO # If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the # documentation for inline members. # The default value is: YES. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the # (detailed) documentation of file and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. # The default value is: YES. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief # descriptions of file, namespace and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. Note that # this will also influence the order of the classes in the class list. # The default value is: NO. SORT_BRIEF_DOCS = NO # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the # (brief and detailed) documentation of class members so that constructors and # destructors are listed first. If set to NO the constructors will appear in the # respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. # Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief # member documentation. # Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting # detailed member documentation. # The default value is: NO. SORT_MEMBERS_CTORS_1ST = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy # of group names into alphabetical order. If set to NO the group names will # appear in their defined order. # The default value is: NO. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by # fully-qualified names, including namespaces. If set to NO, the class list will # be sorted only by class name, not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the alphabetical # list. # The default value is: NO. SORT_BY_SCOPE_NAME = NO # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper # type resolution of all parameters of a function it will reject a match between # the prototype and the implementation of a member function even if there is # only one candidate or it is obvious which candidate to choose by doing a # simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still # accept a match between prototype and implementation in such cases. # The default value is: NO. STRICT_PROTO_MATCHING = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo # list. This list is created by putting \todo commands in the documentation. # The default value is: YES. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test # list. This list is created by putting \test commands in the documentation. # The default value is: YES. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug # list. This list is created by putting \bug commands in the documentation. # The default value is: YES. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) # the deprecated list. This list is created by putting \deprecated commands in # the documentation. # The default value is: YES. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional documentation # sections, marked by \if ... \endif and \cond # ... \endcond blocks. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the # initial value of a variable or macro / define can have for it to appear in the # documentation. If the initializer consists of more lines than specified here # it will be hidden. Use a value of 0 to hide initializers completely. The # appearance of the value of individual variables and macros / defines can be # controlled using \showinitializer or \hideinitializer command in the # documentation regardless of this setting. # Minimum value: 0, maximum value: 10000, default value: 30. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated at # the bottom of the documentation of classes and structs. If set to YES, the # list will mention the files that were used to generate the documentation. # The default value is: YES. SHOW_USED_FILES = YES # Set the SHOW_FILES tag to NO to disable the generation of the Files page. This # will remove the Files entry from the Quick Index and from the Folder Tree View # (if specified). # The default value is: YES. SHOW_FILES = YES # Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces # page. This will remove the Namespaces entry from the Quick Index and from the # Folder Tree View (if specified). # The default value is: YES. SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command command input-file, where command is the value of the # FILE_VERSION_FILTER tag, and input-file is the name of an input file provided # by doxygen. Whatever the program writes to standard output is used as the file # version. For an example see the documentation. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed # by doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. To create the layout file # that represents doxygen's defaults, run doxygen with the -l option. You can # optionally specify a file name after the option, if omitted DoxygenLayout.xml # will be used as the name of the layout file. # # Note that if you run doxygen from a directory containing a file called # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE # tag is left empty. LAYOUT_FILE = # The CITE_BIB_FILES tag can be used to specify one or more bib files containing # the reference definitions. This must be a list of .bib files. The .bib # extension is automatically appended if omitted. This requires the bibtex tool # to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. # For LaTeX the style of the bibliography can be controlled using # LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the # search path. See also \cite for info how to create references. CITE_BIB_FILES = #--------------------------------------------------------------------------- # Configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated to # standard output by doxygen. If QUIET is set to YES this implies that the # messages are off. # The default value is: NO. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated to standard error (stderr) by doxygen. If WARNINGS is set to YES # this implies that the warnings are on. # # Tip: Turn warnings on while writing the documentation. # The default value is: YES. WARNINGS = YES # If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate # warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag # will automatically be disabled. # The default value is: YES. WARN_IF_UNDOCUMENTED = NO # If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some parameters # in a documented function, or documenting parameters that don't exist or using # markup commands wrongly. # The default value is: YES. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that # are documented, but have no documentation for their parameters or return # value. If set to NO, doxygen will only warn about wrong or incomplete # parameter documentation, but not about the absence of documentation. # The default value is: NO. WARN_NO_PARAMDOC = NO # The WARN_FORMAT tag determines the format of the warning messages that doxygen # can produce. The string should contain the $file, $line, and $text tags, which # will be replaced by the file and line number from which the warning originated # and the warning text. Optionally the format may contain $version, which will # be replaced by the version of the file (if it could be obtained via # FILE_VERSION_FILTER) # The default value is: $file:$line: $text. WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning and error # messages should be written. If left blank the output is written to standard # error (stderr). WARN_LOGFILE = #--------------------------------------------------------------------------- # Configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag is used to specify the files and/or directories that contain # documented source files. You may enter file names like myfile.cpp or # directories like /usr/src/myproject. Separate the files or directories with # spaces. # Note: If this tag is empty the current directory is searched. INPUT = src # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # libiconv (or the iconv built into libc) for the transcoding. See the libiconv # documentation (see: http://www.gnu.org/software/libiconv) for the list of # possible encodings. # The default value is: UTF-8. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and # *.h) to filter out the source-files in the directories. If left blank the # following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, # *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, # *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, # *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, # *.qsf, *.as and *.js. FILE_PATTERNS = *.h # The RECURSIVE tag can be used to specify whether or not subdirectories should # be searched for input files as well. # The default value is: NO. RECURSIVE = YES # The EXCLUDE tag can be used to specify files and/or directories that should be # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. # # Note that relative paths are relative to the directory from which doxygen is # run. EXCLUDE = src/common/pkcs11f.h \ src/common/pkcs11t.h # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded # from the input. # The default value is: NO. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. # # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories for example use the pattern */test/* EXCLUDE_PATTERNS = # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test # # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories use the pattern */test/* EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or directories # that contain example code fragments that are included (see the \include # command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and # *.h) to filter out the source-files in the directories. If left blank all # files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude commands # irrespective of the value of the RECURSIVE tag. # The default value is: NO. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or directories # that contain images that are to be included in the documentation (see the # \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command: # # # # where is the value of the INPUT_FILTER tag, and is the # name of an input file. Doxygen will then use the output that the filter # program writes to standard output. If FILTER_PATTERNS is specified, this tag # will be ignored. # # Note that the filter must not add or remove lines; it is applied before the # code is scanned, but not when the output code is generated. If lines are added # or removed, the anchors will not be placed correctly. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: pattern=filter # (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how # filters are used. If the FILTER_PATTERNS tag is empty or if none of the # patterns match the file name, INPUT_FILTER is applied. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will also be used to filter the input files that are used for # producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). # The default value is: NO. FILTER_SOURCE_FILES = NO # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file # pattern. A pattern will override the setting for FILTER_PATTERN (if any) and # it is also possible to disable source filtering for a specific pattern using # *.ext= (so without naming a filter). # This tag requires that the tag FILTER_SOURCE_FILES is set to YES. FILTER_SOURCE_PATTERNS = # If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that # is part of the input, its contents will be placed on the main page # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. USE_MDFILE_AS_MAINPAGE = #--------------------------------------------------------------------------- # Configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will be # generated. Documented entities will be cross-referenced with these sources. # # Note: To get rid of all source code in the generated output, make sure that # also VERBATIM_HEADERS is set to NO. # The default value is: NO. SOURCE_BROWSER = YES # Setting the INLINE_SOURCES tag to YES will include the body of functions, # classes and enums directly into the documentation. # The default value is: NO. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any # special comment blocks from generated source code fragments. Normal C, C++ and # Fortran comments will always remain visible. # The default value is: YES. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES then for each documented # function all documented functions referencing it will be listed. # The default value is: NO. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES then for each documented function # all documented entities called/used by that function will be listed. # The default value is: NO. REFERENCES_RELATION = YES # If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set # to YES then the hyperlinks from functions in REFERENCES_RELATION and # REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will # link to the documentation. # The default value is: YES. REFERENCES_LINK_SOURCE = YES # If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the # source code will show a tooltip with additional information such as prototype, # brief description and links to the definition and documentation. Since this # will make the HTML file larger and loading of large files a bit slower, you # can opt to disable this feature. # The default value is: YES. # This tag requires that the tag SOURCE_BROWSER is set to YES. SOURCE_TOOLTIPS = YES # If the USE_HTAGS tag is set to YES then the references to source code will # point to the HTML generated by the htags(1) tool instead of doxygen built-in # source browser. The htags tool is part of GNU's global source tagging system # (see http://www.gnu.org/software/global/global.html). You will need version # 4.8.6 or higher. # # To use it do the following: # - Install the latest version of global # - Enable SOURCE_BROWSER and USE_HTAGS in the config file # - Make sure the INPUT points to the root of the source tree # - Run doxygen as normal # # Doxygen will invoke htags (and that will in turn invoke gtags), so these # tools must be available from the command line (i.e. in the search path). # # The result: instead of the source browser generated by doxygen, the links to # source code will now point to the output of htags. # The default value is: NO. # This tag requires that the tag SOURCE_BROWSER is set to YES. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a # verbatim copy of the header file for each class for which an include is # specified. Set to NO to disable this. # See also: Section \class. # The default value is: YES. VERBATIM_HEADERS = YES # If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the # clang parser (see: http://clang.llvm.org/) for more accurate parsing at the # cost of reduced performance. This can be particularly helpful with template # rich C++ code for which doxygen's built-in parser lacks the necessary type # information. # Note: The availability of this option depends on whether or not doxygen was # compiled with the --with-libclang option. # The default value is: NO. CLANG_ASSISTED_PARSING = NO # If clang assisted parsing is enabled you can provide the compiler with command # line options that you would normally use when invoking the compiler. Note that # the include paths will already be set by doxygen for the files and directories # specified with INPUT and INCLUDE_PATH. # This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. CLANG_OPTIONS = #--------------------------------------------------------------------------- # Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all # compounds will be generated. Enable this if the project contains a lot of # classes, structs, unions or interfaces. # The default value is: YES. ALPHABETICAL_INDEX = NO # The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in # which the alphabetical index list will be split. # Minimum value: 1, maximum value: 20, default value: 5. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all classes will # be put under the same header in the alphabetical index. The IGNORE_PREFIX tag # can be used to specify a prefix (or a list of prefixes) that should be ignored # while generating the index headers. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. IGNORE_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output # The default value is: YES. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of # it. # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_OUTPUT = api # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). # The default value is: .html. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a user-defined HTML header file for # each generated HTML page. If the tag is left blank doxygen will generate a # standard header. # # To get valid HTML the header file that includes any scripts and style sheets # that doxygen needs, which is dependent on the configuration options used (e.g. # the setting GENERATE_TREEVIEW). It is highly recommended to start with a # default header using # doxygen -w html new_header.html new_footer.html new_stylesheet.css # YourConfigFile # and then modify the file new_header.html. See also section "Doxygen usage" # for information on how to generate the default header that doxygen normally # uses. # Note: The header is subject to change so you typically have to regenerate the # default header when upgrading to a newer version of doxygen. For a description # of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each # generated HTML page. If the tag is left blank doxygen will generate a standard # footer. See HTML_HEADER for more information on how to generate a default # footer and what special commands can be used inside the footer. See also # section "Doxygen usage" for information on how to generate the default footer # that doxygen normally uses. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style # sheet that is used by each HTML page. It can be used to fine-tune the look of # the HTML output. If left blank doxygen will generate a default style sheet. # See also section "Doxygen usage" for information on how to generate the style # sheet that doxygen normally uses. # Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as # it is more robust and this tag (HTML_STYLESHEET) will in the future become # obsolete. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_STYLESHEET = # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined # cascading style sheets that are included after the standard style sheets # created by doxygen. Using this option one can overrule certain style aspects. # This is preferred over using HTML_STYLESHEET since it does not replace the # standard style sheet and is therefore more robust against future updates. # Doxygen will copy the style sheet files to the output directory. # Note: The order of the extra style sheet files is of importance (e.g. the last # style sheet in the list overrules the setting of the previous ones in the # list). For an example see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_STYLESHEET = # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note # that these files will be copied to the base HTML output directory. Use the # $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these # files. In the HTML_STYLESHEET file, use the file name only. Also note that the # files will be copied as-is; there are no commands or markers available. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_FILES = # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # will adjust the colors in the style sheet and background images according to # this color. Hue is specified as an angle on a colorwheel, see # http://en.wikipedia.org/wiki/Hue for more information. For instance the value # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 # purple, and 360 is red again. # Minimum value: 0, maximum value: 359, default value: 220. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_HUE = 220 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors # in the HTML output. For a value of 0 the output will use grayscales only. A # value of 255 will produce the most vivid colors. # Minimum value: 0, maximum value: 255, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_SAT = 100 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the # luminance component of the colors in the HTML output. Values below 100 # gradually make the output lighter, whereas values above 100 make the output # darker. The value divided by 100 is the actual gamma applied, so 80 represents # a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not # change the gamma. # Minimum value: 40, maximum value: 240, default value: 80. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_GAMMA = 80 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML # page will contain the date and time when the page was generated. Setting this # to YES can help to show when doxygen was last run and thus if the # documentation is up to date. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_TIMESTAMP = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_DYNAMIC_SECTIONS = NO # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries # shown in the various tree structured indices initially; the user can expand # and collapse entries dynamically later on. Doxygen will expand the tree to # such a level that at most the specified number of entries are visible (unless # a fully collapsed tree already exceeds this amount). So setting the number of # entries 1 will produce a full collapsed tree by default. 0 is a special value # representing an infinite number of entries and will result in a full expanded # tree by default. # Minimum value: 0, maximum value: 9999, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_INDEX_NUM_ENTRIES = 100 # If the GENERATE_DOCSET tag is set to YES, additional index files will be # generated that can be used as input for Apple's Xcode 3 integrated development # environment (see: http://developer.apple.com/tools/xcode/), introduced with # OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a # Makefile in the HTML output directory. Running make will produce the docset in # that directory and running make install will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at # startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html # for more information. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_DOCSET = NO # This tag determines the name of the docset feed. A documentation feed provides # an umbrella under which multiple documentation sets from a single provider # (such as a company or product suite) can be grouped. # The default value is: Doxygen generated docs. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_FEEDNAME = "Doxygen generated docs" # This tag specifies a string that should uniquely identify the documentation # set bundle. This should be a reverse domain-name style string, e.g. # com.mycompany.MyDocSet. Doxygen will append .docset to the name. # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_BUNDLE_ID = org.doxygen.Project # The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify # the documentation publisher. This should be a reverse domain-name style # string, e.g. com.mycompany.MyDocSet.documentation. # The default value is: org.doxygen.Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_ID = org.doxygen.Publisher # The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. # The default value is: Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_NAME = Publisher # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three # additional HTML index files: index.hhp, index.hhc, and index.hhk. The # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop # (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on # Windows. # # The HTML Help Workshop contains a compiler that can convert all HTML output # generated by doxygen into a single compiled HTML file (.chm). Compiled HTML # files are now used as the Windows 98 help format, and will replace the old # Windows help format (.hlp) on all Windows platforms in the future. Compressed # HTML files also contain an index, a table of contents, and you can search for # words in the documentation. The HTML workshop also contains a viewer for # compressed HTML files. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_HTMLHELP = NO # The CHM_FILE tag can be used to specify the file name of the resulting .chm # file. You can add a path in front of the file if the result should not be # written to the html output directory. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_FILE = # The HHC_LOCATION tag can be used to specify the location (absolute path # including file name) of the HTML help compiler (hhc.exe). If non-empty, # doxygen will try to run the HTML help compiler on the generated index.hhp. # The file has to be specified with full path. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. HHC_LOCATION = # The GENERATE_CHI flag controls if a separate .chi index file is generated # (YES) or that it should be included in the master .chm file (NO). # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. GENERATE_CHI = NO # The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) # and project file content. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_INDEX_ENCODING = # The BINARY_TOC flag controls whether a binary table of contents is generated # (YES) or a normal table of contents (NO) in the .chm file. Furthermore it # enables the Previous and Next buttons. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members to # the table of contents of the HTML help documentation and to the tree view. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that # can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help # (.qch) of the generated HTML documentation. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_QHP = NO # If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify # the file name of the resulting .qch file. The path specified is relative to # the HTML output folder. # This tag requires that the tag GENERATE_QHP is set to YES. QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help # Project output. For more information please see Qt Help Project / Namespace # (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_QHP is set to YES. QHP_NAMESPACE = org.doxygen.Project # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt # Help Project output. For more information please see Qt Help Project / Virtual # Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- # folders). # The default value is: doc. # This tag requires that the tag GENERATE_QHP is set to YES. QHP_VIRTUAL_FOLDER = doc # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom # filter to add. For more information please see Qt Help Project / Custom # Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- # filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_NAME = # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see Qt Help Project / Custom # Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- # filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's filter section matches. Qt Help Project / Filter Attributes (see: # http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_SECT_FILTER_ATTRS = # The QHG_LOCATION tag can be used to specify the location of Qt's # qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the # generated .qhp file. # This tag requires that the tag GENERATE_QHP is set to YES. QHG_LOCATION = # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be # generated, together with the HTML files, they form an Eclipse help plugin. To # install this plugin and make it available under the help contents menu in # Eclipse, the contents of the directory containing the HTML and XML files needs # to be copied into the plugins directory of eclipse. The name of the directory # within the plugins directory should be the same as the ECLIPSE_DOC_ID value. # After copying Eclipse needs to be restarted before the help appears. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_ECLIPSEHELP = NO # A unique identifier for the Eclipse help plugin. When installing the plugin # the directory name containing the HTML and XML files should also have this # name. Each documentation set should have its own identifier. # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. ECLIPSE_DOC_ID = org.doxygen.Project # If you want full control over the layout of the generated HTML pages it might # be necessary to disable the index and replace it with your own. The # DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top # of each HTML page. A value of NO enables the index and the value YES disables # it. Since the tabs in the index contain the same information as the navigation # tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. DISABLE_INDEX = NO # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. If the tag # value is set to YES, a side panel will be generated containing a tree-like # index structure (just like the one that is generated for HTML Help). For this # to work a browser that supports JavaScript, DHTML, CSS and frames is required # (i.e. any modern browser). Windows users are probably better off using the # HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can # further fine-tune the look of the index. As an example, the default style # sheet generated by doxygen has an example that shows how to put an image at # the root of the tree instead of the PROJECT_NAME. Since the tree basically has # the same information as the tab index, you could consider setting # DISABLE_INDEX to YES when enabling this option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_TREEVIEW = NO # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that # doxygen will group on one line in the generated HTML documentation. # # Note that a value of 0 will completely suppress the enum values from appearing # in the overview section. # Minimum value: 0, maximum value: 20, default value: 4. # This tag requires that the tag GENERATE_HTML is set to YES. ENUM_VALUES_PER_LINE = 4 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used # to set the initial width (in pixels) of the frame in which the tree is shown. # Minimum value: 0, maximum value: 1500, default value: 250. # This tag requires that the tag GENERATE_HTML is set to YES. TREEVIEW_WIDTH = 250 # If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to # external symbols imported via tag files in a separate window. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. EXT_LINKS_IN_WINDOW = NO # Use this tag to change the font size of LaTeX formulas included as images in # the HTML documentation. When you change the font size after a successful # doxygen run you need to manually remove any form_*.png images from the HTML # output directory to force them to be regenerated. # Minimum value: 8, maximum value: 50, default value: 10. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_FONTSIZE = 10 # Use the FORMULA_TRANPARENT tag to determine whether or not the images # generated for formulas are transparent PNGs. Transparent PNGs are not # supported properly for IE 6.0, but are supported on all modern browsers. # # Note that when changing this option you need to delete any form_*.png files in # the HTML output directory before the changes have effect. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_TRANSPARENT = YES # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see # http://www.mathjax.org) which uses client side Javascript for the rendering # instead of using pre-rendered bitmaps. Use this if you do not have LaTeX # installed or if you want to formulas look prettier in the HTML output. When # enabled you may also need to install MathJax separately and configure the path # to it using the MATHJAX_RELPATH option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. USE_MATHJAX = NO # When MathJax is enabled you can set the default output format to be used for # the MathJax output. See the MathJax site (see: # http://docs.mathjax.org/en/latest/output.html) for more details. # Possible values are: HTML-CSS (which is slower, but has the best # compatibility), NativeMML (i.e. MathML) and SVG. # The default value is: HTML-CSS. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_FORMAT = HTML-CSS # When MathJax is enabled you need to specify the location relative to the HTML # output directory using the MATHJAX_RELPATH option. The destination directory # should contain the MathJax.js script. For instance, if the mathjax directory # is located at the same level as the HTML output directory, then # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax # Content Delivery Network so you can quickly see the result without installing # MathJax. However, it is strongly recommended to install a local copy of # MathJax from http://www.mathjax.org before deployment. # The default value is: http://cdn.mathjax.org/mathjax/latest. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax # extension names that should be enabled during MathJax rendering. For example # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_EXTENSIONS = # The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces # of code that will be used on startup of the MathJax code. See the MathJax site # (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an # example see the documentation. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_CODEFILE = # When the SEARCHENGINE tag is enabled doxygen will generate a search box for # the HTML output. The underlying search engine uses javascript and DHTML and # should work on any modern browser. Note that when using HTML help # (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) # there is already a search function so this one should typically be disabled. # For large projects the javascript based search engine can be slow, then # enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to # search using the keyboard; to jump to the search box use + S # (what the is depends on the OS and browser, but it is typically # , /

    PAM-PKCS11 Mappers API

    Juan Antonio Martinez

    Release 0.5.3 30 Ago 2005


    Abstract

    PAM-PKCS#11 is a PAM (Pluggable Authentication Module) library and related tools to perform login into Linux/UNIX systems by mean of X509 Certificates through any pkcs#11 compliant library.

    This manual describes how to create, compile and install pam_pkcs11 mappers. It also describes their API and related functions, and provide sample code

    Chapter 1. Copyright. License

    Copyright (C) 2005 Juan Antonio Martinez

    Copyright (C) 2003-2004 of Mario Strasser

    ScConf library Copyright (C) Antti Tapaninen and Timo Sirainen

    Release 0.5beta1. 30 Mar 2005

    This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

    Chapter 2. What is a pam_pkcs11 mapper?

    2.1. Definition

    When an X509 Certificate is provided, there are no direct way to map a cert to a login. With a certificate we can check validity and revocation, but user mapping depends entirely on the certificate content.

    So we need a configurable, stackable, and definable way to specify cert-to-user mapping.

    pam-pkcs11 cert mappers should provide these functions:

    1. Extract a item (cn, digest, or so) from provided certificate
    2. Deduce a login from the extracted item
    3. Test if a provided login matches with the previously deduced login
    4. (de)initialization routines
    5. A structure to access all internal methods

    2.2. Runtime options

    A mapper can be dinamycally or statically compiled against pam_pkcs11

    • An static mapper is one that is statically linked with pam_pkcs11.
    • A dynamic mapper needs to be loaded at runtime, and the path to the dynamic module must be provided

    2.3. Multiple mapping support

    A mapper can provide several ways to realize mapping functions. As the mapper name is provided to initialization routines, the mapper cand adjust their internal pointers according name. In this case, the same mapper will be instantiated (or dynloaded) as many times as different mappings required

    2.4. Mapfile support

    Most of certificate fields are not valid for login names. We need a way to map field to login. This is done by mean of mapfiles. The mapper API provides several functions to manage mapfiles

    2.5. Mapper tools and libraries

    Pam_pkcs11 provides several utility functions to manage certificate contents. Instead of start from scratch these functions may be used to ease mapper coding. You'll find:

    • Mapfile functions
    • String tools
    • Debugging macros
    • URL handling functions
    • Configuration file tools
    • Etc...

    2.6. Configuration support

    Althought all mappers have default values, most of then have configuration options. The file /etc/pam_pkcs11/pam_pkcs11.conf stores them.

    Chapter 3. Writting a mapper

    3.1. Before starting

    • Decide if the mapper will be statically or dinamically compiled The first way is for simple, quick and easy mappers that doesn't need aditional/optional libraries, just inspect certificate contents. The second way is for those mappers that need some optional libraries, such as ldap, kerberos, openssh or so
    • Decide on single or multiple items mapper
    • Choose a name and configuration options
    • Study provided mappers and libcommon / libmapper code

    The best way to start is by mean of these skeleton files:

    3.2. Sample mapper configuration entry

    All mappers should have a configuration entry in /etc/pam_pkcs11/pam_pkcs11.conf. These entry should at least define:

    • The name of the mapper
    • The dynamic library to be runtime loaded, or the keyword internal if the mapper is statically linked

      # foo  - Maps FOO certificate field (if exist) to login
      mapper foo {
            debug = false;
            # For dinamycally loaded mappers
    	# module = /usr/lib/pam_pkcs11/foo_mapper.so;
    	# For statically linked mappers
    	module = internal;
            ignorecase = false;
            mapfile = "none";
      }
    

    Note the module option. It says pam_pkcs11 if the mapper is static or must be dynloaded in runtime. If so, it must include the full path to the mapper dynamic library

    When the mapper is used to map more than one field, you should add one entry for each mapped field. Each entry must have an unique mapper name, and (if the mapper is to be dynamically loaded) the same library name path

    See bellow on how to set up code to include multiple fields mappers to be statically compiled

    3.3. Sample mapper include file

    Here comes a sample mapper include file. Note that their main use is to allow export internal data when statically compiled. Unless you need several files to define a mapper, no need of more data to be included

    /*
     * PAM-PKCS11 mapping modules
     * ------------- YOUR COPYRIGHT CREDITS HERE --------------------
     * Copyright (C) 2005 Juan Antonio Martinez <jonsito@teleline.es>
     * pam-pkcs11 is copyright (C) 2003-2004 of Mario Strasser <mast@gmx.net>
     *
     * This library is free software; you can redistribute it and/or
     * modify it under the terms of the GNU Lesser General Public
     * License as published by the Free Software Foundation; either
     * version 2.1 of the License, or (at your option) any later version.
     *
     * This library is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     * Lesser General Public License for more details.
     *
     * You should have received a copy of the GNU Lesser General Public
     * License along with this library; if not, write to the Free Software
     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
     *
     * $Id$
     */
    
    #ifndef __FOO_MAPPER_H_
    #define __FOO_MAPPER_H_
    
    #ifdef HAVE_CONFIG_H
    #include <config.h>
    #endif
    
    #include "../scconf/scconf.h"
    #include "mapper.h"
    
    /* include here container declaration if you intend to 
    declare and use several instances of this mapper */
    
    typedef struct myContext_st {
    	/* local declarations here */
    } myContext;
    
    #ifdef FOO_MAPPER_STATIC
    
    #ifndef __FOO_MAPPER_C_
    #define FOO_EXTERN extern
    #else
    #define FOO_EXTERN
    #endif
    FOO_EXTERN mapper_module * foo_mapper_module_init(scconf_block *blk,const char *mapper_name);
    #undef FOO_EXTERN
    
    /* end of static (if any) declarations */
    #endif
    
    /* End of foo_mapper.h */
    #endif
    

    3.4.  Skeleton code for mapper C file.

    This is a sample skeleton file for single field mappers. It provides all the methods and data required by the API. Is up to you to include aditional functions as required.

    They only need to export one symbol: the entry point of the init routine

    If the mapper is to be dynamically loaded, this symbol has a fixed name: mapper_module_init

    If the mapper is to be statically linked, is up to you to decide the exported symbol name, but it's suggested for comodity, just prepend the mapper name as prefix, to avoid collisions. Remember that these names will be added into the static mapper table list

    Note that this skeleton file provides support for either static or dynamic linking. Our suggestion is follow this convention, making your mapper as versatile as possible

    /*
     * PAM-PKCS11 FOO mapper module
     * -------------- YOUR COPYRIGHTS CREDITS HERE --------------------
     * Copyright (C) 2005 Juan Antonio Martinez <jonsito@teleline.es>
     * pam-pkcs11 is copyright (C) 2003-2004 of Mario Strasser <mast@gmx.net>
     *
     * This library is free software; you can redistribute it and/or
     * modify it under the terms of the GNU Lesser General Public
     * License as published by the Free Software Foundation; either
     * version 2.1 of the License, or (at your option) any later version.
     *
     * This library is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     * Lesser General Public License for more details.
     *
     * You should have received a copy of the GNU Lesser General Public
     * License along with this library; if not, write to the Free Software
     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
     *
     * $Id$
     */
    
    #define __FOO_MAPPER_C_
    
    #ifdef HAVE_CONFIG_H
    #include <config.h>
    #endif
    
    /* required standard headers here */
    #include <openssl/x509.h>
    /* Pam_pkcs11 API headers here */
    #include "../scconf/scconf.h"
    #include "../common/debug.h"
    #include "../common/error.h"
    #include "../common/strings.h"
    #include "../common/cert_info.h"
    
    /* mandatory includes */
    #include "mapper.h"
    #include "foo_mapper.h"
    
    /*
    * Summary:
    * This mapper uses the FOO entry in the certificate to deduce 
    * user name
    */
    
    /* local variables */
    /* 
    NOTE:
    When multiple instances of an static module are declared, it's a
    bad idea to use local variables. 
    Declare and use a context container instead
    */
    static const char *mapfile="none";
    static int ignorecase=0;
    static int debug=0;
    
    /**
    * Return array of found FOO's
    */
    static char ** mapper_find_entries(X509 *x509, void *context) {
    	/* your code here* */
    }
    
    /*
    * Parses the certificate and return the first FOO entry found, or NULL
    */
    static char * mapper_find_user(X509 *x509, void *context) {
    	/* your code here */
    }
    
    /*
    * parses the certificate and try to macht any FOO entry in the certificate
    * with provided user
    * returns: 1 on success
    *          0 on no match
    *         -1 on fail
    */
    static int mapper_match_user(X509 *x509,const char *login, void *context) {
    	/* your code here */
    }
    
    /*
    * Closes and frees all resources for this mapper
    */
    static void mapper_module_end(void, void *context) {
           /* your code here */
    }
    
    /*
    * initialize entry points
    */
    static mapper_module * init_mapper_st(
    	scconf_block *blk, /* pointer to configuration block */
    	const char *name   /* mapper name */
    	) {
    	mapper_module *pt=malloc(sizeof(mapper_module));
    	if (!pt) return NULL;
    	pt->name = name;
    	pt->block = blk;
    	pt->context = NULL;
    	pt->dbg_level = get_debug_level();
    	pt->entries = mapper_find_entries;
    	pt->finder = mapper_find_user;
    	pt->matcher = mapper_match_user;
    	pt->mapper_module_end = mapper_module_end;
    	return pt;
    }
    
    /**
    * Initialization entry point
    * return mapper_module pointer on success
    *        NULL on fail
    */
    #ifndef FOO_MAPPER_STATIC
    mapper_module * mapper_module_init(scconf_block *blk,const char *mapper_name) {
    #else
    mapper_module * foo_mapper_module_init(scconf_block *blk,const char *mapper_name) {
    #endif
    	mapper_module *pt;
    
    	/* Read configuration */
    	if(blk) {
    	    debug= scconf_get_bool(blk,"debug",0);
    	    mapfile= scconf_get_str(blk,"mapfile",mapfile);
    	    ignorecase= scconf_get_bool(blk,"ignorecase",ignorecase);
    	    set_debug_level(debug);
    	} else {
    	    set_debug_level(debug);
    	    DBG1("No configuration entry for mapper '%s'. Assume defaults",mapper_name);
    	}
    
    	/* set up internal variables */
    
    
    	/* initialize function entry points */
    	pt = init_mapper_st(pt,blk,mapper_name);
            return pt;
    }
    
    /* end of foo_mapper.c */
    #undef __FOO_MAPPER_C_
    

    See bellow on what's each function is intended to do, comodity macros, and some examples on how to code them

    3.5. Insert mapper into tables

    Next task is insert mapper into mappers list, by adding it to mapperlist.c

    • Add "foo_mapper.h" to #include list
    • Add exported entries to static mapper entries table:

    #include "foo_mapper.h"
    ......
    mapper_list static_mapper_list [] = {
    ....
    #ifdef FOO_MAPPER_STATIC
            { "foo", foo_mapper_module_init },
    	/* if your mapper manages more than one mapping scheme, add it */
            { "foo2", foo_mapper_module_init },
            { "foo3", foo_mapper_module_init },
    #endif
    ....
        { NULL, NULL }
    };
    

    As you can see, if your module support several mapping schemes, you should insert one entry for each one. All the entries will share the same entry point, but differs in module name

    3.6. Adding mapper to Makefile.am to be compiled

    Finally add entry to src/mappers/Makefile.am file and recompile. Note that with the current pam_pkcs11 version you cannot compile a dynamically loaded mapper in a separate way. This is a job in progress

    To compile as static mapper

    • Add "-DFOO_MAPPER_STATIC" to AM_CFLAGS options
    • Add "foo_mapper.c" and "foo_mapper.h" to libmappers_la_SOURCES entry

    To compile as dynamic mapper:

    • Add "foo_mapper.la" to lib_LTLIBRARIES entry
    • Add compile options for "foo_mapper.la" , for instance:
      .....
      foo_mapper_la_SOURCES = foo_mapper.c foo_mapper.h
      foo_mapper_la_LDFLAGS = -module -avoid-version
      foo_mapper_la_LIBADD = libmappers.la
      .....
      

    3.7. Compilation

    That's all: recompile and install

    root# cd /base/directory
    root# make maintainer-clean
    root# ./bootstrap
    root# ./configure --your-configure-options
    root# make
    root# make install
    

    Chapter 4. A Detailed look on mappers

    4.1. The mapper chain

    Take a look at src/pam_pkcs11/mapper_mgr.h. This file contains the data structures used to load a mapper and create a mapper chain

    Mapper instance entry declaration:

    struct mapper_instance {
        void *module_handler; 	/* dynamic module descriptor */
        const char *module_name;	/* mapper module name */
        const char *module_path;	/* dynamic module path */
        mapper_module *module_data;	/* mapper module entries table */
    };
    

    On statically compiled mappers, module_handler and module_path equals to NULL

    Mapper chain entry declaration:

    struct mapper_listitem {
            struct mapper_instance *module; /* pointer to module instance */
            struct mapper_listitem *next;   /* pointer to next item in chain */
    };
    

    The list of mappers to be loaded are declared by mean of use_mappers entry in /etc/pam_pkcs11/pam_pksc11.conf configuration file. Each declared mapper is loaded in turn. The first in the list will be the first one in the mapper chain

    On each mapper entry, pam_pkcs11 search for the module keyword. If not found, or equals to "internal", the code assumes that reffers to an statically linked mapper, and search it in the list of mappers declared at src/mappers/mapperlist.c. Otherwise assume that we provide the full pathname to a dynamic library, and try to load by mean of dlopen() function

    When module is found or loaded, the module_load() calls to the mapper_module_init() function, and if the result is not null assumes to be returned a pointer to the internal mapper entries table. These entries will be used to call finder, matcher, and deinit functions on the mapper

    If, for any reason, the mapper loading process, a warn is sent, and the mapper entry module is skipped

    4.2. Exported data and structures

    The mapper_module_init() should return a pointer to the following structure (declared in src/mappers/mapper.h

    /**
    * Structure to be filled on mapper module initialization
    */
    typedef struct mapper_module_st {
        const char *name; 
        scconf_block *block;
        void *context;
        int dbg_level;
        char **(*entries)(X509 *x509, void *context);
        char *(*finder)(X509 *x509, void *context);
        int (*matcher)(X509 *x509, const char *login, void *context);
        void (*deinit)( void *context);
    } mapper_module;
    

    Here comes the meaning of each entry:

    • name is the name of the mapper module, as provided in the init() call
    • block is a pointer to the mapper configuration entry as defined in /etc/pam_pkcs11/pam_pkcs11.conf, as provided int the init() call
    • context is a pointer to a user-defined local declarations internals to the mapper. If not used it's safe to set to NULL. See below about how to use this entry in multiple instances of same static compiled mapper
    • entries() is the entry point to the mapper listing method
    • finder() is the entry point to the mapper login finder method
    • matcher() is the entry point to the mapper login matcher method
    • entries() is called when the mapper module is to be removed from mapper chain
    • dbg_level stores the debugging level to be used when calling any function inside the mapper. Note that the programmer doesn't need to take care on this field: when mapper_module_init() successfully returns, the module loader assumes that returning debug level is the one selected for the mapper, and store it in this field

    Note that context pointer is passed as void * as there are no way to know how the programmer will use it

    4.3. Comodity macros

    Many of the mapper functions are repetitive. Many others are nonsense in some mappers. So the API provide several comodity macros, defined in src/mappers/mapper.h

    • _DEFAULT_MAPPER_FIND_ENTRIES to serve as a replacement for entries() listing method
    • _DEFAULT_MAPPER_FIND_USER to serve as a replacement for finder() login mapper method
    • _DEFAULT_MAPPER_MATCH_USER to serve as a replacement for matcher() login matching method
    • _DEFAULT_MAPPER_END to serve as a replacement for deinit() de-initialization method
    • _DEFAULT_MAPPER_INIT to serve as a replacement for init() initialization method

    The only usefull one is _DEFAULT_MAPPER_END, but the other ones are provided for compile work-in-progress mappers

    See the code, to provide you an idea of how to code real functions

    4.4. Multifield mappers

    The sample code provided in first section can be used directly to create single field mappers. When writting multiple fields mappers ( a mapper, that can resolve two or more different certificate contents, ie CN and KPN ), a different approach is needed:

    • You should provided one mapper entry for each mapper personality in the configuration file
    • If the mapper is to be statically linked, you should also declare one entry for each personality in the src/mappers/mapperlist.c mapper list declaration file
    • The mapper loader will make as many calls to mapper_module_init() as declared in mapper chain definition. On each call a different name and configuration context will be provided, and a different mapper_module structure should be returned
    • There are an additional problem when use statically linked mappers: They cannot contain any global variable, as consecutive init call will overwrite previous value. This is not the case of dynloaded mappers, as each instance has its own address space
    • If the above case is yours one, then you must define and create by mean of malloc() an internal environment structure, and store it in the context field of the returned mapper_module structure. pam_pkcs11 will include this data in every calls to your entry points, to get sure you can retrieve correct internal data

    4.5.  Configuration entries on static mappers

    As stated above, to specify that a mapper is not to be dynamically linked, we should remove the keyword "module", or set it to "module = internal ;"

    Most of statically linked mappers share common configuration options:

    • module Must be set to internal
    • debug The debug level. Defaults to false
    • ignorecase Ignore letter case on matching functions. Defaults to false
    • mapfile Mapping file to be used. Defaults to "none"

    So if up to the system administrator, if agreed with default values, to ommit in the configuration file /etc/pam_pkcs11/pam_pkcs11.conf the mapper entry for this module. The module loader will look for proper mapper entry. If not found, assume that the module is static, and will try to load it and set up with default values. This behaviour is coded in the provided sample skeleton file for coding mappers

    Above note does not apply, of course, to dynamically loaded mappers, as they always need at least the "module" entry to be specified

    See PAM-PKCS#11 Manual to see specific notes on provided mappers

    Chapter 5. The Mapper API

    5.1. Debugging macros and functions

    Several functions and macros are provided to generate and display debug and error messages. See files src/common/debug.[ch] and src/common/error.[ch]

    • void set_debug_level(int level); Sets the debug level
    • int get_debug_level(void); Gets the debug level
    • void debug_print(int level, char *file, int line, char *format, ...); Prints a message if level is greater than current debug level
    • DBG(), DBG1(), ... DBG5() Are shortcut macros to debug_print() function
    • void set_error(char *format, ...); Sets the "last error" message entry
    • const char *get_error(); Gets the last error message

    5.2. The mapfile API

    The mapper API provides several functions to manage mapfiles. They are declared in src/mappers/mapper.h

    To use a mapfile, we must create a mapfile entry, then make sucessive calls to retrieve data, and finally destroy the structure. It works in a similar way as setpwent(), getpwent() and endpwent() functions works in walking throught a password file

    The mapfile structure is defined as:

    /*
    * This struct is used in processing map files
    * a map file is a list of "key" " -> " "value" text lines
    */
    struct mapfile {
            const char *uri;/* URL of mapfile */
            char *buffer;   /* buffer to content of mapfile */
            size_t length;  /* lenght of buffer */
            char *pt;       /* pointer to last readed entry in buffer */
            char *key;      /* key entry in current buffer */
            char *value;    /* value assigned to key */
    };
    

    The API defines following functions:

    • struct mapfile *set_mapent(const char *uri); Initializes mapfile data structure
    • int get_mapent(struct mapfile *mfile); Iterative calls returns next key/value pairs in mapfile
    • void end_mapent(struct mapfile *mfile); Closes and releases mapfile
    • char *mapfile_find(const char *file,char *key,int ignorecase); To find a given key/value pair in a mapfile
    • int mapfile_match(const char *file,char *key,const char *value,int ignorecase); To test if any entry on mapfile matches key/value pair

    An important note is that mapfiles names can be provided as standard UNIX path names, or Universal Resource Locators. For instance, you can use either /etc/pam_pkcs11/subject_mapping or file:///etc/pam_pkcs11/subject_mapping. Our recommentation is to use second format as is not restricted to local files

    NOTE: The returned "key" and "value" entries should be used as const char *, that is, contents cannot be modified nor free()'d. If the programmer needs to modify these values, please make a copy with the clone_str() API provided function

    5.3.  Configuration parsing API

    PAM-PKCS#11 configuration files are based in the SCConf library of the OpenSC Project. See the file src/scconf/README.scconf for a detailed description of the scconf

    As a resume, bellow are shown the most relevants scconf API functions for the mapper programmer:

    • const char *scconf_get_str(const scconf_block * block, const char *option, const char *default); To retrieve the string value assigned to keyword option or return default if keyword not found
    • int scconf_get_int(const scconf_block * block, const char *option, int default); To retrieve the integer value assigned to keyword option or return default if keyword not found
    • int scconf_get_bool(const scconf_block * block, const char *option, int default); To retrieve the boolean value assigned to keyword option or return default if keyword not found

    With these functions, we can easily parse all "key = value;" entries on the mapper configuration block of the configuration file

    NOTE: The user should not modify nor free() values returned from scconf_get_str(). Instead, call clone_str() API method to get a working copy

    5.4.  String tools API

    The string.h standard library is so powerfull. But lacks on some usefull routines. The file src/common/strings.c contains some of them, as declared at src/common/strings.h

    • int is_empty_str(const char *str); Returns true if str is null, empty, or has only spaces
    • char *clone_str(const char *str); Returns a duplicate of provided string
    • char *toupper_str(const char *str); Same as above, but string is upper-case'd
    • char *tolower_str(const char *str); Same as above, but string is lower-case'd
    • char *bin2hex(const unsigned char *binstr,const int len); Return a string that contains the hexadecimal representation of the provided binary array of given length. Returned format is :XX:YY:ZZ:...:
    • unsigned char *hex2bin(const char *hexstr); Convert a colon-separated hexadecimal string into a binary array
    • unsigned char *hex2bin_static(const char *hexstr,unsigned char **res,int *size); Same as above, but programmer supplies pre-allocated memory space for conversion
    • char **split(const char *str,char sep, int nelems); Splits provided string in an string array of nelems elements, using sep as character separator
    • char **split_static(const char *str,char sep, int nelems,char *dst); Same as above, but user provides pre-allocated buffer for storeing result
    • char *trim(const char *str); Return an string that has all superfluous spaces trimmed. Also converts any space char ( newline, tabs, etc ) in normal " " space character

    A note on split(), and split_static() functions. To free allocated resources, is enough to call free() on the first element of the array

    Note that trim() function behaviour is different from Java or PHP counterparts, as remove ALL extra spaces, not only at the begining and at the end of string

    See the code for further reference :-)

    5.5.  BASE64 Encoding functions

    In order to read/write public SSH keys, two funtions are provided to manage base64 encoding:

    • int base64_encode(const unsigned char *in, size_t len, unsigned char *out, size_t outlen) To encode a byte array into a base64 string
    • int base64_decode(const char *in, unsigned char *out, size_t outlen) To decode a base64 data into a byte array

    See doxygen documentation and source code for more info

    5.6.  X509 Cert Tools API

    The mapper API provides several adittional tools to inspect the contents of a certificate. They are described in src/common/cert_info.h

    The basic library call is:

    • char **cert_info(X509 *x509, int type, const char *algorithm);

    This function takes an argument, the X509 certificate to be inspected, and a macro that shows the certificate content to be searched. Some contents needs an aditional third algorithm parameters. When not used should be set to NULL

    The mapper API defines following macros:

    • CERT_CN Certificate Common Name
    • CERT_SUBJECT Certificate subject
    • CERT_KPN Kerberos principal name
    • CERT_EMAIL Certificate e-mail
    • CERT_UPN Microsoft's Universal Principal Name
    • CERT_UID Certificate Unique Identifier
    • CERT_PUK Certificate Public Key (PEM Format)
    • CERT_DIGEST Certificate Digest
    • CERT_SSHPUK Certificate Public key in OpenSSH format
    • CERT_PEM Certificate in PEM format

    Aditionally, when requesting CERT_DIGEST you must provide a valid digest algorithm: "null", "md2", "md4", "md5", "sha", "sha1", "dss", "dss1" or "ripemd160"

    cert_info() returns an array of up to 15 string entries, corresponding to as many entry founds in the provided certificate. Last entry in the returned array is set to NULL;

    If some error ocurrs, or the certificate does not contain any entry, return NULL

    There are two additional methods to check certificate/signatures:

    • int verify_certificate(X509 * x509, char *ca_dir, char *crl_dir, crl_policy_t policy); To check a certificate
    • int verify_signature(X509 * x509, unsigned char *data, int data_length, unsigned char *signature, int signature_length); To verify a signature

    Chapter 6. Going further

    6.1. Hints

    It's really recommended the study of provided mappers, and the comodity macros

    Before start writting a new mapper, perhaps you'd better to check if there are already one mapper that performs your desired map. For instance, pwent and generic mapper can use Naming Swictch Service (NSS) to lookup pasword entries, and NSS is capable of perform some LDAP or Kerberos authentication task

    Don't hessitate in use of debugging functions. They are really usefull

    It's recommended write mappers in a way that they could be statically or dynamically linked without code change, Doing so you'll make maintainer life easier :-) Also, in order to ease debugging, single field mappers is preferred over multifield mappers

    Avoid write access to any global variable from the mapper code. Use comodity functions

    Don't make assumptions on the code. Allways add checks.

    Use Universal Resource Locators -and the curl library- instead of hardcoded pathnames to specify files

    6.2. Getting help

    Send questions, patches, suggestions and so to OpenSC Mailing list:

    For additional specific info, contact with the authors:

    pam_pkcs11-0.6.12/configure0000755000175000017500000277114014367517060012414 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for pam_pkcs11 0.6.12. # # # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="as_nop=: if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else $as_nop as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi fi if test "x$CONFIG_SHELL" != x then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='pam_pkcs11' PACKAGE_TARNAME='pam_pkcs11' PACKAGE_VERSION='0.6.12' PACKAGE_STRING='pam_pkcs11 0.6.12' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_unique_file="src/pam_pkcs11/pam_pkcs11.c" gt_needs= # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_STDIO_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_c_list= ac_func_c_list= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS HAVE_DOCBOOK_FALSE HAVE_DOCBOOK_TRUE XSLTPROC HAVE_PCSC_FALSE HAVE_PCSC_TRUE PCSC_LIBS PCSC_CFLAGS CRYPTO_LIBS CRYPTO_CFLAGS HAVE_NSS_FALSE HAVE_NSS_TRUE OPENSSL_LIBS OPENSSL_CFLAGS NSS_LIBS NSS_CFLAGS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG HAVE_LDAP_FALSE HAVE_LDAP_TRUE LDAP_LIBS LDAP_CFLAGS confdir HAVE_CURL_FALSE HAVE_CURL_TRUE CURL_LIBS CURL_CFLAGS LIBDL PTHREAD_CFLAGS PTHREAD_LIBS PTHREAD_CC ax_pthread_config LEXLIB LEX_OUTPUT_ROOT LEX CXXCPP LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB DLLTOOL OBJDUMP FILECMD LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP LIBTOOL ac_ct_AR AR am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX POSUB LTLIBINTL LIBINTL INTLLIBS LTLIBICONV LIBICONV INTL_MACOSX_LIBS EGREP GREP CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC XGETTEXT_EXTRA_OPTIONS MSGMERGE XGETTEXT_015 XGETTEXT GMSGFMT_015 MSGFMT_015 GMSGFMT MSGFMT GETTEXT_MACRO_VERSION USE_NLS SED MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V CSCOPE ETAGS CTAGS am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL am__quote' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_maintainer_mode enable_nls enable_dependency_tracking with_gnu_ld enable_rpath with_libiconv_prefix with_libintl_prefix enable_shared enable_static with_pic enable_fast_install with_aix_soname with_sysroot enable_libtool_lock enable_debug with_curl with_confdir with_ldap with_nss with_pcsclite with_docbook ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP CXX CXXFLAGS CCC LT_SYS_LIBRARY_PATH CXXCPP PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR NSS_CFLAGS NSS_LIBS OPENSSL_CFLAGS OPENSSL_LIBS PCSC_CFLAGS PCSC_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures pam_pkcs11 0.6.12 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/pam_pkcs11] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of pam_pkcs11 0.6.12:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --disable-nls do not use Native Language Support --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --disable-rpath do not hardcode runtime library paths --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --disable-debug remove debugging code Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-aix-soname=aix|svr4|both shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-curl use curl (default=no) --with-confdir=DIR directory containing pam_pkcs11.conf (default /etc/pam_pkcs11) --with-ldap use ldap (default=yes) --with-nss use NSS instead of openSSL and raw PKCS 11 (default=no) --without-pcsclite Do not use pcsc-lite (default=yes) --without-docbook do not generate html manual (needs docbook) Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags LT_SYS_LIBRARY_PATH User-defined run-time library search path. CXXCPP C++ preprocessor PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path NSS_CFLAGS C compiler flags for NSS, overriding pkg-config NSS_LIBS linker flags for NSS, overriding pkg-config OPENSSL_CFLAGS C compiler flags for OPENSSL, overriding pkg-config OPENSSL_LIBS linker flags for OPENSSL, overriding pkg-config PCSC_CFLAGS C compiler flags for PCSC, overriding pkg-config PCSC_LIBS linker flags for PCSC, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF pam_pkcs11 configure 0.6.12 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_try_run LINENO # ---------------------- # Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that # executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: program exited with status $ac_status" >&5 printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. */ #include #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main (void) { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$3=yes" else $as_nop eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext } then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by pam_pkcs11 $as_me 0.6.12, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi gt_needs="$gt_needs " # Test code for whether the C compiler supports C89 (global declarations) ac_c_conftest_c89_globals=' /* Does the compiler advertise C89 conformance? Do not test the value of __STDC__, because some compilers set it to 0 while being otherwise adequately conformant. */ #if !defined __STDC__ # error "Compiler does not advertise C89 conformance" #endif #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ struct buf { int x; }; struct buf * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not \xHH hex character constants. These do not provoke an error unfortunately, instead are silently treated as an "x". The following induces an error, until -std is added to get proper ANSI mode. Curiously \x00 != x always comes out true, for an array size at least. It is necessary to write \x00 == 0 to get something that is true only with -std. */ int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) '\''x'\'' int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), int, int);' # Test code for whether the C compiler supports C89 (body of main). ac_c_conftest_c89_main=' ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); ' # Test code for whether the C compiler supports C99 (global declarations) ac_c_conftest_c99_globals=' // Does the compiler advertise C99 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare // FILE and stderr. #define debug(...) dprintf (2, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK #error "your preprocessor is broken" #endif #if BIG_OK #else #error "your preprocessor is broken" #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // See if C++-style comments work. // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) continue; return 0; } // Check varargs and va_copy. static bool test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str = ""; int number = 0; float fnumber = 0; while (*format) { switch (*format++) { case '\''s'\'': // string str = va_arg (args_copy, const char *); break; case '\''d'\'': // int number = va_arg (args_copy, int); break; case '\''f'\'': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); return *str && number && fnumber; } ' # Test code for whether the C compiler supports C99 (body of main). ac_c_conftest_c99_main=' // Check bool. _Bool success = false; success |= (argc != 0); // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[0] = argv[0][0]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' || dynamic_array[ni.number - 1] != 543); ' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' // Does the compiler advertise C11 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif // Check _Alignas. char _Alignas (double) aligned_as_double; char _Alignas (0) no_special_alignment; extern char aligned_as_int; char _Alignas (0) _Alignas (int) aligned_as_int; // Check _Alignof. enum { int_alignment = _Alignof (int), int_array_alignment = _Alignof (int[100]), char_alignment = _Alignof (char) }; _Static_assert (0 < -_Alignof (int), "_Alignof is signed"); // Check _Noreturn. int _Noreturn does_not_return (void) { for (;;) continue; } // Check _Static_assert. struct test_static_assert { int x; _Static_assert (sizeof (int) <= sizeof (long int), "_Static_assert does not work in struct"); long int y; }; // Check UTF-8 literals. #define u8 syntax error! char const utf8_literal[] = u8"happens to be ASCII" "another string"; // Check duplicate typedefs. typedef long *long_ptr; typedef long int *long_ptr; typedef long_ptr long_ptr; // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. struct anonymous { union { struct { int i; int j; }; struct { int k; long int l; } w; }; int m; } v1; ' # Test code for whether the C compiler supports C11 (body of main). ac_c_conftest_c11_main=' _Static_assert ((offsetof (struct anonymous, i) == offsetof (struct anonymous, w.k)), "Anonymous union alignment botch"); v1.i = 2; v1.w.k = 5; ok |= v1.i != 5; ' # Test code for whether the C compiler supports C11 (complete). ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} ${ac_c_conftest_c11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} ${ac_c_conftest_c11_main} return ok; } " # Test code for whether the C compiler supports C99 (complete). ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} return ok; } " # Test code for whether the C compiler supports C89 (complete). ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} return ok; } " # Test code for whether the C++ compiler supports C++98 (global declarations) ac_cxx_conftest_cxx98_globals=' // Does the compiler advertise C++98 conformance? #if !defined __cplusplus || __cplusplus < 199711L # error "Compiler does not advertise C++98 conformance" #endif // These inclusions are to reject old compilers that // lack the unsuffixed header files. #include #include // and are *not* freestanding headers in C++98. extern void assert (int); namespace std { extern int strcmp (const char *, const char *); } // Namespaces, exceptions, and templates were all added after "C++ 2.0". using std::exception; using std::strcmp; namespace { void test_exception_syntax() { try { throw "test"; } catch (const char *s) { // Extra parentheses suppress a warning when building autoconf itself, // due to lint rules shared with more typical C programs. assert (!(strcmp) (s, "test")); } } template struct test_template { T const val; explicit test_template(T t) : val(t) {} template T add(U u) { return static_cast(u) + val; } }; } // anonymous namespace ' # Test code for whether the C++ compiler supports C++98 (body of main) ac_cxx_conftest_cxx98_main=' assert (argc); assert (! argv[0]); { test_exception_syntax (); test_template tt (2.0); assert (tt.add (4) == 6.0); assert (true && !false); } ' # Test code for whether the C++ compiler supports C++11 (global declarations) ac_cxx_conftest_cxx11_globals=' // Does the compiler advertise C++ 2011 conformance? #if !defined __cplusplus || __cplusplus < 201103L # error "Compiler does not advertise C++11 conformance" #endif namespace cxx11test { constexpr int get_val() { return 20; } struct testinit { int i; double d; }; class delegate { public: delegate(int n) : n(n) {} delegate(): delegate(2354) {} virtual int getval() { return this->n; }; protected: int n; }; class overridden : public delegate { public: overridden(int n): delegate(n) {} virtual int getval() override final { return this->n * 2; } }; class nocopy { public: nocopy(int i): i(i) {} nocopy() = default; nocopy(const nocopy&) = delete; nocopy & operator=(const nocopy&) = delete; private: int i; }; // for testing lambda expressions template Ret eval(Fn f, Ret v) { return f(v); } // for testing variadic templates and trailing return types template auto sum(V first) -> V { return first; } template auto sum(V first, Args... rest) -> V { return first + sum(rest...); } } ' # Test code for whether the C++ compiler supports C++11 (body of main) ac_cxx_conftest_cxx11_main=' { // Test auto and decltype auto a1 = 6538; auto a2 = 48573953.4; auto a3 = "String literal"; int total = 0; for (auto i = a3; *i; ++i) { total += *i; } decltype(a2) a4 = 34895.034; } { // Test constexpr short sa[cxx11test::get_val()] = { 0 }; } { // Test initializer lists cxx11test::testinit il = { 4323, 435234.23544 }; } { // Test range-based for int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; for (auto &x : array) { x += 23; } } { // Test lambda expressions using cxx11test::eval; assert (eval ([](int x) { return x*2; }, 21) == 42); double d = 2.0; assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); assert (d == 5.0); assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); assert (d == 5.0); } { // Test use of variadic templates using cxx11test::sum; auto a = sum(1); auto b = sum(1, 2); auto c = sum(1.0, 2.0, 3.0); } { // Test constructor delegation cxx11test::delegate d1; cxx11test::delegate d2(); cxx11test::delegate d3(45); } { // Test override and final cxx11test::overridden o1(55464); } { // Test nullptr char *c = nullptr; } { // Test template brackets test_template<::test_template> v(test_template(12)); } { // Unicode literals char const *utf8 = u8"UTF-8 string \u2500"; char16_t const *utf16 = u"UTF-8 string \u2500"; char32_t const *utf32 = U"UTF-32 string \u2500"; } ' # Test code for whether the C compiler supports C++11 (complete). ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals} ${ac_cxx_conftest_cxx11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_cxx_conftest_cxx98_main} ${ac_cxx_conftest_cxx11_main} return ok; } " # Test code for whether the C compiler supports C++98 (complete). ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals} int main (int argc, char **argv) { int ok = 0; ${ac_cxx_conftest_cxx98_main} return ok; } " as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" as_fn_append ac_func_c_list " vprintf HAVE_VPRINTF" # Auxiliary files required by this configure script. ac_aux_files="ltmain.sh ar-lib compile config.rpath missing install-sh config.guess config.sub" # Locations in which to look for auxiliary files. ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." # Search for a directory containing all of the required auxiliary files, # $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. # If we don't find one directory that contains all the files we need, # we report the set of missing files from the *first* directory in # $ac_aux_dir_candidates and give up. ac_missing_aux_files="" ac_first_candidate=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in $ac_aux_dir_candidates do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 ac_aux_dir_found=yes ac_install_sh= for ac_aux in $ac_aux_files do # As a special case, if "install-sh" is required, that requirement # can be satisfied by any of "install-sh", "install.sh", or "shtool", # and $ac_install_sh is set appropriately for whichever one is found. if test x"$ac_aux" = x"install-sh" then if test -f "${as_dir}install-sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 ac_install_sh="${as_dir}install-sh -c" elif test -f "${as_dir}install.sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 ac_install_sh="${as_dir}install.sh -c" elif test -f "${as_dir}shtool"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 ac_install_sh="${as_dir}shtool install -c" else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} install-sh" else break fi fi else if test -f "${as_dir}${ac_aux}"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" else break fi fi fi done if test "$ac_aux_dir_found" = yes; then ac_aux_dir="$as_dir" break fi ac_first_candidate=false as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. if test -f "${ac_aux_dir}config.guess"; then ac_config_guess="$SHELL ${ac_aux_dir}config.guess" fi if test -f "${ac_aux_dir}config.sub"; then ac_config_sub="$SHELL ${ac_aux_dir}config.sub" fi if test -f "$ac_aux_dir/configure"; then ac_configure="$SHELL ${ac_aux_dir}configure" fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Make sure we can run config.sub. $SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 printf %s "checking build system type... " >&6; } if test ${ac_cv_build+y} then : printf %s "(cached) " >&6 else $as_nop ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 printf %s "checking host system type... " >&6; } if test ${ac_cv_host+y} then : printf %s "(cached) " >&6 else $as_nop if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac am__api_version='1.16' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test ${ac_cv_path_install+y} then : printf %s "(cached) " >&6 else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac # Account for fact that we put trailing slashes in our PATH walk. case $as_dir in #(( ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 printf "%s\n" "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 printf %s "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 printf %s "checking for a race-free mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test ${ac_cv_path_mkdir+y} then : printf %s "(cached) " >&6 else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir ('*'coreutils) '* | \ 'BusyBox '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test ${ac_cv_path_mkdir+y}; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 printf "%s\n" "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 printf "%s\n" "$AWK" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval test \${ac_cv_prog_make_${ac_make}_set+y} then : printf %s "(cached) " >&6 else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } SET_MAKE= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test ${enable_silent_rules+y} then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 printf %s "checking whether $am_make supports nested variables... " >&6; } if test ${am_cv_make_support_nested_variables+y} then : printf %s "(cached) " >&6 else $as_nop if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='pam_pkcs11' VERSION='0.6.12' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # Variables for tags utilities; see am/tags.am if test -z "$CTAGS"; then CTAGS=ctags fi if test -z "$ETAGS"; then ETAGS=etags fi if test -z "$CSCOPE"; then CSCOPE=cscope fi # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi ac_config_headers="$ac_config_headers config.h" # silent build by default # Check whether --enable-silent-rules was given. if test ${enable_silent_rules+y} then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=0;; esac am_make=${MAKE-make} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 printf %s "checking whether $am_make supports nested variables... " >&6; } if test ${am_cv_make_support_nested_variables+y} then : printf %s "(cached) " >&6 else $as_nop if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 printf %s "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test ${enable_maintainer_mode+y} then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else $as_nop USE_MAINTAINER_MODE=no fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 printf "%s\n" "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 printf %s "checking for a sed that does not truncate output... " >&6; } if test ${ac_cv_path_SED+y} then : printf %s "(cached) " >&6 else $as_nop ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in sed gsed do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 printf %s "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test ${enable_nls+y} then : enableval=$enable_nls; USE_NLS=$enableval else $as_nop USE_NLS=yes fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 printf "%s\n" "$USE_NLS" >&6; } GETTEXT_MACRO_VERSION=0.19 # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_MSGFMT+y} then : printf %s "(cached) " >&6 else $as_nop case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 printf "%s\n" "$MSGFMT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_GMSGFMT+y} then : printf %s "(cached) " >&6 else $as_nop case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 printf "%s\n" "$GMSGFMT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; *) MSGFMT_015=$MSGFMT ;; esac case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_XGETTEXT+y} then : printf %s "(cached) " >&6 else $as_nop case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 printf "%s\n" "$XGETTEXT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f messages.po case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_MSGMERGE+y} then : printf %s "(cached) " >&6 else $as_nop case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 printf "%s\n" "$MSGMERGE" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$localedir" || localedir='${datadir}/locale' test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= ac_config_commands="$ac_config_commands po-directories" if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } case $?:`cat confinc.out 2>/dev/null` in #( '0:this is the am__doit target') : case $s in #( BSD) : am__include='.include' am__quote='"' ;; #( *) : am__include='include' am__quote='' ;; esac ;; #( *) : ;; esac if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 printf "%s\n" "${_am_result}" >&6; } # Check whether --enable-dependency-tracking was given. if test ${enable_dependency_tracking+y} then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 printf %s "checking whether the C compiler works... " >&6; } ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else $as_nop ac_file='' fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 printf %s "checking for C compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 printf %s "checking whether $CC understands -c and -o together... " >&6; } if test ${am_cv_prog_cc_c_o+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 printf %s "checking dependency style of $depcc... " >&6; } if test ${am_cv_CC_dependencies_compiler_type+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi # Check whether --with-gnu-ld was given. if test ${with_gnu_ld+y} then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else $as_nop with_gnu_ld=no fi # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 printf %s "checking for GNU ld... " >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 printf %s "checking for non-GNU ld... " >&6; } fi if test ${acl_cv_path_LD+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$LD"; then acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$acl_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 &5 printf "%s\n" "$LD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${acl_cv_prog_gnu_ld+y} then : printf %s "(cached) " >&6 else $as_nop # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 printf "%s\n" "$acl_cv_prog_gnu_ld" >&6; } with_gnu_ld=$acl_cv_prog_gnu_ld { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 printf %s "checking for shared library run path origin... " >&6; } if test ${acl_cv_rpath+y} then : printf %s "(cached) " >&6 else $as_nop CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 printf "%s\n" "$acl_cv_rpath" >&6; } wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath was given. if test ${enable_rpath+y} then : enableval=$enable_rpath; : else $as_nop enable_rpath=yes fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 printf %s "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test ${ac_cv_prog_CPP+y} then : printf %s "(cached) " >&6 else $as_nop # Double quotes because $CC needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO" then : else $as_nop # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else $as_nop # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 printf "%s\n" "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO" then : else $as_nop # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else $as_nop # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 printf %s "checking for grep that handles long lines and -e... " >&6; } if test ${ac_cv_path_GREP+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in grep ggrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 printf "%s\n" "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 printf %s "checking for egrep... " >&6; } if test ${ac_cv_path_EGREP+y} then : printf %s "(cached) " >&6 else $as_nop if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in egrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 printf "%s\n" "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" acl_libdirstem=lib acl_libdirstem2= case "$host_os" in solaris*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 printf %s "checking for 64-bit host... " >&6; } if test ${gl_cv_solaris_64bit+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _LP64 sixtyfour bits #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "sixtyfour bits" >/dev/null 2>&1 then : gl_cv_solaris_64bit=yes else $as_nop gl_cv_solaris_64bit=no fi rm -rf conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 printf "%s\n" "$gl_cv_solaris_64bit" >&6; } if test $gl_cv_solaris_64bit = yes; then acl_libdirstem=lib/64 case "$host_cpu" in sparc*) acl_libdirstem2=lib/sparcv9 ;; i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; esac fi ;; *) searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; */../ | */.. ) # Better ignore directories of this form. They are misleading. ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib64 ) acl_libdirstem=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" fi ;; esac test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix was given. if test ${with_libiconv_prefix+y} then : withval=$with_libiconv_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && ! test -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi fi LIBICONV= LTLIBICONV= INCICONV= LIBICONV_PREFIX= HAVE_LIBICONV= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='iconv ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" else LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" ;; esac done fi else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 printf %s "checking for CFPreferencesCopyAppValue... " >&6; } if test ${gt_cv_func_CFPreferencesCopyAppValue+y} then : printf %s "(cached) " >&6 else $as_nop gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { CFPreferencesCopyAppValue(NULL, NULL) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gt_cv_func_CFPreferencesCopyAppValue=yes else $as_nop gt_cv_func_CFPreferencesCopyAppValue=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 printf "%s\n" "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then printf "%s\n" "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 printf %s "checking for CFLocaleCopyCurrent... " >&6; } if test ${gt_cv_func_CFLocaleCopyCurrent+y} then : printf %s "(cached) " >&6 else $as_nop gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { CFLocaleCopyCurrent(); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : gt_cv_func_CFLocaleCopyCurrent=yes else $as_nop gt_cv_func_CFLocaleCopyCurrent=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 printf "%s\n" "$gt_cv_func_CFLocaleCopyCurrent" >&6; } if test $gt_cv_func_CFLocaleCopyCurrent = yes; then printf "%s\n" "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi LIBINTL= LTLIBINTL= POSUB= case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 printf %s "checking for GNU gettext in libc... " >&6; } if eval test \${$gt_func_gnugettext_libc+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; int main (void) { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$gt_func_gnugettext_libc=yes" else $as_nop eval "$gt_func_gnugettext_libc=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$gt_func_gnugettext_libc { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 printf %s "checking for iconv... " >&6; } if test ${am_cv_func_iconv+y} then : printf %s "(cached) " >&6 else $as_nop am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main (void) { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : am_cv_lib_iconv=yes am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 printf "%s\n" "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 printf %s "checking for working iconv... " >&6; } if test ${am_cv_func_iconv_works+y} then : printf %s "(cached) " >&6 else $as_nop am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi if test "$cross_compiling" = yes then : case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static const char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 1; iconv_close (cd_utf8_to_88591); } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static const char input[] = "\263"; char buf[10]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 2; iconv_close (cd_ascii_to_88591); } } /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ { iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static const char input[] = "\304"; static char buf[2] = { (char)0xDE, (char)0xAD }; const char *inptr = input; size_t inbytesleft = 1; char *outptr = buf; size_t outbytesleft = 1; size_t res = iconv (cd_88591_to_utf8, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) result |= 4; iconv_close (cd_88591_to_utf8); } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) result |= 8; iconv_close (cd_88591_to_utf8); } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ if (/* Try standardized names. */ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) /* Try IRIX, OSF/1 names. */ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) /* Try AIX names. */ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) /* Try HP-UX names. */ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) result |= 16; return result; } _ACEOF if ac_fn_c_try_run "$LINENO" then : am_cv_func_iconv_works=yes else $as_nop am_cv_func_iconv_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi LIBS="$am_save_LIBS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 printf "%s\n" "$am_cv_func_iconv_works" >&6; } case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then printf "%s\n" "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 printf %s "checking how to link with libiconv... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 printf "%s\n" "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix was given. if test ${with_libintl_prefix+y} then : withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && ! test -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi fi LIBINTL= LTLIBINTL= INCINTL= LIBINTL_PREFIX= HAVE_LIBINTL= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='intl ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" else LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" ;; esac done fi else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" done fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 printf %s "checking for GNU gettext in libintl... " >&6; } if eval test \${$gt_func_gnugettext_libintl+y} then : printf %s "(cached) " >&6 else $as_nop gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); int main (void) { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$gt_func_gnugettext_libintl=yes" else $as_nop eval "$gt_func_gnugettext_libintl=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); int main (void) { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi eval ac_res=\$$gt_func_gnugettext_libintl { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } fi if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else LIBINTL= LTLIBINTL= INCINTL= fi if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then printf "%s\n" "#define ENABLE_NLS 1" >>confdefs.h else USE_NLS=no fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 printf %s "checking whether to use NLS... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 printf "%s\n" "$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 printf %s "checking where the gettext function comes from... " >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 printf "%s\n" "$gt_source" >&6; } fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 printf %s "checking how to link with libintl... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 printf "%s\n" "$LIBINTL" >&6; } for element in $INCINTL; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done fi printf "%s\n" "#define HAVE_GETTEXT 1" >>confdefs.h printf "%s\n" "#define HAVE_DCGETTEXT 1" >>confdefs.h fi POSUB=po fi INTLLIBS="$LIBINTL" ALL_LINGUAS="de fr it nl pl pt_BR ru tr" # Checks for programs. ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. set dummy ${ac_tool_prefix}clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf "%s\n" "$CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="clang" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf "%s\n" "$ac_ct_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi fi test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c99" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 fi fi if test x$ac_prog_cc_stdc = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cc_c89" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 printf %s "checking whether $CC understands -c and -o together... " >&6; } if test ${am_cv_prog_cc_c_o+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 printf %s "checking dependency style of $depcc... " >&6; } if test ${am_cv_CC_dependencies_compiler_type+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CXX+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 printf "%s\n" "$CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CXX+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 printf "%s\n" "$ac_ct_CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 printf %s "checking whether the compiler supports GNU C++... " >&6; } if test ${ac_cv_cxx_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+y} ac_save_CXXFLAGS=$CXXFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 printf %s "checking whether $CXX accepts -g... " >&6; } if test ${ac_cv_prog_cxx_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes else $as_nop CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : else $as_nop ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } if test $ac_test_CXXFLAGS; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_prog_cxx_stdcxx=no if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 printf %s "checking for $CXX option to enable C++11 features... " >&6; } if test ${ac_cv_prog_cxx_cxx11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cxx_cxx11=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx11_program _ACEOF for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx11" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX fi if test "x$ac_cv_prog_cxx_cxx11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cxx_cxx11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx11" fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 ac_prog_cxx_stdcxx=cxx11 fi fi if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 printf %s "checking for $CXX option to enable C++98 features... " >&6; } if test ${ac_cv_prog_cxx_cxx98+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cxx_cxx98=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx98_program _ACEOF for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx98=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx98" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX fi if test "x$ac_cv_prog_cxx_cxx98" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cxx_cxx98" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx98" fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 ac_prog_cxx_stdcxx=cxx98 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 printf %s "checking dependency style of $depcc... " >&6; } if test ${am_cv_CXX_dependencies_compiler_type+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 printf "%s\n" "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi if test -n "$ac_tool_prefix"; then for ac_prog in ar lib "link -lib" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AR+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 printf "%s\n" "$AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar lib "link -lib" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_AR+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 printf "%s\n" "$ac_ct_AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 printf %s "checking the archiver ($AR) interface... " >&6; } if test ${am_cv_ar_interface+y} then : printf %s "(cached) " >&6 else $as_nop ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am_cv_ar_interface=ar cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int some_variable = 0; _ACEOF if ac_fn_c_try_compile "$LINENO" then : am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 (eval $am_ar_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then am_cv_ar_interface=ar else am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 (eval $am_ar_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then am_cv_ar_interface=lib else am_cv_ar_interface=unknown fi fi rm -f conftest.lib libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 printf "%s\n" "$am_cv_ar_interface" >&6; } case $am_cv_ar_interface in ar) ;; lib) # Microsoft lib, so override with the ar-lib wrapper script. # FIXME: It is wrong to rewrite AR. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__AR in this case, # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something # similar. AR="$am_aux_dir/ar-lib $AR" ;; unknown) as_fn_error $? "could not determine $AR interface" "$LINENO" 5 ;; esac case `pwd` in *\ * | *\ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.7' macro_revision='2.4.7' ltmain=$ac_aux_dir/ltmain.sh # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 printf %s "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case $ECHO in printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5 printf "%s\n" "printf" >&6; } ;; print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 printf "%s\n" "print -r" >&6; } ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5 printf "%s\n" "cat" >&6; } ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 printf %s "checking for a sed that does not truncate output... " >&6; } if test ${ac_cv_path_SED+y} then : printf %s "(cached) " >&6 else $as_nop ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in sed gsed do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 printf %s "checking for fgrep... " >&6; } if test ${ac_cv_path_FGREP+y} then : printf %s "(cached) " >&6 else $as_nop if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in fgrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 printf "%s\n" "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test ${with_gnu_ld+y} then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else $as_nop with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 printf %s "checking for GNU ld... " >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 printf %s "checking for non-GNU ld... " >&6; } fi if test ${lt_cv_path_LD+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 printf "%s\n" "$LD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${lt_cv_prog_gnu_ld+y} then : printf %s "(cached) " >&6 else $as_nop # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if test ${lt_cv_path_NM+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 printf "%s\n" "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DUMPBIN+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 printf "%s\n" "$DUMPBIN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DUMPBIN+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 printf "%s\n" "$ac_ct_DUMPBIN" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 printf %s "checking the name lister ($NM) interface... " >&6; } if test ${lt_cv_nm_interface+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 printf "%s\n" "$lt_cv_nm_interface" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 printf %s "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 printf "%s\n" "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 printf %s "checking the maximum length of command line arguments... " >&6; } if test ${lt_cv_sys_max_cmd_len+y} then : printf %s "(cached) " >&6 else $as_nop i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n "$lt_cv_sys_max_cmd_len"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 printf "%s\n" "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 printf %s "checking how to convert $build file names to $host format... " >&6; } if test ${lt_cv_to_host_file_cmd+y} then : printf %s "(cached) " >&6 else $as_nop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 printf %s "checking how to convert $build file names to toolchain format... " >&6; } if test ${lt_cv_to_tool_file_cmd+y} then : printf %s "(cached) " >&6 else $as_nop #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 printf %s "checking for $LD option to reload object files... " >&6; } if test ${lt_cv_ld_reload_flag+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ld_reload_flag='-r' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 printf "%s\n" "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) if test yes = "$GCC"; then reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}file", so it can be a program name with args. set dummy ${ac_tool_prefix}file; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_FILECMD+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$FILECMD"; then ac_cv_prog_FILECMD="$FILECMD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_FILECMD="${ac_tool_prefix}file" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi FILECMD=$ac_cv_prog_FILECMD if test -n "$FILECMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FILECMD" >&5 printf "%s\n" "$FILECMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_FILECMD"; then ac_ct_FILECMD=$FILECMD # Extract the first word of "file", so it can be a program name with args. set dummy file; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_FILECMD+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_FILECMD"; then ac_cv_prog_ac_ct_FILECMD="$ac_ct_FILECMD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_FILECMD="file" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_FILECMD=$ac_cv_prog_ac_ct_FILECMD if test -n "$ac_ct_FILECMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FILECMD" >&5 printf "%s\n" "$ac_ct_FILECMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_FILECMD" = x; then FILECMD=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac FILECMD=$ac_ct_FILECMD fi else FILECMD="$ac_cv_prog_FILECMD" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OBJDUMP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 printf "%s\n" "$OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OBJDUMP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 printf "%s\n" "$ac_ct_OBJDUMP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 printf %s "checking how to recognize dependent libraries... " >&6; } if test ${lt_cv_deplibs_check_method+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='$FILECMD -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly* | midnightbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=$FILECMD case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DLLTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 printf "%s\n" "$DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DLLTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 printf "%s\n" "$ac_ct_DLLTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 printf %s "checking how to associate runtime and link libraries... " >&6; } if test ${lt_cv_sharedlib_from_linklib_cmd+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AR+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 printf "%s\n" "$AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_AR+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 printf "%s\n" "$ac_ct_AR" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} # Use ARFLAGS variable as AR's operation code to sync the variable naming with # Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have # higher priority because thats what people were doing historically (setting # ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS # variable obsoleted/removed. test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} lt_ar_flags=$AR_FLAGS # Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override # by AR_FLAGS because that was never working and AR_FLAGS is about to die. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 printf %s "checking for archiver @FILE support... " >&6; } if test ${lt_cv_ar_at_file+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 printf "%s\n" "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf "%s\n" "$STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_STRIP+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 printf "%s\n" "$ac_ct_STRIP" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 printf "%s\n" "$RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_RANLIB+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 printf "%s\n" "$ac_ct_RANLIB" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 printf %s "checking command to parse $NM output from $compiler object... " >&6; } if test ${lt_cv_sys_global_symbol_pipe+y} then : printf %s "(cached) " >&6 else $as_nop # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++ or ICC, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&5 if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&5 && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 printf "%s\n" "failed" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 printf "%s\n" "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 printf %s "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test ${with_sysroot+y} then : withval=$with_sysroot; else $as_nop with_sysroot=no fi lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 printf "%s\n" "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 printf "%s\n" "${lt_sysroot:-no}" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 printf %s "checking for a working dd... " >&6; } if test ${ac_cv_path_lt_DD+y} then : printf %s "(cached) " >&6 else $as_nop printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} if test -z "$lt_DD"; then ac_path_lt_DD_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in dd do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi $ac_path_lt_DD_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_lt_DD"; then : fi else ac_cv_path_lt_DD=$lt_DD fi rm -f conftest.i conftest2.i conftest.out fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 printf "%s\n" "$ac_cv_path_lt_DD" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 printf %s "checking how to truncate binary pipes... " >&6; } if test ${lt_cv_truncate_bin+y} then : printf %s "(cached) " >&6 else $as_nop printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 printf "%s\n" "$lt_cv_truncate_bin" >&6; } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # Check whether --enable-libtool-lock was given. if test ${enable_libtool_lock+y} then : enableval=$enable_libtool_lock; fi test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `$FILECMD conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then emul=elf case `$FILECMD conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `$FILECMD conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `$FILECMD conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `$FILECMD conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `$FILECMD conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 printf %s "checking whether the C compiler needs -belf... " >&6; } if test ${lt_cv_cc_needs_belf+y} then : printf %s "(cached) " >&6 else $as_nop ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_cc_needs_belf=yes else $as_nop lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `$FILECMD conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 printf "%s\n" "$MANIFEST_TOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if test ${lt_cv_path_mainfest_tool+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 printf "%s\n" "$lt_cv_path_mainfest_tool" >&6; } if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_DSYMUTIL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 printf "%s\n" "$DSYMUTIL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_DSYMUTIL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 printf "%s\n" "$ac_ct_DSYMUTIL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_NMEDIT+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 printf "%s\n" "$NMEDIT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_NMEDIT+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 printf "%s\n" "$ac_ct_NMEDIT" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_LIPO+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 printf "%s\n" "$LIPO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_LIPO+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 printf "%s\n" "$ac_ct_LIPO" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 printf "%s\n" "$OTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OTOOL+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 printf "%s\n" "$ac_ct_OTOOL" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_OTOOL64+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 printf "%s\n" "$OTOOL64" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_OTOOL64+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 printf "%s\n" "$ac_ct_OTOOL64" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 printf %s "checking for -single_module linker flag... " >&6; } if test ${lt_cv_apple_cc_single_mod+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 printf %s "checking for -exported_symbols_list linker flag... " >&6; } if test ${lt_cv_ld_exported_symbols_list+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_ld_exported_symbols_list=yes else $as_nop lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 printf %s "checking for -force_load linker flag... " >&6; } if test ${lt_cv_ld_force_load+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR $AR_FLAGS libconftest.a conftest.o" >&5 $AR $AR_FLAGS libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 printf "%s\n" "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) case $MACOSX_DEPLOYMENT_TARGET,$host in 10.[012],*|,*powerpc*-darwin[5-8]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; *) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } ac_header= ac_cache= for ac_item in $ac_header_c_list do if test $ac_cache; then ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then printf "%s\n" "#define $ac_item 1" >> confdefs.h fi ac_header= ac_cache= elif test $ac_header; then ac_cache=$ac_item else ac_header=$ac_item fi done if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes then : printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes then : printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h fi func_stripname_cnf () { case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;; esac } # func_stripname_cnf # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test ${enable_shared+y} then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop enable_shared=yes fi # Check whether --enable-static was given. if test ${enable_static+y} then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop enable_static=yes fi # Check whether --with-pic was given. if test ${with_pic+y} then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop pic_mode=default fi # Check whether --enable-fast-install was given. if test ${enable_fast_install+y} then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac else $as_nop enable_fast_install=yes fi shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 printf %s "checking which variant of shared library versioning to provide... " >&6; } # Check whether --with-aix-soname was given. if test ${with_aix_soname+y} then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$with_aix_soname else $as_nop if test ${lt_cv_with_aix_soname+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_with_aix_soname=aix fi with_aix_soname=$lt_cv_with_aix_soname fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 printf "%s\n" "$with_aix_soname" >&6; } if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 printf %s "checking for objdir... " >&6; } if test ${lt_cv_objdir+y} then : printf %s "(cached) " >&6 else $as_nop rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 printf "%s\n" "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC and # ICC, which need '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o func_cc_basename $compiler cc_basename=$func_cc_basename_result # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 printf %s "checking for ${ac_tool_prefix}file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : printf %s "(cached) " >&6 else $as_nop case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/${ac_tool_prefix}file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 printf "%s\n" "$MAGIC_CMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5 printf %s "checking for file... " >&6; } if test ${lt_cv_path_MAGIC_CMD+y} then : printf %s "(cached) " >&6 else $as_nop case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 printf "%s\n" "$MAGIC_CMD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC=$CC ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test ${lt_cv_prog_compiler_rtti_exceptions+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # flang / f18. f95 an alias for gfortran or flang on Debian flang* | f18* | f95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 printf %s "checking for $compiler option to produce PIC... " >&6; } if test ${lt_cv_prog_compiler_pic+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test ${lt_cv_prog_compiler_pic_works+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test ${lt_cv_prog_compiler_static_works+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 printf %s "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 printf "%s\n" "$hard_links" >&6; } if test no = "$hard_links"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='$wl--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=yes ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes file_list_spec='@' ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test no = "$ld_shlibs"; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct=no hardcode_direct_absolute=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath_+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath_+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' $wl-bernotok' allow_undefined_flag=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++ or Intel C++ Compiler. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl* | icl*) # Native MSVC or ICC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC and ICC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly* | midnightbsd*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 printf %s "checking if $CC understands -b... " >&6; } if test ${lt_cv_prog_compiler__b+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 printf "%s\n" "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if test ${lt_cv_irix_exported_symbol+y} then : printf %s "(cached) " >&6 else $as_nop save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : lt_cv_irix_exported_symbol=yes else $as_nop lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi link_all_deplibs=no else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' ;; esac ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' else archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes file_list_spec='@' ;; osf3*) if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='$wl-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='$wl-z,text' allow_undefined_flag='$wl-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 printf "%s\n" "$ld_shlibs" >&6; } test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 printf %s "checking whether -lc should be explicitly linked in... " >&6; } if test ${lt_cv_archive_cmds_need_lc+y} then : printf %s "(cached) " >&6 else $as_nop $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 printf %s "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl* | *,icl*) # Native MSVC or ICC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC and ICC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly* | midnightbsd*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if test ${lt_cv_shlibpath_overrides_runpath+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 printf "%s\n" "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 printf %s "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && test no != "$hardcode_minus_L"; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 printf "%s\n" "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dlopen (); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes else $as_nop ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else $as_nop lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes then : lt_cv_dlopen=shl_load else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 printf %s "checking for shl_load in -ldld... " >&6; } if test ${ac_cv_lib_dld_shl_load+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char shl_load (); int main (void) { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_shl_load=yes else $as_nop ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else $as_nop ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes then : lt_cv_dlopen=dlopen else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dlopen (); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes else $as_nop ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 printf %s "checking for dlopen in -lsvld... " >&6; } if test ${ac_cv_lib_svld_dlopen+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dlopen (); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_svld_dlopen=yes else $as_nop ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 printf %s "checking for dld_link in -ldld... " >&6; } if test ${ac_cv_lib_dld_dld_link+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dld_link (); int main (void) { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_dld_link=yes else $as_nop ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi fi fi fi fi fi ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 printf %s "checking whether a program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self+y} then : printf %s "(cached) " >&6 else $as_nop if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 printf "%s\n" "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 printf %s "checking whether a statically linked program can dlopen itself... " >&6; } if test ${lt_cv_dlopen_self_static+y} then : printf %s "(cached) " >&6 else $as_nop if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 printf "%s\n" "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 printf %s "checking whether stripping libraries is possible... " >&6; } if test -z "$STRIP"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } else if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else case $host_os in darwin*) # FIXME - insert some real tests, host_os isn't really good enough striplib="$STRIP -x" old_striplib="$STRIP -S" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } ;; freebsd*) if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } ;; esac fi fi # Report what library types will actually be built { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 printf %s "checking if libtool supports shared libraries... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 printf "%s\n" "$can_build_shared" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 printf %s "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 printf "%s\n" "$enable_shared" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 printf %s "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 printf "%s\n" "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 printf %s "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if test ${ac_cv_prog_CXXCPP+y} then : printf %s "(cached) " >&6 else $as_nop # Double quotes because $CXX needs to be expanded for CXXCPP in "$CXX -E" cpp /lib/cpp do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : else $as_nop # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else $as_nop # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 printf "%s\n" "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : else $as_nop # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO" then : # Broken: success on invalid input. continue else $as_nop # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok then : else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu else _lt_caught_CXX_error=yes fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds reload_flag_CXX=$reload_flag reload_cmds_CXX=$reload_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC func_cc_basename $compiler cc_basename=$func_cc_basename_result if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test yes = "$GXX"; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test yes = "$GXX"; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test ${with_gnu_ld+y} then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else $as_nop with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 printf %s "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 printf %s "checking for GNU ld... " >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 printf %s "checking for non-GNU ld... " >&6; } fi if test ${lt_cv_path_LD+y} then : printf %s "(cached) " >&6 else $as_nop if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 printf "%s\n" "$LD" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 printf %s "checking if the linker ($LD) is GNU ld... " >&6; } if test ${lt_cv_prog_gnu_ld+y} then : printf %s "(cached) " >&6 else $as_nop # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test yes = "$with_gnu_ld"; then archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no ;; esac if test yes = "$GXX"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag=$shared_flag' $wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec_CXX='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. always_export_symbols_CXX=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. # The "-G" linker flag allows undefined symbols. no_undefined_flag_CXX='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath__CXX+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if test ${lt_cv_aix_libpath__CXX+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' $wl-bernotok' allow_undefined_flag_CXX=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' fi archive_cmds_need_lc_CXX=yes archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl* | ,icl* | no,icl*) # Native MSVC or ICC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_CXX=' ' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=yes file_list_spec_CXX='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' enable_shared_with_static_runtimes_CXX=yes # Don't use ranlib old_postinstall_cmds_CXX='chmod 644 $oldlib' postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' export_dynamic_flag_spec_CXX='$wl--export-all-symbols' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec_CXX='' fi link_all_deplibs_CXX=yes allow_undefined_flag_CXX=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds_CXX="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds_CXX="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" if test yes != "$lt_cv_apple_cc_single_mod"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" archive_expsym_cmds_CXX="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi else ld_shlibs_CXX=no fi ;; os2*) hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_minus_L_CXX=yes allow_undefined_flag_CXX=unsupported shrext_cmds=.dll archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes_CXX=yes file_list_spec_CXX='@' ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly* | midnightbsd*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; haiku*) archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs_CXX=yes ;; hpux9*) hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='$wl-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) ld_shlibs_CXX=yes ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='$wl-E' whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else ld_shlibs_CXX=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' case $host in osf3*) archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test yes,no = "$GXX,$with_gnu_ld"; then no_undefined_flag_CXX=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' fi hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='$wl-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_CXX='$wl-z,text' allow_undefined_flag_CXX='$wl-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ '"$reload_cmds_CXX" ;; *) archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 printf "%s\n" "$ld_shlibs_CXX" >&6; } test no = "$ld_shlibs_CXX" && can_build_shared=no GCC_CXX=$GXX LD_CXX=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX=$prev$p else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX=$prev$p else postdeps_CXX="${postdeps_CXX} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$predep_objects_CXX"; then predep_objects_CXX=$p else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX=$p else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi lt_prog_compiler_pic_CXX='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static_CXX='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly* | midnightbsd*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 printf %s "checking for $compiler option to produce PIC... " >&6; } if test ${lt_cv_prog_compiler_pic_CXX+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_CXX" >&6; } lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if test ${lt_cv_prog_compiler_pic_works_CXX+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test ${lt_cv_prog_compiler_static_works_CXX+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then : else lt_prog_compiler_static_CXX= fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o_CXX+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o_CXX" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test ${lt_cv_prog_compiler_c_o_CXX+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 printf "%s\n" "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 printf %s "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 printf "%s\n" "$hard_links" >&6; } if test no = "$hard_links"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl* | icl*) exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' ;; esac ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs_CXX=no ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 printf "%s\n" "$ld_shlibs_CXX" >&6; } test no = "$ld_shlibs_CXX" && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 printf %s "checking whether -lc should be explicitly linked in... " >&6; } if test ${lt_cv_archive_cmds_need_lc_CXX+y} then : printf %s "(cached) " >&6 else $as_nop $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_CXX=no else lt_cv_archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 printf "%s\n" "$lt_cv_archive_cmds_need_lc_CXX" >&6; } archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 printf %s "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl* | *,icl*) # Native MSVC or ICC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC and ICC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly* | midnightbsd*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec_CXX='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if test ${lt_cv_shlibpath_overrides_runpath+y} then : printf %s "(cached) " >&6 else $as_nop lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO" then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 printf "%s\n" "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 printf %s "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test yes = "$hardcode_automatic_CXX"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct_CXX" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && test no != "$hardcode_minus_L_CXX"; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 printf "%s\n" "$hardcode_action_CXX" >&6; } if test relink = "$hardcode_action_CXX" || test yes = "$inherit_rpath_CXX"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test yes != "$_lt_caught_CXX_error" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_commands="$ac_config_commands libtool" # Only expand once: { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 printf %s "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 printf "%s\n" "no, using $LN_S" >&6; } fi for ac_prog in flex lex do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_LEX+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$LEX"; then ac_cv_prog_LEX="$LEX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_LEX="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LEX=$ac_cv_prog_LEX if test -n "$LEX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5 printf "%s\n" "$LEX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$LEX" && break done test -n "$LEX" || LEX=":" if test "x$LEX" != "x:"; then cat >conftest.l <<_ACEOF %{ #ifdef __cplusplus extern "C" #endif int yywrap(void); %} %% a { ECHO; } b { REJECT; } c { yymore (); } d { yyless (1); } e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ #ifdef __cplusplus yyless ((yyinput () != 0)); #else yyless ((input () != 0)); #endif } f { unput (yytext[0]); } . { BEGIN INITIAL; } %% #ifdef YYTEXT_POINTER extern char *yytext; #endif int yywrap (void) { return 1; } int main (void) { return ! yylex (); } _ACEOF { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lex output file root" >&5 printf %s "checking for lex output file root... " >&6; } if test ${ac_cv_prog_lex_root+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_lex_root=unknown { { ac_try="$LEX conftest.l" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$LEX conftest.l") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && if test -f lex.yy.c; then ac_cv_prog_lex_root=lex.yy elif test -f lexyy.c; then ac_cv_prog_lex_root=lexyy fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5 printf "%s\n" "$ac_cv_prog_lex_root" >&6; } if test "$ac_cv_prog_lex_root" = unknown then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot find output from $LEX; giving up on $LEX" >&5 printf "%s\n" "$as_me: WARNING: cannot find output from $LEX; giving up on $LEX" >&2;} LEX=: LEXLIB= fi LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root if test ${LEXLIB+y} then : else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lex library" >&5 printf %s "checking for lex library... " >&6; } if test ${ac_cv_lib_lex+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_LIBS="$LIBS" ac_found=false for ac_cv_lib_lex in 'none needed' -lfl -ll 'not found'; do case $ac_cv_lib_lex in #( 'none needed') : ;; #( 'not found') : break ;; #( *) : LIBS="$ac_cv_lib_lex $ac_save_LIBS" ;; #( *) : ;; esac cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_found=: fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if $ac_found; then break fi done LIBS="$ac_save_LIBS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5 printf "%s\n" "$ac_cv_lib_lex" >&6; } if test "$ac_cv_lib_lex" = 'not found' then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: required lex library not found; giving up on $LEX" >&5 printf "%s\n" "$as_me: WARNING: required lex library not found; giving up on $LEX" >&2;} LEX=: LEXLIB= elif test "$ac_cv_lib_lex" = 'none needed' then : LEXLIB='' else $as_nop LEXLIB=$ac_cv_lib_lex fi ac_save_LIBS="$LIBS" LIBS= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing yywrap" >&5 printf %s "checking for library containing yywrap... " >&6; } if test ${ac_cv_search_yywrap+y} then : printf %s "(cached) " >&6 else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char yywrap (); int main (void) { return yywrap (); ; return 0; } _ACEOF for ac_lib in '' fl l do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO" then : ac_cv_search_yywrap=$ac_res fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext if test ${ac_cv_search_yywrap+y} then : break fi done if test ${ac_cv_search_yywrap+y} then : else $as_nop ac_cv_search_yywrap=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_yywrap" >&5 printf "%s\n" "$ac_cv_search_yywrap" >&6; } ac_res=$ac_cv_search_yywrap if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" LEXLIB="$LIBS" fi LIBS="$ac_save_LIBS" fi if test "$LEX" != : then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5 printf %s "checking whether yytext is a pointer... " >&6; } if test ${ac_cv_prog_lex_yytext_pointer+y} then : printf %s "(cached) " >&6 else $as_nop # POSIX says lex can declare yytext either as a pointer or an array; the # default is implementation-dependent. Figure out which it is, since # not all implementations provide the %pointer and %array declarations. ac_cv_prog_lex_yytext_pointer=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define YYTEXT_POINTER 1 `cat $LEX_OUTPUT_ROOT.c` _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_lex_yytext_pointer=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5 printf "%s\n" "$ac_cv_prog_lex_yytext_pointer" >&6; } if test $ac_cv_prog_lex_yytext_pointer = yes; then printf "%s\n" "#define YYTEXT_POINTER 1" >>confdefs.h fi fi rm -f conftest.l $LEX_OUTPUT_ROOT.c fi if test "$LEX" = :; then LEX=${am_missing_run}flex fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval test \${ac_cv_prog_make_${ac_make}_set+y} then : printf %s "(cached) " >&6 else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } SET_MAKE= else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi # check enable_dependency_tracking configure option if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi # Disable pointer-sign warnings for a while... CFLAGS="$CFLAGS -Wno-pointer-sign" # Special check for pthread support ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ax_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 printf %s "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char pthread_join (); int main (void) { return pthread_join (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ax_pthread_ok=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 printf "%s\n" "$ax_pthread_ok" >&6; } if test x"$ax_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all, and "pthread-config" # which is a program returning the flags for the Pth emulation library. ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # ... -mt is also the pthreads flag for HP/aCC # pthread: Linux, etcetera # --thread-safe: KAI C++ # pthread-config: use pthread-config program (for GNU Pth library) case ${host_os} in solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthreads/-mt/ # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags" ;; darwin*) ax_pthread_flags="-pthread $ax_pthread_flags" ;; esac # Clang doesn't consider unrecognized options an error unless we specify # -Werror. We throw in some extra Clang-specific options to ensure that # this doesn't happen for GCC, which also accepts -Werror. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler needs -Werror to reject unknown flags" >&5 printf %s "checking if compiler needs -Werror to reject unknown flags... " >&6; } save_CFLAGS="$CFLAGS" ax_pthread_extra_flags="-Werror" CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo(void); int main (void) { foo() ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else $as_nop ax_pthread_extra_flags= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$save_CFLAGS" if test x"$ax_pthread_ok" = xno; then for flag in $ax_pthread_flags; do case $flag in none) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 printf %s "checking whether pthreads work without any flags... " >&6; } ;; -*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5 printf %s "checking whether pthreads work with $flag... " >&6; } PTHREAD_CFLAGS="$flag" ;; pthread-config) # Extract the first word of "pthread-config", so it can be a program name with args. set dummy pthread-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ax_pthread_config+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ax_pthread_config"; then ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ax_pthread_config="yes" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_ax_pthread_config" && ac_cv_prog_ax_pthread_config="no" fi fi ax_pthread_config=$ac_cv_prog_ax_pthread_config if test -n "$ax_pthread_config"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5 printf "%s\n" "$ax_pthread_config" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test x"$ax_pthread_config" = xno; then continue; fi PTHREAD_CFLAGS="`pthread-config --cflags`" PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" ;; *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5 printf %s "checking for the pthreads library -l$flag... " >&6; } PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include static void routine(void *a) { a = 0; } static void *start_routine(void *a) { return a; } int main (void) { pthread_t th; pthread_attr_t attr; pthread_create(&th, 0, start_routine, 0); pthread_join(th, 0); pthread_attr_init(&attr); pthread_cleanup_push(routine, 0); pthread_cleanup_pop(0) /* ; */ ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ax_pthread_ok=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 printf "%s\n" "$ax_pthread_ok" >&6; } if test "x$ax_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$ax_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 printf %s "checking for joinable pthread attribute... " >&6; } attr_name=unknown for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { int attr = $attr; return attr /* ; */ ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : attr_name=$attr; break fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5 printf "%s\n" "$attr_name" >&6; } if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then printf "%s\n" "#define PTHREAD_CREATE_JOINABLE $attr_name" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5 printf %s "checking if more special flags are required for pthreads... " >&6; } flag=no case ${host_os} in aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";; osf* | hpux*) flag="-D_REENTRANT";; solaris*) if test "$GCC" = "yes"; then flag="-D_REENTRANT" else # TODO: What about Clang on Solaris? flag="-mt -D_REENTRANT" fi ;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $flag" >&5 printf "%s\n" "$flag" >&6; } if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5 printf %s "checking for PTHREAD_PRIO_INHERIT... " >&6; } if test ${ax_cv_PTHREAD_PRIO_INHERIT+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { int i = PTHREAD_PRIO_INHERIT; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ax_cv_PTHREAD_PRIO_INHERIT=yes else $as_nop ax_cv_PTHREAD_PRIO_INHERIT=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5 printf "%s\n" "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; } if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" then : printf "%s\n" "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" # More AIX lossage: compile with *_r variant if test "x$GCC" != xyes; then case $host_os in aix*) case "x/$CC" in #( x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6) : #handle absolute path differently from PATH based program lookup case "x$CC" in #( x/*) : if as_fn_executable_p ${CC}_r then : PTHREAD_CC="${CC}_r" fi ;; #( *) : for ac_prog in ${CC}_r do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_PTHREAD_CC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$PTHREAD_CC"; then ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_PTHREAD_CC="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi PTHREAD_CC=$ac_cv_prog_PTHREAD_CC if test -n "$PTHREAD_CC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 printf "%s\n" "$PTHREAD_CC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$PTHREAD_CC" && break done test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" ;; esac ;; #( *) : ;; esac ;; esac fi fi test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$ax_pthread_ok" = xyes; then printf "%s\n" "#define HAVE_PTHREAD 1" >>confdefs.h : else ax_pthread_ok=no as_fn_error $? "POSIX thread support required" "$LINENO" 5 fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$PTHREAD_CC" # Argument for debugging # Check whether --enable-debug was given. if test ${enable_debug+y} then : enableval=$enable_debug; fi if test "$enable_debug" = "no" -o "$enable_debug" = "false" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Debugging support is completely disabled!" >&5 printf "%s\n" "$as_me: WARNING: Debugging support is completely disabled!" >&2;} with_debug=no else printf "%s\n" "#define DEBUG 1" >>confdefs.h with_debug=yes fi # check for dlopen() in libdl { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 printf %s "checking for dlopen in -ldl... " >&6; } if test ${ac_cv_lib_dl_dlopen+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char dlopen (); int main (void) { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dl_dlopen=yes else $as_nop ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes then : LIBDL="$LIBDL -ldl" else $as_nop for ac_func in dlopen do : ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes then : printf "%s\n" "#define HAVE_DLOPEN 1" >>confdefs.h else $as_nop as_fn_error $? "dlopen() not found" "$LINENO" 5 fi done fi # Add argument for using curl # Check whether --with-curl was given. if test ${with_curl+y} then : withval=$with_curl; fi if test "$with_curl" = "yes" -o "$with_curl" = "true" then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curl_easy_init in -lcurl" >&5 printf %s "checking for curl_easy_init in -lcurl... " >&6; } if test ${ac_cv_lib_curl_curl_easy_init+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lcurl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char curl_easy_init (); int main (void) { return curl_easy_init (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_curl_curl_easy_init=yes else $as_nop ac_cv_lib_curl_curl_easy_init=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curl_curl_easy_init" >&5 printf "%s\n" "$ac_cv_lib_curl_curl_easy_init" >&6; } if test "x$ac_cv_lib_curl_curl_easy_init" = xyes then : with_curl=yes LIBS="$LIBS -lcurl" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Could not locate cURL library. cURL disabled" >&5 printf "%s\n" "$as_me: WARNING: Could not locate cURL library. cURL disabled" >&2;} with_curl=no fi else with_curl=no fi if test x$with_curl = xyes; then HAVE_CURL_TRUE= HAVE_CURL_FALSE='#' else HAVE_CURL_TRUE='#' HAVE_CURL_FALSE= fi # Add argument for defining configuration directory # Check whether --with-confdir was given. if test ${with_confdir+y} then : withval=$with_confdir; confdir="${with_confdir}" else $as_nop confdir=false fi if test x${confdir} = xfalse ; then confdir="/etc/pam_pkcs11" fi printf "%s\n" "#define CONFDIR \"$confdir\"" >>confdefs.h # Add argument for using ldap # Check whether --with-ldap was given. if test ${with_ldap+y} then : withval=$with_ldap; fi if test "$with_ldap" = "no" -o "$with_ldap" = "false" then with_ldap=no else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ldap_init in -lldap" >&5 printf %s "checking for ldap_init in -lldap... " >&6; } if test ${ac_cv_lib_ldap_ldap_init+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lldap $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char ldap_init (); int main (void) { return ldap_init (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_ldap_ldap_init=yes else $as_nop ac_cv_lib_ldap_ldap_init=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ldap_ldap_init" >&5 printf "%s\n" "$ac_cv_lib_ldap_ldap_init" >&6; } if test "x$ac_cv_lib_ldap_ldap_init" = xyes then : with_ldap=yes LIBS="$LIBS -lldap" else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find LDAP libraries. LDAP support disabled" >&5 printf "%s\n" "$as_me: WARNING: Cannot find LDAP libraries. LDAP support disabled" >&2;} with_ldap=no fi fi if test "$with_ldap" \!= "no"; then ac_fn_c_check_func "$LINENO" "ldap_init" "ac_cv_func_ldap_init" if test "x$ac_cv_func_ldap_init" = xyes then : printf "%s\n" "#define HAVE_LDAP_INIT 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "ldap_initialize" "ac_cv_func_ldap_initialize" if test "x$ac_cv_func_ldap_initialize" = xyes then : printf "%s\n" "#define HAVE_LDAP_INITIALIZE 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "ldap_set_option" "ac_cv_func_ldap_set_option" if test "x$ac_cv_func_ldap_set_option" = xyes then : printf "%s\n" "#define HAVE_LDAP_SET_OPTION 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "ldap_get_option" "ac_cv_func_ldap_get_option" if test "x$ac_cv_func_ldap_get_option" = xyes then : printf "%s\n" "#define HAVE_LDAP_GET_OPTION 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "ldap_start_tls" "ac_cv_func_ldap_start_tls" if test "x$ac_cv_func_ldap_start_tls" = xyes then : printf "%s\n" "#define HAVE_LDAP_START_TLS 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "ldap_start_tls_s" "ac_cv_func_ldap_start_tls_s" if test "x$ac_cv_func_ldap_start_tls_s" = xyes then : printf "%s\n" "#define HAVE_LDAP_START_TLS_S 1" >>confdefs.h fi fi if test x$with_ldap = xyes; then HAVE_LDAP_TRUE= HAVE_LDAP_FALSE='#' else HAVE_LDAP_TRUE='#' HAVE_LDAP_FALSE= fi # Add argument for using libp11 #AC_ARG_WITH(libp11, # AS_HELP_STRING([--with-libp11],[use libp11 (default=yes)])) #if test "$with_libp11" = "no" -o "$with_libp11" = "false" #then # with_libp11=no #else # AC_CHECK_LIB( p11, PKCS11_CTX_new, # [ # with_libp11=yes # LIBS="$LIBS -lp11" # ],[ # AC_MSG_WARN([Cannot find LIBP11 library. Using direct Pkcs11 access]) # with_libp11=no # ]) #fi #AC_SUBST(LIBP11_CFLAGS) #AC_SUBST(LIBP11_LIBS) #AM_CONDITIONAL(HAVE_LIBP11, test x$with_libp11 = xyes) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 printf "%s\n" "$PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else $as_nop case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } PKG_CONFIG="" fi fi # Check and set crypto paths # Check whether --with-nss was given. if test ${with_nss+y} then : withval=$with_nss; fi if test "$with_nss" = "yes" -o "$with_nss" = "true" then pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nss" >&5 printf %s "checking for nss... " >&6; } if test -n "$NSS_CFLAGS"; then pkg_cv_NSS_CFLAGS="$NSS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"nss\""; } >&5 ($PKG_CONFIG --exists --print-errors "nss") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_NSS_CFLAGS=`$PKG_CONFIG --cflags "nss" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$NSS_LIBS"; then pkg_cv_NSS_LIBS="$NSS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"nss\""; } >&5 ($PKG_CONFIG --exists --print-errors "nss") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_NSS_LIBS=`$PKG_CONFIG --libs "nss" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then NSS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "nss" 2>&1` else NSS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "nss" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$NSS_PKG_ERRORS" >&5 as_fn_error $? "could not locate NSS crypto library" "$LINENO" 5 elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? "could not locate NSS crypto library" "$LINENO" 5 else NSS_CFLAGS=$pkg_cv_NSS_CFLAGS NSS_LIBS=$pkg_cv_NSS_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } with_nss=yes fi OPENSSL_CFLAGS= OPENSSL_LIBS= with_ssl=no else pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for openssl" >&5 printf %s "checking for openssl... " >&6; } if test -n "$OPENSSL_CFLAGS"; then pkg_cv_OPENSSL_CFLAGS="$OPENSSL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl\""; } >&5 ($PKG_CONFIG --exists --print-errors "openssl") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OPENSSL_CFLAGS=`$PKG_CONFIG --cflags "openssl" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$OPENSSL_LIBS"; then pkg_cv_OPENSSL_LIBS="$OPENSSL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openssl\""; } >&5 ($PKG_CONFIG --exists --print-errors "openssl") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OPENSSL_LIBS=`$PKG_CONFIG --libs "openssl" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then OPENSSL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "openssl" 2>&1` else OPENSSL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "openssl" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$OPENSSL_PKG_ERRORS" >&5 as_fn_error $? "openssl not found" "$LINENO" 5 elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? "openssl not found" "$LINENO" 5 else OPENSSL_CFLAGS=$pkg_cv_OPENSSL_CFLAGS OPENSSL_LIBS=$pkg_cv_OPENSSL_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } with_ssl=yes fi NSS_CFLAGS= NSS_LIBS= with_nss=no fi if test x$with_nss = xyes; then HAVE_NSS_TRUE= HAVE_NSS_FALSE='#' else HAVE_NSS_TRUE='#' HAVE_NSS_FALSE= fi if test "$with_nss" = "yes" then CRYPTO_CFLAGS="${NSS_CFLAGS} -DHAVE_NSS" CRYPTO_LIBS=${NSS_LIBS} else CRYPTO_CFLAGS=${OPENSSL_CFLAGS} CRYPTO_LIBS=${OPENSSL_LIBS} fi # Check for PCSC-Lite # Check whether --with-pcsclite was given. if test ${with_pcsclite+y} then : withval=$with_pcsclite; else $as_nop with_pcsclite=yes fi if test "$with_pcsclite" != "no"; then OLD_CFLAGS="$CFLAGS" OLD_LIBS="$LIBS" with_pcsclite=yes pkg_failed=no { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libpcsclite" >&5 printf %s "checking for libpcsclite... " >&6; } if test -n "$PCSC_CFLAGS"; then pkg_cv_PCSC_CFLAGS="$PCSC_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpcsclite\""; } >&5 ($PKG_CONFIG --exists --print-errors "libpcsclite") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PCSC_CFLAGS=`$PKG_CONFIG --cflags "libpcsclite" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$PCSC_LIBS"; then pkg_cv_PCSC_LIBS="$PCSC_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpcsclite\""; } >&5 ($PKG_CONFIG --exists --print-errors "libpcsclite") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PCSC_LIBS=`$PKG_CONFIG --libs "libpcsclite" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then PCSC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libpcsclite" 2>&1` else PCSC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libpcsclite" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$PCSC_PKG_ERRORS" >&5 if test -f /usr/local/lib/pkgconfig/libpcsclite.pc ; then as_fn_error $? "use PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure" "$LINENO" 5 fi elif test $pkg_failed = untried; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if test -f /usr/local/lib/pkgconfig/libpcsclite.pc ; then as_fn_error $? "use PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure" "$LINENO" 5 fi else PCSC_CFLAGS=$pkg_cv_PCSC_CFLAGS PCSC_LIBS=$pkg_cv_PCSC_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi CFLAGS="$CFLAGS $PCSC_CFLAGS" ac_fn_c_check_header_compile "$LINENO" "winscard.h" "ac_cv_header_winscard_h" " #include " if test "x$ac_cv_header_winscard_h" = xyes then : else $as_nop as_fn_error $? "winscard.h not found, install pcsc-lite, or use PCSC_CFLAGS=... ./configure" "$LINENO" 5 fi LIBS="$LDLIBS $PCSC_LIBS" ac_fn_c_check_func "$LINENO" "SCardEstablishContext" "ac_cv_func_SCardEstablishContext" if test "x$ac_cv_func_SCardEstablishContext" = xyes then : else $as_nop as_fn_error $? "SCardEstablishContext() not found, install pcsc-lite or later,or use PCSC_LIBS=... ./configure" "$LINENO" 5 fi LIBS="$OLD_LIBS" CFLAGS="$OLD_CFLAGS" else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: pcsc-lite disabled" >&5 printf "%s\n" "$as_me: WARNING: pcsc-lite disabled" >&2;} fi if test "x$with_pcsclite" = "xyes"; then HAVE_PCSC_TRUE= HAVE_PCSC_FALSE='#' else HAVE_PCSC_TRUE='#' HAVE_PCSC_FALSE= fi # Check for SGML processor # Check whether --with-docbook was given. if test ${with_docbook+y} then : withval=$with_docbook; with_docbook=$withval fi if test "$with_docbook" = "no" -o "$with_docbook" = "false" then with_docbook=no else # Extract the first word of "xsltproc", so it can be a program name with args. set dummy xsltproc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_XSLTPROC+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$XSLTPROC"; then ac_cv_prog_XSLTPROC="$XSLTPROC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_XSLTPROC="xsltproc" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi XSLTPROC=$ac_cv_prog_XSLTPROC if test -n "$XSLTPROC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XSLTPROC" >&5 printf "%s\n" "$XSLTPROC" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$XSLTPROC" = "x"; then if test "x$with_docbook" = "xyes"; then as_fn_error $? "Docbook support requested, but cannot find xsltproc" "$LINENO" 5 fi with_docbook=no else with_docbook=yes fi fi if test "x$with_docbook" != "xno"; then HAVE_DOCBOOK_TRUE= HAVE_DOCBOOK_FALSE='#' else HAVE_DOCBOOK_TRUE='#' HAVE_DOCBOOK_FALSE= fi # Checks for libraries. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pam_get_item in -lpam" >&5 printf %s "checking for pam_get_item in -lpam... " >&6; } if test ${ac_cv_lib_pam_pam_get_item+y} then : printf %s "(cached) " >&6 else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lpam $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ char pam_get_item (); int main (void) { return pam_get_item (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_pam_pam_get_item=yes else $as_nop ac_cv_lib_pam_pam_get_item=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pam_pam_get_item" >&5 printf "%s\n" "$ac_cv_lib_pam_pam_get_item" >&6; } if test "x$ac_cv_lib_pam_pam_get_item" = xyes then : printf "%s\n" "#define HAVE_LIBPAM 1" >>confdefs.h LIBS="-lpam $LIBS" else $as_nop as_fn_error $? "could not locate pam libraries" "$LINENO" 5 fi # Checks for header files. # Autoupdate added the next two lines to ensure that your configure # script's behavior did not change. They are probably safe to remove. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 printf %s "checking for egrep... " >&6; } if test ${ac_cv_path_EGREP+y} then : printf %s "(cached) " >&6 else $as_nop if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in egrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 printf "%s\n" "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" ac_fn_c_check_header_compile "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default" if test "x$ac_cv_header_string_h" = xyes then : printf "%s\n" "#define HAVE_STRING_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "syslog.h" "ac_cv_header_syslog_h" "$ac_includes_default" if test "x$ac_cv_header_syslog_h" = xyes then : printf "%s\n" "#define HAVE_SYSLOG_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default" if test "x$ac_cv_header_fcntl_h" = xyes then : printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" if test "x$ac_cv_header_unistd_h" = xyes then : printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "error.h" "ac_cv_header_error_h" "$ac_includes_default" if test "x$ac_cv_header_error_h" = xyes then : printf "%s\n" "#define HAVE_ERROR_H 1" >>confdefs.h fi if test "x$with_ldap" = "xyes"; then ac_fn_c_check_header_compile "$LINENO" "ldap.h" "ac_cv_header_ldap_h" "$ac_includes_default" if test "x$ac_cv_header_ldap_h" = xyes then : printf "%s\n" "#define HAVE_LDAP_H 1" >>confdefs.h fi fi if test "x$with_curl" = "xyes"; then ac_fn_c_check_header_compile "$LINENO" "curl/curl.h" "ac_cv_header_curl_curl_h" "$ac_includes_default" if test "x$ac_cv_header_curl_curl_h" = xyes then : printf "%s\n" "#define HAVE_CURL_CURL_H 1" >>confdefs.h fi fi if test "x$with_libp11" = "xyes"; then ac_fn_c_check_header_compile "$LINENO" "libp11.h" "ac_cv_header_libp11_h" "$ac_includes_default" if test "x$ac_cv_header_libp11_h" = xyes then : printf "%s\n" "#define HAVE_LIBP11_H 1" >>confdefs.h fi fi ac_fn_c_check_header_compile "$LINENO" "security/pam_ext.h" "ac_cv_header_security_pam_ext_h" "$ac_includes_default" if test "x$ac_cv_header_security_pam_ext_h" = xyes then : printf "%s\n" "#define HAVE_SECURITY_PAM_EXT_H 1" >>confdefs.h fi # Checks for typedefs, structures, and compiler characteristics. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 printf %s "checking for an ANSI C-conforming const... " >&6; } if test ${ac_cv_c_const+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* IBM XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_const=yes else $as_nop ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 printf "%s\n" "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then printf "%s\n" "#define const /**/" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes then : else $as_nop printf "%s\n" "#define size_t unsigned int" >>confdefs.h fi # Checks for library functions. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5 printf %s "checking for GNU libc compatible malloc... " >&6; } if test ${ac_cv_func_malloc_0_nonnull+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in # (( # Guess yes on platforms where we know the result. *-gnu* | freebsd* | netbsd* | openbsd* | bitrig* \ | hpux* | solaris* | cygwin* | mingw* | msys* ) ac_cv_func_malloc_0_nonnull=yes ;; # If we don't know, assume the worst. *) ac_cv_func_malloc_0_nonnull=no ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { void *p = malloc (0); int result = !p; free (p); return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_func_malloc_0_nonnull=yes else $as_nop ac_cv_func_malloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5 printf "%s\n" "$ac_cv_func_malloc_0_nonnull" >&6; } if test $ac_cv_func_malloc_0_nonnull = yes then : printf "%s\n" "#define HAVE_MALLOC 1" >>confdefs.h else $as_nop printf "%s\n" "#define HAVE_MALLOC 0" >>confdefs.h case " $LIBOBJS " in *" malloc.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS malloc.$ac_objext" ;; esac printf "%s\n" "#define malloc rpl_malloc" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible realloc" >&5 printf %s "checking for GNU libc compatible realloc... " >&6; } if test ${ac_cv_func_realloc_0_nonnull+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : case "$host_os" in # (( # Guess yes on platforms where we know the result. *-gnu* | freebsd* | netbsd* | openbsd* | bitrig* \ | hpux* | solaris* | cygwin* | mingw* | msys* ) ac_cv_func_realloc_0_nonnull=yes ;; # If we don't know, assume the worst. *) ac_cv_func_realloc_0_nonnull=no ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { void *p = realloc (0, 0); int result = !p; free (p); return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_func_realloc_0_nonnull=yes else $as_nop ac_cv_func_realloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_realloc_0_nonnull" >&5 printf "%s\n" "$ac_cv_func_realloc_0_nonnull" >&6; } if test $ac_cv_func_realloc_0_nonnull = yes then : printf "%s\n" "#define HAVE_REALLOC 1" >>confdefs.h else $as_nop printf "%s\n" "#define HAVE_REALLOC 0" >>confdefs.h case " $LIBOBJS " in *" realloc.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS realloc.$ac_objext" ;; esac printf "%s\n" "#define realloc rpl_realloc" >>confdefs.h fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5 printf %s "checking whether lstat correctly handles trailing slash... " >&6; } if test ${ac_cv_func_lstat_dereferences_slashed_symlink+y} then : printf %s "(cached) " >&6 else $as_nop rm -f conftest.sym conftest.file echo >conftest.file if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then if test "$cross_compiling" = yes then : case "$host_os" in # (( # Guess yes on glibc systems. *-gnu*) ac_cv_func_lstat_dereferences_slashed_symlink=yes ;; # If we don't know, assume the worst. *) ac_cv_func_lstat_dereferences_slashed_symlink=no ;; esac else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main (void) { struct stat sbuf; /* Linux will dereference the symlink and fail, as required by POSIX. That is better in the sense that it means we will not have to compile and use the lstat wrapper. */ return lstat ("conftest.sym/", &sbuf) == 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_func_lstat_dereferences_slashed_symlink=yes else $as_nop ac_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else # If the `ln -s' command failed, then we probably don't even # have an lstat function. ac_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f conftest.sym conftest.file fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5 printf "%s\n" "$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; } test $ac_cv_func_lstat_dereferences_slashed_symlink = yes && printf "%s\n" "#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1" >>confdefs.h if test "x$ac_cv_func_lstat_dereferences_slashed_symlink" = xno; then case " $LIBOBJS " in *" lstat.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS lstat.$ac_objext" ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stat accepts an empty string" >&5 printf %s "checking whether stat accepts an empty string... " >&6; } if test ${ac_cv_func_stat_empty_string_bug+y} then : printf %s "(cached) " >&6 else $as_nop if test "$cross_compiling" = yes then : ac_cv_func_stat_empty_string_bug=yes else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main (void) { struct stat sbuf; return stat ("", &sbuf) == 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_func_stat_empty_string_bug=no else $as_nop ac_cv_func_stat_empty_string_bug=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_stat_empty_string_bug" >&5 printf "%s\n" "$ac_cv_func_stat_empty_string_bug" >&6; } if test $ac_cv_func_stat_empty_string_bug = yes; then case " $LIBOBJS " in *" stat.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS stat.$ac_objext" ;; esac printf "%s\n" "#define HAVE_STAT_EMPTY_STRING_BUG 1" >>confdefs.h fi ac_func= for ac_item in $ac_func_c_list do if test $ac_func; then ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then echo "#define $ac_item 1" >> confdefs.h fi ac_func= else ac_func=$ac_item fi done if test "x$ac_cv_func_vprintf" = xno then : ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt" if test "x$ac_cv_func__doprnt" = xyes then : printf "%s\n" "#define HAVE_DOPRNT 1" >>confdefs.h fi fi ac_fn_c_check_func "$LINENO" "memset" "ac_cv_func_memset" if test "x$ac_cv_func_memset" = xyes then : printf "%s\n" "#define HAVE_MEMSET 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" if test "x$ac_cv_func_strdup" = xyes then : printf "%s\n" "#define HAVE_STRDUP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" if test "x$ac_cv_func_strerror" = xyes then : printf "%s\n" "#define HAVE_STRERROR 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strndup" "ac_cv_func_strndup" if test "x$ac_cv_func_strndup" = xyes then : printf "%s\n" "#define HAVE_STRNDUP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "daemon" "ac_cv_func_daemon" if test "x$ac_cv_func_daemon" = xyes then : printf "%s\n" "#define HAVE_DAEMON 1" >>confdefs.h fi ac_config_files="$ac_config_files Makefile po/Makefile.in doc/Makefile doc/pam_pkcs11.8 doc/doxygen.conf etc/Makefile etc/pam.d_login.example etc/pam_pkcs11.conf.example src/Makefile src/scconf/Makefile src/common/Makefile src/common/rsaref/Makefile src/tools/Makefile src/mappers/Makefile src/pam_pkcs11/Makefile tools/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 printf %s "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 printf "%s\n" "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_CURL_TRUE}" && test -z "${HAVE_CURL_FALSE}"; then as_fn_error $? "conditional \"HAVE_CURL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LDAP_TRUE}" && test -z "${HAVE_LDAP_FALSE}"; then as_fn_error $? "conditional \"HAVE_LDAP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_NSS_TRUE}" && test -z "${HAVE_NSS_FALSE}"; then as_fn_error $? "conditional \"HAVE_NSS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_PCSC_TRUE}" && test -z "${HAVE_PCSC_FALSE}"; then as_fn_error $? "conditional \"HAVE_PCSC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_DOCBOOK_TRUE}" && test -z "${HAVE_DOCBOOK_FALSE}"; then as_fn_error $? "conditional \"HAVE_DOCBOOK\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by pam_pkcs11 $as_me 0.6.12, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to the package provider." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ pam_pkcs11 config.status 0.6.12 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake < 1.5. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' FILECMD='`$ECHO "$FILECMD" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' lt_ar_flags='`$ECHO "$lt_ar_flags" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ FILECMD \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ lt_cv_nm_interface \ nm_file_list_spec \ lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ reload_flag_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ whole_archive_flag_spec_CXX \ compiler_needs_object_CXX \ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_separator_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ compiler_lib_search_dirs_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ configure_time_dlsearch_path \ configure_time_lt_sys_library_path \ reload_cmds_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ prelink_cmds_CXX \ postlink_cmds_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "doc/pam_pkcs11.8") CONFIG_FILES="$CONFIG_FILES doc/pam_pkcs11.8" ;; "doc/doxygen.conf") CONFIG_FILES="$CONFIG_FILES doc/doxygen.conf" ;; "etc/Makefile") CONFIG_FILES="$CONFIG_FILES etc/Makefile" ;; "etc/pam.d_login.example") CONFIG_FILES="$CONFIG_FILES etc/pam.d_login.example" ;; "etc/pam_pkcs11.conf.example") CONFIG_FILES="$CONFIG_FILES etc/pam_pkcs11.conf.example" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/scconf/Makefile") CONFIG_FILES="$CONFIG_FILES src/scconf/Makefile" ;; "src/common/Makefile") CONFIG_FILES="$CONFIG_FILES src/common/Makefile" ;; "src/common/rsaref/Makefile") CONFIG_FILES="$CONFIG_FILES src/common/rsaref/Makefile" ;; "src/tools/Makefile") CONFIG_FILES="$CONFIG_FILES src/tools/Makefile" ;; "src/mappers/Makefile") CONFIG_FILES="$CONFIG_FILES src/mappers/Makefile" ;; "src/pam_pkcs11/Makefile") CONFIG_FILES="$CONFIG_FILES src/pam_pkcs11/Makefile" ;; "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 printf "%s\n" "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "po-directories":C) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" gt_tab=`printf '\t'` cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assignment from automake < 1.5. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. # Hide the ALL_LINGUAS assignment from automake < 1.5. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. case $CONFIG_FILES in #( *\'*) : eval set x "$CONFIG_FILES" ;; #( *) : set x $CONFIG_FILES ;; #( *) : ;; esac shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`$as_dirname -- "$am_mf" || $as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$am_mf" : 'X\(//\)[^/]' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` am_filepart=`$as_basename -- "$am_mf" || $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$am_mf" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` { echo "$as_me:$LINENO: cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles" >&5 (cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } || am_rc=$? done if test $am_rc -ne 0; then { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE=\"gmake\" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking). See \`config.log' for more details" "$LINENO" 5; } fi { am_dirpart=; unset am_dirpart;} { am_filepart=; unset am_filepart;} { am_mf=; unset am_mf;} { am_rc=; unset am_rc;} rm -f conftest-deps.mk } ;; "libtool":C) # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 # Copyright (C) 2014 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # The names of the tagged configurations supported by this script. available_tags='CXX ' # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shared archive member basename,for filename based shared library versioning on AIX. shared_archive_member_spec=$shared_archive_member_spec # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # A file(cmd) program that detects file types. FILECMD=$lt_FILECMD # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive (by configure). lt_ar_flags=$lt_ar_flags # Flags to create an archive. AR_FLAGS=\${ARFLAGS-"\$lt_ar_flags"} # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm into a list of symbols to manually relocate. global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name lister interface. nm_interface=$lt_lt_cv_nm_interface # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot # Command to truncate a binary pipe. lt_truncate_bin=$lt_lt_cv_truncate_bin # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path # Explicit LT_SYS_LIBRARY_PATH set during ./configure time. configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain=$ac_aux_dir/ltmain.sh # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? $SED '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # How to create reloadable object files. reload_flag=$lt_reload_flag_CXX reload_cmds=$lt_reload_cmds_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_CXX # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi A=`eval echo ${prefix}` ; A=`eval echo ${A}` B=`eval echo ${bindir}` ; B=`eval echo ${B}` C=`eval echo ${sysconfdir}` ; C=`eval echo ${C}` D=`eval echo ${libdir}` ; D=`eval echo ${D}` echo "" echo "PAM-PKCS#11 has been configured with the following options" echo "" echo "Version: ${PACKAGE_VERSION}" echo "User binaries: ${B}" echo "Configuration files: ${C}" echo "libdir: ${D}" echo "" echo "Host: ${host}" echo "Compiler: ${CC}" echo "Compiler flags: ${CFLAGS}" echo "Preprocessor flags: ${CPPFLAGS}" echo "Linker flags: ${LDFLAGS}" echo "Libraries: ${LIBS}" echo "" echo "Debugging: ${with_debug}" echo "DocBook support: ${with_docbook}" echo "PC/SC support: ${with_pcsclite}" echo "CURL support: ${with_curl}" echo "LDAP support: ${with_ldap}" echo "NSS support: ${with_nss}" echo "OPENSSL support: ${with_ssl}" echo "confdir: ${confdir}" #echo "LIBP11 support: ${with_libp11}" echo "" pam_pkcs11-0.6.12/COPYING0000644000175000017500000006347613553631314011537 00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! pam_pkcs11-0.6.12/AUTHORS0000644000175000017500000000141014367517037011541 00000000000000Mario Strasser Original pam-pkcs11 code Juan Antonio Martinez Configuration file mgmt Dynamic cert-to-login module mappers Antti Tapaninen Timo Sirainen scconf configuration file library Ludovic Rousseau Many fixes and improvements card_eventmgr mantainer Andreas Jellinghaus OpenSC and OpenSSH mappers original code from PAM_p11 libraries Dominik Fischer LDAP Mapper Some improvements Ville Skyttä Original pam_pkcs11.spec file Paul Wolneykien Additional features and fixes (card_only, wait_for_card, openssl versions). Also Thanks to all the people at the OpenSC project pam_pkcs11-0.6.12/depcomp0000755000175000017500000005602014215102164012034 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2018-03-07.03; # UTC # Copyright (C) 1999-2021 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: pam_pkcs11-0.6.12/config.sub0000755000175000017500000010511614175772605012465 00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2022 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale timestamp='2022-01-03' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # https://git.savannah.gnu.org/cgit/config.git/plain/config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. # The "shellcheck disable" line above the timestamp inhibits complaints # about features and limitations of the classic Bourne shell that were # superseded or lifted in POSIX. However, this script identifies a wide # variety of pre-POSIX systems that do not have POSIX shells at all, and # even some reasonably current systems (Solaris 10 as case-in-point) still # have a pre-POSIX /bin/sh. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; *local*) # First pass through any local machine types. echo "$1" exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Split fields of configuration type # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read field1 field2 field3 field4 <&2 exit 1 ;; *-*-*-*) basic_machine=$field1-$field2 basic_os=$field3-$field4 ;; *-*-*) # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two # parts maybe_os=$field2-$field3 case $maybe_os in nto-qnx* | linux-* | uclinux-uclibc* \ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ | storm-chaos* | os2-emx* | rtmk-nova*) basic_machine=$field1 basic_os=$maybe_os ;; android-linux) basic_machine=$field1-unknown basic_os=linux-android ;; *) basic_machine=$field1-$field2 basic_os=$field3 ;; esac ;; *-*) # A lone config we happen to match not fitting any pattern case $field1-$field2 in decstation-3100) basic_machine=mips-dec basic_os= ;; *-*) # Second component is usually, but not always the OS case $field2 in # Prevent following clause from handling this valid os sun*os*) basic_machine=$field1 basic_os=$field2 ;; zephyr*) basic_machine=$field1-unknown basic_os=$field2 ;; # Manufacturers dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ | unicom* | ibm* | next | hp | isi* | apollo | altos* \ | convergent* | ncr* | news | 32* | 3600* | 3100* \ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ | ultra | tti* | harris | dolphin | highlevel | gould \ | cbm | ns | masscomp | apple | axis | knuth | cray \ | microblaze* | sim | cisco \ | oki | wec | wrs | winbond) basic_machine=$field1-$field2 basic_os= ;; *) basic_machine=$field1 basic_os=$field2 ;; esac ;; esac ;; *) # Convert single-component short-hands not valid as part of # multi-component configurations. case $field1 in 386bsd) basic_machine=i386-pc basic_os=bsd ;; a29khif) basic_machine=a29k-amd basic_os=udi ;; adobe68k) basic_machine=m68010-adobe basic_os=scout ;; alliant) basic_machine=fx80-alliant basic_os= ;; altos | altos3068) basic_machine=m68k-altos basic_os= ;; am29k) basic_machine=a29k-none basic_os=bsd ;; amdahl) basic_machine=580-amdahl basic_os=sysv ;; amiga) basic_machine=m68k-unknown basic_os= ;; amigaos | amigados) basic_machine=m68k-unknown basic_os=amigaos ;; amigaunix | amix) basic_machine=m68k-unknown basic_os=sysv4 ;; apollo68) basic_machine=m68k-apollo basic_os=sysv ;; apollo68bsd) basic_machine=m68k-apollo basic_os=bsd ;; aros) basic_machine=i386-pc basic_os=aros ;; aux) basic_machine=m68k-apple basic_os=aux ;; balance) basic_machine=ns32k-sequent basic_os=dynix ;; blackfin) basic_machine=bfin-unknown basic_os=linux ;; cegcc) basic_machine=arm-unknown basic_os=cegcc ;; convex-c1) basic_machine=c1-convex basic_os=bsd ;; convex-c2) basic_machine=c2-convex basic_os=bsd ;; convex-c32) basic_machine=c32-convex basic_os=bsd ;; convex-c34) basic_machine=c34-convex basic_os=bsd ;; convex-c38) basic_machine=c38-convex basic_os=bsd ;; cray) basic_machine=j90-cray basic_os=unicos ;; crds | unos) basic_machine=m68k-crds basic_os= ;; da30) basic_machine=m68k-da30 basic_os= ;; decstation | pmax | pmin | dec3100 | decstatn) basic_machine=mips-dec basic_os= ;; delta88) basic_machine=m88k-motorola basic_os=sysv3 ;; dicos) basic_machine=i686-pc basic_os=dicos ;; djgpp) basic_machine=i586-pc basic_os=msdosdjgpp ;; ebmon29k) basic_machine=a29k-amd basic_os=ebmon ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson basic_os=ose ;; gmicro) basic_machine=tron-gmicro basic_os=sysv ;; go32) basic_machine=i386-pc basic_os=go32 ;; h8300hms) basic_machine=h8300-hitachi basic_os=hms ;; h8300xray) basic_machine=h8300-hitachi basic_os=xray ;; h8500hms) basic_machine=h8500-hitachi basic_os=hms ;; harris) basic_machine=m88k-harris basic_os=sysv3 ;; hp300 | hp300hpux) basic_machine=m68k-hp basic_os=hpux ;; hp300bsd) basic_machine=m68k-hp basic_os=bsd ;; hppaosf) basic_machine=hppa1.1-hp basic_os=osf ;; hppro) basic_machine=hppa1.1-hp basic_os=proelf ;; i386mach) basic_machine=i386-mach basic_os=mach ;; isi68 | isi) basic_machine=m68k-isi basic_os=sysv ;; m68knommu) basic_machine=m68k-unknown basic_os=linux ;; magnum | m3230) basic_machine=mips-mips basic_os=sysv ;; merlin) basic_machine=ns32k-utek basic_os=sysv ;; mingw64) basic_machine=x86_64-pc basic_os=mingw64 ;; mingw32) basic_machine=i686-pc basic_os=mingw32 ;; mingw32ce) basic_machine=arm-unknown basic_os=mingw32ce ;; monitor) basic_machine=m68k-rom68k basic_os=coff ;; morphos) basic_machine=powerpc-unknown basic_os=morphos ;; moxiebox) basic_machine=moxie-unknown basic_os=moxiebox ;; msdos) basic_machine=i386-pc basic_os=msdos ;; msys) basic_machine=i686-pc basic_os=msys ;; mvs) basic_machine=i370-ibm basic_os=mvs ;; nacl) basic_machine=le32-unknown basic_os=nacl ;; ncr3000) basic_machine=i486-ncr basic_os=sysv4 ;; netbsd386) basic_machine=i386-pc basic_os=netbsd ;; netwinder) basic_machine=armv4l-rebel basic_os=linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony basic_os=newsos ;; news1000) basic_machine=m68030-sony basic_os=newsos ;; necv70) basic_machine=v70-nec basic_os=sysv ;; nh3000) basic_machine=m68k-harris basic_os=cxux ;; nh[45]000) basic_machine=m88k-harris basic_os=cxux ;; nindy960) basic_machine=i960-intel basic_os=nindy ;; mon960) basic_machine=i960-intel basic_os=mon960 ;; nonstopux) basic_machine=mips-compaq basic_os=nonstopux ;; os400) basic_machine=powerpc-ibm basic_os=os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson basic_os=ose ;; os68k) basic_machine=m68k-none basic_os=os68k ;; paragon) basic_machine=i860-intel basic_os=osf ;; parisc) basic_machine=hppa-unknown basic_os=linux ;; psp) basic_machine=mipsallegrexel-sony basic_os=psp ;; pw32) basic_machine=i586-unknown basic_os=pw32 ;; rdos | rdos64) basic_machine=x86_64-pc basic_os=rdos ;; rdos32) basic_machine=i386-pc basic_os=rdos ;; rom68k) basic_machine=m68k-rom68k basic_os=coff ;; sa29200) basic_machine=a29k-amd basic_os=udi ;; sei) basic_machine=mips-sei basic_os=seiux ;; sequent) basic_machine=i386-sequent basic_os= ;; sps7) basic_machine=m68k-bull basic_os=sysv2 ;; st2000) basic_machine=m68k-tandem basic_os= ;; stratus) basic_machine=i860-stratus basic_os=sysv4 ;; sun2) basic_machine=m68000-sun basic_os= ;; sun2os3) basic_machine=m68000-sun basic_os=sunos3 ;; sun2os4) basic_machine=m68000-sun basic_os=sunos4 ;; sun3) basic_machine=m68k-sun basic_os= ;; sun3os3) basic_machine=m68k-sun basic_os=sunos3 ;; sun3os4) basic_machine=m68k-sun basic_os=sunos4 ;; sun4) basic_machine=sparc-sun basic_os= ;; sun4os3) basic_machine=sparc-sun basic_os=sunos3 ;; sun4os4) basic_machine=sparc-sun basic_os=sunos4 ;; sun4sol2) basic_machine=sparc-sun basic_os=solaris2 ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun basic_os= ;; sv1) basic_machine=sv1-cray basic_os=unicos ;; symmetry) basic_machine=i386-sequent basic_os=dynix ;; t3e) basic_machine=alphaev5-cray basic_os=unicos ;; t90) basic_machine=t90-cray basic_os=unicos ;; toad1) basic_machine=pdp10-xkl basic_os=tops20 ;; tpf) basic_machine=s390x-ibm basic_os=tpf ;; udi29k) basic_machine=a29k-amd basic_os=udi ;; ultra3) basic_machine=a29k-nyu basic_os=sym1 ;; v810 | necv810) basic_machine=v810-nec basic_os=none ;; vaxv) basic_machine=vax-dec basic_os=sysv ;; vms) basic_machine=vax-dec basic_os=vms ;; vsta) basic_machine=i386-pc basic_os=vsta ;; vxworks960) basic_machine=i960-wrs basic_os=vxworks ;; vxworks68) basic_machine=m68k-wrs basic_os=vxworks ;; vxworks29k) basic_machine=a29k-wrs basic_os=vxworks ;; xbox) basic_machine=i686-pc basic_os=mingw32 ;; ymp) basic_machine=ymp-cray basic_os=unicos ;; *) basic_machine=$1 basic_os= ;; esac ;; esac # Decode 1-component or ad-hoc basic machines case $basic_machine in # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) cpu=hppa1.1 vendor=winbond ;; op50n) cpu=hppa1.1 vendor=oki ;; op60c) cpu=hppa1.1 vendor=oki ;; ibm*) cpu=i370 vendor=ibm ;; orion105) cpu=clipper vendor=highlevel ;; mac | mpw | mac-mpw) cpu=m68k vendor=apple ;; pmac | pmac-mpw) cpu=powerpc vendor=apple ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) cpu=m68000 vendor=att ;; 3b*) cpu=we32k vendor=att ;; bluegene*) cpu=powerpc vendor=ibm basic_os=cnk ;; decsystem10* | dec10*) cpu=pdp10 vendor=dec basic_os=tops10 ;; decsystem20* | dec20*) cpu=pdp10 vendor=dec basic_os=tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) cpu=m68k vendor=motorola ;; dpx2*) cpu=m68k vendor=bull basic_os=sysv3 ;; encore | umax | mmax) cpu=ns32k vendor=encore ;; elxsi) cpu=elxsi vendor=elxsi basic_os=${basic_os:-bsd} ;; fx2800) cpu=i860 vendor=alliant ;; genix) cpu=ns32k vendor=ns ;; h3050r* | hiux*) cpu=hppa1.1 vendor=hitachi basic_os=hiuxwe2 ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) cpu=m68000 vendor=hp ;; hp9k3[2-9][0-9]) cpu=m68k vendor=hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) cpu=hppa1.1 vendor=hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; i*86v32) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv32 ;; i*86v4*) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv4 ;; i*86v) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv ;; i*86sol2) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=solaris2 ;; j90 | j90-cray) cpu=j90 vendor=cray basic_os=${basic_os:-unicos} ;; iris | iris4d) cpu=mips vendor=sgi case $basic_os in irix*) ;; *) basic_os=irix4 ;; esac ;; miniframe) cpu=m68000 vendor=convergent ;; *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) cpu=m68k vendor=atari basic_os=mint ;; news-3600 | risc-news) cpu=mips vendor=sony basic_os=newsos ;; next | m*-next) cpu=m68k vendor=next case $basic_os in openstep*) ;; nextstep*) ;; ns2*) basic_os=nextstep2 ;; *) basic_os=nextstep3 ;; esac ;; np1) cpu=np1 vendor=gould ;; op50n-* | op60c-*) cpu=hppa1.1 vendor=oki basic_os=proelf ;; pa-hitachi) cpu=hppa1.1 vendor=hitachi basic_os=hiuxwe2 ;; pbd) cpu=sparc vendor=tti ;; pbb) cpu=m68k vendor=tti ;; pc532) cpu=ns32k vendor=pc532 ;; pn) cpu=pn vendor=gould ;; power) cpu=power vendor=ibm ;; ps2) cpu=i386 vendor=ibm ;; rm[46]00) cpu=mips vendor=siemens ;; rtpc | rtpc-*) cpu=romp vendor=ibm ;; sde) cpu=mipsisa32 vendor=sde basic_os=${basic_os:-elf} ;; simso-wrs) cpu=sparclite vendor=wrs basic_os=vxworks ;; tower | tower-32) cpu=m68k vendor=ncr ;; vpp*|vx|vx-*) cpu=f301 vendor=fujitsu ;; w65) cpu=w65 vendor=wdc ;; w89k-*) cpu=hppa1.1 vendor=winbond basic_os=proelf ;; none) cpu=none vendor=none ;; leon|leon[3-9]) cpu=sparc vendor=$basic_machine ;; leon-*|leon[3-9]-*) cpu=sparc vendor=`echo "$basic_machine" | sed 's/-.*//'` ;; *-*) # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read cpu vendor <&2 exit 1 ;; esac ;; esac # Here we canonicalize certain aliases for manufacturers. case $vendor in digital*) vendor=dec ;; commodore*) vendor=cbm ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if test x$basic_os != x then # First recognize some ad-hoc cases, or perhaps split kernel-os, or else just # set os. case $basic_os in gnu/linux*) kernel=linux os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` ;; os2-emx) kernel=os2 os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` ;; nto-qnx*) kernel=nto os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` ;; *-*) # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read kernel os <&2 exit 1 ;; esac # As a final step for OS-related things, validate the OS-kernel combination # (given a valid OS), if there is a kernel. case $kernel-$os in linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ | linux-musl* | linux-relibc* | linux-uclibc* ) ;; uclinux-uclibc* ) ;; -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) # These are just libc implementations, not actual OSes, and thus # require a kernel. echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 exit 1 ;; kfreebsd*-gnu* | kopensolaris*-gnu*) ;; vxworks-simlinux | vxworks-simwindows | vxworks-spe) ;; nto-qnx*) ;; os2-emx) ;; *-eabi* | *-gnueabi*) ;; -*) # Blank kernel with real OS is always fine. ;; *-*) echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 exit 1 ;; esac # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. case $vendor in unknown) case $cpu-$os in *-riscix*) vendor=acorn ;; *-sunos*) vendor=sun ;; *-cnk* | *-aix*) vendor=ibm ;; *-beos*) vendor=be ;; *-hpux*) vendor=hp ;; *-mpeix*) vendor=hp ;; *-hiux*) vendor=hitachi ;; *-unos*) vendor=crds ;; *-dgux*) vendor=dg ;; *-luna*) vendor=omron ;; *-genix*) vendor=ns ;; *-clix*) vendor=intergraph ;; *-mvs* | *-opened*) vendor=ibm ;; *-os400*) vendor=ibm ;; s390-* | s390x-*) vendor=ibm ;; *-ptx*) vendor=sequent ;; *-tpf*) vendor=ibm ;; *-vxsim* | *-vxworks* | *-windiss*) vendor=wrs ;; *-aux*) vendor=apple ;; *-hms*) vendor=hitachi ;; *-mpw* | *-macos*) vendor=apple ;; *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) vendor=atari ;; *-vos*) vendor=stratus ;; esac ;; esac echo "$cpu-$vendor-${kernel:+$kernel-}$os" exit # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: pam_pkcs11-0.6.12/src/0000755000175000017500000000000014367517111011335 500000000000000pam_pkcs11-0.6.12/src/tools/0000755000175000017500000000000014367517111012475 500000000000000pam_pkcs11-0.6.12/src/tools/Makefile.in0000644000175000017500000006420514367517060014474 00000000000000# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Process this file with automake to create Makefile.in VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @HAVE_PCSC_FALSE@bin_PROGRAMS = pkcs11_eventmgr$(EXEEXT) \ @HAVE_PCSC_FALSE@ pklogin_finder$(EXEEXT) \ @HAVE_PCSC_FALSE@ pkcs11_inspect$(EXEEXT) \ @HAVE_PCSC_FALSE@ pkcs11_listcerts$(EXEEXT) \ @HAVE_PCSC_FALSE@ pkcs11_setup$(EXEEXT) @HAVE_PCSC_TRUE@bin_PROGRAMS = card_eventmgr$(EXEEXT) \ @HAVE_PCSC_TRUE@ pkcs11_eventmgr$(EXEEXT) \ @HAVE_PCSC_TRUE@ pklogin_finder$(EXEEXT) \ @HAVE_PCSC_TRUE@ pkcs11_inspect$(EXEEXT) \ @HAVE_PCSC_TRUE@ pkcs11_listcerts$(EXEEXT) \ @HAVE_PCSC_TRUE@ pkcs11_setup$(EXEEXT) subdir = src/tools ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/aclocal/ax_pthread.m4 \ $(top_srcdir)/aclocal/gettext.m4 \ $(top_srcdir)/aclocal/iconv.m4 \ $(top_srcdir)/aclocal/intlmacosx.m4 \ $(top_srcdir)/aclocal/lib-ld.m4 \ $(top_srcdir)/aclocal/lib-link.m4 \ $(top_srcdir)/aclocal/lib-prefix.m4 \ $(top_srcdir)/aclocal/libtool.m4 \ $(top_srcdir)/aclocal/ltoptions.m4 \ $(top_srcdir)/aclocal/ltsugar.m4 \ $(top_srcdir)/aclocal/ltversion.m4 \ $(top_srcdir)/aclocal/lt~obsolete.m4 \ $(top_srcdir)/aclocal/nls.m4 $(top_srcdir)/aclocal/po.m4 \ $(top_srcdir)/aclocal/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am__card_eventmgr_SOURCES_DIST = card_eventmgr.c daemon.c @HAVE_PCSC_TRUE@am_card_eventmgr_OBJECTS = card_eventmgr.$(OBJEXT) \ @HAVE_PCSC_TRUE@ daemon.$(OBJEXT) card_eventmgr_OBJECTS = $(am_card_eventmgr_OBJECTS) @HAVE_PCSC_TRUE@card_eventmgr_DEPENDENCIES = ../scconf/libscconf.la \ @HAVE_PCSC_TRUE@ ../common/libcommon.la AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = am_pkcs11_eventmgr_OBJECTS = pkcs11_eventmgr.$(OBJEXT) \ daemon.$(OBJEXT) pkcs11_eventmgr_OBJECTS = $(am_pkcs11_eventmgr_OBJECTS) am__DEPENDENCIES_1 = pkcs11_eventmgr_DEPENDENCIES = ../scconf/libscconf.la \ ../common/libcommon.la $(am__DEPENDENCIES_1) am_pkcs11_inspect_OBJECTS = pkcs11_inspect.$(OBJEXT) pkcs11_inspect_OBJECTS = $(am_pkcs11_inspect_OBJECTS) pkcs11_inspect_DEPENDENCIES = ../pam_pkcs11/libfinder.la \ ../mappers/libmappers.la am_pkcs11_listcerts_OBJECTS = pkcs11_listcerts.$(OBJEXT) pkcs11_listcerts_OBJECTS = $(am_pkcs11_listcerts_OBJECTS) pkcs11_listcerts_DEPENDENCIES = ../pam_pkcs11/libfinder.la \ ../scconf/libscconf.la ../common/libcommon.la \ $(am__DEPENDENCIES_1) am_pkcs11_setup_OBJECTS = pkcs11_setup.$(OBJEXT) pkcs11_setup_OBJECTS = $(am_pkcs11_setup_OBJECTS) pkcs11_setup_DEPENDENCIES = ../scconf/libscconf.la \ ../common/libcommon.la am_pklogin_finder_OBJECTS = pklogin_finder.$(OBJEXT) pklogin_finder_OBJECTS = $(am_pklogin_finder_OBJECTS) pklogin_finder_DEPENDENCIES = ../pam_pkcs11/libfinder.la \ ../mappers/libmappers.la AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/card_eventmgr.Po \ ./$(DEPDIR)/daemon.Po ./$(DEPDIR)/pkcs11_eventmgr.Po \ ./$(DEPDIR)/pkcs11_inspect.Po ./$(DEPDIR)/pkcs11_listcerts.Po \ ./$(DEPDIR)/pkcs11_setup.Po ./$(DEPDIR)/pklogin_finder.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(card_eventmgr_SOURCES) $(pkcs11_eventmgr_SOURCES) \ $(pkcs11_inspect_SOURCES) $(pkcs11_listcerts_SOURCES) \ $(pkcs11_setup_SOURCES) $(pklogin_finder_SOURCES) DIST_SOURCES = $(am__card_eventmgr_SOURCES_DIST) \ $(pkcs11_eventmgr_SOURCES) $(pkcs11_inspect_SOURCES) \ $(pkcs11_listcerts_SOURCES) $(pkcs11_setup_SOURCES) \ $(pklogin_finder_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CRYPTO_CFLAGS = @CRYPTO_CFLAGS@ CRYPTO_LIBS = @CRYPTO_LIBS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ CURL_CFLAGS = @CURL_CFLAGS@ CURL_LIBS = @CURL_LIBS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDAP_CFLAGS = @LDAP_CFLAGS@ LDAP_LIBS = @LDAP_LIBS@ LDFLAGS = @LDFLAGS@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ LIBDL = @LIBDL@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ NSS_CFLAGS = @NSS_CFLAGS@ NSS_LIBS = @NSS_LIBS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENSSL_CFLAGS = @OPENSSL_CFLAGS@ OPENSSL_LIBS = @OPENSSL_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PCSC_CFLAGS = @PCSC_CFLAGS@ PCSC_LIBS = @PCSC_LIBS@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XSLTPROC = @XSLTPROC@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ confdir = @confdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ MAINTAINERCLEANFILES = Makefile.in AM_CFLAGS = $(PCSC_CFLAGS) $(CRYPTO_CFLAGS) AM_LDFLAGS = $(PCSC_LIBS) @HAVE_PCSC_TRUE@card_eventmgr_SOURCES = card_eventmgr.c daemon.c @HAVE_PCSC_TRUE@card_eventmgr_LDADD = ../scconf/libscconf.la ../common/libcommon.la pklogin_finder_SOURCES = pklogin_finder.c pklogin_finder_LDADD = ../pam_pkcs11/libfinder.la ../mappers/libmappers.la pkcs11_listcerts_SOURCES = pkcs11_listcerts.c pkcs11_listcerts_LDADD = ../pam_pkcs11/libfinder.la ../scconf/libscconf.la ../common/libcommon.la $(OPENSSL_LIBS) pkcs11_eventmgr_SOURCES = pkcs11_eventmgr.c daemon.c pkcs11_eventmgr_LDADD = ../scconf/libscconf.la ../common/libcommon.la $(CRYPTO_LIBS) pkcs11_inspect_SOURCES = pkcs11_inspect.c pkcs11_inspect_LDADD = ../pam_pkcs11/libfinder.la ../mappers/libmappers.la pkcs11_setup_SOURCES = pkcs11_setup.c pkcs11_setup_LDADD = ../scconf/libscconf.la ../common/libcommon.la all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/tools/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign src/tools/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list card_eventmgr$(EXEEXT): $(card_eventmgr_OBJECTS) $(card_eventmgr_DEPENDENCIES) $(EXTRA_card_eventmgr_DEPENDENCIES) @rm -f card_eventmgr$(EXEEXT) $(AM_V_CCLD)$(LINK) $(card_eventmgr_OBJECTS) $(card_eventmgr_LDADD) $(LIBS) pkcs11_eventmgr$(EXEEXT): $(pkcs11_eventmgr_OBJECTS) $(pkcs11_eventmgr_DEPENDENCIES) $(EXTRA_pkcs11_eventmgr_DEPENDENCIES) @rm -f pkcs11_eventmgr$(EXEEXT) $(AM_V_CCLD)$(LINK) $(pkcs11_eventmgr_OBJECTS) $(pkcs11_eventmgr_LDADD) $(LIBS) pkcs11_inspect$(EXEEXT): $(pkcs11_inspect_OBJECTS) $(pkcs11_inspect_DEPENDENCIES) $(EXTRA_pkcs11_inspect_DEPENDENCIES) @rm -f pkcs11_inspect$(EXEEXT) $(AM_V_CCLD)$(LINK) $(pkcs11_inspect_OBJECTS) $(pkcs11_inspect_LDADD) $(LIBS) pkcs11_listcerts$(EXEEXT): $(pkcs11_listcerts_OBJECTS) $(pkcs11_listcerts_DEPENDENCIES) $(EXTRA_pkcs11_listcerts_DEPENDENCIES) @rm -f pkcs11_listcerts$(EXEEXT) $(AM_V_CCLD)$(LINK) $(pkcs11_listcerts_OBJECTS) $(pkcs11_listcerts_LDADD) $(LIBS) pkcs11_setup$(EXEEXT): $(pkcs11_setup_OBJECTS) $(pkcs11_setup_DEPENDENCIES) $(EXTRA_pkcs11_setup_DEPENDENCIES) @rm -f pkcs11_setup$(EXEEXT) $(AM_V_CCLD)$(LINK) $(pkcs11_setup_OBJECTS) $(pkcs11_setup_LDADD) $(LIBS) pklogin_finder$(EXEEXT): $(pklogin_finder_OBJECTS) $(pklogin_finder_DEPENDENCIES) $(EXTRA_pklogin_finder_DEPENDENCIES) @rm -f pklogin_finder$(EXEEXT) $(AM_V_CCLD)$(LINK) $(pklogin_finder_OBJECTS) $(pklogin_finder_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/card_eventmgr.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/daemon.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkcs11_eventmgr.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkcs11_inspect.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkcs11_listcerts.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkcs11_setup.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pklogin_finder.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/card_eventmgr.Po -rm -f ./$(DEPDIR)/daemon.Po -rm -f ./$(DEPDIR)/pkcs11_eventmgr.Po -rm -f ./$(DEPDIR)/pkcs11_inspect.Po -rm -f ./$(DEPDIR)/pkcs11_listcerts.Po -rm -f ./$(DEPDIR)/pkcs11_setup.Po -rm -f ./$(DEPDIR)/pklogin_finder.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/card_eventmgr.Po -rm -f ./$(DEPDIR)/daemon.Po -rm -f ./$(DEPDIR)/pkcs11_eventmgr.Po -rm -f ./$(DEPDIR)/pkcs11_inspect.Po -rm -f ./$(DEPDIR)/pkcs11_listcerts.Po -rm -f ./$(DEPDIR)/pkcs11_setup.Po -rm -f ./$(DEPDIR)/pklogin_finder.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-binPROGRAMS .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: pam_pkcs11-0.6.12/src/tools/pkcs11_setup.c0000644000175000017500000003115713553631304015107 00000000000000/* * PKCS#11 Card viewer tool * Copyright (C) 2006 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * */ #define _GNU_SOURCE #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include "../scconf/scconf.h" #include "../common/debug.h" #include "../common/error.h" #include "../common/strndup.h" #define PAM_PKCS11_CONF CONFDIR "/pam_pkcs11.conf" #define EVENTMGR_CONF CONFDIR "/pkcs11_eventmgr.conf" static const char Ins_action[] = "ins_action="; static const char Rm_action[] = "rm_action="; static const char Use_module[] = "use_module="; static const char List_modules[] = "list_modules"; enum params { INS_ACTION, RM_ACTION, USE_MODULE, LIST_MODULES }; static const char *param_names[] = { Ins_action, Rm_action, Use_module, List_modules }; static int pn_sizes[] = { sizeof(Ins_action), sizeof(Rm_action), sizeof(Use_module), sizeof(List_modules) }; #define NUM_PARAMS (sizeof(param_names)/sizeof(param_names[0])) static const char *scconf_replace_str(scconf_block * block, const char *option, const char *value) { scconf_list *list = NULL; scconf_item *item; scconf_list_add(&list, value); item = scconf_item_add(NULL, block, NULL, SCCONF_ITEM_TYPE_VALUE, option, list); /* now clear out the item list */ scconf_list_destroy(item->value.list); item->value.list = list; /* adopt */ return value; } static int scconf_replace_str_list(scconf_block * block, const char *option, const char *value) { scconf_list *list = NULL; scconf_item *item; char *lstitem = NULL; char *next; while (value != NULL) { if ((next=strchr(value, ',')) != NULL) { lstitem = strndup(value, next-value); next++; } else { lstitem = strdup(value); } if (lstitem == NULL) return 1; scconf_list_add(&list, lstitem); value = next; free(lstitem); } item = scconf_item_add(NULL, block, NULL, SCCONF_ITEM_TYPE_VALUE, option, list); /* now clear out the item list */ scconf_list_destroy(item->value.list); item->value.list = list; /* adopt */ return 0; } static int list_modules(void) { const scconf_block *pam_pkcs11; scconf_block **pkcs11_blocks; scconf_context *ctx = NULL; int i; int result = 1; /* * loop through looking for smart card entries */ ctx = scconf_new(PAM_PKCS11_CONF); if (ctx == NULL) { goto bail; } if (scconf_parse(ctx) <= 0 ) { goto bail; } pam_pkcs11 = scconf_find_block(ctx, NULL, "pam_pkcs11"); if (!pam_pkcs11) { goto bail; } pkcs11_blocks = scconf_find_blocks(ctx, pam_pkcs11, "pkcs11_module", NULL); if (!pkcs11_blocks) { goto bail; } /* list only those smart cards which are actually installed */ for (i=0; pkcs11_blocks[i]; i++) { void *libhandle; const char *path = scconf_get_str(pkcs11_blocks[i], "module", NULL); /* check to see if the module exists on the system */ if (!path || *path == 0) { continue; } /* verify the module exists */ if ((libhandle=dlopen(path, RTLD_LAZY)) != NULL) { dlclose(libhandle); if (pkcs11_blocks[i] && pkcs11_blocks[i]->name && pkcs11_blocks[i]->name->data) { printf("%s\n", pkcs11_blocks[i]->name->data); } } } result = 0; bail: if (ctx) { scconf_free(ctx); } return result; } static int print_default_module(void) { const scconf_block *pam_pkcs11; scconf_context *ctx = NULL; int result = 1; /* * read the base pam_pkcs11.conf */ ctx = scconf_new(PAM_PKCS11_CONF); if (ctx == NULL) { goto bail; } if (scconf_parse(ctx) <= 0) { goto bail; } pam_pkcs11 = scconf_find_block(ctx, NULL, "pam_pkcs11"); if (!pam_pkcs11) { goto bail; } printf("%s\n", scconf_get_str(pam_pkcs11, "use_pkcs11_module", "")); result = 0; bail: if (ctx) { scconf_free(ctx); } ctx = NULL; return result; } static int set_default_module(const char *mod) { scconf_block *pam_pkcs11, *pkcs11_eventmgr; scconf_block **modules = NULL; scconf_context *ctx = NULL; scconf_context *ectx = NULL; const char *lib = NULL; int result = 1; /* * write out pam_pkcs11.conf */ ctx = scconf_new(PAM_PKCS11_CONF); if (ctx == NULL) { goto bail; } if (scconf_parse(ctx) <= 0) { goto bail; } pam_pkcs11 = (scconf_block *)scconf_find_block(ctx, NULL, "pam_pkcs11"); if (!pam_pkcs11) { goto bail; } scconf_replace_str(pam_pkcs11, "use_pkcs11_module", mod); modules = scconf_find_blocks(ctx, pam_pkcs11, "pkcs11_module", mod); if (!modules || !modules[0]) { goto bail; } lib = scconf_get_str(modules[0], "module", NULL); if (!lib) { goto bail; } result = scconf_write(ctx, NULL); if (result != 0) { goto bail; } ectx = scconf_new(EVENTMGR_CONF); if (ectx == NULL) { goto bail; } if (scconf_parse(ectx) <= 0) { goto bail; } pkcs11_eventmgr = (scconf_block *) scconf_find_block(ectx, NULL, "pkcs11_eventmgr"); if (!pkcs11_eventmgr) { goto bail; } scconf_replace_str(pkcs11_eventmgr, "pkcs11_module", lib); result = scconf_write(ectx, NULL); bail: if (modules) { free(modules); } if (ctx) { scconf_free(ctx); } if (ectx) { scconf_free(ectx); } return result; } static int print_card_insert_action(void) { const scconf_block *pkcs11_eventmgr; scconf_block **event_blocks = NULL; scconf_context *ctx = NULL; const scconf_list *actionList = NULL; int result = 1; /* * read the pkcs11_eventmgr.conf to get our action */ ctx = scconf_new(EVENTMGR_CONF); if (ctx == NULL) { goto bail; } if (scconf_parse(ctx) <= 0) { goto bail; } pkcs11_eventmgr = scconf_find_block(ctx, NULL, "pkcs11_eventmgr"); if (!pkcs11_eventmgr) { goto bail; } event_blocks = scconf_find_blocks(ctx, pkcs11_eventmgr, "event", "card_insert"); if (!event_blocks || !event_blocks[0]) { goto bail; } actionList = scconf_find_list(event_blocks[0],"action"); if (actionList) { char *lst = scconf_list_strdup(actionList, "\n"); if (lst != NULL) { printf("%s\n", lst); free(lst); } } result = 0; bail: if (event_blocks) { free(event_blocks); } if (ctx) { scconf_free(ctx); } return result; } static int set_card_insert_action(const char *act) { scconf_block *pkcs11_eventmgr; scconf_block **insert_blocks = NULL; scconf_context *ctx = NULL; int result = 1; /* * write out pkcs11_eventmgr.conf */ ctx = scconf_new(EVENTMGR_CONF); if (ctx == NULL) { goto bail; } if (scconf_parse(ctx) <= 0) { goto bail; } pkcs11_eventmgr = (scconf_block *) scconf_find_block(ctx, NULL, "pkcs11_eventmgr"); if (!pkcs11_eventmgr) { goto bail; } insert_blocks = scconf_find_blocks(ctx, pkcs11_eventmgr, "event", "card_insert"); if (!insert_blocks || !insert_blocks[0]) { goto bail; } scconf_replace_str_list(insert_blocks[0], "action", act); result = scconf_write(ctx, NULL); bail: if (insert_blocks) { free(insert_blocks); } if (ctx) { scconf_free(ctx); } return result; } static int print_card_remove_action(void) { const scconf_block *pkcs11_eventmgr; scconf_block **event_blocks = NULL; scconf_context *ctx = NULL; const scconf_list *actionList = NULL; int result = 1; /* * read the pkcs11_eventmgr.conf to get our action */ ctx = scconf_new(EVENTMGR_CONF); if (ctx == NULL) { goto bail; } if (scconf_parse(ctx) <= 0) { goto bail; } pkcs11_eventmgr = scconf_find_block(ctx, NULL, "pkcs11_eventmgr"); if (!pkcs11_eventmgr) { goto bail; } event_blocks = scconf_find_blocks(ctx, pkcs11_eventmgr, "event", "card_remove"); if (!event_blocks || !event_blocks[0]) { goto bail; } actionList = scconf_find_list(event_blocks[0],"action"); if (actionList) { char *lst = scconf_list_strdup(actionList, "\n"); if (lst != NULL) { printf("%s\n", lst); free(lst); } } result = 0; bail: if (event_blocks) { free(event_blocks); } if (ctx) { scconf_free(ctx); } return result; } static int set_card_remove_action(const char *act) { scconf_block *pkcs11_eventmgr; scconf_block **insert_blocks = NULL; scconf_context *ctx = NULL; int result = 1; /* * write out pkcs11_eventmgr.conf */ ctx = scconf_new(EVENTMGR_CONF); if (ctx == NULL) { goto bail; } if (scconf_parse(ctx) <= 0) { goto bail; } pkcs11_eventmgr = (scconf_block *) scconf_find_block(ctx, NULL, "pkcs11_eventmgr"); if (!pkcs11_eventmgr) { goto bail; } insert_blocks = scconf_find_blocks(ctx, pkcs11_eventmgr, "event", "card_remove"); if (!insert_blocks || !insert_blocks[0]) { goto bail; } scconf_replace_str_list(insert_blocks[0], "action", act); result = scconf_write(ctx, NULL); bail: if (insert_blocks) { free(insert_blocks); } if (ctx) { scconf_free(ctx); } return result; } int main(int argc, const char **argv) { int i; unsigned int pname; const char *params[NUM_PARAMS]; memset(params, '\0', sizeof(params)); /* first of all check whether debugging should be enabled */ for (i = 0; i < argc; i++) if (strcmp("debug", argv[i]) == 0) { set_debug_level(1); } for (i = 1; i < argc; i++) { for (pname = 0; pname < NUM_PARAMS; pname++) { if (param_names[pname][pn_sizes[pname]-2] == '=') { if (strncmp(argv[i], param_names[pname], pn_sizes[pname]-1) == 0) { params[pname] = argv[i] + pn_sizes[pname] - 1; } else if (strncmp(argv[i], param_names[pname], pn_sizes[pname]-2) == 0 && argv[i][pn_sizes[pname]-2] == '\0') { params[pname] = (void *)1; } } else { if (strcmp(argv[i], param_names[pname]) == 0) { params[pname] = (void *)1; } } } } for (pname = 0; pname < NUM_PARAMS; pname++) { if (params[pname] != NULL) break; } if (pname == NUM_PARAMS) { DBG("No correct parameter specified"); printf("usage: pkcs11_setup [list_modules] [use_module[=]]\n" " [ins_action[=]]\n" " [rm_action[=]]\n"); } if (params[LIST_MODULES] != NULL) { DBG("List modules:"); return list_modules(); } else { if (params[USE_MODULE] == (void *)1) { DBG("Print default module:"); if ((i=print_default_module()) != 0) { ERR1("Print default module failed with: %d", i); return i; } return 0; } else if (params[USE_MODULE] != NULL) { DBG1("Set default module: %s", params[USE_MODULE]); if ((i=set_default_module(params[USE_MODULE])) != 0) { ERR1("Set default module failed with: %d", i); return i; } } if (params[INS_ACTION] == (void *)1) { DBG("Print card insert action:"); if ((i=print_card_insert_action()) != 0) { ERR1("Print card insert action failed with: %d", i); return i; } return 0; } else if (params[INS_ACTION] != NULL) { DBG1("Set card insert action: %s", params[INS_ACTION]); if ((i=set_card_insert_action(params[INS_ACTION])) != 0) { ERR1("Set card insert action failed with: %d", i); return i; } } if (params[RM_ACTION] == (void *)1) { DBG("Print card remove action:"); if ((i=print_card_remove_action()) != 0) { ERR1("Set card remove action failed with: %d", i); return i; } return 0; } else if (params[RM_ACTION] != NULL) { DBG1("Set card remove action: %s", params[RM_ACTION]); if ((i=set_card_remove_action(params[RM_ACTION])) != 0) { ERR1("Set card remove action failed with: %d", i); return i; } } } DBG("Process completed"); return 0; } pam_pkcs11-0.6.12/src/tools/Makefile.am0000644000175000017500000000216713553631304014454 00000000000000# Process this file with automake to create Makefile.in MAINTAINERCLEANFILES = Makefile.in AM_CFLAGS = $(PCSC_CFLAGS) $(CRYPTO_CFLAGS) AM_LDFLAGS = $(PCSC_LIBS) if HAVE_PCSC bin_PROGRAMS = card_eventmgr pkcs11_eventmgr pklogin_finder pkcs11_inspect pkcs11_listcerts pkcs11_setup card_eventmgr_SOURCES = card_eventmgr.c daemon.c card_eventmgr_LDADD = ../scconf/libscconf.la ../common/libcommon.la else bin_PROGRAMS = pkcs11_eventmgr pklogin_finder pkcs11_inspect pkcs11_listcerts pkcs11_setup endif pklogin_finder_SOURCES = pklogin_finder.c pklogin_finder_LDADD = ../pam_pkcs11/libfinder.la ../mappers/libmappers.la pkcs11_listcerts_SOURCES = pkcs11_listcerts.c pkcs11_listcerts_LDADD = ../pam_pkcs11/libfinder.la ../scconf/libscconf.la ../common/libcommon.la $(OPENSSL_LIBS) pkcs11_eventmgr_SOURCES = pkcs11_eventmgr.c daemon.c pkcs11_eventmgr_LDADD = ../scconf/libscconf.la ../common/libcommon.la $(CRYPTO_LIBS) pkcs11_inspect_SOURCES = pkcs11_inspect.c pkcs11_inspect_LDADD = ../pam_pkcs11/libfinder.la ../mappers/libmappers.la pkcs11_setup_SOURCES = pkcs11_setup.c pkcs11_setup_LDADD = ../scconf/libscconf.la ../common/libcommon.la pam_pkcs11-0.6.12/src/tools/card_eventmgr.c0000644000175000017500000003565514367517037015426 00000000000000/* Generate events on card status change Copyrigt (C) 2005 Juan Antonio Martinez Based on pcsc_scan tool by Ludovic Rousseau This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* $Id$ */ #include #include #include #include #include #include #include #include #include #include #include #include #include "config.h" #include "../scconf/scconf.h" #include "../common/debug.h" #include "../common/error.h" #ifndef HAVE_DAEMON int daemon(int nochdir, int noclose); #endif #ifndef TRUE #define TRUE 1 #define FALSE 0 #endif #define DEF_TIMEOUT 1000 /* 1 second timeout */ #define DEF_CONFIG_FILE CONFDIR "/card_eventmgr.conf" #define ONERROR_IGNORE 0 #define ONERROR_RETURN 1 #define ONERROR_QUIT 2 int timeout; int timeout_count; int timeout_limit; int daemonize; int debug; const char *cfgfile; scconf_context *ctx = NULL; const scconf_block *root; SCARDCONTEXT hContext; char *pidfile = NULL; char AraKiri = FALSE; static void thats_all_folks(void) { int rv; DBG("Exitting"); /* We try to leave things as clean as possible */ rv = SCardReleaseContext(hContext); if (rv != SCARD_S_SUCCESS) { DBG1("SCardReleaseContext: %X", rv); } /* free configuration context */ if (ctx) scconf_free(ctx); } extern char **environ; static int my_system(char *command) { int pid, status; if (!command) return 1; pid = fork(); if (pid == -1) return -1; if (pid == 0) { char *argv[4]; argv[0] = "/bin/sh"; argv[1] = "-c"; argv[2] = command; argv[3] = 0; execve("/bin/sh", argv, environ); exit(127); } do { if (waitpid(pid, &status, 0) == -1) { if (errno != EINTR) return -1; } else return status; } while(1); } static int execute_event (const char *action) { int onerr; const char *onerrorstr; const scconf_list *actionlist; scconf_block **blocklist, *myblock; blocklist = scconf_find_blocks(ctx,root,"event",action); if (!blocklist) { DBG("Event block list not found"); return -1; } myblock=blocklist[0]; free(blocklist); blocklist = NULL; if (!myblock) { DBG1("Event item not found: '%s'",action); return -1; } onerrorstr = scconf_get_str(myblock,"on_error","ignore"); if(!strcmp(onerrorstr,"ignore")) onerr = ONERROR_IGNORE; else if(!strcmp(onerrorstr,"return")) onerr = ONERROR_RETURN; else if(!strcmp(onerrorstr,"quit")) onerr = ONERROR_QUIT; else { onerr = ONERROR_IGNORE; DBG1("Invalid onerror value: '%s'. Assumed 'ignore'",onerrorstr); } /* search actions */ actionlist = scconf_find_list(myblock,"action"); if (!actionlist) { DBG1("No action list for event '%s'",action); return 0; } DBG1("Onerror is set to: '%s'",onerrorstr); while (actionlist) { int res; char *action_cmd= actionlist->data; DBG1("Executiong action: '%s'",action_cmd); /* there are some security issues on using system() in setuid/setgid programs. so we will use an alternate function */ /* res=system(action_cmd); */ res = my_system(action_cmd); actionlist=actionlist->next; /* evaluate return and take care on "onerror" value */ DBG2("Action '%s' returns %d",action_cmd, res); if (!res) continue; switch(onerr) { case ONERROR_IGNORE: continue; case ONERROR_RETURN: return 0; case ONERROR_QUIT: thats_all_folks(); exit(0); default: DBG("Invalid onerror value"); return -1; } } return 0; } static int parse_config_file(void) { ctx = scconf_new(cfgfile); if (!ctx) { DBG("Error creating conf context"); return -1; } if ( scconf_parse(ctx) <= 0 ) { DBG2("Error parsing file '%s': %s",cfgfile, ctx->errmsg); return -1; } /* now parse options */ root = scconf_find_block(ctx, NULL, "card_eventmgr"); if (!root) { DBG1("card_eventmgr block not found in config: '%s'",cfgfile); return -1; } debug = scconf_get_bool(root,"debug",debug); daemonize = scconf_get_bool(root,"daemon",daemonize); timeout = scconf_get_int(root,"timeout",timeout); timeout_limit = scconf_get_int(root,"timeout_limit",0); if (debug) set_debug_level(1); return 0; } static int parse_args(int argc, char *argv[]) { int i; timeout = DEF_TIMEOUT; timeout_limit = 0; debug = 0; daemonize = 0; cfgfile = DEF_CONFIG_FILE; /* first of all check whether debugging should be enabled */ for (i = 0; i < argc; i++) { if (! strcmp("debug", argv[i])) set_debug_level(1); } /* try to find a configuration file entry */ for (i = 0; i < argc; i++) { if (strstr(argv[i],"config_file=") ) { cfgfile=1+strchr(argv[i],'='); break; } } /* parse configuration file */ if ( parse_config_file()<0) { fprintf(stderr,"Error parsing configuration file %s\n",cfgfile); exit(-1); } /* and now re-parse command line to take precedence over cfgfile */ for (i = 1; i < argc; i++) { if (strcmp("daemon", argv[i]) == 0) { daemonize=1; continue; } if (strcmp("nodaemon", argv[i]) == 0) { daemonize=0; continue; } if (strcmp("kill", argv[i]) == 0) { AraKiri=TRUE; continue; } if (strstr(argv[i],"timeout=") ) { sscanf(argv[i],"timeout=%d",&timeout); continue; } if (strstr(argv[i],"timeout_limit=") ) { sscanf(argv[i],"timeout_limit=%d",&timeout_limit); continue; } if (strstr(argv[i],"pidfile=") ) { pidfile = strchr(argv[i],'=') +1; continue; } if (strstr(argv[i],"debug") ) { continue; /* already parsed: skip */ } if (strstr(argv[i],"nodebug") ) { continue; /* already parsed: skip */ } if (strstr(argv[i],"config_file=") ) { continue; /* already parsed: skip */ } fprintf(stderr,"unknown option %s\n",argv[i]); /* arriving here means syntax error */ fprintf(stderr,"Usage %s [[no]debug] [[no]daemon] [timeout=] [timeout_limit=] [config_file=] [kill] [pidfile=]\n",argv[0]); fprintf(stderr,"Defaults: debug=0 daemon=0 timeout=%d (ms) timeout_limit=0 (none) config_file=%s\n",DEF_TIMEOUT,DEF_CONFIG_FILE ); exit(1); } /* for */ /* end of config: return */ return 0; } static pid_t read_pidfile(char *filename) { FILE *fd; pid_t pid; long temp = 0; fd = fopen(filename, "r"); if (NULL == fd) { DBG2("Can't read pidfile %s: %s", filename, strerror(errno)); return 0; } if (fscanf(fd, "%ld", &temp) != 1) DBG2("Can't parse pidfile %s: %s", filename, strerror(errno)); pid = temp; fclose(fd); return pid; } static void remove_pidfile(char *filename) { if (unlink(filename)) DBG2("Can't unlink pidfile %s: %s", filename, strerror(errno)); } static void create_pidfile(char *filename) { int fd; char tmp[20]; fd = open(filename, O_WRONLY | O_CREAT | O_EXCL, 0644); if (fd < 0) { DBG2("Can't create pidfile %s: %s", filename, strerror(errno)); return; } snprintf(tmp, sizeof(tmp)-1, "%d\n", getpid()); tmp[sizeof(tmp)-1] = '\0'; if (write(fd, tmp, strlen(tmp)) != strlen(tmp)) DBG2("Can't write pidfile %s: %s", filename, strerror(errno)); close(fd); } static void signal_trap(int sig) { (void)sig; if (FALSE == AraKiri) { DBG("Preparing to suicide"); AraKiri = TRUE; } } int main(int argc, char *argv[]) { int current_reader; LONG rv; SCARD_READERSTATE *rgReaderStates_t = NULL; DWORD dwReaders, dwReadersOld; LPSTR mszReaders = NULL; char *ptr, **readers = NULL; int nbReaders, i; int first_loop = TRUE; parse_args(argc,argv); /* AraKiri is set if kill argument is passed */ if (AraKiri) { /* we are asked to kill the previous pkcs11_eventmgr */ if (pidfile) { pid_t pid = read_pidfile(pidfile); if (pid > 0) { DBG1("Killing process: %ld", (long)pid); kill(pid, SIGQUIT); } else DBG("Invalid pid"); } else DBG("You need to specify a pidfile"); return 0; } /* put my self into background if flag is set */ if (daemonize) { DBG("Going to be daemon..."); if ( daemon(0,debug)<0 ) { DBG1("Error in daemon() call: %s", strerror(errno)); goto end; } } /* establish pc/sc handle _after_ possible fork */ rv = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &hContext); if (rv != SCARD_S_SUCCESS) { DBG1("SCardEstablishContext: Cannot Connect to Resource Manager %lX", rv); if (ctx) scconf_free(ctx); return 1; } signal(SIGINT, signal_trap); signal(SIGQUIT, signal_trap); signal(SIGTERM, signal_trap); if (pidfile) create_pidfile(pidfile); get_readers: /* free memory possibly allocated in a previous loop */ /* free() already check if pt is null, so no check needed */ free(readers); readers = NULL; free(rgReaderStates_t); rgReaderStates_t = NULL; /* Retrieve the available readers list. * * 1. Call with a null buffer to get the number of bytes to allocate * 2. malloc the necessary storage * 3. call with the real allocated buffer */ DBG("Scanning present readers"); rv = SCardListReaders(hContext, NULL, NULL, &dwReaders); if (rv != SCARD_S_SUCCESS) { DBG1("SCardListReader: %lX", rv); } dwReadersOld = dwReaders; /* if non NULL we came back so free first */ free(mszReaders); mszReaders = NULL; mszReaders = malloc(sizeof(char)*dwReaders); if (mszReaders == NULL) { DBG("malloc: not enough memory"); goto end; } rv = SCardListReaders(hContext, NULL, mszReaders, &dwReaders); if (rv != SCARD_S_SUCCESS) { DBG1("SCardListReader: %lX", rv); } /* Extract readers from the null separated string and get the total * number of readers */ nbReaders = 0; ptr = mszReaders; while (*ptr != '\0') { ptr += strlen(ptr)+1; nbReaders++; } if (nbReaders == 0) { /* exit if no reader is present at startup */ if (first_loop) { printf("%s: No reader present, exiting\n", argv[0]); goto end; } DBG("Waiting for the first reader..."); while ((SCardListReaders(hContext, NULL, NULL, &dwReaders) == SCARD_S_SUCCESS) && (dwReaders == dwReadersOld)) sleep(1); DBG("found one"); goto get_readers; } /* allocate the readers table */ readers = calloc(nbReaders, sizeof(char *)); if (! readers) { DBG("Not enough memory for readers table"); goto end; } /* fill the readers table */ nbReaders = 0; ptr = mszReaders; while (*ptr != '\0') { DBG2("%d: %s", nbReaders, ptr); readers[nbReaders] = ptr; ptr += strlen(ptr)+1; nbReaders++; } /* allocate the ReaderStates table */ rgReaderStates_t = calloc(nbReaders, sizeof(* rgReaderStates_t)); if (! rgReaderStates_t) { DBG("Not enough memory for readers states"); goto end; } /* Set the initial states to something we do not know * The loop below will include this state to the dwCurrentState */ for (i=0; i * Based on a previous work of Mario Strasser , * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * $Id$ */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include "../scconf/scconf.h" #include "../common/debug.h" #include "../common/error.h" #include "../common/pkcs11_lib.h" #include "../common/cert_info.h" #include "../pam_pkcs11/pam_config.h" #include "../pam_pkcs11/mapper_mgr.h" int main(int argc, const char **argv) { int i, rv; int ncerts; unsigned int slot_num = 0; struct configuration_st *configuration; pkcs11_handle_t *ph; cert_object_t **certs; /* first of all check whether debugging should be enabled */ for (i = 0; i < argc; i++) if (strcmp("debug", argv[i]) == 0) { set_debug_level(1); } /* call configure routines */ configuration = pk_configure(argc - 1, argv + 1); if (!configuration ) { DBG("Error setting configuration parameters"); return 1; } if ((configuration->slot_description != NULL && configuration->slot_num != -1) || (configuration->slot_description == NULL && configuration->slot_num == -1)) { ERR("Error setting configuration parameters"); return 1; } /* init openssl */ rv = crypto_init(&configuration->policy); if (rv != 0) { DBG("Couldn't initialize crypto module "); return 1; } /* load pkcs #11 module */ DBG("loading pkcs #11 module..."); rv = load_pkcs11_module(configuration->pkcs11_modulepath, &ph); if (rv != 0) { DBG1("load_pkcs11_module() failed: %s", get_error()); return 1; } /* initialise pkcs #11 module */ DBG("initialising pkcs #11 module..."); rv = init_pkcs11_module(ph,configuration->support_threads); if (rv != 0) { release_pkcs11_module(ph); DBG1("init_pkcs11_module() failed: %s", get_error()); return 1; } /* open pkcs #11 session */ if (configuration->slot_description != NULL) { rv = find_slot_by_slotlabel(ph,configuration->slot_description, &slot_num); } else { rv = find_slot_by_number(ph,configuration->slot_num, &slot_num); } if (rv != 0) { release_pkcs11_module(ph); DBG("no token available"); return 1; } rv = open_pkcs11_session(ph, slot_num); if (rv != 0) { release_pkcs11_module(ph); DBG1("open_pkcs11_session() failed: %s", get_error()); return 1; } /* do login */ rv = pkcs11_pass_login(ph,configuration->nullok); if (rv<0){ DBG1("Login failed: %s",get_error()); return 4; } /* get certificate list */ certs = get_certificate_list(ph, &ncerts); if (certs == NULL) { close_pkcs11_session(ph); release_pkcs11_module(ph); DBG1("get_certificates() failed: %s", get_error()); return 3; } /* print some info on found certificates */ printf("Found '%d' certificate(s)\n", ncerts); for(i =0; i< ncerts;i++) { char **name; X509 *cert=get_X509_certificate(certs[i]); printf("Certificate #%d:\n", i+1); name = cert_info(cert, CERT_SUBJECT, ALGORITHM_NULL); printf("- Subject: %s\n", name[0]); free(name[0]); name = cert_info(cert, CERT_ISSUER, ALGORITHM_NULL); printf("- Issuer: %s\n", name[0]); free(name[0]); name = cert_info(cert, CERT_KEY_ALG, ALGORITHM_NULL); printf("- Algorithm: %s\n", name[0]); free(name[0]); rv = verify_certificate(cert,&configuration->policy); if (rv < 0) { printf("verify_certificate() process error: %s\n", get_error()); continue; /* try next certificate */ } else if (rv != 1) { printf("verify_certificate() failed: %s\n", get_error()); continue; /* try next certificate */ } rv = get_private_key(ph, certs[i]); if (rv<0) { printf("Certificate '%d'does not have associated private key\n",i+1); } } /* for */ /* close pkcs #11 session */ rv = close_pkcs11_session(ph); if (rv != 0) { release_pkcs11_module(ph); DBG1("close_pkcs11_session() failed: %s", get_error()); return 4; } /* release pkcs #11 module */ DBG("releasing pkcs #11 module..."); release_pkcs11_module(ph); DBG("Process completed"); return 0; } pam_pkcs11-0.6.12/src/tools/pkcs11_eventmgr.c0000644000175000017500000003757514367517037015622 00000000000000/* Generate events on card status change Copyrigt (C) 2005 Juan Antonio Martinez This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include "config.h" #include "../scconf/scconf.h" #include "../common/pkcs11_lib.h" #include "../common/debug.h" #include "../common/error.h" #ifdef HAVE_NSS #include #include #include #endif #ifndef HAVE_DAEMON int daemon(int nochdir, int noclose); #endif #define DEF_POLLING 1 /* 1 second timeout */ #define DEF_EXPIRE 0 /* no expire */ #define DEF_PKCS11_MODULE "/usr/lib/opensc-pkcs11.so" #define DEF_CONFIG_FILE CONFDIR "/pkcs11_eventmgr.conf" #define ONERROR_IGNORE 0 #define ONERROR_RETURN 1 #define ONERROR_QUIT 2 #define CARD_PRESENT 1 #define CARD_NOT_PRESENT 0 #define CARD_ERROR -1 int polling_time; int expire_time; int daemonize; int debug; const char *cfgfile; char *pkcs11_module = NULL; #ifdef HAVE_NSS char *nss_dir = NULL; #endif scconf_context *ctx; const scconf_block *root; #ifdef HAVE_NSS SECMODModule *module; #else #include "../common/rsaref/pkcs11.h" pkcs11_handle_t *ph; typedef struct slot_st slot_t; /* The direct calls should be abstracted, for now "expose" the pkcs11_handle_t */ struct pkcs11_handle_str { void *module_handle; CK_FUNCTION_LIST_PTR fl; int should_finalize; slot_t *slots; CK_ULONG slot_count; CK_SESSION_HANDLE session; cert_object_t *keys; int key_count; int current_slot; }; #endif static void thats_all_folks(void) { int rv; DBG("Exitting"); #ifdef HAVE_NSS if (module) { SECMOD_DestroyModule(module); } rv = NSS_Shutdown(); if (rv != SECSuccess) { DBG("NSS Shutdown failed"); return; } #else /* close pkcs #11 session */ rv = close_pkcs11_session(ph); if (rv != 0) { release_pkcs11_module(ph); DBG1("close_pkcs11_session() failed: %s", get_error()); return; } /* release pkcs #11 module */ DBG("releasing pkcs #11 module..."); release_pkcs11_module(ph); #endif return; } extern char **environ; static int my_system(char *command) { int pid, status; if (!command) return 1; pid = fork(); if (pid == -1) return -1; if (pid == 0) { char *argv[4]; argv[0] = "/bin/sh"; argv[1] = "-c"; argv[2] = command; argv[3] = 0; execve("/bin/sh", argv, environ); exit(127); } do { if (waitpid(pid, &status, 0) == -1) { if (errno != EINTR) return -1; } else return status; } while (1); } static int execute_event(const char *action) { int onerr; const char *onerrorstr; const scconf_list *actionlist; scconf_block **blocklist, *myblock; blocklist = scconf_find_blocks(ctx, root, "event", action); if (!blocklist) { DBG("Event block list not found"); return -1; } myblock = blocklist[0]; free(blocklist); if (!myblock) { DBG1("Event item not found: '%s'", action); return -1; } onerrorstr = scconf_get_str(myblock, "on_error", "ignore"); if (!strcmp(onerrorstr, "ignore")) onerr = ONERROR_IGNORE; else if (!strcmp(onerrorstr, "return")) onerr = ONERROR_RETURN; else if (!strcmp(onerrorstr, "quit")) onerr = ONERROR_QUIT; else { onerr = ONERROR_IGNORE; DBG1("Invalid onerror value: '%s'. Assumed 'ignore'", onerrorstr); } /* search actions */ actionlist = scconf_find_list(myblock, "action"); if (!actionlist) { DBG1("No action list for event '%s'", action); return 0; } DBG1("Onerror is set to: '%s'", onerrorstr); while (actionlist) { int res; char *action_cmd = actionlist->data; DBG1("Executiong action: '%s'", action_cmd); /* there are some security issues on using system() in setuid/setgid programs. so we will use an alternate function */ /* res=system(action_cmd); */ res = my_system(action_cmd); actionlist = actionlist->next; /* evaluate return and take care on "onerror" value */ DBG2("Action '%s' returns %d", action_cmd, res); if (!res) continue; switch (onerr) { case ONERROR_IGNORE: continue; case ONERROR_RETURN: return 0; case ONERROR_QUIT: thats_all_folks(); exit(0); default: DBG("Invalid onerror value"); return -1; } } return 0; } static int parse_config_file(void) { ctx = scconf_new(cfgfile); if (!ctx) { DBG("Error creating conf context"); return -1; } if (scconf_parse(ctx) <= 0) { DBG1("Error parsing file '%s'", cfgfile); return -1; } /* now parse options */ root = scconf_find_block(ctx, NULL, "pkcs11_eventmgr"); if (!root) { DBG1("pkcs11_eventmgr block not found in config: '%s'", cfgfile); return -1; } debug = scconf_get_bool(root, "debug", debug); daemonize = scconf_get_bool(root, "daemon", daemonize); polling_time = scconf_get_int(root, "polling_time", polling_time); expire_time = scconf_get_int(root, "expire_time", expire_time); pkcs11_module = (char *) scconf_get_str(root, "pkcs11_module", pkcs11_module); #ifdef HAVE_NSS nss_dir = (char *) scconf_get_str(root, "nss_dir", nss_dir); #endif if (debug) set_debug_level(1); return 0; } static int parse_args(int argc, char *argv[]) { int i; polling_time = DEF_POLLING; expire_time = DEF_EXPIRE; debug = 0; daemonize = 0; cfgfile = DEF_CONFIG_FILE; /* first of all check whether debugging should be enabled */ for (i = 0; i < argc; i++) { if (!strcmp("debug", argv[i])) set_debug_level(1); } /* try to find a configuration file entry */ for (i = 0; i < argc; i++) { if (strstr(argv[i], "config_file=")) { cfgfile = 1 + strchr(argv[i], '='); break; } } /* parse configuration file */ if (parse_config_file() < 0) { fprintf(stderr, "Error parsing configuration file %s\n", cfgfile); exit(-1); } /* and now re-parse command line to take precedence over cfgfile */ for (i = 1; i < argc; i++) { if (strcmp("daemon", argv[i]) == 0) { daemonize = 1; continue; } if (strcmp("nodaemon", argv[i]) == 0) { daemonize = 0; continue; } if (strstr(argv[i], "polling_time=")) { sscanf(argv[i], "polling_time=%d", &polling_time); continue; } if (strstr(argv[i], "expire_time=")) { sscanf(argv[i], "expire_time=%d", &expire_time); continue; } if (strstr(argv[i], "pkcs11_module=")) { pkcs11_module = 1 + strchr(argv[i], '='); continue; } #ifdef HAVE_NSS if (strstr(argv[i], "nss_dir=")) { nss_dir = 1 + strchr(argv[i], '='); continue; } #endif if (strstr(argv[i], "debug")) { continue; /* already parsed: skip */ } if (strstr(argv[i], "nodebug")) { set_debug_level(0); continue; /* already parsed: skip */ } if (strstr(argv[i], "config_file=")) { continue; /* already parsed: skip */ } fprintf(stderr, "unknown option %s\n", argv[i]); /* arriving here means syntax error */ fprintf(stderr, "PKCS#11 Event Manager\n\n"); fprintf(stderr, "Usage %s [[no]debug] [[no]daemon] [polling_time=