From: David Sommerseth <d...@users.sourceforge.net>

Addedd configure option (--disable-eurephia) to disable the code which the
eurephia plug-in depends on.

It was chosen to use --disable-eurephia, as this patch is not much intrusive.  
It
just enables a SHA1 fingerprint environment variable for each certificate being
used for the connection.

Signed-off-by: David Sommerseth <d...@users.sourceforge.net>
---
 configure.ac |    9 +++++++++
 options.c    |    6 ++++++
 ssl.c        |   14 ++++++++++++++
 3 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/configure.ac b/configure.ac
index 116ff7c..e775665 100644
--- a/configure.ac
+++ b/configure.ac
@@ -99,6 +99,12 @@ AC_ARG_ENABLE(plugins,
    [PLUGINS="yes"]
 )

+AC_ARG_ENABLE(eurephia,
+   [  --disable-eurephia      Disable support for the eurephia plug-in],
+   [EUREPHIA="$enableval"],
+   [EUREPHIA="yes"]
+)
+
 AC_ARG_ENABLE(management,
    [  --disable-management    Disable management server support],
    [MANAGEMENT="$enableval"],
@@ -632,6 +638,9 @@ if test "${WIN32}" != "yes"; then
            )],
            [AC_MSG_RESULT([libdl headers not found.])]
       )
+      if test "$EUREPHIA" = "yes"; then
+         AC_DEFINE(ENABLE_EUREPHIA, 1, [Enable support for the eurephia 
plug-in])
+      fi
    fi
 fi

diff --git a/options.c b/options.c
index c5ca8b6..aae954e 100644
--- a/options.c
+++ b/options.c
@@ -7,6 +7,9 @@
  *
  *  Copyright (C) 2002-2009 OpenVPN Technologies, Inc. <sa...@openvpn.net>
  *
+ *  Additions for eurephia plugin done by:
+ *         David Sommerseth <d...@users.sourceforge.net> Copyright (C) 2009
+ *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License version 2
  *  as published by the Free Software Foundation.
@@ -73,6 +76,9 @@ const char title_string[] =
 #ifdef ENABLE_PKCS11
   " [PKCS11]"
 #endif
+#ifdef ENABLE_EUREPHIA
+  " [eurephia]"
+#endif
   " built on " __DATE__
 ;

diff --git a/ssl.c b/ssl.c
index 82e04a3..1936f64 100644
--- a/ssl.c
+++ b/ssl.c
@@ -7,6 +7,10 @@
  *
  *  Copyright (C) 2002-2009 OpenVPN Technologies, Inc. <sa...@openvpn.net>
  *
+ *  Additions for eurephia plugin done by:
+ *         David Sommerseth <d...@users.sourceforge.net> Copyright (C) 
2008-2009
+ *
+ *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License version 2
  *  as published by the Free Software Foundation.
@@ -780,6 +784,16 @@ verify_callback (int preverify_ok, X509_STORE_CTX * ctx)
   openvpn_snprintf (envname, sizeof(envname), "tls_id_%d", ctx->error_depth);
   setenv_str (opt->es, envname, subject);

+#ifdef ENABLE_EUREPHIA
+  /* export X509 cert SHA1 fingerprint */
+  {
+    struct gc_arena gc = gc_new ();
+    openvpn_snprintf (envname, sizeof(envname), "tls_digest_%d", 
ctx->error_depth);
+    setenv_str (opt->es, envname,
+               format_hex_ex(ctx->current_cert->sha1_hash, SHA_DIGEST_LENGTH, 
0, 1, ":", &gc));
+    gc_free(&gc);
+  }
+#endif
 #if 0
   /* export common name string as environmental variable */
   openvpn_snprintf (envname, sizeof(envname), "tls_common_name_%d", 
ctx->error_depth);
-- 
1.6.6


Reply via email to