summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Pointner <equinox@anylike.org>2009-12-28 08:47:50 +0000
committerChristian Pointner <equinox@anylike.org>2009-12-28 08:47:50 +0000
commitbed4a9db37f98cf26445e5a3579fde498ca5ac52 (patch)
tree23e03c54bff5f08fb1c638bc2224ea92e111cd52 /src
parentimproved error handling (diff)
moved from libgcrypt to gnutls and from openssl crypto to openssl
Diffstat (limited to 'src')
-rw-r--r--src/anylike.c46
-rwxr-xr-xsrc/configure22
2 files changed, 36 insertions, 32 deletions
diff --git a/src/anylike.c b/src/anylike.c
index a4cb272..3d96b2d 100644
--- a/src/anylike.c
+++ b/src/anylike.c
@@ -39,41 +39,42 @@
#include "l_crypt.h"
#include "l_sig_handler.h"
-#ifndef USE_SSL_CRYPTO
-#include <gcrypt.h>
+#ifndef USE_OPENSSL
+#include <gnutls/gnutls.h>
#endif
#include "daemon.h"
-#ifndef USE_SSL_CRYPTO
+#ifndef USE_OPENSSL
-#define MIN_GCRYPT_VERSION "1.2.0"
+#define MIN_GNUTLS_VERSION "2.8.3"
-int init_libgcrypt()
+int init_gnutls()
{
- if(!gcry_check_version(MIN_GCRYPT_VERSION)) {
- log_printf(NOTICE, "invalid Version of libgcrypt, should be >= %s", MIN_GCRYPT_VERSION);
+ int ret = gnutls_global_init();
+ if(ret != GNUTLS_E_SUCCESS) {
+ log_printf(ERROR, "gnutls_global_init() returned with error 0x%04X", ret);
return -1;
}
- gcry_error_t err = gcry_control(GCRYCTL_DISABLE_SECMEM, 0);
-
- if(err) {
- log_printf(ERROR, "failed to disable secure memory: %s", gcry_strerror(err));
- return -1;
- }
-
- err = gcry_control(GCRYCTL_INITIALIZATION_FINISHED);
- if(err) {
- log_printf(ERROR, "failed to finish libgcrypt initialization: %s", gcry_strerror(err));
+ if(!gnutls_check_version(MIN_GNUTLS_VERSION)) {
+ log_printf(NOTICE, "invalid Version of gnutls, should be >= %s but is %s", MIN_GNUTLS_VERSION, gnutls_check_version(NULL));
+ gnutls_global_deinit();
return -1;
}
- log_printf(NOTICE, "libgcrypt init finished");
+ log_printf(NOTICE, "gnutls init finished");
return 0;
}
#endif
+void cleanup_crypt()
+{
+#ifndef USE_OPENSSL
+ gnutls_global_deinit();
+#endif
+}
+
#include "anylike_lua_bytecode.h"
#define LUA_MAIN_LOOP_FUNC "main_loop"
@@ -234,10 +235,10 @@ int main(int argc, char* argv[])
exit(-1);
}
-#ifndef USE_SSL_CRYPTO
- ret = init_libgcrypt();
+#ifndef USE_OPENSSL
+ ret = init_gnutls();
if(ret) {
- log_printf(ERROR, "error on libgcrpyt initialization, exitting");
+ log_printf(ERROR, "error on gnutls initialization, exitting");
options_clear(&opt);
log_close();
exit(ret);
@@ -254,12 +255,14 @@ int main(int argc, char* argv[])
if(opt.chroot_dir_)
if(do_chroot(opt.chroot_dir_)) {
+ cleanup_crypt();
options_clear(&opt);
log_close();
exit(-1);
}
if(opt.username_)
if(priv_drop(&priv)) {
+ cleanup_crypt();
options_clear(&opt);
log_close();
exit(-1);
@@ -279,6 +282,7 @@ int main(int argc, char* argv[])
ret = main_loop(&opt);
+ cleanup_crypt();
options_clear(&opt);
if(!ret)
diff --git a/src/configure b/src/configure
index ab40134..f15d502 100755
--- a/src/configure
+++ b/src/configure
@@ -29,7 +29,7 @@ EBUILD_COMPAT=0
CFLAGS='-g -O2'
LDFLAGS='-g -Wall -O2 -ldl -lm'
-CRYPTO_LIB='gcrypt'
+CRYPTO_LIB='gnutls'
LUA_DIR=''
LUA=''
LUAC=''
@@ -52,7 +52,7 @@ print_usage() {
echo " --no-manpage dont't install manpage"
echo " --examplesdir=<DIR> the path to the examples files (default: $PREFIX/share/examples)"
echo " --no-examples dont't install example files"
- echo " --use-ssl-crypto use ssl crypto library instead of libgcrypt"
+ echo " --use-openssl use openssl instead of gnutls"
echo " --with-lua=<DIR> use this lua tree instead of system default"
}
@@ -83,8 +83,8 @@ do
--no-examples)
INSTALLEXAMPLES=0
;;
- --use-ssl-crypto)
- CRYPTO_LIB='ssl'
+ --use-openssl)
+ CRYPTO_LIB='openssl'
;;
--with-lua=*)
LUA_DIR=${arg#--with-lua=}
@@ -128,14 +128,14 @@ esac
case $CRYPTO_LIB in
- gcrypt)
- LDFLAGS=$LDFLAGS' -lgcrypt'
- echo "using libgcrypt library"
+ gnutls)
+ LDFLAGS=$LDFLAGS' -lgnutls'
+ echo "using gnutls"
;;
- ssl)
- CFLAGS=$CFLAGS' -DUSE_SSL_CRYPTO'
- LDFLAGS=$LDFLAGS' -lcrypto'
- echo "using ssl crypto library"
+ openssl)
+ CFLAGS=$CFLAGS' -DUSE_OPENSSL'
+ LDFLAGS=$LDFLAGS' -lssl'
+ echo "using openssl"
;;
esac