summaryrefslogtreecommitdiff
path: root/src/Platform.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-07-30 17:36:39 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-07-30 17:36:39 +0900
commitafdbda8f105d2c096fb054b82f8a390fe20437dc (patch)
tree872dda36f5a7a3aff4412fbcacf42874bc3b94e3 /src/Platform.cc
parent70eeebfae9049ecd0f4c26a2d7bde8822895c14b (diff)
Initialize libgcrypt.
We relied initialization of libgcrypt on gnutls_global_init(), but recent change in gnutls, which changes default crypto backend from libgcrypt to libnettle, leaves libgcrypt uninitialized if it uses libnettle as backend(and this is likely because libnettle is chosen by default). To fix this issue, we simply initialize libgcrypt on our own.
Diffstat (limited to 'src/Platform.cc')
-rw-r--r--src/Platform.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/Platform.cc b/src/Platform.cc
index d254e4ce..b0e315a3 100644
--- a/src/Platform.cc
+++ b/src/Platform.cc
@@ -58,6 +58,9 @@
# include <openssl/err.h>
# include <openssl/ssl.h>
#endif // HAVE_OPENSSL
+#ifdef HAVE_LIBGCRYPT
+# include <gcrypt.h>
+#endif // HAVE_LIBGCRYPT
#ifdef HAVE_LIBGNUTLS
# include <gnutls/gnutls.h>
#endif // HAVE_LIBGNUTLS
@@ -103,6 +106,13 @@ bool Platform::setUp()
SSL_load_error_strings();
SSL_library_init();
#endif // HAVE_OPENSSL
+#ifdef HAVE_LIBGCRYPT
+ if(!gcry_check_version(GCRYPT_VERSION)) {
+ throw DL_ABORT_EX("gcry_check_version() failed.");
+ }
+ gcry_control(GCRYCTL_DISABLE_SECMEM, 0);
+ gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0);
+#endif // HAVE_LIBGCRYPT
#ifdef HAVE_LIBGNUTLS
{
int r = gnutls_global_init();