|
|
6bdd9c2 |
diff -up ccrtp-2.0.5/src/ccrtp/crypto/gcrypt/InitializeGcrypt.cpp.threadcbs ccrtp-2.0.5/src/ccrtp/crypto/gcrypt/InitializeGcrypt.cpp
|
|
|
6bdd9c2 |
--- ccrtp-2.0.5/src/ccrtp/crypto/gcrypt/InitializeGcrypt.cpp.threadcbs 2012-06-18 17:19:04.000000000 +0200
|
|
|
6bdd9c2 |
+++ ccrtp-2.0.5/src/ccrtp/crypto/gcrypt/InitializeGcrypt.cpp 2014-04-22 21:28:21.857233486 +0200
|
|
|
808e73e |
@@ -16,67 +16,18 @@
|
|
|
6bdd9c2 |
*/
|
|
|
6bdd9c2 |
|
|
|
6bdd9c2 |
#include <stdio.h>
|
|
|
6bdd9c2 |
-
|
|
|
6bdd9c2 |
#include <malloc.h>
|
|
|
6bdd9c2 |
-#include <pthread.h>
|
|
|
6bdd9c2 |
#include <errno.h>
|
|
|
808e73e |
#include <gcrypt.h>
|
|
|
6bdd9c2 |
-
|
|
|
6bdd9c2 |
-/*
|
|
|
6bdd9c2 |
- * The following macro was copied from gcrypt.h and modified to explicitly
|
|
|
6bdd9c2 |
- * cast the pointer types to keep the compiler happy.
|
|
|
6bdd9c2 |
- */
|
|
|
6bdd9c2 |
-#define GCRY_THREAD_OPTION_PTHREAD_CPP_IMPL \
|
|
|
6bdd9c2 |
-static int gcry_pthread_mutex_init (void **priv) \
|
|
|
6bdd9c2 |
-{ \
|
|
|
6bdd9c2 |
- int err = 0; \
|
|
|
6bdd9c2 |
- pthread_mutex_t *lock = (pthread_mutex_t *)malloc (sizeof (pthread_mutex_t)); \
|
|
|
6bdd9c2 |
- \
|
|
|
6bdd9c2 |
- if (!lock) \
|
|
|
6bdd9c2 |
- err = ENOMEM; \
|
|
|
6bdd9c2 |
- if (!err) \
|
|
|
6bdd9c2 |
-{ \
|
|
|
6bdd9c2 |
- err = pthread_mutex_init (lock, NULL); \
|
|
|
6bdd9c2 |
- if (err) \
|
|
|
6bdd9c2 |
- free (lock); \
|
|
|
6bdd9c2 |
- else \
|
|
|
6bdd9c2 |
- *priv = lock; \
|
|
|
6bdd9c2 |
-} \
|
|
|
6bdd9c2 |
- return err; \
|
|
|
6bdd9c2 |
-} \
|
|
|
6bdd9c2 |
-static int gcry_pthread_mutex_destroy (void **lock) \
|
|
|
6bdd9c2 |
-{ int err = pthread_mutex_destroy ((pthread_mutex_t *)*lock); free (*lock); return err; } \
|
|
|
6bdd9c2 |
-static int gcry_pthread_mutex_lock (void **lock) \
|
|
|
6bdd9c2 |
-{ return pthread_mutex_lock ((pthread_mutex_t *)*lock); } \
|
|
|
6bdd9c2 |
-static int gcry_pthread_mutex_unlock (void **lock) \
|
|
|
6bdd9c2 |
-{ return pthread_mutex_unlock ((pthread_mutex_t *)*lock); } \
|
|
|
6bdd9c2 |
- \
|
|
|
6bdd9c2 |
-static struct gcry_thread_cbs gcry_threads_pthread = \
|
|
|
6bdd9c2 |
-{ GCRY_THREAD_OPTION_PTHREAD, NULL, \
|
|
|
6bdd9c2 |
- gcry_pthread_mutex_init, gcry_pthread_mutex_destroy, \
|
|
|
6bdd9c2 |
- gcry_pthread_mutex_lock, gcry_pthread_mutex_unlock }
|
|
|
6bdd9c2 |
-
|
|
|
6bdd9c2 |
-/** Implement the locking callback functions for libgcrypt.
|
|
|
6bdd9c2 |
- *
|
|
|
6bdd9c2 |
- */
|
|
|
6bdd9c2 |
|
|
|
6bdd9c2 |
static int initialized = 0;
|
|
|
6bdd9c2 |
|
|
|
6bdd9c2 |
-#ifdef __cplusplus
|
|
|
6bdd9c2 |
-extern "C" {
|
|
|
6bdd9c2 |
-#endif
|
|
|
6bdd9c2 |
-GCRY_THREAD_OPTION_PTHREAD_CPP_IMPL;
|
|
|
6bdd9c2 |
-#ifdef __cplusplus
|
|
|
6bdd9c2 |
-}
|
|
|
6bdd9c2 |
-#endif
|
|
|
6bdd9c2 |
-
|
|
|
6bdd9c2 |
int initializeGcrypt ()
|
|
|
6bdd9c2 |
{
|
|
|
6bdd9c2 |
|
|
|
6bdd9c2 |
if (initialized) {
|
|
|
6bdd9c2 |
return 1;
|
|
|
6bdd9c2 |
}
|
|
|
6bdd9c2 |
- gcry_control(GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);
|
|
|
6bdd9c2 |
gcry_check_version(NULL);
|
|
|
6bdd9c2 |
gcry_control(GCRYCTL_DISABLE_SECMEM);
|
|
|
6bdd9c2 |
initialized = 1;
|