本文整理汇总了C++中CRYPTO_num_locks函数的典型用法代码示例。如果您正苦于以下问题:C++ CRYPTO_num_locks函数的具体用法?C++ CRYPTO_num_locks怎么用?C++ CRYPTO_num_locks使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了CRYPTO_num_locks函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: thread_cleanup
void thread_cleanup ()
{
#ifndef HAVE_CLIENT
if (!mutex_buf) return;
CRYPTO_set_id_callback (NULL);
CRYPTO_set_locking_callback (NULL);
int i;
for (i = 0; i < CRYPTO_num_locks (); i++)
MUTEX_CLEANUP (mutex_buf[i]);
free (mutex_buf);
mutex_buf = NULL;
#endif
}
示例2: init_openssl
static void
init_openssl(void)
{
int i;
openssl_mutex_array = g_new0(GMutex *, CRYPTO_num_locks());
for (i=0; i<CRYPTO_num_locks(); i++) {
openssl_mutex_array[i] = g_mutex_new();
}
CRYPTO_set_locking_callback(openssl_lock_callback);
}
示例3: init_openssl_locking
static void init_openssl_locking()
{
gint i;
// initialize OpenSSL locking for multi-threaded operation
openssl_mutexes = g_new(GMutex*, CRYPTO_num_locks());
for (i = 0; i < CRYPTO_num_locks(); i++)
openssl_mutexes[i] = g_mutex_new();
SSL_library_init();
CRYPTO_set_id_callback(openssl_thread_id_callback);
CRYPTO_set_locking_callback(openssl_locking_callback);
}
示例4: CWSecurityInitLib
CWBool CWSecurityInitLib() {
int i;
SSL_load_error_strings();
SSL_library_init();
/* setup mutexes for openssl internal locking */
CW_CREATE_ARRAY_ERR(mutexOpensslBuf,
CRYPTO_num_locks() * sizeof(CWThreadMutex),
CWThreadMutex,
return CWErrorRaise(CW_ERROR_OUT_OF_MEMORY,
"Cannot create openssl mutexes");)
示例5: guac_common_ssh_openssl_init_locks
/**
* Creates the given number of mutexes, such that OpenSSL will have at least
* this number of mutexes at its disposal.
*
* @param count
* The number of mutexes (locks) to create.
*/
static void guac_common_ssh_openssl_init_locks(int count) {
int i;
/* Allocate required number of locks */
guac_common_ssh_openssl_locks =
malloc(sizeof(pthread_mutex_t) * CRYPTO_num_locks());
/* Initialize each lock */
for (i=0; i < count; i++)
pthread_mutex_init(&(guac_common_ssh_openssl_locks[i]), NULL);
}
示例6: CRYPTO_num_locks
void utils::initialize_ssl_implementation(void) {
#if HAVE_OPENSSL
openssl_mutexes_size = CRYPTO_num_locks();
openssl_mutexes = new mutex[openssl_mutexes_size];
CRYPTO_set_id_callback(openssl_mth_id_function);
CRYPTO_set_locking_callback(openssl_mth_locking_function);
#endif
#if HAVE_GCRYPT
gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);
gnutls_global_init();
#endif
}
示例7: ff_openssl_init
void ff_openssl_init(void)
{
avpriv_lock_avformat();
if (!openssl_init) {
SSL_library_init();
SSL_load_error_strings();
#if HAVE_THREADS
if (!CRYPTO_get_locking_callback()) {
int i;
openssl_mutexes = av_malloc(sizeof(pthread_mutex_t) * CRYPTO_num_locks());
for (i = 0; i < CRYPTO_num_locks(); i++)
pthread_mutex_init(&openssl_mutexes[i], NULL);
CRYPTO_set_locking_callback(openssl_lock);
#if !defined(WIN32) && OPENSSL_VERSION_NUMBER < 0x10000000
CRYPTO_set_id_callback(openssl_thread_id);
#endif
}
#endif
}
openssl_init++;
avpriv_unlock_avformat();
}
示例8: CRYPTO_thread_setup
void CRYPTO_thread_setup(void)
{
int i;
lock_cs = OPENSSL_malloc(CRYPTO_num_locks() * sizeof(pthread_mutex_t));
lock_count = OPENSSL_malloc(CRYPTO_num_locks() * sizeof(long));
if (!lock_cs || !lock_count) {
/* Nothing we can do about this...void function! */
if (lock_cs)
OPENSSL_free(lock_cs);
if (lock_count)
OPENSSL_free(lock_count);
return;
}
for (i = 0; i < CRYPTO_num_locks(); i++) {
lock_count[i] = 0;
pthread_mutex_init(&(lock_cs[i]), NULL);
}
CRYPTO_set_id_callback((unsigned long (*)())pthreads_thread_id);
CRYPTO_set_locking_callback((void (*)())pthreads_locking_callback);
}
示例9: _tmain
int _tmain(int argc, _TCHAR* argv[])
{
WSADATA wsaData = {0};
WSAStartup(MAKEWORD(2, 2), &wsaData);
SSLeay_add_all_algorithms();
pthread_t pid;
ERR_load_BIO_strings();
SSL_library_init();
SSL_load_error_strings();
SSL *ssl = NULL;
SSL_CTX *ctx = NULL;
//这里要注意是client
ctx = SSL_CTX_new(TLSv1_client_method());
if (ctx == NULL)
{
printf("ssl ctx new eer\n");
exit(-1);
}
transf_lock_cs = (pthread_mutex_t *)OPENSSL_malloc(CRYPTO_num_locks() * sizeof(pthread_mutex_t));
transf_lock_count = (long *)OPENSSL_malloc(CRYPTO_num_locks() * sizeof(long));
for (int i = 0; i < CRYPTO_num_locks(); i++)
{
transf_lock_count[i] = 0;
pthread_mutex_init(&(transf_lock_cs[i]), NULL);
}
CRYPTO_set_id_callback((unsigned long(*)())transf_pthreads_thread_id);
CRYPTO_set_locking_callback(transf_client_locking_callback);
pthread_create(&pid, NULL, tcp_forwardlistenthread, ctx);
pthread_join(pid, NULL);
system("pause");
getchar();
SSL_CTX_free(ctx);
WSACleanup();
return 0;
}
示例10: pthreads_locking_callback
void pthreads_locking_callback( int mode, int n,
const char *caller_file, int caller_line )
{
(void)caller_file;
(void)caller_line;
if(!crypto_locks)
{
VLOG(1) << "Allocating " << CRYPTO_num_locks() << " locks for OpenSSL";
crypto_locks = new pthread_mutex_t[ CRYPTO_num_locks() ];
for(int i=0; i<CRYPTO_num_locks(); ++i)
pthread_mutex_init( crypto_locks+i, 0 );
}
if(mode & CRYPTO_LOCK)
{
pthread_mutex_lock( crypto_locks + n );
} else
{
pthread_mutex_unlock( crypto_locks + n );
}
}
示例11: stop_ssl
/**
* Stop SSL support library
* @return TRUE, or FALSE if an error has occured.
*/
void stop_ssl() {
if (ssl_initialized) {
int i;
ssl_initialized = FALSE;
ERR_free_strings();
CRYPTO_set_id_callback(NULL);
CRYPTO_set_locking_callback(NULL);
for (i = 0; i < CRYPTO_num_locks(); i++)
assert(pthread_mutex_destroy(&ssl_mutex_table[i]) == 0);
FREE(ssl_mutex_table);
RAND_cleanup();
}
}
示例12: thread_cleanup
static void thread_cleanup(void)
{
int i;
CRYPTO_set_locking_callback(NULL);
for (i=0; i<CRYPTO_num_locks(); i++) {
pthread_mutex_destroy(&(lock_cs[i]));
}
OPENSSL_free(lock_cs);
OPENSSL_free(lock_count);
}
示例13: thread_cleanup
int thread_cleanup(void)
{
int i;
if (!mutex_buf)
return 0;
CRYPTO_set_id_callback(NULL);
CRYPTO_set_locking_callback(NULL);
for (i = 0; i < CRYPTO_num_locks(); i++)
MUTEX_CLEANUP(mutex_buf[i]);
free(mutex_buf);
mutex_buf = NULL;
return 1;
}
示例14: init_ssl
static void init_ssl(void)
{
#ifdef GIT_SSL
SSL_load_error_strings();
OpenSSL_add_ssl_algorithms();
/*
* Load SSLv{2,3} and TLSv1 so that we can talk with servers
* which use the SSL hellos, which are often used for
* compatibility. We then disable SSL so we only allow OpenSSL
* to speak TLSv1 to perform the encryption itself.
*/
git__ssl_ctx = SSL_CTX_new(SSLv23_method());
SSL_CTX_set_options(git__ssl_ctx,
SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3
/* Older OpenSSL and MacOS OpenSSL doesn't have this */
# ifdef SSL_OP_NO_COMPRESSION
| SSL_OP_NO_COMPRESSION
# endif
);
SSL_CTX_set_mode(git__ssl_ctx, SSL_MODE_AUTO_RETRY);
SSL_CTX_set_verify(git__ssl_ctx, SSL_VERIFY_NONE, NULL);
if (!SSL_CTX_set_default_verify_paths(git__ssl_ctx)) {
SSL_CTX_free(git__ssl_ctx);
git__ssl_ctx = NULL;
}
# ifdef GIT_THREADS
{
int num_locks, i;
num_locks = CRYPTO_num_locks();
openssl_locks = git__calloc(num_locks, sizeof(git_mutex));
if (openssl_locks == NULL) {
SSL_CTX_free(git__ssl_ctx);
git__ssl_ctx = NULL;
}
for (i = 0; i < num_locks; i++) {
if (git_mutex_init(&openssl_locks[i]) != 0) {
SSL_CTX_free(git__ssl_ctx);
git__ssl_ctx = NULL;
}
}
CRYPTO_set_locking_callback(openssl_locking_function);
}
git__on_shutdown(shutdown_ssl);
# endif
#endif
}
示例15: CRYPTO_thread_cleanup
void CRYPTO_thread_cleanup()
{ int i;
if (!mutex_buf)
return;
CRYPTO_set_id_callback(NULL);
CRYPTO_set_locking_callback(NULL);
CRYPTO_set_dynlock_create_callback(NULL);
CRYPTO_set_dynlock_lock_callback(NULL);
CRYPTO_set_dynlock_destroy_callback(NULL);
for (i = 0; i < CRYPTO_num_locks(); i++)
MUTEX_CLEANUP(mutex_buf[i]);
free(mutex_buf);
mutex_buf = NULL;
}