106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
-
-
+
+
+
+
+
+
-
-
|
* Based from /crypto/cryptlib.c of OpenSSL and NSOpenSSL.
*/
static Tcl_Mutex *locks = NULL;
static int locksCount = 0;
static Tcl_Mutex init_mx;
void CryptoThreadLockCallback(int mode, int n, const char *file, int line) {
void CryptoThreadLockCallback(
int mode,
int n,
TCL_UNUSED(const char *),
TCL_UNUSED(int))
{
if (mode & CRYPTO_LOCK) {
/* This debugging is turned off by default -- it's too noisy. */
/* dprintf("Called to lock (n=%i of %i)", n, locksCount); */
Tcl_MutexLock(&locks[n]);
} else {
/* dprintf("Called to unlock (n=%i of %i)", n, locksCount); */
Tcl_MutexUnlock(&locks[n]);
}
/* dprintf("Returning"); */
return;
file = file;
line = line;
}
unsigned long CryptoThreadIdCallback(void) {
unsigned long ret;
dprintf("Called");
|
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
|
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
|
-
+
|
return -1;
buf = buf;
size = size;
verify = verify;
}
#else
static int
PasswordCallback(char *buf, int size, int verify, void *udata)
PasswordCallback(char *buf, int size, TCL_UNUSED(int) /* verify */, void *udata)
{
State *statePtr = (State *) udata;
Tcl_Interp *interp = statePtr->interp;
Tcl_Obj *cmdPtr;
int result;
dprintf("Called");
|
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
|
457
458
459
460
461
462
463
464
465
466
467
468
469
470
|
-
|
if (result == TCL_OK) {
char *ret = (char *) Tcl_GetStringResult(interp);
strncpy(buf, ret, (size_t) size);
return (int)strlen(ret);
} else {
return -1;
}
verify = verify;
}
#endif
/*
*-------------------------------------------------------------------
*
* CiphersObjCmd -- list available ciphers
|