Merge of stuff from main trunk, all conflicts resolved, and addition
of dynamic lock support in the nCipher code.
This commit is contained in:
parent
b215f70a0e
commit
d8c4d0e819
4 changed files with 109 additions and 26 deletions
|
@ -123,7 +123,7 @@ static int (MS_FAR *add_lock_callback)(int *pointer,int amount,
|
|||
static unsigned long (MS_FAR *id_callback)(void)=NULL;
|
||||
static struct CRYPTO_dynlock_value *(MS_FAR *dynlock_create_callback)
|
||||
(const char *file,int line)=NULL;
|
||||
static void (MS_FAR *dynlock_locking_callback)(int mode,
|
||||
static void (MS_FAR *dynlock_lock_callback)(int mode,
|
||||
struct CRYPTO_dynlock_value *l, const char *file,int line)=NULL;
|
||||
static void (MS_FAR *dynlock_destroy_callback)(struct CRYPTO_dynlock_value *l,
|
||||
const char *file,int line)=NULL;
|
||||
|
@ -200,7 +200,11 @@ int CRYPTO_get_new_dynlockid(void)
|
|||
}
|
||||
|
||||
CRYPTO_w_lock(CRYPTO_LOCK_DYNLOCK);
|
||||
i=sk_CRYPTO_dynlock_push(dyn_locks,pointer);
|
||||
/* First, try to find an existing empty slot */
|
||||
i=sk_CRYPTO_dynlock_find(dyn_locks,NULL);
|
||||
/* If there was none, push, thereby creating a new one */
|
||||
if (i == -1)
|
||||
i=sk_CRYPTO_dynlock_push(dyn_locks,pointer);
|
||||
CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK);
|
||||
|
||||
if (!i)
|
||||
|
@ -273,16 +277,47 @@ struct CRYPTO_dynlock_value *CRYPTO_get_dynlock_value(int i)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
void (*CRYPTO_get_locking_callback(void))(int mode,int type,const char *file,
|
||||
int line)
|
||||
struct CRYPTO_dynlock_value *(*CRYPTO_get_dynlock_create_callback(void))
|
||||
(const char *file,int line)
|
||||
{
|
||||
return(locking_callback);
|
||||
return(dynlock_create_callback);
|
||||
}
|
||||
|
||||
void (*CRYPTO_get_dynlock_lock_callback(void))(int mode,
|
||||
struct CRYPTO_dynlock_value *l, const char *file,int line)
|
||||
{
|
||||
return(dynlock_locking_callback);
|
||||
return(dynlock_lock_callback);
|
||||
}
|
||||
|
||||
void (*CRYPTO_get_dynlock_destroy_callback(void))
|
||||
(struct CRYPTO_dynlock_value *l, const char *file,int line)
|
||||
{
|
||||
return(dynlock_destroy_callback);
|
||||
}
|
||||
|
||||
void CRYPTO_set_dynlock_create_callback(struct CRYPTO_dynlock_value *(*func)
|
||||
(const char *file, int line))
|
||||
{
|
||||
dynlock_create_callback=func;
|
||||
}
|
||||
|
||||
void CRYPTO_set_dynlock_lock_callback(void (*func)(int mode,
|
||||
struct CRYPTO_dynlock_value *l, const char *file, int line))
|
||||
{
|
||||
dynlock_lock_callback=func;
|
||||
}
|
||||
|
||||
void CRYPTO_set_dynlock_destroy_callback(void (*func)
|
||||
(struct CRYPTO_dynlock_value *l, const char *file, int line))
|
||||
{
|
||||
dynlock_destroy_callback=func;
|
||||
}
|
||||
|
||||
|
||||
void (*CRYPTO_get_locking_callback(void))(int mode,int type,const char *file,
|
||||
int line)
|
||||
{
|
||||
return(locking_callback);
|
||||
}
|
||||
|
||||
int (*CRYPTO_get_add_lock_callback(void))(int *num,int mount,int type,
|
||||
|
@ -297,12 +332,6 @@ void CRYPTO_set_locking_callback(void (*func)(int mode,int type,
|
|||
locking_callback=func;
|
||||
}
|
||||
|
||||
void CRYPTO_set_dynlock_locking_callback(void (*func)(int mode,
|
||||
struct CRYPTO_dynlock_value *l, const char *file, int line))
|
||||
{
|
||||
dynlock_locking_callback=func;
|
||||
}
|
||||
|
||||
void CRYPTO_set_add_lock_callback(int (*func)(int *num,int mount,int type,
|
||||
const char *file,int line))
|
||||
{
|
||||
|
@ -373,7 +402,7 @@ void CRYPTO_lock(int mode, int type, const char *file, int line)
|
|||
|
||||
if (pointer)
|
||||
{
|
||||
dynlock_locking_callback(mode, pointer, file, line);
|
||||
dynlock_lock_callback(mode, pointer, file, line);
|
||||
}
|
||||
|
||||
CRYPTO_destroy_dynlockid(i);
|
||||
|
|
|
@ -312,17 +312,16 @@ unsigned long CRYPTO_thread_id(void);
|
|||
const char *CRYPTO_get_lock_name(int type);
|
||||
int CRYPTO_add_lock(int *pointer,int amount,int type, const char *file,
|
||||
int line);
|
||||
void CRYPTO_set_dynlock_create_callback(struct CRYPTO_dynlock_value *(*dyn_create_function)
|
||||
(char *file, int line));
|
||||
void CRYPTO_set_dynlock_lock_callback(void (*dyn_lock_function)
|
||||
(int mode, struct CRYPTO_dynlock_value *l,
|
||||
const char *file, int line));
|
||||
void CRYPTO_set_dynlock_destroy_callback(void (*dyn_destroy_function)
|
||||
(struct CRYPTO_dynlock_value *l, const char *file, int line));
|
||||
void CRYPTO_set_dynlock_size(int dynlock_size);
|
||||
|
||||
int CRYPTO_get_new_dynlockid(void);
|
||||
void CRYPTO_destroy_dynlockid(int i);
|
||||
struct CRYPTO_dynlock_value *CRYPTO_get_dynlock_value(int i);
|
||||
void CRYPTO_set_dynlock_create_callback(struct CRYPTO_dynlock_value *(*dyn_create_function)(const char *file, int line));
|
||||
void CRYPTO_set_dynlock_lock_callback(void (*dyn_lock_function)(int mode, struct CRYPTO_dynlock_value *l, const char *file, int line));
|
||||
void CRYPTO_set_dynlock_destroy_callback(void (*dyn_destroy_function)(struct CRYPTO_dynlock_value *l, const char *file, int line));
|
||||
struct CRYPTO_dynlock_value *(*CRYPTO_get_dynlock_create_callback(void))(const char *file,int line);
|
||||
void (*CRYPTO_get_dynlock_lock_callback(void))(int mode, struct CRYPTO_dynlock_value *l, const char *file,int line);
|
||||
void (*CRYPTO_get_dynlock_destroy_callback(void))(struct CRYPTO_dynlock_value *l, const char *file,int line);
|
||||
|
||||
/* CRYPTO_set_mem_functions includes CRYPTO_set_locked_mem_functions --
|
||||
* call the latter last if you need different functions */
|
||||
|
|
|
@ -17,14 +17,15 @@ CRYPTO_set_locking_callback, CRYPTO_set_id_callback - OpenSSL thread support
|
|||
|
||||
|
||||
/* struct CRYPTO_dynlock_value needs to be defined by the user */
|
||||
typedef struct CRYPTO_dynlock_value CRYPTO_dynlock;
|
||||
struct CRYPTO_dynlock_value;
|
||||
|
||||
void CRYPTO_set_dynlock_create_callback(CRYPTO_dynlock *(*dyn_create_function)
|
||||
(char *file, int line));
|
||||
void CRYPTO_set_dynlock_create_callback(struct CRYPTO_dynlock_value *
|
||||
(*dyn_create_function)(char *file, int line));
|
||||
void CRYPTO_set_dynlock_lock_callback(void (*dyn_lock_function)
|
||||
(int mode, CRYPTO_dynlock *l, const char *file, int line));
|
||||
(int mode, struct CRYPTO_dynlock_value *l,
|
||||
const char *file, int line));
|
||||
void CRYPTO_set_dynlock_destroy_callback(void (*dyn_destroy_function)
|
||||
(CRYPTO_dynlock *l, const char *file, int line));
|
||||
(struct CRYPTO_dynlock_value *l, const char *file, int line));
|
||||
|
||||
int CRYPTO_get_new_dynlockid(void);
|
||||
|
||||
|
@ -115,6 +116,9 @@ You can find out if OpenSSL was configured with thread support:
|
|||
// no thread support
|
||||
#endif
|
||||
|
||||
Also, dynamic locks are currently not used internally by OpenSSL, but
|
||||
may do so in the future.
|
||||
|
||||
=head1 EXAMPLES
|
||||
|
||||
B<crypto/threads/mttest.c> shows examples of the callback functions on
|
||||
|
|
|
@ -1838,3 +1838,54 @@ CRYPTO_destroy_dynlockid 2413
|
|||
CRYPTO_set_dynlock_size 2414
|
||||
CRYPTO_set_dynlock_create_callback 2415
|
||||
CRYPTO_set_dynlock_lock_callback 2416
|
||||
CRYPTO_get_dynlock_lock_callback 2417
|
||||
CRYPTO_get_dynlock_destroy_callback 2418
|
||||
CRYPTO_get_dynlock_value 2419
|
||||
CRYPTO_get_dynlock_create_callback 2420
|
||||
ERR_load_ENGINE_strings 2421
|
||||
ENGINE_set_DSA 2422
|
||||
ENGINE_get_default_RSA 2423
|
||||
ENGINE_get_BN_mod_exp 2424
|
||||
DSA_get_default_openssl_method 2425
|
||||
ENGINE_set_DH 2426
|
||||
ENGINE_set_default_BN_mod_exp_crt 2427
|
||||
ENGINE_init 2428
|
||||
DH_get_default_openssl_method 2429
|
||||
RSA_set_default_openssl_method 2430
|
||||
ENGINE_finish 2431
|
||||
ENGINE_get_DH 2432
|
||||
ENGINE_set_default_DSA 2433
|
||||
ENGINE_get_name 2434
|
||||
ENGINE_get_last 2435
|
||||
ENGINE_get_prev 2436
|
||||
ENGINE_get_default_DH 2437
|
||||
ENGINE_get_RSA 2438
|
||||
ENGINE_set_default 2439
|
||||
ENGINE_get_RAND 2440
|
||||
ENGINE_get_first 2441
|
||||
ENGINE_by_id 2442
|
||||
ENGINE_get_default_BN_mod_exp_crt 2443
|
||||
RSA_get_default_openssl_method 2444
|
||||
ENGINE_set_RSA 2445
|
||||
ENGINE_set_default_RAND 2446
|
||||
ENGINE_set_BN_mod_exp 2447
|
||||
ENGINE_remove 2448
|
||||
ENGINE_free 2449
|
||||
ENGINE_get_BN_mod_exp_crt 2450
|
||||
ENGINE_get_next 2451
|
||||
ENGINE_set_name 2452
|
||||
ENGINE_get_default_DSA 2453
|
||||
ENGINE_set_default_BN_mod_exp 2454
|
||||
ENGINE_set_default_RSA 2455
|
||||
ENGINE_get_default_RAND 2456
|
||||
ENGINE_get_default_BN_mod_exp 2457
|
||||
ENGINE_set_RAND 2458
|
||||
ENGINE_set_id 2459
|
||||
ENGINE_set_BN_mod_exp_crt 2460
|
||||
ENGINE_set_default_DH 2461
|
||||
ENGINE_new 2462
|
||||
ENGINE_get_id 2463
|
||||
DSA_set_default_openssl_method 2464
|
||||
ENGINE_add 2465
|
||||
DH_set_default_openssl_method 2466
|
||||
ENGINE_get_DSA 2467
|
||||
|
|
Loading…
Reference in a new issue