X-Git-Url: https://git.syn-net.org/debian/?a=blobdiff_plain;f=src%2Fcryptinit.hpp;h=64c57b4d276c61ca072c55554c443b0fa4d114de;hb=99099a6ccd03e2917bf29f8905e376c20033252a;hp=c171c150e6a3145156b578f1290fd7d4a5f2a320;hpb=f9ad69dfae6bcec427652b0c4230603e465bd544;p=anytun.git diff --git a/src/cryptinit.hpp b/src/cryptinit.hpp index c171c15..64c57b4 100644 --- a/src/cryptinit.hpp +++ b/src/cryptinit.hpp @@ -11,7 +11,7 @@ * tunneling and relaying of packets of any protocol. * * - * Copyright (C) 2007-2009 Othmar Gsenger, Erwin Nindl, + * Copyright (C) 2007-2009 Othmar Gsenger, Erwin Nindl, * Christian Pointner * * This file is part of Anytun. @@ -38,68 +38,64 @@ #include // boost thread callbacks for libgcrypt -#if defined(BOOST_HAS_PTHREADS) - -static int boost_mutex_init(void **priv) +static int boost_mutex_init(void** priv) { - boost::mutex *lock = new boost::mutex(); - if (!lock) + boost::mutex* lock = new boost::mutex(); + if(!lock) { return ENOMEM; + } *priv = lock; return 0; } -static int boost_mutex_destroy(void **lock) +static int boost_mutex_destroy(void** lock) { delete reinterpret_cast(*lock); return 0; } -static int boost_mutex_lock(void **lock) +static int boost_mutex_lock(void** lock) { reinterpret_cast(*lock)->lock(); return 0; } -static int boost_mutex_unlock(void **lock) +static int boost_mutex_unlock(void** lock) { reinterpret_cast(*lock)->unlock(); return 0; } -static struct gcry_thread_cbs gcry_threads_boost = -{ GCRY_THREAD_OPTION_USER, NULL, +static struct gcry_thread_cbs gcry_threads_boost = { + GCRY_THREAD_OPTION_USER, NULL, boost_mutex_init, boost_mutex_destroy, - boost_mutex_lock, boost_mutex_unlock }; -#else -#error this libgcrypt thread callbacks only work with pthreads -#endif - + boost_mutex_lock, boost_mutex_unlock +}; #define MIN_GCRYPT_VERSION "1.2.0" bool initLibGCrypt() { - // make libgcrypt thread safe + // make libgcrypt thread safe // this must be called before any other libgcrypt call - gcry_control( GCRYCTL_SET_THREAD_CBS, &gcry_threads_boost ); + gcry_control(GCRYCTL_SET_THREAD_CBS, &gcry_threads_boost); // this must be called right after the GCRYCTL_SET_THREAD_CBS command // no other function must be called till now - if( !gcry_check_version( MIN_GCRYPT_VERSION ) ) { + if(!gcry_check_version(MIN_GCRYPT_VERSION)) { std::cout << "initLibGCrypt: Invalid Version of libgcrypt, should be >= " << MIN_GCRYPT_VERSION << std::endl; return false; } - gcry_error_t err = gcry_control (GCRYCTL_DISABLE_SECMEM, 0); - if( err ) { + gcry_error_t err = gcry_control(GCRYCTL_DISABLE_SECMEM, 0); + if(err) { std::cout << "initLibGCrypt: Failed to disable secure memory: " << AnytunGpgError(err) << std::endl; return false; } // Tell Libgcrypt that initialization has completed. err = gcry_control(GCRYCTL_INITIALIZATION_FINISHED); - if( err ) { + if(err) { std::cout << "initLibGCrypt: Failed to finish initialization: " << AnytunGpgError(err) << std::endl; return false; } @@ -110,4 +106,17 @@ bool initLibGCrypt() #endif #endif +bool initCrypto() +{ +#ifndef NO_CRYPT +#ifndef USE_SSL_CRYPTO + return initLibGCrypt(); +#else + return true; +#endif +#else + return true; +#endif +} + #endif