Changeset 70c2d86 in mod_gnutls for src


Ignore:
Timestamp:
Jan 11, 2013, 12:55:20 AM (9 years ago)
Author:
Daniel Kahn Gillmor <dkg@…>
Branches:
debian/master, debian/stretch-backports, jessie-backports, upstream
Children:
3f5c713, ec06980
Parents:
3e94bd3
Message:

Imported Upstream version 0.3.4

Location:
src
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • src/Makefile.am

    r3e94bd3 r70c2d86  
    11CLEANFILES = .libs/libmod_gnutls *~
    22
    3 libmod_gnutls_la_SOURCES = mod_gnutls.c gnutls_io.c gnutls_cache.c gnutls_config.c gnutls_hooks.c
    4 libmod_gnutls_la_CFLAGS = -Wall ${MODULE_CFLAGS}
    5 libmod_gnutls_la_LDFLAGS = -rpath ${AP_LIBEXECDIR} -module -avoid-version ${MODULE_LIBS}
     3libmod_gnutls_la_SOURCES = mod_gnutls.c gnutls_io.c gnutls_cache.c gnutls_config.c gnutls_hooks.c
     4#gnutls_lua.c
     5libmod_gnutls_la_CFLAGS = -Wall ${MODULE_CFLAGS} ${LUA_CFLAGS}
     6libmod_gnutls_la_LDFLAGS = -rpath ${AP_LIBEXECDIR} -module -avoid-version ${MODULE_LIBS} ${LUA_LIBS}
    67
    78lib_LTLIBRARIES = libmod_gnutls.la
  • src/Makefile.in

    r3e94bd3 r70c2d86  
    1 # Makefile.in generated by automake 1.9.5 from Makefile.am.
     1# Makefile.in generated by automake 1.10 from Makefile.am.
    22# @configure_input@
    33
    44# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
    5 # 2003, 2004, 2005  Free Software Foundation, Inc.
     5# 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
    66# This Makefile.in is free software; the Free Software Foundation
    77# gives unlimited permission to copy and/or distribute it,
     
    1515@SET_MAKE@
    1616
    17 SOURCES = $(libmod_gnutls_la_SOURCES)
    18 
    19 srcdir = @srcdir@
    20 top_srcdir = @top_srcdir@
    2117VPATH = @srcdir@
    2218pkgdatadir = $(datadir)/@PACKAGE@
    2319pkglibdir = $(libdir)/@PACKAGE@
    2420pkgincludedir = $(includedir)/@PACKAGE@
    25 top_builddir = ..
    2621am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
    27 INSTALL = @INSTALL@
    2822install_sh_DATA = $(install_sh) -c -m 644
    2923install_sh_PROGRAM = $(install_sh) -c
     
    6761        libmod_gnutls_la-gnutls_hooks.lo
    6862libmod_gnutls_la_OBJECTS = $(am_libmod_gnutls_la_OBJECTS)
    69 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/include
     63libmod_gnutls_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
     64        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libmod_gnutls_la_CFLAGS) \
     65        $(CFLAGS) $(libmod_gnutls_la_LDFLAGS) $(LDFLAGS) -o $@
     66DEFAULT_INCLUDES = -I. -I$(top_builddir)/include@am__isrc@
    7067depcomp = $(SHELL) $(top_srcdir)/config/depcomp
    7168am__depfiles_maybe = depfiles
    7269COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    7370        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
    74 LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) \
    75         $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
    76         $(AM_CFLAGS) $(CFLAGS)
     71LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
     72        --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
     73        $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
    7774CCLD = $(CC)
    78 LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
    79         $(AM_LDFLAGS) $(LDFLAGS) -o $@
     75LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
     76        --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
     77        $(LDFLAGS) -o $@
    8078SOURCES = $(libmod_gnutls_la_SOURCES)
    8179DIST_SOURCES = $(libmod_gnutls_la_SOURCES)
     
    8482DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
    8583ACLOCAL = @ACLOCAL@
    86 AMDEP_FALSE = @AMDEP_FALSE@
    87 AMDEP_TRUE = @AMDEP_TRUE@
    8884AMTAR = @AMTAR@
    8985APR_INCLUDES = @APR_INCLUDES@
     
    105101AP_SYSCONFDIR = @AP_SYSCONFDIR@
    106102AP_VERSION = @AP_VERSION@
     103AR = @AR@
    107104AUTOCONF = @AUTOCONF@
    108105AUTOHEADER = @AUTOHEADER@
     
    112109CCDEPMODE = @CCDEPMODE@
    113110CFLAGS = @CFLAGS@
     111CPP = @CPP@
    114112CPPFLAGS = @CPPFLAGS@
     113CXX = @CXX@
     114CXXCPP = @CXXCPP@
     115CXXDEPMODE = @CXXDEPMODE@
     116CXXFLAGS = @CXXFLAGS@
    115117CYGPATH_W = @CYGPATH_W@
    116118DEFS = @DEFS@
    117119DEPDIR = @DEPDIR@
     120ECHO = @ECHO@
    118121ECHO_C = @ECHO_C@
    119122ECHO_N = @ECHO_N@
     
    121124EGREP = @EGREP@
    122125EXEEXT = @EXEEXT@
     126F77 = @F77@
     127FFLAGS = @FFLAGS@
    123128GNUTLS_CERTTOOL = @GNUTLS_CERTTOOL@
     129GREP = @GREP@
    124130GTLS_BIN = @GTLS_BIN@
     131INSTALL = @INSTALL@
    125132INSTALL_DATA = @INSTALL_DATA@
    126133INSTALL_PROGRAM = @INSTALL_PROGRAM@
     
    135142LIBS = @LIBS@
    136143LIBTOOL = @LIBTOOL@
     144LN_S = @LN_S@
    137145LTLIBOBJS = @LTLIBOBJS@
    138146MAINT = @MAINT@
    139 MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
    140 MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
    141147MAKEINFO = @MAKEINFO@
     148MKDIR_P = @MKDIR_P@
    142149MODULE_CFLAGS = @MODULE_CFLAGS@
    143150MODULE_LIBS = @MODULE_LIBS@
     
    152159PACKAGE_VERSION = @PACKAGE_VERSION@
    153160PATH_SEPARATOR = @PATH_SEPARATOR@
     161RANLIB = @RANLIB@
     162SED = @SED@
    154163SET_MAKE = @SET_MAKE@
    155164SHELL = @SHELL@
    156165STRIP = @STRIP@
    157166VERSION = @VERSION@
     167abs_builddir = @abs_builddir@
     168abs_srcdir = @abs_srcdir@
     169abs_top_builddir = @abs_top_builddir@
     170abs_top_srcdir = @abs_top_srcdir@
    158171ac_ct_CC = @ac_ct_CC@
    159 ac_ct_STRIP = @ac_ct_STRIP@
    160 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
    161 am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
     172ac_ct_CXX = @ac_ct_CXX@
     173ac_ct_F77 = @ac_ct_F77@
    162174am__include = @am__include@
    163175am__leading_dot = @am__leading_dot@
     
    171183build_os = @build_os@
    172184build_vendor = @build_vendor@
     185builddir = @builddir@
    173186datadir = @datadir@
     187datarootdir = @datarootdir@
     188docdir = @docdir@
     189dvidir = @dvidir@
    174190exec_prefix = @exec_prefix@
    175191have_apr_memcache = @have_apr_memcache@
     
    179195host_os = @host_os@
    180196host_vendor = @host_vendor@
     197htmldir = @htmldir@
    181198includedir = @includedir@
    182199infodir = @infodir@
     
    184201libdir = @libdir@
    185202libexecdir = @libexecdir@
     203localedir = @localedir@
    186204localstatedir = @localstatedir@
    187205mandir = @mandir@
    188206mkdir_p = @mkdir_p@
    189207oldincludedir = @oldincludedir@
     208pdfdir = @pdfdir@
    190209prefix = @prefix@
    191210program_transform_name = @program_transform_name@
     211psdir = @psdir@
    192212sbindir = @sbindir@
    193213sharedstatedir = @sharedstatedir@
     214srcdir = @srcdir@
    194215sysconfdir = @sysconfdir@
    195216target = @target@
     
    198219target_os = @target_os@
    199220target_vendor = @target_vendor@
     221top_builddir = @top_builddir@
     222top_srcdir = @top_srcdir@
    200223CLEANFILES = .libs/libmod_gnutls *~
    201 libmod_gnutls_la_SOURCES = mod_gnutls.c gnutls_io.c gnutls_cache.c gnutls_config.c gnutls_hooks.c
    202 libmod_gnutls_la_CFLAGS = -Wall ${MODULE_CFLAGS}
    203 libmod_gnutls_la_LDFLAGS = -rpath ${AP_LIBEXECDIR} -module -avoid-version ${MODULE_LIBS}
     224libmod_gnutls_la_SOURCES = mod_gnutls.c gnutls_io.c gnutls_cache.c gnutls_config.c gnutls_hooks.c
     225#gnutls_lua.c
     226libmod_gnutls_la_CFLAGS = -Wall ${MODULE_CFLAGS} ${LUA_CFLAGS}
     227libmod_gnutls_la_LDFLAGS = -rpath ${AP_LIBEXECDIR} -module -avoid-version ${MODULE_LIBS} ${LUA_LIBS}
    204228lib_LTLIBRARIES = libmod_gnutls.la
    205229all: all-am
     
    216240          esac; \
    217241        done; \
    218         echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  src/Makefile'; \
     242        echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/Makefile'; \
    219243        cd $(top_srcdir) && \
    220           $(AUTOMAKE) --foreign  src/Makefile
     244          $(AUTOMAKE) --gnu  src/Makefile
    221245.PRECIOUS: Makefile
    222246Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
     
    238262install-libLTLIBRARIES: $(lib_LTLIBRARIES)
    239263        @$(NORMAL_INSTALL)
    240         test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
     264        test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
    241265        @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
    242266          if test -f $$p; then \
     
    249273uninstall-libLTLIBRARIES:
    250274        @$(NORMAL_UNINSTALL)
    251         @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
     275        @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
    252276          p=$(am__strip_dir) \
    253277          echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
     
    264288        done
    265289libmod_gnutls.la: $(libmod_gnutls_la_OBJECTS) $(libmod_gnutls_la_DEPENDENCIES)
    266         $(LINK) -rpath $(libdir) $(libmod_gnutls_la_LDFLAGS) $(libmod_gnutls_la_OBJECTS) $(libmod_gnutls_la_LIBADD) $(LIBS)
     290        $(libmod_gnutls_la_LINK) -rpath $(libdir) $(libmod_gnutls_la_OBJECTS) $(libmod_gnutls_la_LIBADD) $(LIBS)
    267291
    268292mostlyclean-compile:
     
    279303
    280304.c.o:
    281 @am__fastdepCC_TRUE@    if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
    282 @am__fastdepCC_TRUE@    then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
     305@am__fastdepCC_TRUE@    $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
     306@am__fastdepCC_TRUE@    mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
    283307@AMDEP_TRUE@@am__fastdepCC_FALSE@       source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    284308@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     
    286310
    287311.c.obj:
    288 @am__fastdepCC_TRUE@    if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
    289 @am__fastdepCC_TRUE@    then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
     312@am__fastdepCC_TRUE@    $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
     313@am__fastdepCC_TRUE@    mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
    290314@AMDEP_TRUE@@am__fastdepCC_FALSE@       source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    291315@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     
    293317
    294318.c.lo:
    295 @am__fastdepCC_TRUE@    if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
    296 @am__fastdepCC_TRUE@    then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
     319@am__fastdepCC_TRUE@    $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
     320@am__fastdepCC_TRUE@    mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
    297321@AMDEP_TRUE@@am__fastdepCC_FALSE@       source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
    298322@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     
    300324
    301325libmod_gnutls_la-mod_gnutls.lo: mod_gnutls.c
    302 @am__fastdepCC_TRUE@    if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmod_gnutls_la_CFLAGS) $(CFLAGS) -MT libmod_gnutls_la-mod_gnutls.lo -MD -MP -MF "$(DEPDIR)/libmod_gnutls_la-mod_gnutls.Tpo" -c -o libmod_gnutls_la-mod_gnutls.lo `test -f 'mod_gnutls.c' || echo '$(srcdir)/'`mod_gnutls.c; \
    303 @am__fastdepCC_TRUE@    then mv -f "$(DEPDIR)/libmod_gnutls_la-mod_gnutls.Tpo" "$(DEPDIR)/libmod_gnutls_la-mod_gnutls.Plo"; else rm -f "$(DEPDIR)/libmod_gnutls_la-mod_gnutls.Tpo"; exit 1; fi
     326@am__fastdepCC_TRUE@    $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmod_gnutls_la_CFLAGS) $(CFLAGS) -MT libmod_gnutls_la-mod_gnutls.lo -MD -MP -MF $(DEPDIR)/libmod_gnutls_la-mod_gnutls.Tpo -c -o libmod_gnutls_la-mod_gnutls.lo `test -f 'mod_gnutls.c' || echo '$(srcdir)/'`mod_gnutls.c
     327@am__fastdepCC_TRUE@    mv -f $(DEPDIR)/libmod_gnutls_la-mod_gnutls.Tpo $(DEPDIR)/libmod_gnutls_la-mod_gnutls.Plo
    304328@AMDEP_TRUE@@am__fastdepCC_FALSE@       source='mod_gnutls.c' object='libmod_gnutls_la-mod_gnutls.lo' libtool=yes @AMDEPBACKSLASH@
    305329@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    306 @am__fastdepCC_FALSE@   $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmod_gnutls_la_CFLAGS) $(CFLAGS) -c -o libmod_gnutls_la-mod_gnutls.lo `test -f 'mod_gnutls.c' || echo '$(srcdir)/'`mod_gnutls.c
     330@am__fastdepCC_FALSE@   $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmod_gnutls_la_CFLAGS) $(CFLAGS) -c -o libmod_gnutls_la-mod_gnutls.lo `test -f 'mod_gnutls.c' || echo '$(srcdir)/'`mod_gnutls.c
    307331
    308332libmod_gnutls_la-gnutls_io.lo: gnutls_io.c
    309 @am__fastdepCC_TRUE@    if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmod_gnutls_la_CFLAGS) $(CFLAGS) -MT libmod_gnutls_la-gnutls_io.lo -MD -MP -MF "$(DEPDIR)/libmod_gnutls_la-gnutls_io.Tpo" -c -o libmod_gnutls_la-gnutls_io.lo `test -f 'gnutls_io.c' || echo '$(srcdir)/'`gnutls_io.c; \
    310 @am__fastdepCC_TRUE@    then mv -f "$(DEPDIR)/libmod_gnutls_la-gnutls_io.Tpo" "$(DEPDIR)/libmod_gnutls_la-gnutls_io.Plo"; else rm -f "$(DEPDIR)/libmod_gnutls_la-gnutls_io.Tpo"; exit 1; fi
     333@am__fastdepCC_TRUE@    $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmod_gnutls_la_CFLAGS) $(CFLAGS) -MT libmod_gnutls_la-gnutls_io.lo -MD -MP -MF $(DEPDIR)/libmod_gnutls_la-gnutls_io.Tpo -c -o libmod_gnutls_la-gnutls_io.lo `test -f 'gnutls_io.c' || echo '$(srcdir)/'`gnutls_io.c
     334@am__fastdepCC_TRUE@    mv -f $(DEPDIR)/libmod_gnutls_la-gnutls_io.Tpo $(DEPDIR)/libmod_gnutls_la-gnutls_io.Plo
    311335@AMDEP_TRUE@@am__fastdepCC_FALSE@       source='gnutls_io.c' object='libmod_gnutls_la-gnutls_io.lo' libtool=yes @AMDEPBACKSLASH@
    312336@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    313 @am__fastdepCC_FALSE@   $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmod_gnutls_la_CFLAGS) $(CFLAGS) -c -o libmod_gnutls_la-gnutls_io.lo `test -f 'gnutls_io.c' || echo '$(srcdir)/'`gnutls_io.c
     337@am__fastdepCC_FALSE@   $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmod_gnutls_la_CFLAGS) $(CFLAGS) -c -o libmod_gnutls_la-gnutls_io.lo `test -f 'gnutls_io.c' || echo '$(srcdir)/'`gnutls_io.c
    314338
    315339libmod_gnutls_la-gnutls_cache.lo: gnutls_cache.c
    316 @am__fastdepCC_TRUE@    if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmod_gnutls_la_CFLAGS) $(CFLAGS) -MT libmod_gnutls_la-gnutls_cache.lo -MD -MP -MF "$(DEPDIR)/libmod_gnutls_la-gnutls_cache.Tpo" -c -o libmod_gnutls_la-gnutls_cache.lo `test -f 'gnutls_cache.c' || echo '$(srcdir)/'`gnutls_cache.c; \
    317 @am__fastdepCC_TRUE@    then mv -f "$(DEPDIR)/libmod_gnutls_la-gnutls_cache.Tpo" "$(DEPDIR)/libmod_gnutls_la-gnutls_cache.Plo"; else rm -f "$(DEPDIR)/libmod_gnutls_la-gnutls_cache.Tpo"; exit 1; fi
     340@am__fastdepCC_TRUE@    $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmod_gnutls_la_CFLAGS) $(CFLAGS) -MT libmod_gnutls_la-gnutls_cache.lo -MD -MP -MF $(DEPDIR)/libmod_gnutls_la-gnutls_cache.Tpo -c -o libmod_gnutls_la-gnutls_cache.lo `test -f 'gnutls_cache.c' || echo '$(srcdir)/'`gnutls_cache.c
     341@am__fastdepCC_TRUE@    mv -f $(DEPDIR)/libmod_gnutls_la-gnutls_cache.Tpo $(DEPDIR)/libmod_gnutls_la-gnutls_cache.Plo
    318342@AMDEP_TRUE@@am__fastdepCC_FALSE@       source='gnutls_cache.c' object='libmod_gnutls_la-gnutls_cache.lo' libtool=yes @AMDEPBACKSLASH@
    319343@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    320 @am__fastdepCC_FALSE@   $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmod_gnutls_la_CFLAGS) $(CFLAGS) -c -o libmod_gnutls_la-gnutls_cache.lo `test -f 'gnutls_cache.c' || echo '$(srcdir)/'`gnutls_cache.c
     344@am__fastdepCC_FALSE@   $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmod_gnutls_la_CFLAGS) $(CFLAGS) -c -o libmod_gnutls_la-gnutls_cache.lo `test -f 'gnutls_cache.c' || echo '$(srcdir)/'`gnutls_cache.c
    321345
    322346libmod_gnutls_la-gnutls_config.lo: gnutls_config.c
    323 @am__fastdepCC_TRUE@    if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmod_gnutls_la_CFLAGS) $(CFLAGS) -MT libmod_gnutls_la-gnutls_config.lo -MD -MP -MF "$(DEPDIR)/libmod_gnutls_la-gnutls_config.Tpo" -c -o libmod_gnutls_la-gnutls_config.lo `test -f 'gnutls_config.c' || echo '$(srcdir)/'`gnutls_config.c; \
    324 @am__fastdepCC_TRUE@    then mv -f "$(DEPDIR)/libmod_gnutls_la-gnutls_config.Tpo" "$(DEPDIR)/libmod_gnutls_la-gnutls_config.Plo"; else rm -f "$(DEPDIR)/libmod_gnutls_la-gnutls_config.Tpo"; exit 1; fi
     347@am__fastdepCC_TRUE@    $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmod_gnutls_la_CFLAGS) $(CFLAGS) -MT libmod_gnutls_la-gnutls_config.lo -MD -MP -MF $(DEPDIR)/libmod_gnutls_la-gnutls_config.Tpo -c -o libmod_gnutls_la-gnutls_config.lo `test -f 'gnutls_config.c' || echo '$(srcdir)/'`gnutls_config.c
     348@am__fastdepCC_TRUE@    mv -f $(DEPDIR)/libmod_gnutls_la-gnutls_config.Tpo $(DEPDIR)/libmod_gnutls_la-gnutls_config.Plo
    325349@AMDEP_TRUE@@am__fastdepCC_FALSE@       source='gnutls_config.c' object='libmod_gnutls_la-gnutls_config.lo' libtool=yes @AMDEPBACKSLASH@
    326350@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    327 @am__fastdepCC_FALSE@   $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmod_gnutls_la_CFLAGS) $(CFLAGS) -c -o libmod_gnutls_la-gnutls_config.lo `test -f 'gnutls_config.c' || echo '$(srcdir)/'`gnutls_config.c
     351@am__fastdepCC_FALSE@   $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmod_gnutls_la_CFLAGS) $(CFLAGS) -c -o libmod_gnutls_la-gnutls_config.lo `test -f 'gnutls_config.c' || echo '$(srcdir)/'`gnutls_config.c
    328352
    329353libmod_gnutls_la-gnutls_hooks.lo: gnutls_hooks.c
    330 @am__fastdepCC_TRUE@    if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmod_gnutls_la_CFLAGS) $(CFLAGS) -MT libmod_gnutls_la-gnutls_hooks.lo -MD -MP -MF "$(DEPDIR)/libmod_gnutls_la-gnutls_hooks.Tpo" -c -o libmod_gnutls_la-gnutls_hooks.lo `test -f 'gnutls_hooks.c' || echo '$(srcdir)/'`gnutls_hooks.c; \
    331 @am__fastdepCC_TRUE@    then mv -f "$(DEPDIR)/libmod_gnutls_la-gnutls_hooks.Tpo" "$(DEPDIR)/libmod_gnutls_la-gnutls_hooks.Plo"; else rm -f "$(DEPDIR)/libmod_gnutls_la-gnutls_hooks.Tpo"; exit 1; fi
     354@am__fastdepCC_TRUE@    $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmod_gnutls_la_CFLAGS) $(CFLAGS) -MT libmod_gnutls_la-gnutls_hooks.lo -MD -MP -MF $(DEPDIR)/libmod_gnutls_la-gnutls_hooks.Tpo -c -o libmod_gnutls_la-gnutls_hooks.lo `test -f 'gnutls_hooks.c' || echo '$(srcdir)/'`gnutls_hooks.c
     355@am__fastdepCC_TRUE@    mv -f $(DEPDIR)/libmod_gnutls_la-gnutls_hooks.Tpo $(DEPDIR)/libmod_gnutls_la-gnutls_hooks.Plo
    332356@AMDEP_TRUE@@am__fastdepCC_FALSE@       source='gnutls_hooks.c' object='libmod_gnutls_la-gnutls_hooks.lo' libtool=yes @AMDEPBACKSLASH@
    333357@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    334 @am__fastdepCC_FALSE@   $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmod_gnutls_la_CFLAGS) $(CFLAGS) -c -o libmod_gnutls_la-gnutls_hooks.lo `test -f 'gnutls_hooks.c' || echo '$(srcdir)/'`gnutls_hooks.c
     358@am__fastdepCC_FALSE@   $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmod_gnutls_la_CFLAGS) $(CFLAGS) -c -o libmod_gnutls_la-gnutls_hooks.lo `test -f 'gnutls_hooks.c' || echo '$(srcdir)/'`gnutls_hooks.c
    335359
    336360mostlyclean-libtool:
     
    339363clean-libtool:
    340364        -rm -rf .libs _libs
    341 
    342 distclean-libtool:
    343         -rm -f libtool
    344 uninstall-info-am:
    345365
    346366ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
     
    393413
    394414distdir: $(DISTFILES)
    395         @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
    396         topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
    397         list='$(DISTFILES)'; for file in $$list; do \
    398           case $$file in \
    399             $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
    400             $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
    401           esac; \
     415        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
     416        topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
     417        list='$(DISTFILES)'; \
     418          dist_files=`for file in $$list; do echo $$file; done | \
     419          sed -e "s|^$$srcdirstrip/||;t" \
     420              -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
     421        case $$dist_files in \
     422          */*) $(MKDIR_P) `echo "$$dist_files" | \
     423                           sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
     424                           sort -u` ;; \
     425        esac; \
     426        for file in $$dist_files; do \
    402427          if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
    403           dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
    404           if test "$$dir" != "$$file" && test "$$dir" != "."; then \
    405             dir="/$$dir"; \
    406             $(mkdir_p) "$(distdir)$$dir"; \
    407           else \
    408             dir=''; \
    409           fi; \
    410428          if test -d $$d/$$file; then \
     429            dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
    411430            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
    412431              cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
     
    424443installdirs:
    425444        for dir in "$(DESTDIR)$(libdir)"; do \
    426           test -z "$$dir" || $(mkdir_p) "$$dir"; \
     445          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
    427446        done
    428447install-exec: install-exec-am
     
    457476        -rm -f Makefile
    458477distclean-am: clean-am distclean-compile distclean-generic \
    459         distclean-libtool distclean-tags
     478        distclean-tags
    460479
    461480dvi: dvi-am
     
    471490install-data-am:
    472491
     492install-dvi: install-dvi-am
     493
    473494install-exec-am: install-libLTLIBRARIES
    474495
     496install-html: install-html-am
     497
    475498install-info: install-info-am
    476499
    477500install-man:
     501
     502install-pdf: install-pdf-am
     503
     504install-ps: install-ps-am
    478505
    479506installcheck-am:
     
    497524ps-am:
    498525
    499 uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES
     526uninstall-am: uninstall-libLTLIBRARIES
     527
     528.MAKE: install-am install-strip
    500529
    501530.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
     
    503532        distclean-compile distclean-generic distclean-libtool \
    504533        distclean-tags distdir dvi dvi-am html html-am info info-am \
    505         install install-am install-data install-data-am install-exec \
    506         install-exec-am install-info install-info-am \
    507         install-libLTLIBRARIES install-man install-strip installcheck \
     534        install install-am install-data install-data-am install-dvi \
     535        install-dvi-am install-exec install-exec-am install-html \
     536        install-html-am install-info install-info-am \
     537        install-libLTLIBRARIES install-man install-pdf install-pdf-am \
     538        install-ps install-ps-am install-strip installcheck \
    508539        installcheck-am installdirs maintainer-clean \
    509540        maintainer-clean-generic mostlyclean mostlyclean-compile \
    510541        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
    511         tags uninstall uninstall-am uninstall-info-am \
    512         uninstall-libLTLIBRARIES
     542        tags uninstall uninstall-am uninstall-libLTLIBRARIES
    513543
    514544
  • src/gnutls_cache.c

    r3e94bd3 r70c2d86  
    3939#define STR_SESSION_LEN (GNUTLS_SESSION_ID_STRING_LEN + MC_TAG_LEN)
    4040
     41#if 0
    4142static char *gnutls_session_id2sz(unsigned char *id, int idlen,
    4243                               char *str, int strsize)
     
    5152    }
    5253    *cp = '\0';
     54    return str;
     55}
     56#endif
     57
     58#define CTIME "%b %d %k:%M:%S %Y %Z"
     59char *mgs_time2sz(time_t in_time, char *str, int strsize)
     60{
     61    apr_time_exp_t vtm;
     62    apr_size_t ret_size;
     63    apr_time_t t;
     64   
     65 
     66    apr_time_ansi_put (&t, in_time);
     67    apr_time_exp_gmt (&vtm, t);
     68    apr_strftime(str, &ret_size, strsize-1, CTIME, &vtm);
     69
    5370    return str;
    5471}
     
    350367    apr_status_t rv;
    351368
    352     dbmkey.dptr  = key.data;
     369    dbmkey.dptr  = (void*)key.data;
    353370    dbmkey.dsize = key.size;
    354 
    355     dbm_cache_expire(ctxt);
    356371
    357372    rv = apr_dbm_open(&dbm, ctxt->sc->cache_config,
     
    413428           data.data, data.size);
    414429
     430    /* we expire dbm only on every store
     431     */
    415432    dbm_cache_expire(ctxt);
    416433
     
    455472    dbmkey.dsize = key.size;
    456473
    457     dbm_cache_expire(ctxt);
    458    
    459474    rv = apr_dbm_open(&dbm, ctxt->sc->cache_config,
    460475                      APR_DBM_RWCREATE, SSL_DBM_FILE_MODE, ctxt->c->pool);
  • src/gnutls_config.c

    r3e94bd3 r70c2d86  
    1818#include "mod_gnutls.h"
    1919
    20 static int load_datum_from_file(apr_pool_t* pool,
    21                                 const char* file,
    22                                 gnutls_datum_t* data)
    23 {
    24     apr_file_t* fp;
     20static int load_datum_from_file(apr_pool_t * pool,
     21                                const char *file, gnutls_datum_t * data)
     22{
     23    apr_file_t *fp;
    2524    apr_finfo_t finfo;
    2625    apr_status_t rv;
    2726    apr_size_t br = 0;
    28    
    29     rv = apr_file_open(&fp, file, APR_READ|APR_BINARY, APR_OS_DEFAULT,
    30                        pool);
     27
     28    rv = apr_file_open(&fp, file, APR_READ | APR_BINARY, APR_OS_DEFAULT,
     29                       pool);
    3130    if (rv != APR_SUCCESS) {
    32         return rv;
    33     }
    34    
     31        return rv;
     32    }
     33
    3534    rv = apr_file_info_get(&finfo, APR_FINFO_SIZE, fp);
    36    
     35
    3736    if (rv != APR_SUCCESS) {
    38         return rv;
    39     }
    40    
    41     data->data = apr_palloc(pool, finfo.size+1);
     37        return rv;
     38    }
     39
     40    data->data = apr_palloc(pool, finfo.size + 1);
    4241    rv = apr_file_read_full(fp, data->data, finfo.size, &br);
    43    
     42
    4443    if (rv != APR_SUCCESS) {
    45         return rv;
     44        return rv;
    4645    }
    4746    apr_file_close(fp);
    48    
     47
    4948    data->data[br] = '\0';
    5049    data->size = br;
    51    
     50
    5251    return 0;
    5352}
    5453
     54const char *mgs_set_dh_file(cmd_parms * parms, void *dummy,
     55                            const char *arg)
     56{
     57    mgs_srvconf_rec *sc =
     58        (mgs_srvconf_rec *) ap_get_module_config(parms->server->
     59                                                 module_config,
     60                                                 &gnutls_module);
     61
     62    sc->dh_params_file = ap_server_root_relative(parms->pool, arg);
     63
     64    return NULL;
     65}
     66
     67const char *mgs_set_rsa_export_file(cmd_parms * parms, void *dummy,
     68                                    const char *arg)
     69{
     70    mgs_srvconf_rec *sc =
     71        (mgs_srvconf_rec *) ap_get_module_config(parms->server->
     72                                                 module_config,
     73                                                 &gnutls_module);
     74
     75    sc->rsa_params_file = ap_server_root_relative(parms->pool, arg);
     76
     77    return NULL;
     78}
     79
     80
    5581const char *mgs_set_cert_file(cmd_parms * parms, void *dummy,
    56                                         const char *arg)
     82                              const char *arg)
    5783{
    5884    int ret;
    5985    gnutls_datum_t data;
    60     const char* file;
    61     apr_pool_t* spool;
    62     mgs_srvconf_rec *sc =
    63         (mgs_srvconf_rec *) ap_get_module_config(parms->server->
    64                                                         module_config,
    65                                                         &gnutls_module);
     86    const char *file;
     87    apr_pool_t *spool;
     88    mgs_srvconf_rec *sc =
     89        (mgs_srvconf_rec *) ap_get_module_config(parms->server->
     90                                                module_config,
     91                                                &gnutls_module);
    6692    apr_pool_create(&spool, parms->pool);
    67    
     93
    6894    file = ap_server_root_relative(spool, arg);
    6995
    7096    if (load_datum_from_file(spool, file, &data) != 0) {
    71         return apr_psprintf(parms->pool, "GnuTLS: Error Reading "
    72                             "Certificate '%s'", file);
    73     }
    74    
     97        return apr_psprintf(parms->pool, "GnuTLS: Error Reading "
     98                            "Certificate '%s'", file);
     99    }
     100
    75101    gnutls_x509_crt_init(&sc->cert_x509);
    76     ret = gnutls_x509_crt_import(sc->cert_x509, &data, GNUTLS_X509_FMT_PEM);
     102    ret =
     103        gnutls_x509_crt_import(sc->cert_x509, &data, GNUTLS_X509_FMT_PEM);
    77104    if (ret != 0) {
    78         return apr_psprintf(parms->pool, "GnuTLS: Failed to Import "
    79                             "Certificate'%s': (%d) %s", file, ret,
    80                             gnutls_strerror(ret));
    81     }
    82    
     105        return apr_psprintf(parms->pool, "GnuTLS: Failed to Import "
     106                            "Certificate'%s': (%d) %s", file, ret,
     107                            gnutls_strerror(ret));
     108    }
     109
    83110    apr_pool_destroy(spool);
    84111    return NULL;
     
    86113
    87114const char *mgs_set_key_file(cmd_parms * parms, void *dummy,
    88                                        const char *arg)
     115                             const char *arg)
    89116{
    90117    int ret;
    91118    gnutls_datum_t data;
    92     const char* file;
    93     apr_pool_t* spool;
    94     mgs_srvconf_rec *sc =
    95         (mgs_srvconf_rec *) ap_get_module_config(parms->server->
    96                                                         module_config,
    97                                                         &gnutls_module);
     119    const char *file;
     120    apr_pool_t *spool;
     121    mgs_srvconf_rec *sc =
     122        (mgs_srvconf_rec *) ap_get_module_config(parms->server->
     123                                                module_config,
     124                                                &gnutls_module);
    98125    apr_pool_create(&spool, parms->pool);
    99    
     126
    100127    file = ap_server_root_relative(spool, arg);
    101    
     128
    102129    if (load_datum_from_file(spool, file, &data) != 0) {
    103         return apr_psprintf(parms->pool, "GnuTLS: Error Reading "
    104                             "Private Key '%s'", file);
    105     }
    106    
     130        return apr_psprintf(parms->pool, "GnuTLS: Error Reading "
     131                            "Private Key '%s'", file);
     132    }
     133
    107134    gnutls_x509_privkey_init(&sc->privkey_x509);
    108     ret = gnutls_x509_privkey_import(sc->privkey_x509, &data, GNUTLS_X509_FMT_PEM);
     135    ret =
     136        gnutls_x509_privkey_import(sc->privkey_x509, &data,
     137                                   GNUTLS_X509_FMT_PEM);
    109138    if (ret != 0) {
    110         return apr_psprintf(parms->pool, "GnuTLS: Failed to Import "
    111                             "Private Key '%s': (%d) %s", file, ret,
    112                             gnutls_strerror(ret));
     139        return apr_psprintf(parms->pool, "GnuTLS: Failed to Import "
     140                            "Private Key '%s': (%d) %s", file, ret,
     141                            gnutls_strerror(ret));
    113142    }
    114143    apr_pool_destroy(spool);
     
    116145}
    117146
     147const char *mgs_set_srp_tpasswd_file(cmd_parms * parms, void *dummy,
     148                                     const char *arg)
     149{
     150    mgs_srvconf_rec *sc =
     151        (mgs_srvconf_rec *) ap_get_module_config(parms->server->
     152                                                 module_config,
     153                                                 &gnutls_module);
     154
     155    sc->srp_tpasswd_file = ap_server_root_relative(parms->pool, arg);
     156
     157    return NULL;
     158}
     159
     160const char *mgs_set_srp_tpasswd_conf_file(cmd_parms * parms, void *dummy,
     161                                          const char *arg)
     162{
     163    mgs_srvconf_rec *sc =
     164        (mgs_srvconf_rec *) ap_get_module_config(parms->server->
     165                                                 module_config,
     166                                                 &gnutls_module);
     167
     168    sc->srp_tpasswd_conf_file = ap_server_root_relative(parms->pool, arg);
     169
     170    return NULL;
     171}
     172
    118173const char *mgs_set_cache(cmd_parms * parms, void *dummy,
    119                                        const char *type, const char* arg)
    120 {
    121     const char* err;
     174                          const char *type, const char *arg)
     175{
     176    const char *err;
    122177    mgs_srvconf_rec *sc = ap_get_module_config(parms->server->
    123                                                         module_config,
    124                                                         &gnutls_module);
     178                                               module_config,
     179                                               &gnutls_module);
    125180    if ((err = ap_check_cmd_context(parms, GLOBAL_ONLY))) {
    126         return err;
     181        return err;
    127182    }
    128183
    129184    if (strcasecmp("none", type) == 0) {
    130         sc->cache_type = mgs_cache_none;
    131     }
    132     else if (strcasecmp("dbm", type) == 0) {
    133         sc->cache_type = mgs_cache_dbm;
     185        sc->cache_type = mgs_cache_none;
     186    } else if (strcasecmp("dbm", type) == 0) {
     187        sc->cache_type = mgs_cache_dbm;
    134188    }
    135189#if HAVE_APR_MEMCACHE
    136190    else if (strcasecmp("memcache", type) == 0) {
    137         sc->cache_type = mgs_cache_memcache;
     191        sc->cache_type = mgs_cache_memcache;
    138192    }
    139193#endif
    140194    else {
    141         return "Invalid Type for GnuTLSCache!";
     195        return "Invalid Type for GnuTLSCache!";
    142196    }
    143197
    144198    if (sc->cache_type == mgs_cache_dbm) {
    145         sc->cache_config = ap_server_root_relative(parms->pool, arg);
    146     }
    147     else {
    148         sc->cache_config = apr_pstrdup(parms->pool, arg);
     199        sc->cache_config = ap_server_root_relative(parms->pool, arg);
     200    } else {
     201        sc->cache_config = apr_pstrdup(parms->pool, arg);
    149202    }
    150203
     
    153206
    154207const char *mgs_set_cache_timeout(cmd_parms * parms, void *dummy,
    155                                             const char *arg)
     208                                  const char *arg)
    156209{
    157210    int argint;
    158211    mgs_srvconf_rec *sc =
    159     (mgs_srvconf_rec *) ap_get_module_config(parms->server->
    160                                                     module_config,
    161                                                     &gnutls_module);
    162    
     212        (mgs_srvconf_rec *) ap_get_module_config(parms->server->
     213                                                module_config,
     214                                                &gnutls_module);
     215
    163216    argint = atoi(arg);
    164    
     217
    165218    if (argint < 0) {
    166         return "GnuTLSCacheTimeout: Invalid argument";
    167     }
    168     else if (argint == 0) {
    169         sc->cache_timeout = 0;
    170     }
    171     else {
    172         sc->cache_timeout = apr_time_from_sec(argint);
    173     }
    174    
     219        return "GnuTLSCacheTimeout: Invalid argument";
     220    } else if (argint == 0) {
     221        sc->cache_timeout = 0;
     222    } else {
     223        sc->cache_timeout = apr_time_from_sec(argint);
     224    }
     225
    175226    return NULL;
    176227}
    177228
    178229const char *mgs_set_client_verify(cmd_parms * parms, void *dummy,
    179                                             const char *arg)
     230                                  const char *arg)
    180231{
    181232    int mode;
    182233
    183234    if (strcasecmp("none", arg) == 0 || strcasecmp("ignore", arg) == 0) {
    184         mode = GNUTLS_CERT_IGNORE;
    185     }
    186     else if (strcasecmp("optional", arg) == 0 || strcasecmp("request", arg) == 0) {
    187         mode = GNUTLS_CERT_REQUEST;
    188     }
    189     else if (strcasecmp("require", arg) == 0) {
    190         mode = GNUTLS_CERT_REQUIRE;
    191     }
    192     else {
    193         return "GnuTLSClientVerify: Invalid argument";
    194     }
    195    
     235        mode = GNUTLS_CERT_IGNORE;
     236    } else if (strcasecmp("optional", arg) == 0
     237               || strcasecmp("request", arg) == 0) {
     238        mode = GNUTLS_CERT_REQUEST;
     239    } else if (strcasecmp("require", arg) == 0) {
     240        mode = GNUTLS_CERT_REQUIRE;
     241    } else {
     242        return "GnuTLSClientVerify: Invalid argument";
     243    }
     244
    196245    /* This was set from a directory context */
    197246    if (parms->path) {
    198         mgs_dirconf_rec *dc = (mgs_dirconf_rec *)dummy;
    199         dc->client_verify_mode = mode;
    200     }
    201     else {
    202         mgs_srvconf_rec *sc =
    203         (mgs_srvconf_rec *) ap_get_module_config(parms->server->
    204                                                         module_config,
    205                                                         &gnutls_module);       
    206         sc->client_verify_mode = mode;
     247        mgs_dirconf_rec *dc = (mgs_dirconf_rec *) dummy;
     248        dc->client_verify_mode = mode;
     249    } else {
     250        mgs_srvconf_rec *sc =
     251            (mgs_srvconf_rec *) ap_get_module_config(parms->server->
     252                                                     module_config,
     253                                                     &gnutls_module);
     254        sc->client_verify_mode = mode;
    207255    }
    208256
     
    211259
    212260const char *mgs_set_client_ca_file(cmd_parms * parms, void *dummy,
    213                                             const char *arg)
     261                                   const char *arg)
    214262{
    215263    int rv;
    216     const char* file;
    217     mgs_srvconf_rec *sc =
    218         (mgs_srvconf_rec *) ap_get_module_config(parms->server->
    219                                                         module_config,
    220                                                         &gnutls_module);       
    221     file = ap_server_root_relative(parms->pool, arg);
    222     rv = gnutls_certificate_set_x509_trust_file(sc->certs,
    223                                                 file, GNUTLS_X509_FMT_PEM);
    224    
     264    const char *file;
     265    apr_pool_t *spool;
     266    gnutls_datum_t data;
     267
     268    mgs_srvconf_rec *sc =
     269        (mgs_srvconf_rec *) ap_get_module_config(parms->server->
     270                                                 module_config,
     271                                                 &gnutls_module);
     272    apr_pool_create(&spool, parms->pool);
     273
     274    file = ap_server_root_relative(spool, arg);
     275
     276    if (load_datum_from_file(spool, file, &data) != 0) {
     277        return apr_psprintf(parms->pool, "GnuTLS: Error Reading "
     278                            "Client CA File '%s'", file);
     279    }
     280
     281    sc->ca_list_size = MAX_CA_CRTS;
     282    rv = gnutls_x509_crt_list_import(sc->ca_list, &sc->ca_list_size,
     283                                     &data, GNUTLS_X509_FMT_PEM,
     284                                     GNUTLS_X509_CRT_LIST_IMPORT_FAIL_IF_EXCEED);
    225285    if (rv < 0) {
    226         return apr_psprintf(parms->pool, "GnuTLS: Failed to load "
    227                             "Client CA File '%s': (%d) %s", file, rv,
    228                             gnutls_strerror(rv));   
    229     }
     286        return apr_psprintf(parms->pool, "GnuTLS: Failed to load "
     287                            "Client CA File '%s': (%d) %s", file, rv,
     288                            gnutls_strerror(rv));
     289    }
     290
     291    apr_pool_destroy(spool);
    230292    return NULL;
    231293}
    232294
    233295const char *mgs_set_enabled(cmd_parms * parms, void *dummy,
    234                                       const char *arg)
    235 {
    236     mgs_srvconf_rec *sc =
    237         (mgs_srvconf_rec *) ap_get_module_config(parms->server->
    238                                                         module_config,
    239                                                         &gnutls_module);
     296                            const char *arg)
     297{
     298    mgs_srvconf_rec *sc =
     299        (mgs_srvconf_rec *) ap_get_module_config(parms->server->
     300                                                module_config,
     301                                                &gnutls_module);
    240302    if (!strcasecmp(arg, "On")) {
    241         sc->enabled = GNUTLS_ENABLED_TRUE;
    242     }
    243     else if (!strcasecmp(arg, "Off")) {
    244         sc->enabled = GNUTLS_ENABLED_FALSE;
    245     }
    246     else {
    247         return "GnuTLSEnable must be set to 'On' or 'Off'";
    248     }
    249 
    250     return NULL;
    251 }
     303        sc->enabled = GNUTLS_ENABLED_TRUE;
     304    } else if (!strcasecmp(arg, "Off")) {
     305        sc->enabled = GNUTLS_ENABLED_FALSE;
     306    } else {
     307        return "GnuTLSEnable must be set to 'On' or 'Off'";
     308    }
     309
     310    return NULL;
     311}
     312
     313const char *mgs_set_export_certificates_enabled(cmd_parms * parms, void *dummy,
     314                            const char *arg)
     315{
     316    mgs_srvconf_rec *sc =
     317        (mgs_srvconf_rec *) ap_get_module_config(parms->server->
     318                                                 module_config,
     319                                                 &gnutls_module);
     320    if (!strcasecmp(arg, "On")) {
     321        sc->export_certificates_enabled = GNUTLS_ENABLED_TRUE;
     322    } else if (!strcasecmp(arg, "Off")) {
     323        sc->export_certificates_enabled = GNUTLS_ENABLED_FALSE;
     324    } else {
     325        return "GnuTLSExportCertificates must be set to 'On' or 'Off'";
     326    }
     327
     328    return NULL;
     329}
     330
     331
     332const char *mgs_set_mac(cmd_parms * parms, void *dummy, const char *arg)
     333{
     334    mgs_srvconf_rec *sc =
     335        (mgs_srvconf_rec *) ap_get_module_config(parms->server->
     336                                                 module_config,
     337                                                 &gnutls_module);
     338
     339    int ret = gnutls_mac_convert_priority( sc->macs, MAX_CIPHERS, arg, ' ');
     340
     341    if (ret < 0)
     342        return "GnuTLSMACAlgorithms must be a comma separated list of SHA-1 or MD5";
     343
     344    return NULL;
     345}
     346
     347const char *mgs_set_kx(cmd_parms * parms, void *dummy, const char *arg)
     348{
     349    mgs_srvconf_rec *sc =
     350        (mgs_srvconf_rec *) ap_get_module_config(parms->server->
     351                                                 module_config,
     352                                                 &gnutls_module);
     353
     354    int ret = gnutls_kx_convert_priority( sc->key_exchange, MAX_CIPHERS, arg, ' ');
     355
     356    if (ret < 0)
     357        return "GnuTLSKeyExchangeAlgorithms must be a comma separated list of RSA, RSA-EXPORT, DHE-RSA, DHE-DSS, SRP, SRP-RSA, SRP-DSS, ANON";
     358
     359    return NULL;
     360}
     361
     362
     363const char *mgs_set_ciphers(cmd_parms * parms, void *dummy,
     364                            const char *arg)
     365{
     366    mgs_srvconf_rec *sc =
     367        (mgs_srvconf_rec *) ap_get_module_config(parms->server->
     368                                                 module_config,
     369                                                 &gnutls_module);
     370
     371    int ret = gnutls_cipher_convert_priority( sc->ciphers, MAX_CIPHERS, arg, ' ');
     372
     373    if (ret < 0)
     374        return "GnuTLSCiphers must be a comma separated list of AES-128-CBC, CAMELIA-128-CBC, ARCFOUR-128, 3DES-CBC or ARCFOUR-40";
     375
     376    return NULL;
     377}
     378
     379
     380const char *mgs_set_compression(cmd_parms * parms, void *dummy,
     381                                const char *arg)
     382{
     383    mgs_srvconf_rec *sc =
     384        (mgs_srvconf_rec *) ap_get_module_config(parms->server->
     385                                                 module_config,
     386                                                 &gnutls_module);
     387
     388    int ret = gnutls_compression_convert_priority( sc->compression, MAX_CIPHERS, arg, ' ');
     389
     390    if (ret < 0)
     391        return "GnuTLSCompressionMethods must be a comma separated list of NULL or DEFLATE";
     392
     393    return NULL;
     394}
     395
     396const char *mgs_set_protocols(cmd_parms * parms, void *dummy,
     397                                const char *arg)
     398{
     399    mgs_srvconf_rec *sc =
     400        (mgs_srvconf_rec *) ap_get_module_config(parms->server->
     401                                                 module_config,
     402                                                 &gnutls_module);
     403
     404    int ret = gnutls_protocol_convert_priority( sc->protocol, MAX_CIPHERS, arg, ' ');
     405
     406    if (ret < 0)
     407        return "GnuTLSProtocols must be a comma separated list of TLS1.1, TLS1.0 or SSL3.0";
     408
     409    return NULL;
     410}
     411
    252412
    253413void *mgs_config_server_create(apr_pool_t * p, server_rec * s)
     
    255415    int i;
    256416    mgs_srvconf_rec *sc = apr_pcalloc(p, sizeof(*sc));
    257    
     417
    258418    sc->enabled = GNUTLS_ENABLED_FALSE;
    259    
     419
    260420    gnutls_certificate_allocate_credentials(&sc->certs);
     421    gnutls_anon_allocate_server_credentials(&sc->anon_creds);
     422    gnutls_srp_allocate_server_credentials(&sc->srp_creds);
     423
     424    sc->srp_tpasswd_conf_file = NULL;
     425    sc->srp_tpasswd_file = NULL;
    261426    sc->privkey_x509 = NULL;
    262427    sc->cert_x509 = NULL;
     
    264429    sc->cache_type = mgs_cache_dbm;
    265430    sc->cache_config = ap_server_root_relative(p, "conf/gnutls_cache");
    266    
    267     /* TODO: Make this Configurable. But it isn't configurable in mod_ssl? */
     431
    268432    sc->dh_params_file = ap_server_root_relative(p, "conf/dhfile");
    269433    sc->rsa_params_file = ap_server_root_relative(p, "conf/rsafile");
    270    
    271     /* Finish SSL Client Certificate Support */
     434
    272435    sc->client_verify_mode = GNUTLS_CERT_IGNORE;
    273    
    274     /* TODO: Make this Configurable ! */
    275     /* mod_ssl uses a flex based parser for this part.. sigh */
    276     i = 0;
    277     sc->ciphers[i++] = GNUTLS_CIPHER_AES_256_CBC;
    278     sc->ciphers[i++] = GNUTLS_CIPHER_AES_128_CBC;
    279     sc->ciphers[i++] = GNUTLS_CIPHER_ARCFOUR_128;
    280     sc->ciphers[i++] = GNUTLS_CIPHER_3DES_CBC;
    281     sc->ciphers[i++] = GNUTLS_CIPHER_ARCFOUR_40;
    282     sc->ciphers[i] = 0;
    283    
    284     i = 0;
    285     sc->key_exchange[i++] = GNUTLS_KX_RSA;
    286     sc->key_exchange[i++] = GNUTLS_KX_RSA_EXPORT;
    287     sc->key_exchange[i++] = GNUTLS_KX_DHE_DSS;
    288     sc->key_exchange[i++] = GNUTLS_KX_DHE_RSA;
    289     sc->key_exchange[i++] = GNUTLS_KX_ANON_DH;
    290     sc->key_exchange[i++] = GNUTLS_KX_SRP;
    291     sc->key_exchange[i++] = GNUTLS_KX_SRP_RSA;
    292     sc->key_exchange[i++] = GNUTLS_KX_SRP_DSS;
    293     sc->key_exchange[i] = 0;
    294    
    295     i = 0;
    296     sc->macs[i++] = GNUTLS_MAC_SHA;
    297     sc->macs[i++] = GNUTLS_MAC_MD5;
    298     sc->macs[i++] = GNUTLS_MAC_RMD160;
    299     sc->macs[i] = 0;
    300    
    301     i = 0;
    302     sc->protocol[i++] = GNUTLS_TLS1_1;
    303     sc->protocol[i++] = GNUTLS_TLS1;
    304     sc->protocol[i++] = GNUTLS_SSL3;
    305     sc->protocol[i] = 0;
    306    
    307     i = 0;
    308     sc->compression[i++] = GNUTLS_COMP_NULL;
    309     sc->compression[i++] = GNUTLS_COMP_ZLIB;
    310     sc->compression[i++] = GNUTLS_COMP_LZO;
    311     sc->compression[i] = 0;
    312    
    313     i = 0;
    314     sc->cert_types[i++] = GNUTLS_CRT_X509;
    315     sc->cert_types[i] = 0;
    316    
     436
     437    if (sc->protocol[0]==0) {
     438      i = 0;
     439      sc->protocol[i++] = GNUTLS_TLS1_1;
     440      sc->protocol[i++] = GNUTLS_TLS1;
     441      sc->protocol[i++] = GNUTLS_SSL3;
     442      sc->protocol[i] = 0;
     443    }
     444
     445    if (sc->compression[0]==0) {
     446      i = 0;
     447      sc->compression[i++] = GNUTLS_COMP_NULL;
     448      sc->compression[i] = 0;
     449    }
     450
     451    if (sc->cert_types[0]==0) {
     452      i = 0;
     453      sc->cert_types[i++] = GNUTLS_CRT_X509;
     454      sc->cert_types[i] = 0;
     455    }
     456
    317457    return sc;
    318458}
    319459
    320 void *mgs_config_dir_create(apr_pool_t *p, char *dir)
     460void *mgs_config_dir_merge(apr_pool_t * p, void *basev, void *addv)
     461{
     462    mgs_dirconf_rec *new;
     463/*    mgs_dirconf_rec *base = (mgs_dirconf_rec *) basev; */
     464    mgs_dirconf_rec *add = (mgs_dirconf_rec *) addv;
     465
     466    new = (mgs_dirconf_rec *) apr_pcalloc(p, sizeof(mgs_dirconf_rec));
     467    new->lua_bytecode = apr_pstrmemdup(p, add->lua_bytecode,
     468                                       add->lua_bytecode_len);
     469    new->lua_bytecode_len = add->lua_bytecode_len;
     470    new->client_verify_mode = add->client_verify_mode;
     471    return new;
     472}
     473
     474void *mgs_config_dir_create(apr_pool_t * p, char *dir)
    321475{
    322476    mgs_dirconf_rec *dc = apr_palloc(p, sizeof(*dc));
    323    
     477
    324478    dc->client_verify_mode = -1;
    325    
     479    dc->lua_bytecode = NULL;
     480    dc->lua_bytecode_len = 0;
    326481    return dc;
    327482}
    328 
  • src/gnutls_hooks.c

    r3e94bd3 r70c2d86  
    11/**
    22 *  Copyright 2004-2005 Paul Querna
     3 *  Copyright 2007 Nikos Mavrogiannopoulos
    34 *
    45 *  Licensed under the Apache License, Version 2.0 (the "License");
     
    1819#include "mod_gnutls.h"
    1920#include "http_vhost.h"
     21#include "ap_mpm.h"
    2022
    2123#if !USING_2_1_RECENT
     
    2830
    2931#if MOD_GNUTLS_DEBUG
    30 static apr_file_t* debug_log_fp;
    31 #endif
     32static apr_file_t *debug_log_fp;
     33#endif
     34
     35static int mpm_is_threaded;
     36
     37static int mgs_cert_verify(request_rec * r, mgs_handle_t * ctxt);
     38/* use side==0 for server and side==1 for client */
     39static void mgs_add_common_cert_vars(request_rec * r, gnutls_x509_crt cert,
     40                                     int side, int export_certificates_enabled);
    3241
    3342static apr_status_t mgs_cleanup_pre_config(void *data)
     
    3847
    3948#if MOD_GNUTLS_DEBUG
    40 static void gnutls_debug_log_all( int level, const char* str)
     49static void gnutls_debug_log_all(int level, const char *str)
    4150{
    4251    apr_file_printf(debug_log_fp, "<%d> %s\n", level, str);
     
    4453#endif
    4554
    46 int mgs_hook_pre_config(apr_pool_t * pconf,
    47                         apr_pool_t * plog, apr_pool_t * ptemp)
     55int
     56mgs_hook_pre_config(apr_pool_t * pconf,
     57                    apr_pool_t * plog, apr_pool_t * ptemp)
    4858{
    4959
    5060#if APR_HAS_THREADS
    51     /* TODO: Check MPM Type here */
    52     gcry_control(GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);
     61    ap_mpm_query(AP_MPMQ_IS_THREADED, &mpm_is_threaded);
     62    if (mpm_is_threaded) {
     63        gcry_control(GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);
     64    }
     65#else
     66    mpm_is_threaded = 0;
    5367#endif
    5468
     
    5670
    5771    apr_pool_cleanup_register(pconf, NULL, mgs_cleanup_pre_config,
    58                               apr_pool_cleanup_null);
     72                              apr_pool_cleanup_null);
    5973
    6074#if MOD_GNUTLS_DEBUG
    6175    apr_file_open(&debug_log_fp, "/tmp/gnutls_debug",
    62                   APR_APPEND|APR_WRITE|APR_CREATE, APR_OS_DEFAULT, pconf);
     76                  APR_APPEND | APR_WRITE | APR_CREATE, APR_OS_DEFAULT,
     77                  pconf);
    6378
    6479    gnutls_global_set_log_level(9);
     
    7085
    7186
    72 static gnutls_datum load_params(const char* file, server_rec* s,
    73                                 apr_pool_t* pool)
     87static gnutls_datum
     88load_params(const char *file, server_rec * s, apr_pool_t * pool)
    7489{
    7590    gnutls_datum ret = { NULL, 0 };
    76     apr_file_t* fp;
     91    apr_file_t *fp;
    7792    apr_finfo_t finfo;
    7893    apr_status_t rv;
    7994    apr_size_t br = 0;
    8095
    81     rv = apr_file_open(&fp, file, APR_READ|APR_BINARY, APR_OS_DEFAULT,
    82                        pool);
     96    rv = apr_file_open(&fp, file, APR_READ | APR_BINARY, APR_OS_DEFAULT,
     97                       pool);
    8398    if (rv != APR_SUCCESS) {
    84         ap_log_error(APLOG_MARK, APLOG_STARTUP, rv, s,
    85                      "GnuTLS failed to load params file at: %s", file);
    86         return ret;
     99        ap_log_error(APLOG_MARK, APLOG_STARTUP, rv, s,
     100                     "GnuTLS failed to load params file at: %s. Will use internal params.", file);
     101        return ret;
    87102    }
    88103
     
    90105
    91106    if (rv != APR_SUCCESS) {
    92         ap_log_error(APLOG_MARK, APLOG_STARTUP, rv, s,
    93                      "GnuTLS failed to stat params file at: %s", file);
    94         return ret;
    95     }
    96 
    97     ret.data = apr_palloc(pool, finfo.size+1);
     107        ap_log_error(APLOG_MARK, APLOG_STARTUP, rv, s,
     108                     "GnuTLS failed to stat params file at: %s", file);
     109        return ret;
     110    }
     111
     112    ret.data = apr_palloc(pool, finfo.size + 1);
    98113    rv = apr_file_read_full(fp, ret.data, finfo.size, &br);
    99114
    100115    if (rv != APR_SUCCESS) {
    101         ap_log_error(APLOG_MARK, APLOG_STARTUP, rv, s,
    102                      "GnuTLS failed to read params file at: %s", file);
    103         return ret;
     116        ap_log_error(APLOG_MARK, APLOG_STARTUP, rv, s,
     117                     "GnuTLS failed to read params file at: %s", file);
     118        return ret;
    104119    }
    105120    apr_file_close(fp);
     
    110125}
    111126
    112 int mgs_hook_post_config(apr_pool_t * p, apr_pool_t * plog,
    113                                        apr_pool_t * ptemp,
    114                                        server_rec * base_server)
     127static int mgs_select_virtual_server_cb( gnutls_session_t session)
     128{
     129    mgs_handle_t *ctxt;
     130    mgs_srvconf_rec *tsc;
     131
     132    ctxt = gnutls_transport_get_ptr(session);
     133
     134    /* find the virtual server */
     135    tsc = mgs_find_sni_server(session);
     136
     137    if (tsc != NULL)
     138        ctxt->sc = tsc;
     139
     140    gnutls_certificate_server_set_request(session,
     141       ctxt->sc->client_verify_mode);
     142
     143    /* set the new server credentials
     144     */
     145
     146    gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE,
     147      ctxt->sc->certs);
     148
     149    gnutls_credentials_set(session, GNUTLS_CRD_ANON,
     150      ctxt->sc->anon_creds);
     151
     152    if ( ctxt->sc->srp_tpasswd_conf_file != NULL && ctxt->sc->srp_tpasswd_file != NULL) {
     153       gnutls_credentials_set(session, GNUTLS_CRD_SRP,
     154         ctxt->sc->srp_creds);
     155    }
     156
     157    /* enable the default priorities and override them later on
     158     */
     159    gnutls_set_default_priority( session);
     160
     161    /* update the priorities - to avoid negotiating a ciphersuite that is not
     162     * enabled on this virtual server
     163     */
     164    if (ctxt->sc->ciphers[0] != 0)
     165      gnutls_cipher_set_priority(session, ctxt->sc->ciphers);
     166    if (ctxt->sc->compression[0] != 0)
     167      gnutls_compression_set_priority(session, ctxt->sc->compression);
     168    if (ctxt->sc->key_exchange[0] != 0)
     169      gnutls_kx_set_priority(session, ctxt->sc->key_exchange);
     170    if (ctxt->sc->macs[0] != 0)
     171      gnutls_mac_set_priority(session, ctxt->sc->macs);
     172    if (ctxt->sc->cert_types[0] != 0)
     173      gnutls_certificate_type_set_priority(session, ctxt->sc->cert_types);
     174
     175    /* allow separate caches per virtual host. Actually allowing the same is not
     176     * a good idea, especially if they have different security requirements.
     177     */
     178    mgs_cache_session_init(ctxt);
     179
     180    return 0;
     181}
     182
     183static int cert_retrieve_fn(gnutls_session_t session, gnutls_retr_st * ret)
     184{
     185    mgs_handle_t *ctxt;
     186
     187    ctxt = gnutls_transport_get_ptr(session);
     188
     189    ret->type = GNUTLS_CRT_X509;
     190    ret->ncerts = 1;
     191    ret->deinit_all = 0;
     192
     193    ret->cert.x509 = &ctxt->sc->cert_x509;
     194    ret->key.x509 = ctxt->sc->privkey_x509;
     195    return 0;
     196}
     197
     198const char static_dh_params[] = "-----BEGIN DH PARAMETERS-----\n"
     199"MIIBBwKCAQCsa9tBMkqam/Fm3l4TiVgvr3K2ZRmH7gf8MZKUPbVgUKNzKcu0oJnt\n"
     200"gZPgdXdnoT3VIxKrSwMxDc1/SKnaBP1Q6Ag5ae23Z7DPYJUXmhY6s2YaBfvV+qro\n"
     201"KRipli8Lk7hV+XmT7Jde6qgNdArb9P90c1nQQdXDPqcdKB5EaxR3O8qXtDoj+4AW\n"
     202"dr0gekNsZIHx0rkHhxdGGludMuaI+HdIVEUjtSSw1X1ep3onddLs+gMs+9v1L7N4\n"
     203"YWAnkATleuavh05zA85TKZzMBBx7wwjYKlaY86jQw4JxrjX46dv7tpS1yAPYn3rk\n"
     204"Nd4jbVJfVHWbZeNy/NaO8g+nER+eSv9zAgEC\n"
     205"-----END DH PARAMETERS-----\n";
     206
     207int
     208mgs_hook_post_config(apr_pool_t * p, apr_pool_t * plog,
     209                     apr_pool_t * ptemp, server_rec * base_server)
    115210{
    116211    int rv;
    117     int data_len;
     212    size_t data_len;
    118213    server_rec *s;
    119214    gnutls_dh_params_t dh_params;
     
    124219    int first_run = 0;
    125220    const char *userdata_key = "mgs_init";
    126          
     221
    127222    apr_pool_userdata_get(&data, userdata_key, base_server->process->pool);
    128223    if (data == NULL) {
    129         first_run = 1;
    130         apr_pool_userdata_set((const void *)1, userdata_key,
    131                               apr_pool_cleanup_null,
    132                               base_server->process->pool);
     224        first_run = 1;
     225        apr_pool_userdata_set((const void *) 1, userdata_key,
     226                              apr_pool_cleanup_null,
     227                              base_server->process->pool);
    133228    }
    134229
    135230
    136231    {
    137         gnutls_datum pdata;
    138         apr_pool_t* tpool;
    139         s = base_server;
    140         sc_base = (mgs_srvconf_rec *) ap_get_module_config(s->module_config,
    141                                                              &gnutls_module);
    142 
    143         apr_pool_create(&tpool, p);
    144 
    145         gnutls_dh_params_init(&dh_params);
    146 
    147         pdata = load_params(sc_base->dh_params_file, s, tpool);
    148 
    149         if (pdata.size != 0) {
    150             rv = gnutls_dh_params_import_pkcs3(dh_params, &pdata,
    151                                                GNUTLS_X509_FMT_PEM);
    152             if (rv != 0) {
    153                 ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, s,
    154                              "GnuTLS: Unable to load DH Params: (%d) %s",
    155                              rv, gnutls_strerror(rv));
    156                 exit(rv);
     232        gnutls_datum pdata;
     233        apr_pool_t *tpool;
     234        s = base_server;
     235        sc_base =
     236            (mgs_srvconf_rec *) ap_get_module_config(s->module_config,
     237                                                     &gnutls_module);
     238
     239        apr_pool_create(&tpool, p);
     240
     241        gnutls_dh_params_init(&dh_params);
     242
     243        pdata = load_params(sc_base->dh_params_file, s, tpool);
     244
     245        if (pdata.size != 0) {
     246            rv = gnutls_dh_params_import_pkcs3(dh_params, &pdata,
     247                                               GNUTLS_X509_FMT_PEM);
     248            if (rv != 0) {
     249                ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, s,
     250                             "GnuTLS: Unable to load DH Params: (%d) %s",
     251                             rv, gnutls_strerror(rv));
     252                exit(rv);
     253            }
     254        } else {
     255            /* If the file does not exist use internal parameters
     256             */
     257            pdata.data = (void*)static_dh_params;
     258            pdata.size = sizeof( static_dh_params);
     259            rv = gnutls_dh_params_import_pkcs3(dh_params, &pdata,
     260                                               GNUTLS_X509_FMT_PEM);
     261
     262            if (rv < 0) {
     263              ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, s,
     264                         "GnuTLS: Unable to load internal DH Params."
     265                         " Shutting down.");
     266              exit(-1);
    157267            }
    158         }
    159         else {
    160             ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, s,
    161                          "GnuTLS: Unable to load DH Params."
    162                          " Shutting Down.");
    163             exit(-1);
    164         }
    165         apr_pool_clear(tpool);
    166 
    167         gnutls_rsa_params_init(&rsa_params);
    168 
    169         pdata = load_params(sc_base->rsa_params_file, s, tpool);
    170 
    171         if (pdata.size != 0) {
    172             rv = gnutls_rsa_params_import_pkcs1(rsa_params, &pdata,
    173                                                 GNUTLS_X509_FMT_PEM);
    174             if (rv != 0) {
    175                 ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, s,
    176                              "GnuTLS: Unable to load RSA Params: (%d) %s",
    177                              rv, gnutls_strerror(rv));
    178                 exit(rv);
    179             }
    180         }
    181         else {
    182             ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, s,
    183                          "GnuTLS: Unable to load RSA Params."
    184                          " Shutting Down.");
    185             exit(-1);
    186         }
    187 
    188         apr_pool_destroy(tpool);
    189         rv = mgs_cache_post_config(p, s, sc_base);
    190         if (rv != 0) {
    191             ap_log_error(APLOG_MARK, APLOG_STARTUP, rv, s,
    192                          "GnuTLS: Post Config for GnuTLSCache Failed."
    193                          " Shutting Down.");
    194             exit(-1);
    195         }
    196          
    197         for (s = base_server; s; s = s->next) {
    198             sc = (mgs_srvconf_rec *) ap_get_module_config(s->module_config,
    199                                                                  &gnutls_module);
    200             sc->cache_type = sc_base->cache_type;
    201             sc->cache_config = sc_base->cache_config;
    202 
    203             gnutls_certificate_set_rsa_export_params(sc->certs,
    204                                                      rsa_params);
    205             gnutls_certificate_set_dh_params(sc->certs, dh_params);
    206 
    207             if (sc->cert_x509 == NULL && sc->enabled == GNUTLS_ENABLED_TRUE) {
    208                 ap_log_error(APLOG_MARK, APLOG_EMERG, 0, s,
    209                              "[GnuTLS] - Host '%s:%d' is missing a "
    210                              "Certificate File!",
    211                          s->server_hostname, s->port);
    212                 exit(-1);
     268        }
     269        apr_pool_clear(tpool);
     270
     271        rsa_params = NULL;
     272       
     273        pdata = load_params(sc_base->rsa_params_file, s, tpool);
     274
     275        if (pdata.size != 0) {
     276            gnutls_rsa_params_init(&rsa_params);
     277            rv = gnutls_rsa_params_import_pkcs1(rsa_params, &pdata,
     278                                                GNUTLS_X509_FMT_PEM);
     279            if (rv != 0) {
     280                ap_log_error(APLOG_MARK, APLOG_STARTUP, 0, s,
     281                             "GnuTLS: Unable to load RSA Params: (%d) %s",
     282                             rv, gnutls_strerror(rv));
     283                exit(rv);
     284            }
     285        }
     286        /* not an error but RSA-EXPORT ciphersuites are not available
     287         */
     288
     289        apr_pool_destroy(tpool);
     290        rv = mgs_cache_post_config(p, s, sc_base);
     291        if (rv != 0) {
     292            ap_log_error(APLOG_MARK, APLOG_STARTUP, rv, s,
     293                         "GnuTLS: Post Config for GnuTLSCache Failed."
     294                         " Shutting Down.");
     295            exit(-1);
     296        }
     297
     298        for (s = base_server; s; s = s->next) {
     299            sc = (mgs_srvconf_rec *) ap_get_module_config(s->module_config,
     300                                                          &gnutls_module);
     301            sc->cache_type = sc_base->cache_type;
     302            sc->cache_config = sc_base->cache_config;
     303
     304            if (rsa_params != NULL)
     305              gnutls_certificate_set_rsa_export_params(sc->certs,
     306                                                     rsa_params);
     307            gnutls_certificate_set_dh_params(sc->certs, dh_params);
     308
     309            gnutls_anon_set_server_dh_params( sc->anon_creds, dh_params);
     310           
     311            gnutls_certificate_server_set_retrieve_function(sc->certs,
     312                                                    cert_retrieve_fn);
     313
     314            if ( sc->srp_tpasswd_conf_file != NULL && sc->srp_tpasswd_file != NULL) {
     315                gnutls_srp_set_server_credentials_file( sc->srp_creds,
     316                    sc->srp_tpasswd_file, sc->srp_tpasswd_conf_file);
    213317            }
    214318           
    215             if (sc->privkey_x509 == NULL && sc->enabled == GNUTLS_ENABLED_TRUE) {
    216                 ap_log_error(APLOG_MARK, APLOG_EMERG, 0, s,
    217                              "[GnuTLS] - Host '%s:%d' is missing a "
    218                              "Private Key File!",
    219                              s->server_hostname, s->port);
    220                 exit(-1);
     319            if (sc->cert_x509 == NULL
     320                && sc->enabled == GNUTLS_ENABLED_TRUE) {
     321                ap_log_error(APLOG_MARK, APLOG_EMERG, 0, s,
     322                             "[GnuTLS] - Host '%s:%d' is missing a "
     323                             "Certificate File!", s->server_hostname,
     324                             s->port);
     325                exit(-1);
     326            }
     327
     328            if (sc->privkey_x509 == NULL
     329                && sc->enabled == GNUTLS_ENABLED_TRUE) {
     330                ap_log_error(APLOG_MARK, APLOG_EMERG, 0, s,
     331                             "[GnuTLS] - Host '%s:%d' is missing a "
     332                             "Private Key File!",
     333                             s->server_hostname, s->port);
     334                exit(-1);
     335            }
     336
     337            if (sc->enabled == GNUTLS_ENABLED_TRUE) {
     338            rv = gnutls_x509_crt_get_dn_by_oid(sc->cert_x509,
     339                                               GNUTLS_OID_X520_COMMON_NAME,
     340                                               0, 0, NULL, &data_len);
     341
     342            if (data_len < 1) {
     343                sc->enabled = GNUTLS_ENABLED_FALSE;
     344                sc->cert_cn = NULL;
     345                continue;
     346            }
     347
     348            sc->cert_cn = apr_palloc(p, data_len);
     349            rv = gnutls_x509_crt_get_dn_by_oid(sc->cert_x509,
     350                                               GNUTLS_OID_X520_COMMON_NAME,
     351                                               0, 0, sc->cert_cn,
     352                                               &data_len);
    221353            }
    222            
    223             rv = gnutls_x509_crt_get_dn_by_oid(sc->cert_x509,
    224                                                GNUTLS_OID_X520_COMMON_NAME, 0, 0,
    225                                                NULL, &data_len);
    226            
    227             if (data_len < 1) {
    228                 sc->enabled = GNUTLS_ENABLED_FALSE;
    229                 sc->cert_cn = NULL;
    230                 continue;
    231             }
    232            
    233             sc->cert_cn = apr_palloc(p, data_len);
    234             rv = gnutls_x509_crt_get_dn_by_oid(sc->cert_x509,
    235                                                GNUTLS_OID_X520_COMMON_NAME, 0, 0,
    236                                                sc->cert_cn, &data_len);
    237             ap_log_error(APLOG_MARK, APLOG_DEBUG, 0,
    238                          s,
    239                          "GnuTLS: sni-x509 cn: %s/%d pk: %s s: 0x%08X sc: 0x%08X", sc->cert_cn, rv,
    240                          gnutls_pk_algorithm_get_name(gnutls_x509_privkey_get_pk_algorithm(sc->privkey_x509)),
    241                          (unsigned int)s, (unsigned int)sc);
    242         }
     354        }
    243355    }
    244356
     
    248360}
    249361
    250 void mgs_hook_child_init(apr_pool_t *p, server_rec *s)
     362void mgs_hook_child_init(apr_pool_t * p, server_rec * s)
    251363{
    252364    apr_status_t rv = APR_SUCCESS;
    253365    mgs_srvconf_rec *sc = ap_get_module_config(s->module_config,
    254                                                       &gnutls_module);
     366                                               &gnutls_module);
    255367
    256368    if (sc->cache_type != mgs_cache_none) {
    257         rv = mgs_cache_child_init(p, s, sc);
    258         if(rv != APR_SUCCESS) {
    259             ap_log_error(APLOG_MARK, APLOG_EMERG, rv, s,
    260                              "[GnuTLS] - Failed to run Cache Init");
    261         }
    262     }
    263     else {
    264         ap_log_error(APLOG_MARK, APLOG_CRIT, 0, s,
    265                      "[GnuTLS] - No Cache Configured. Hint: GnuTLSCache");
     369        rv = mgs_cache_child_init(p, s, sc);
     370        if (rv != APR_SUCCESS) {
     371            ap_log_error(APLOG_MARK, APLOG_EMERG, rv, s,
     372                         "[GnuTLS] - Failed to run Cache Init");
     373        }
     374    } else {
     375        ap_log_error(APLOG_MARK, APLOG_CRIT, 0, s,
     376                     "[GnuTLS] - No Cache Configured. Hint: GnuTLSCache");
    266377    }
    267378}
     
    270381{
    271382    mgs_srvconf_rec *sc =
    272         (mgs_srvconf_rec *) ap_get_module_config(r->server->
    273                                                         module_config,
    274                                                         &gnutls_module);
     383        (mgs_srvconf_rec *) ap_get_module_config(r->server->module_config,
     384                                                 &gnutls_module);
    275385
    276386    if (sc->enabled == GNUTLS_ENABLED_FALSE) {
    277         return NULL;
     387        return NULL;
    278388    }
    279389
     
    284394{
    285395    mgs_srvconf_rec *sc =
    286         (mgs_srvconf_rec *) ap_get_module_config(r->server->
    287                                                         module_config,
    288                                                         &gnutls_module);
     396        (mgs_srvconf_rec *) ap_get_module_config(r->server->module_config,
     397                                                 &gnutls_module);
    289398
    290399    if (sc->enabled == GNUTLS_ENABLED_FALSE) {
    291         return 0;
     400        return 0;
    292401    }
    293402
     
    298407
    299408#if USING_2_1_RECENT
    300 typedef struct
    301 {
     409typedef struct {
    302410    mgs_handle_t *ctxt;
    303411    mgs_srvconf_rec *sc;
    304     const char* sni_name;
     412    const char *sni_name;
    305413} vhost_cb_rec;
    306414
    307 static int vhost_cb (void* baton, conn_rec* conn, server_rec* s)
     415static int vhost_cb(void *baton, conn_rec * conn, server_rec * s)
    308416{
    309417    mgs_srvconf_rec *tsc;
    310     vhost_cb_rec* x = baton;
     418    vhost_cb_rec *x = baton;
    311419
    312420    tsc = (mgs_srvconf_rec *) ap_get_module_config(s->module_config,
    313                                                           &gnutls_module);
    314    
     421                                                   &gnutls_module);
     422
    315423    if (tsc->enabled != GNUTLS_ENABLED_TRUE || tsc->cert_cn == NULL) {
    316         return 0;
    317     }
    318    
     424        return 0;
     425    }
     426
    319427    /* The CN can contain a * -- this will match those too. */
    320428    if (ap_strcasecmp_match(x->sni_name, tsc->cert_cn) == 0) {
    321         /* found a match */
     429        /* found a match */
    322430#if MOD_GNUTLS_DEBUG
    323         ap_log_error(APLOG_MARK, APLOG_DEBUG, 0,
    324                      x->ctxt->c->base_server,
    325                      "GnuTLS: Virtual Host CB: "
    326                      "'%s' == '%s'", tsc->cert_cn, x->sni_name);
    327 #endif
    328         /* Because we actually change the server used here, we need to reset
    329         * things like ClientVerify.
    330         */
    331         x->sc = tsc;
    332         /* Shit. Crap. Dammit. We *really* should rehandshake here, as our
    333         * certificate structure *should* change when the server changes.
    334         * acccckkkkkk.
    335         */
    336         return 1;
     431        ap_log_error(APLOG_MARK, APLOG_DEBUG, 0,
     432                     x->ctxt->c->base_server,
     433                     "GnuTLS: Virtual Host CB: "
     434                     "'%s' == '%s'", tsc->cert_cn, x->sni_name);
     435#endif
     436        /* Because we actually change the server used here, we need to reset
     437        * things like ClientVerify.
     438        */
     439        x->sc = tsc;
     440        /* Shit. Crap. Dammit. We *really* should rehandshake here, as our
     441        * certificate structure *should* change when the server changes.
     442        * acccckkkkkk.
     443        */
     444        return 1;
    337445    }
    338446    return 0;
     
    340448#endif
    341449
    342 mgs_srvconf_rec* mgs_find_sni_server(gnutls_session_t session)
     450mgs_srvconf_rec *mgs_find_sni_server(gnutls_session_t session)
    343451{
    344452    int rv;
    345     int sni_type;
    346     int data_len = MAX_HOST_LEN;
     453    unsigned int sni_type;
     454    size_t data_len = MAX_HOST_LEN;
    347455    char sni_name[MAX_HOST_LEN];
    348456    mgs_handle_t *ctxt;
     
    350458    vhost_cb_rec cbx;
    351459#else
    352     server_rec* s;
    353     mgs_srvconf_rec *tsc;   
    354 #endif
    355    
     460    server_rec *s;
     461    mgs_srvconf_rec *tsc;
     462#endif
     463
    356464    ctxt = gnutls_transport_get_ptr(session);
    357    
     465
    358466    sni_type = gnutls_certificate_type_get(session);
    359467    if (sni_type != GNUTLS_CRT_X509) {
    360         /* In theory, we could support OpenPGP Certificates. Theory != code. */
    361         ap_log_error(APLOG_MARK, APLOG_CRIT, 0,
    362                      ctxt->c->base_server,
    363                      "GnuTLS: Only x509 Certificates are currently supported.");
    364         return NULL;
    365     }
    366    
    367     rv = gnutls_server_name_get(ctxt->session, sni_name, 
    368                                 &data_len, &sni_type, 0);
    369    
     468        /* In theory, we could support OpenPGP Certificates. Theory != code. */
     469        ap_log_error(APLOG_MARK, APLOG_CRIT, 0,
     470                     ctxt->c->base_server,
     471                     "GnuTLS: Only x509 Certificates are currently supported.");
     472        return NULL;
     473    }
     474
     475    rv = gnutls_server_name_get(ctxt->session, sni_name,
     476                                &data_len, &sni_type, 0);
     477
    370478    if (rv != 0) {
    371         return NULL;
    372     }
    373    
     479        return NULL;
     480    }
     481
    374482    if (sni_type != GNUTLS_NAME_DNS) {
    375         ap_log_error(APLOG_MARK, APLOG_CRIT, 0,
    376                      ctxt->c->base_server,
    377                      "GnuTLS: Unknown type '%d' for SNI: "
    378                      "'%s'", sni_type, sni_name);
    379         return NULL;
    380     }
    381    
     483        ap_log_error(APLOG_MARK, APLOG_CRIT, 0,
     484                     ctxt->c->base_server,
     485                     "GnuTLS: Unknown type '%d' for SNI: "
     486                     "'%s'", sni_type, sni_name);
     487        return NULL;
     488    }
     489
    382490    /**
    383491     * Code in the Core already sets up the c->base_server as the base
     
    388496    cbx.sc = NULL;
    389497    cbx.sni_name = sni_name;
    390    
     498
    391499    rv = ap_vhost_iterate_given_conn(ctxt->c, vhost_cb, &cbx);
    392500    if (rv == 1) {
    393         return cbx.sc;
     501        return cbx.sc;
    394502    }
    395503#else
    396504    for (s = ap_server_conf; s; s = s->next) {
    397        
    398         tsc = (mgs_srvconf_rec *) ap_get_module_config(s->module_config,
    399                                                        &gnutls_module);
    400         if (tsc->enabled != GNUTLS_ENABLED_TRUE) {
    401             continue;
    402         }
     505
     506        tsc = (mgs_srvconf_rec *) ap_get_module_config(s->module_config,
     507                                                       &gnutls_module);
     508        if (tsc->enabled != GNUTLS_ENABLED_TRUE) {
     509            continue;
     510        }
    403511#if MOD_GNUTLS_DEBUG
    404         ap_log_error(APLOG_MARK, APLOG_DEBUG, 0,
    405                      ctxt->c->base_server,
    406                      "GnuTLS: sni-x509 cn: %s/%d pk: %s s: 0x%08X s->n: 0x%08X  sc: 0x%08X", tsc->cert_cn, rv,
    407                      gnutls_pk_algorithm_get_name(gnutls_x509_privkey_get_pk_algorithm(ctxt->sc->privkey_x509)),
    408                      (unsigned int)s, (unsigned int)s->next, (unsigned int)tsc);
    409 #endif           
    410         /* The CN can contain a * -- this will match those too. */
    411         if (ap_strcasecmp_match(sni_name, tsc->cert_cn) == 0) {
     512        ap_log_error(APLOG_MARK, APLOG_DEBUG, 0,
     513                     ctxt->c->base_server,
     514                     "GnuTLS: sni-x509 cn: %s/%d pk: %s s: 0x%08X s->n: 0x%08X  sc: 0x%08X",
     515                     tsc->cert_cn, rv,
     516                     gnutls_pk_algorithm_get_name
     517                     (gnutls_x509_privkey_get_pk_algorithm
     518                      (ctxt->sc->privkey_x509)), (unsigned int) s,
     519                     (unsigned int) s->next, (unsigned int) tsc);
     520#endif
     521        /* The CN can contain a * -- this will match those too. */
     522        if (ap_strcasecmp_match(sni_name, tsc->cert_cn) == 0) {
    412523#if MOD_GNUTLS_DEBUG
    413             ap_log_error(APLOG_MARK, APLOG_DEBUG, 0,
    414                         ctxt->c->base_server,
    415                         "GnuTLS: Virtual Host: "
    416                         "'%s' == '%s'", tsc->cert_cn, sni_name);
    417 #endif
    418             return tsc;
    419         }
     524            ap_log_error(APLOG_MARK, APLOG_DEBUG, 0,
     525                        ctxt->c->base_server,
     526                        "GnuTLS: Virtual Host: "
     527                        "'%s' == '%s'", tsc->cert_cn, sni_name);
     528#endif
     529            return tsc;
     530        }
    420531    }
    421532#endif
     
    424535
    425536
    426 static int cert_retrieve_fn(gnutls_session_t session, gnutls_retr_st* ret)
    427 {
    428     mgs_handle_t *ctxt;
    429     mgs_srvconf_rec *tsc;
    430    
    431     ctxt = gnutls_transport_get_ptr(session);
    432 
    433     ret->type = GNUTLS_CRT_X509;
    434     ret->ncerts = 1;
    435     ret->deinit_all = 0;
    436 
    437     tsc = mgs_find_sni_server(session);
    438    
    439     if (tsc != NULL) {
    440         ctxt->sc = tsc;
    441         gnutls_certificate_server_set_request(ctxt->session, ctxt->sc->client_verify_mode);
    442     }
    443    
    444     ret->cert.x509 = &ctxt->sc->cert_x509;
    445     ret->key.x509 = ctxt->sc->privkey_x509;
    446     return 0;
    447 }
    448 
    449 static mgs_handle_t* create_gnutls_handle(apr_pool_t* pool, conn_rec * c)
     537
     538
     539static mgs_handle_t *create_gnutls_handle(apr_pool_t * pool, conn_rec * c)
    450540{
    451541    mgs_handle_t *ctxt;
    452542    mgs_srvconf_rec *sc =
    453         (mgs_srvconf_rec *) ap_get_module_config(c->base_server->
    454                                                         module_config,
    455                                                         &gnutls_module);
     543        (mgs_srvconf_rec *) ap_get_module_config(c->base_server->
     544                                                module_config,
     545                                                &gnutls_module);
    456546
    457547    ctxt = apr_pcalloc(pool, sizeof(*ctxt));
     
    470560
    471561    gnutls_init(&ctxt->session, GNUTLS_SERVER);
     562   
     563    /* This is not very good as it trades security for compatibility,
     564     * but it is the only way to be ultra-portable.
     565     */
     566    gnutls_session_enable_compatibility_mode( ctxt->session);
    472567
    473568    gnutls_protocol_set_priority(ctxt->session, sc->protocol);
    474     gnutls_cipher_set_priority(ctxt->session, sc->ciphers);
    475     gnutls_compression_set_priority(ctxt->session, sc->compression);
    476     gnutls_kx_set_priority(ctxt->session, sc->key_exchange);
    477     gnutls_mac_set_priority(ctxt->session, sc->macs);
    478     gnutls_certificate_type_set_priority(ctxt->session, sc->cert_types);
    479 
    480     mgs_cache_session_init(ctxt);
    481    
    482     gnutls_credentials_set(ctxt->session, GNUTLS_CRD_CERTIFICATE, ctxt->sc->certs);
    483 
    484     gnutls_certificate_server_set_retrieve_function(sc->certs, cert_retrieve_fn);
    485     gnutls_certificate_server_set_request(ctxt->session, ctxt->sc->client_verify_mode);
     569
     570    gnutls_handshake_set_post_client_hello_function( ctxt->session, mgs_select_virtual_server_cb);
     571
    486572    return ctxt;
    487573}
     
    491577    mgs_handle_t *ctxt;
    492578    mgs_srvconf_rec *sc =
    493         (mgs_srvconf_rec *) ap_get_module_config(c->base_server->
    494                                                         module_config,
    495                                                         &gnutls_module);
     579        (mgs_srvconf_rec *) ap_get_module_config(c->base_server->
     580                                                module_config,
     581                                                &gnutls_module);
    496582
    497583    if (!(sc && (sc->enabled == GNUTLS_ENABLED_TRUE))) {
    498         return DECLINED;
     584        return DECLINED;
    499585    }
    500586
     
    503589    ap_set_module_config(c->conn_config, &gnutls_module, ctxt);
    504590
    505     gnutls_transport_set_pull_function(ctxt->session,
    506                                        mgs_transport_read);
    507     gnutls_transport_set_push_function(ctxt->session,
    508                                        mgs_transport_write);
     591    gnutls_transport_set_pull_function(ctxt->session, mgs_transport_read);
     592    gnutls_transport_set_push_function(ctxt->session, mgs_transport_write);
    509593    gnutls_transport_set_ptr(ctxt->session, ctxt);
    510    
    511     ctxt->input_filter = ap_add_input_filter(GNUTLS_INPUT_FILTER_NAME, ctxt,
    512                                             NULL, c);
    513     ctxt->output_filter = ap_add_output_filter(GNUTLS_OUTPUT_FILTER_NAME, ctxt,
    514                                               NULL, c);
     594
     595    ctxt->input_filter =
     596        ap_add_input_filter(GNUTLS_INPUT_FILTER_NAME, ctxt, NULL, c);
     597    ctxt->output_filter =
     598        ap_add_output_filter(GNUTLS_OUTPUT_FILTER_NAME, ctxt, NULL, c);
    515599
    516600    return OK;
    517601}
    518602
    519 int mgs_hook_fixups(request_rec *r)
     603int mgs_hook_fixups(request_rec * r)
    520604{
    521605    unsigned char sbuf[GNUTLS_MAX_SESSION_ID];
    522606    char buf[AP_IOBUFSIZE];
    523     const char* tmp;
    524     int len;
     607    const char *tmp;
     608    size_t len;
    525609    mgs_handle_t *ctxt;
    526610    int rv = OK;
    527    
     611
    528612    apr_table_t *env = r->subprocess_env;
    529613
    530     ctxt = ap_get_module_config(r->connection->conn_config, &gnutls_module);
    531 
    532     if(!ctxt) {
    533         return DECLINED;
     614    ctxt =
     615        ap_get_module_config(r->connection->conn_config, &gnutls_module);
     616
     617    if (!ctxt) {
     618        return DECLINED;
    534619    }
    535620
    536621    apr_table_setn(env, "HTTPS", "on");
    537622
    538     apr_table_setn(env, "GNUTLS_VERSION_INTERFACE", MOD_GNUTLS_VERSION);
    539     apr_table_setn(env, "GNUTLS_VERSION_LIBRARY", LIBGNUTLS_VERSION);
     623    apr_table_setn(env, "SSL_VERSION_LIBRARY", "GnuTLS/"LIBGNUTLS_VERSION);
     624    apr_table_setn(env, "SSL_VERSION_INTERFACE", "mod_gnutls/"MOD_GNUTLS_VERSION);
    540625
    541626    apr_table_setn(env, "SSL_PROTOCOL",
    542                    gnutls_protocol_get_name(gnutls_protocol_get_version(ctxt->session)));
    543 
     627                   gnutls_protocol_get_name(gnutls_protocol_get_version
     628                                            (ctxt->session)));
     629
     630    /* should have been called SSL_CIPHERSUITE instead */                                         
    544631    apr_table_setn(env, "SSL_CIPHER",
    545                    gnutls_cipher_get_name(gnutls_cipher_get(ctxt->session)));
    546 
    547     apr_table_setn(env, "SSL_CLIENT_VERIFY", "NONE");
    548 
    549     tmp = apr_psprintf(r->pool, "%d",
    550               8 * gnutls_cipher_get_key_size(gnutls_cipher_get(ctxt->session)));
     632          gnutls_cipher_suite_get_name(
     633            gnutls_kx_get(ctxt->session), gnutls_cipher_get(ctxt->session),
     634                    gnutls_mac_get(ctxt->session)));
     635
     636    apr_table_setn(env, "SSL_COMPRESS_METHOD",
     637                   gnutls_compression_get_name(gnutls_compression_get
     638                                          (ctxt->session)));
     639
     640    apr_table_setn(env, "SSL_SRP_USER",
     641                   gnutls_srp_server_get_username( ctxt->session));
     642
     643    if (apr_table_get(env, "SSL_CLIENT_VERIFY") == NULL)
     644        apr_table_setn(env, "SSL_CLIENT_VERIFY", "NONE");
     645
     646    unsigned int key_size =
     647        8 * gnutls_cipher_get_key_size(gnutls_cipher_get(ctxt->session));
     648    tmp = apr_psprintf(r->pool, "%u", key_size);
    551649
    552650    apr_table_setn(env, "SSL_CIPHER_USEKEYSIZE", tmp);
    553651
    554652    apr_table_setn(env, "SSL_CIPHER_ALGKEYSIZE", tmp);
     653
     654    apr_table_setn(env, "SSL_CIPHER_EXPORT",
     655                   (key_size <= 40) ? "true" : "false");
    555656
    556657    len = sizeof(sbuf);
     
    559660    apr_table_setn(env, "SSL_SESSION_ID", apr_pstrdup(r->pool, tmp));
    560661
    561     /* TODO: There are many other env vars that we need to add */
    562     {
    563         len = sizeof(buf);
    564         gnutls_x509_crt_get_dn(ctxt->sc->cert_x509, buf, &len);
    565         apr_table_setn(env, "SSL_SERVER_S_DN", apr_pstrmemdup(r->pool, buf, len));
    566            
    567         len = sizeof(buf);
    568         gnutls_x509_crt_get_issuer_dn(ctxt->sc->cert_x509, buf, &len);
    569         apr_table_setn(env, "SSL_SERVER_I_DN", apr_pstrmemdup(r->pool, buf, len));
    570     }
    571    
     662    mgs_add_common_cert_vars(r, ctxt->sc->cert_x509, 0, ctxt->sc->export_certificates_enabled);
     663
    572664    return rv;
    573665}
    574666
    575 int mgs_hook_authz(request_rec *r)
     667int mgs_hook_authz(request_rec * r)
    576668{
    577669    int rv;
    578     int status;
    579670    mgs_handle_t *ctxt;
    580671    mgs_dirconf_rec *dc = ap_get_module_config(r->per_dir_config,
    581                                                       &gnutls_module);
    582    
    583     ctxt = ap_get_module_config(r->connection->conn_config, &gnutls_module);
    584    
     672                                               &gnutls_module);
     673
     674    ctxt =
     675        ap_get_module_config(r->connection->conn_config, &gnutls_module);
     676
    585677    if (!ctxt) {
    586         return DECLINED;
    587     }
    588    
    589     if (!dc) {
    590         dc = mgs_config_dir_create(r->pool, NULL);
     678        return DECLINED;
    591679    }
    592680
    593681    if (dc->client_verify_mode == GNUTLS_CERT_IGNORE) {
    594         ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
    595                       "GnuTLS: Directory set to Ignore Client Certificate!");
    596         return DECLINED;
    597     }
    598 
    599     if (ctxt->sc->client_verify_mode < dc->client_verify_mode) {
    600         ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
    601                      "GnuTLS: Attempting to rehandshake with peer. %d %d",
    602                       ctxt->sc->client_verify_mode, dc->client_verify_mode);
    603        
    604         gnutls_certificate_server_set_request(ctxt->session,
    605                                               dc->client_verify_mode);
    606    
    607         if (mgs_rehandshake(ctxt) != 0) {
    608             return HTTP_FORBIDDEN;
    609         }
    610     }
    611     else if (ctxt->sc->client_verify_mode == GNUTLS_CERT_IGNORE) {
     682        ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
     683                      "GnuTLS: Directory set to Ignore Client Certificate!");
     684    } else {
     685        if (ctxt->sc->client_verify_mode < dc->client_verify_mode) {
     686            ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
     687                          "GnuTLS: Attempting to rehandshake with peer. %d %d",
     688                          ctxt->sc->client_verify_mode,
     689                          dc->client_verify_mode);
     690
     691            gnutls_certificate_server_set_request(ctxt->session,
     692                                                  dc->client_verify_mode);
     693
     694            if (mgs_rehandshake(ctxt) != 0) {
     695                return HTTP_FORBIDDEN;
     696            }
     697        } else if (ctxt->sc->client_verify_mode == GNUTLS_CERT_IGNORE) {
    612698#if MOD_GNUTLS_DEBUG
    613         ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
    614                       "GnuTLS: Peer is set to IGNORE");
    615 #endif
    616         return DECLINED;
    617     }
    618    
    619     rv = gnutls_certificate_verify_peers2(ctxt->session, &status);
    620 
     699            ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
     700                          "GnuTLS: Peer is set to IGNORE");
     701#endif
     702        } else {
     703            rv = mgs_cert_verify(r, ctxt);
     704            if (rv != DECLINED) {
     705                return rv;
     706            }
     707        }
     708    }
     709
     710    return DECLINED;
     711}
     712
     713/* variables that are not sent by default:
     714 *
     715 * SSL_CLIENT_CERT      string  PEM-encoded client certificate
     716 * SSL_SERVER_CERT      string  PEM-encoded client certificate
     717 */
     718
     719/* side is either 0 for SERVER or 1 for CLIENT
     720 */
     721#define MGS_SIDE ((side==0)?"SSL_SERVER":"SSL_CLIENT")
     722static void
     723mgs_add_common_cert_vars(request_rec * r, gnutls_x509_crt cert, int side, int export_certificates_enabled)
     724{
     725    unsigned char sbuf[64];     /* buffer to hold serials */
     726    char buf[AP_IOBUFSIZE];
     727    const char *tmp;
     728    size_t len;
     729    int alg;
     730
     731    apr_table_t *env = r->subprocess_env;
     732
     733    if (export_certificates_enabled != 0) {
     734      char cert_buf[10*1024];
     735      len = sizeof(cert_buf);
     736
     737      if (gnutls_x509_crt_export(cert, GNUTLS_X509_FMT_PEM, cert_buf, &len) >= 0)
     738        apr_table_setn(env, apr_pstrcat(r->pool, MGS_SIDE, "_CERT", NULL),
     739                   apr_pstrmemdup(r->pool, cert_buf, len));
     740     
     741    }
     742
     743    len = sizeof(buf);
     744    gnutls_x509_crt_get_dn(cert, buf, &len);
     745    apr_table_setn(env, apr_pstrcat(r->pool, MGS_SIDE, "_S_DN", NULL),
     746                   apr_pstrmemdup(r->pool, buf, len));
     747
     748    len = sizeof(buf);
     749    gnutls_x509_crt_get_issuer_dn(cert, buf, &len);
     750    apr_table_setn(env, apr_pstrcat(r->pool, MGS_SIDE, "_I_DN", NULL),
     751                   apr_pstrmemdup(r->pool, buf, len));
     752
     753    len = sizeof(sbuf);
     754    gnutls_x509_crt_get_serial(cert, sbuf, &len);
     755    tmp = mgs_session_id2sz(sbuf, len, buf, sizeof(buf));
     756    apr_table_setn(env, apr_pstrcat(r->pool, MGS_SIDE, "_M_SERIAL", NULL),
     757                   apr_pstrdup(r->pool, tmp));
     758
     759    tmp =
     760        mgs_time2sz(gnutls_x509_crt_get_expiration_time
     761                    (cert), buf, sizeof(buf));
     762    apr_table_setn(env, apr_pstrcat(r->pool, MGS_SIDE, "_V_END", NULL),
     763                   apr_pstrdup(r->pool, tmp));
     764
     765    tmp =
     766        mgs_time2sz(gnutls_x509_crt_get_activation_time
     767                    (cert), buf, sizeof(buf));
     768    apr_table_setn(env, apr_pstrcat(r->pool, MGS_SIDE, "_V_START", NULL),
     769                   apr_pstrdup(r->pool, tmp));
     770
     771    alg = gnutls_x509_crt_get_signature_algorithm( cert);
     772    if (alg >= 0) {
     773      apr_table_setn(env, apr_pstrcat(r->pool, MGS_SIDE, "_A_SIG", NULL),
     774          gnutls_sign_algorithm_get_name( alg));
     775    }
     776
     777    alg = gnutls_x509_crt_get_pk_algorithm( cert, NULL);
     778    if (alg >= 0) {
     779      apr_table_setn(env, apr_pstrcat(r->pool, MGS_SIDE, "_A_KEY", NULL),
     780          gnutls_pk_algorithm_get_name( alg));
     781    }
     782
     783
     784}
     785
     786
     787static int mgs_cert_verify(request_rec * r, mgs_handle_t * ctxt)
     788{
     789    const gnutls_datum_t *cert_list;
     790    unsigned int cert_list_size, status, expired;
     791    int rv, ret;
     792    gnutls_x509_crt_t cert;
     793    apr_time_t activation_time, expiration_time, cur_time;
     794
     795    cert_list =
     796        gnutls_certificate_get_peers(ctxt->session, &cert_list_size);
     797
     798    if (cert_list == NULL || cert_list_size == 0) {
     799        /* It is perfectly OK for a client not to send a certificate if on REQUEST mode
     800         */
     801        if (ctxt->sc->client_verify_mode == GNUTLS_CERT_REQUEST)
     802            return OK;
     803
     804        /* no certificate provided by the client, but one was required. */
     805        ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
     806                      "GnuTLS: Failed to Verify Peer: "
     807                      "Client did not submit a certificate");
     808        return HTTP_FORBIDDEN;
     809    }
     810
     811    if (cert_list_size > 1) {
     812        ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
     813                      "GnuTLS: Failed to Verify Peer: "
     814                      "Chained Client Certificates are not supported.");
     815        return HTTP_FORBIDDEN;
     816    }
     817
     818    gnutls_x509_crt_init(&cert);
     819    rv = gnutls_x509_crt_import(cert, &cert_list[0], GNUTLS_X509_FMT_DER);
    621820    if (rv < 0) {
    622         ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
    623                      "GnuTLS: Failed to Verify Peer: (%d) %s",
    624                      rv, gnutls_strerror(rv));
    625         return HTTP_FORBIDDEN;
    626     }
    627    
    628     if (status < 0) {
    629         ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
    630                      "GnuTLS: Peer Status is invalid.");
    631         return HTTP_FORBIDDEN;
    632     }
    633    
     821        ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
     822                      "GnuTLS: Failed to Verify Peer: "
     823                      "Failed to import peer certificates.");
     824        ret = HTTP_FORBIDDEN;
     825        goto exit;
     826    }
     827
     828    apr_time_ansi_put(&expiration_time,
     829                      gnutls_x509_crt_get_expiration_time(cert));
     830    apr_time_ansi_put(&activation_time,
     831                      gnutls_x509_crt_get_activation_time(cert));
     832
     833    rv = gnutls_x509_crt_verify(cert, ctxt->sc->ca_list,
     834                                ctxt->sc->ca_list_size, 0, &status);
     835
     836    if (rv < 0) {
     837        ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
     838                      "GnuTLS: Failed to Verify Peer certificate: (%d) %s",
     839                      rv, gnutls_strerror(rv));
     840        ret = HTTP_FORBIDDEN;
     841        goto exit;
     842    }
     843
     844    expired = 0;
     845    cur_time = apr_time_now();
     846    if (activation_time > cur_time) {
     847        ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
     848                      "GnuTLS: Failed to Verify Peer: "
     849                      "Peer Certificate is not yet activated.");
     850        expired = 1;
     851    }
     852
     853    if (expiration_time < cur_time) {
     854        ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
     855                      "GnuTLS: Failed to Verify Peer: "
     856                      "Peer Certificate is expired.");
     857        expired = 1;
     858    }
     859
    634860    if (status & GNUTLS_CERT_SIGNER_NOT_FOUND) {
    635         ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
    636                      "GnuTLS: Could not find Signer for Peer Certificate");
    637     }
    638    
     861        ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
     862                      "GnuTLS: Could not find Signer for Peer Certificate");
     863    }
     864
    639865    if (status & GNUTLS_CERT_SIGNER_NOT_CA) {
    640         ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
    641                      "GnuTLS: Could not find CA for Peer Certificate");
    642     }
    643    
     866        ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
     867                      "GnuTLS: Peer's Certificate signer is not a CA");
     868    }
     869
    644870    if (status & GNUTLS_CERT_INVALID) {
    645         ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
    646                      "GnuTLS: Peer Certificate is invalid.");
    647         return HTTP_FORBIDDEN;
    648     }
    649     else if (status & GNUTLS_CERT_REVOKED) {
    650         ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
    651                      "GnuTLS: Peer Certificate is revoked.");
    652         return HTTP_FORBIDDEN;
    653     }
    654    
    655     /* TODO: OpenPGP Certificates */
    656     if (gnutls_certificate_type_get(ctxt->session) != GNUTLS_CRT_X509) {
    657         ap_log_rerror(APLOG_MARK, APLOG_CRIT, 0, r,
    658                      "GnuTLS: Only x509 is supported for client certificates");         
    659         return HTTP_FORBIDDEN;
    660     }
     871        ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
     872                      "GnuTLS: Peer Certificate is invalid.");
     873    } else if (status & GNUTLS_CERT_REVOKED) {
     874        ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
     875                      "GnuTLS: Peer Certificate is revoked.");
     876    }
     877
    661878    /* TODO: Further Verification. */
    662     ap_log_rerror(APLOG_MARK, APLOG_CRIT, 0, r,
    663                  "GnuTLS: Verified Peer.");             
    664     return OK;
    665 }
    666 
     879    /* Revocation is X.509 non workable paradigm, I really doubt implementation
     880     * is worth doing --nmav
     881     */
     882/// ret = gnutls_x509_crt_check_revocation(crt, crl_list, crl_list_size);
     883
     884//    mgs_hook_fixups(r);
     885//    rv = mgs_authz_lua(r);
     886
     887    mgs_add_common_cert_vars(r, cert, 1, ctxt->sc->export_certificates_enabled);
     888
     889    {
     890      /* days remaining */
     891      unsigned long remain = (apr_time_sec(expiration_time) - apr_time_sec(cur_time))/86400;
     892      apr_table_setn(r->subprocess_env, "SSL_CLIENT_V_REMAIN",
     893          apr_psprintf(r->pool, "%lu", remain));
     894    }
     895
     896    if (status == 0 && expired == 0) {
     897        apr_table_setn(r->subprocess_env, "SSL_CLIENT_VERIFY", "SUCCESS");
     898        ret = OK;
     899    } else {
     900        apr_table_setn(r->subprocess_env, "SSL_CLIENT_VERIFY", "FAILED");
     901        if (ctxt->sc->client_verify_mode == GNUTLS_CERT_REQUEST)
     902            ret = OK;
     903        else
     904            ret = HTTP_FORBIDDEN;
     905    }
     906
     907  exit:
     908    gnutls_x509_crt_deinit(cert);
     909    return ret;
     910
     911
     912}
  • src/gnutls_io.c

    r3e94bd3 r70c2d86  
    354354}
    355355
     356#define HANDSHAKE_MAX_TRIES 100
    356357static int gnutls_do_handshake(mgs_handle_t * ctxt)
    357358{
    358359    int ret;
    359360    int errcode;
     361    int maxtries = HANDSHAKE_MAX_TRIES;
     362
    360363    if (ctxt->status != 0) {
    361364        return -1;
     
    365368    do {
    366369        ret = gnutls_handshake(ctxt->session);
    367     } while (ret == GNUTLS_E_AGAIN);
    368    
     370        maxtries--;
     371    } while (ret == GNUTLS_E_AGAIN && maxtries > 0);
     372
     373    if (maxtries < 1) {
     374        ctxt->status = -1;
     375#if USING_2_1_RECENT
     376        ap_log_cerror(APLOG_MARK, APLOG_ERR, 0, ctxt->c,
     377                     "GnuTLS: Handshake Failed. Hit Maximum Attempts");
     378#else
     379        ap_log_error(APLOG_MARK, APLOG_ERR, 0, ctxt->c->base_server,
     380                     "GnuTLS: Handshake Failed. Hit Maximum Attempts");
     381#endif
     382        gnutls_alert_send(ctxt->session, GNUTLS_AL_FATAL,
     383                          gnutls_error_to_alert(ret, NULL));
     384        gnutls_deinit(ctxt->session);
     385        return -1;
     386    }
     387
    369388    if (ret < 0) {
    370389        if (ret == GNUTLS_E_WARNING_ALERT_RECEIVED
     
    525544        if (AP_BUCKET_IS_EOC(bucket)) {
    526545            do {
    527                 ret = gnutls_alert_send(ctxt->session, GNUTLS_AL_FATAL,
    528                                         GNUTLS_A_CLOSE_NOTIFY);
     546                ret = gnutls_bye( ctxt->session, GNUTLS_SHUT_WR);
    529547            } while(ret == GNUTLS_E_INTERRUPTED || ret == GNUTLS_E_AGAIN);
    530548
     
    538556
    539557            apr_brigade_cleanup(ctxt->output_bb);
    540             gnutls_bye(ctxt->session, GNUTLS_SHUT_WR);
    541558            gnutls_deinit(ctxt->session);
    542559            continue;
     
    550567                return status;
    551568            }
     569
    552570            apr_brigade_cleanup(ctxt->output_bb);
    553571            continue;
     
    581599                             ctxt->c->base_server,
    582600                             "GnuTLS: Error writing data."
    583                              " (%d) '%s'", ret, gnutls_strerror(ret));
     601                             " (%d) '%s'", (int)ret, gnutls_strerror(ret));
    584602                if (ctxt->output_rc == APR_SUCCESS) {
    585603                    ctxt->output_rc = APR_EGENERAL;
  • src/mod_gnutls.c

    r3e94bd3 r70c2d86  
    4545    /* TODO: HTTP Upgrade Filter */
    4646    /* ap_register_output_filter ("UPGRADE_FILTER",
    47         *          ssl_io_filter_Upgrade, NULL, AP_FTYPE_PROTOCOL + 5);
    48 */
     47     *          ssl_io_filter_Upgrade, NULL, AP_FTYPE_PROTOCOL + 5);
     48     */
     49
    4950    ap_register_input_filter(GNUTLS_INPUT_FILTER_NAME,
    5051                             mgs_filter_input, NULL,
     
    5455                              AP_FTYPE_CONNECTION + 5);
    5556}
    56 
    5757
    5858static const command_rec mgs_config_cmds[] = {
     
    6464                  NULL,
    6565                  RSRC_CONF,
    66                   "Set the CA File for Client Certificates"),
     66                  "Set the CA File to verify Client Certificates"),
     67    AP_INIT_TAKE1("GnuTLSDHFile", mgs_set_dh_file,
     68                  NULL,
     69                  RSRC_CONF,
     70                  "Set the file to read Diffie Hellman parameters from"),
     71    AP_INIT_TAKE1("GnuTLSRSAFile", mgs_set_rsa_export_file,
     72                  NULL,
     73                  RSRC_CONF,
     74                  "Set the file to read RSA-EXPORT parameters from"),
    6775    AP_INIT_TAKE1("GnuTLSCertificateFile", mgs_set_cert_file,
    6876                  NULL,
     
    7280                  NULL,
    7381                  RSRC_CONF,
    74                   "SSL Server Certificate file"),
     82                  "SSL Server SRP Password file"),
     83    AP_INIT_TAKE1("GnuTLSSRPPasswdFile", mgs_set_srp_tpasswd_file,
     84                  NULL,
     85                  RSRC_CONF,
     86                  "SSL Server SRP Password Conf file"),
     87    AP_INIT_TAKE1("GnuTLSSRPPasswdConfFile", mgs_set_srp_tpasswd_conf_file,
     88                  NULL,
     89                  RSRC_CONF,
     90                  "SSL Server SRP Parameters file"),
    7591    AP_INIT_TAKE1("GnuTLSCacheTimeout", mgs_set_cache_timeout,
    7692                  NULL,
     
    8197                  RSRC_CONF,
    8298                  "Cache Configuration"),
     99    AP_INIT_RAW_ARGS("GnuTLSCiphers", mgs_set_ciphers,
     100                  NULL,
     101                  RSRC_CONF,
     102                  "The ciphers to enable (AES-128, 3DES, ARCFOUR-128, ARCFOUR-40)"),
     103    AP_INIT_RAW_ARGS("GnuTLSKeyExchangeAlgorithms", mgs_set_kx,
     104                  NULL,
     105                  RSRC_CONF,
     106                  "The key exchange algorithms to enable (RSA, DHE-RSA, DHE-DSS, RSA-EXPORT, SRP, SRP-RSA, SRP-DSS)"),
     107    AP_INIT_RAW_ARGS("GnuTLSMACAlgorithms", mgs_set_mac,
     108                  NULL,
     109                  RSRC_CONF,
     110                  "The MAC algorithms to utilize (SHA-1, MD5)"),
     111    AP_INIT_RAW_ARGS("GnuTLSCompressionMethods", mgs_set_compression,
     112                  NULL,
     113                  RSRC_CONF,
     114                  "The compression methods to utilize (NULL, ZLIB)"),
     115    AP_INIT_RAW_ARGS("GnuTLSProtocols", mgs_set_protocols,
     116                  NULL,
     117                  RSRC_CONF,
     118                  "The TLS protocol version to use (TLS1.1, TLS1.0, SSL3.0)"),
    83119    AP_INIT_TAKE1("GnuTLSEnable", mgs_set_enabled,
    84                   NULL, RSRC_CONF,
     120                  NULL,
     121                  RSRC_CONF,
    85122                  "Whether this server has GnuTLS Enabled. Default: Off"),
    86    
     123    AP_INIT_TAKE1("GnuTLSExportCertificates", mgs_set_export_certificates_enabled,
     124                  NULL,
     125                  RSRC_CONF,
     126                  "Whether to export PEM encoded certificates to CGIs. Default: Off"),
     127#if 0
     128    AP_INIT_RAW_ARGS("<GnuTLSRequire", mgs_set_require_section,
     129                  NULL,
     130                  EXEC_ON_READ|OR_ALL,
     131                  "Whether this server has GnuTLS Enabled. Default: Off"),
     132    AP_INIT_RAW_ARGS("GnuTLSRequireByteCode", mgs_set_require_bytecode,
     133                     NULL,
     134                     OR_ALL,
     135                     "Internal Command for reading Lua Bytecode."),
     136#endif
    87137    {NULL}
    88138};
     
    91141    STANDARD20_MODULE_STUFF,
    92142    mgs_config_dir_create,
    93     NULL,
     143    mgs_config_dir_merge,
    94144    mgs_config_server_create,
    95145    NULL,
Note: See TracChangeset for help on using the changeset viewer.