Lines 416-421
typedef struct srpsrvparm_st {
|
Link Here
|
---|
|
416 |
static int MS_CALLBACK ssl_srp_server_param_cb(SSL *s, int *ad, void *arg) |
416 |
static int MS_CALLBACK ssl_srp_server_param_cb(SSL *s, int *ad, void *arg) |
417 |
{ |
417 |
{ |
418 |
srpsrvparm *p = (srpsrvparm *) arg; |
418 |
srpsrvparm *p = (srpsrvparm *) arg; |
|
|
419 |
int ret = SSL3_AL_FATAL; |
420 |
|
419 |
if (p->login == NULL && p->user == NULL) { |
421 |
if (p->login == NULL && p->user == NULL) { |
420 |
p->login = SSL_get_srp_username(s); |
422 |
p->login = SSL_get_srp_username(s); |
421 |
BIO_printf(bio_err, "SRP username = \"%s\"\n", p->login); |
423 |
BIO_printf(bio_err, "SRP username = \"%s\"\n", p->login); |
Lines 424-444
static int MS_CALLBACK ssl_srp_server_param_cb(SSL *s, int *ad, void *arg)
|
Link Here
|
---|
|
424 |
|
426 |
|
425 |
if (p->user == NULL) { |
427 |
if (p->user == NULL) { |
426 |
BIO_printf(bio_err, "User %s doesn't exist\n", p->login); |
428 |
BIO_printf(bio_err, "User %s doesn't exist\n", p->login); |
427 |
return SSL3_AL_FATAL; |
429 |
goto err; |
428 |
} |
430 |
} |
|
|
431 |
|
429 |
if (SSL_set_srp_server_param |
432 |
if (SSL_set_srp_server_param |
430 |
(s, p->user->N, p->user->g, p->user->s, p->user->v, |
433 |
(s, p->user->N, p->user->g, p->user->s, p->user->v, |
431 |
p->user->info) < 0) { |
434 |
p->user->info) < 0) { |
432 |
*ad = SSL_AD_INTERNAL_ERROR; |
435 |
*ad = SSL_AD_INTERNAL_ERROR; |
433 |
return SSL3_AL_FATAL; |
436 |
goto err; |
434 |
} |
437 |
} |
435 |
BIO_printf(bio_err, |
438 |
BIO_printf(bio_err, |
436 |
"SRP parameters set: username = \"%s\" info=\"%s\" \n", |
439 |
"SRP parameters set: username = \"%s\" info=\"%s\" \n", |
437 |
p->login, p->user->info); |
440 |
p->login, p->user->info); |
438 |
/* need to check whether there are memory leaks */ |
441 |
ret = SSL_ERROR_NONE; |
|
|
442 |
|
443 |
err: |
444 |
SRP_user_pwd_free(p->user); |
439 |
p->user = NULL; |
445 |
p->user = NULL; |
440 |
p->login = NULL; |
446 |
p->login = NULL; |
441 |
return SSL_ERROR_NONE; |
447 |
return ret; |
442 |
} |
448 |
} |
443 |
|
449 |
|
444 |
#endif |
450 |
#endif |
Lines 2244-2252
static int sv_body(char *hostname, int s, unsigned char *context)
|
Link Here
|
---|
|
2244 |
#ifndef OPENSSL_NO_SRP |
2250 |
#ifndef OPENSSL_NO_SRP |
2245 |
while (SSL_get_error(con, k) == SSL_ERROR_WANT_X509_LOOKUP) { |
2251 |
while (SSL_get_error(con, k) == SSL_ERROR_WANT_X509_LOOKUP) { |
2246 |
BIO_printf(bio_s_out, "LOOKUP renego during write\n"); |
2252 |
BIO_printf(bio_s_out, "LOOKUP renego during write\n"); |
|
|
2253 |
SRP_user_pwd_free(srp_callback_parm.user); |
2247 |
srp_callback_parm.user = |
2254 |
srp_callback_parm.user = |
2248 |
SRP_VBASE_get_by_user(srp_callback_parm.vb, |
2255 |
SRP_VBASE_get1_by_user(srp_callback_parm.vb, |
2249 |
srp_callback_parm.login); |
2256 |
srp_callback_parm.login); |
2250 |
if (srp_callback_parm.user) |
2257 |
if (srp_callback_parm.user) |
2251 |
BIO_printf(bio_s_out, "LOOKUP done %s\n", |
2258 |
BIO_printf(bio_s_out, "LOOKUP done %s\n", |
2252 |
srp_callback_parm.user->info); |
2259 |
srp_callback_parm.user->info); |
Lines 2300-2308
static int sv_body(char *hostname, int s, unsigned char *context)
|
Link Here
|
---|
|
2300 |
#ifndef OPENSSL_NO_SRP |
2307 |
#ifndef OPENSSL_NO_SRP |
2301 |
while (SSL_get_error(con, i) == SSL_ERROR_WANT_X509_LOOKUP) { |
2308 |
while (SSL_get_error(con, i) == SSL_ERROR_WANT_X509_LOOKUP) { |
2302 |
BIO_printf(bio_s_out, "LOOKUP renego during read\n"); |
2309 |
BIO_printf(bio_s_out, "LOOKUP renego during read\n"); |
|
|
2310 |
SRP_user_pwd_free(srp_callback_parm.user); |
2303 |
srp_callback_parm.user = |
2311 |
srp_callback_parm.user = |
2304 |
SRP_VBASE_get_by_user(srp_callback_parm.vb, |
2312 |
SRP_VBASE_get1_by_user(srp_callback_parm.vb, |
2305 |
srp_callback_parm.login); |
2313 |
srp_callback_parm.login); |
2306 |
if (srp_callback_parm.user) |
2314 |
if (srp_callback_parm.user) |
2307 |
BIO_printf(bio_s_out, "LOOKUP done %s\n", |
2315 |
BIO_printf(bio_s_out, "LOOKUP done %s\n", |
2308 |
srp_callback_parm.user->info); |
2316 |
srp_callback_parm.user->info); |
Lines 2387-2395
static int init_ssl_connection(SSL *con)
|
Link Here
|
---|
|
2387 |
while (i <= 0 && SSL_get_error(con, i) == SSL_ERROR_WANT_X509_LOOKUP) { |
2395 |
while (i <= 0 && SSL_get_error(con, i) == SSL_ERROR_WANT_X509_LOOKUP) { |
2388 |
BIO_printf(bio_s_out, "LOOKUP during accept %s\n", |
2396 |
BIO_printf(bio_s_out, "LOOKUP during accept %s\n", |
2389 |
srp_callback_parm.login); |
2397 |
srp_callback_parm.login); |
|
|
2398 |
SRP_user_pwd_free(srp_callback_parm.user); |
2390 |
srp_callback_parm.user = |
2399 |
srp_callback_parm.user = |
2391 |
SRP_VBASE_get_by_user(srp_callback_parm.vb, |
2400 |
SRP_VBASE_get1_by_user(srp_callback_parm.vb, |
2392 |
srp_callback_parm.login); |
2401 |
srp_callback_parm.login); |
2393 |
if (srp_callback_parm.user) |
2402 |
if (srp_callback_parm.user) |
2394 |
BIO_printf(bio_s_out, "LOOKUP done %s\n", |
2403 |
BIO_printf(bio_s_out, "LOOKUP done %s\n", |
2395 |
srp_callback_parm.user->info); |
2404 |
srp_callback_parm.user->info); |
Lines 2616-2624
static int www_body(char *hostname, int s, unsigned char *context)
|
Link Here
|
---|
|
2616 |
&& SSL_get_error(con, i) == SSL_ERROR_WANT_X509_LOOKUP) { |
2625 |
&& SSL_get_error(con, i) == SSL_ERROR_WANT_X509_LOOKUP) { |
2617 |
BIO_printf(bio_s_out, "LOOKUP during accept %s\n", |
2626 |
BIO_printf(bio_s_out, "LOOKUP during accept %s\n", |
2618 |
srp_callback_parm.login); |
2627 |
srp_callback_parm.login); |
|
|
2628 |
SRP_user_pwd_free(srp_callback_parm.user); |
2619 |
srp_callback_parm.user = |
2629 |
srp_callback_parm.user = |
2620 |
SRP_VBASE_get_by_user(srp_callback_parm.vb, |
2630 |
SRP_VBASE_get1_by_user(srp_callback_parm.vb, |
2621 |
srp_callback_parm.login); |
2631 |
srp_callback_parm.login); |
2622 |
if (srp_callback_parm.user) |
2632 |
if (srp_callback_parm.user) |
2623 |
BIO_printf(bio_s_out, "LOOKUP done %s\n", |
2633 |
BIO_printf(bio_s_out, "LOOKUP done %s\n", |
2624 |
srp_callback_parm.user->info); |
2634 |
srp_callback_parm.user->info); |
Lines 2658-2666
static int www_body(char *hostname, int s, unsigned char *context)
|
Link Here
|
---|
|
2658 |
if (BIO_should_io_special(io) |
2668 |
if (BIO_should_io_special(io) |
2659 |
&& BIO_get_retry_reason(io) == BIO_RR_SSL_X509_LOOKUP) { |
2669 |
&& BIO_get_retry_reason(io) == BIO_RR_SSL_X509_LOOKUP) { |
2660 |
BIO_printf(bio_s_out, "LOOKUP renego during read\n"); |
2670 |
BIO_printf(bio_s_out, "LOOKUP renego during read\n"); |
|
|
2671 |
SRP_user_pwd_free(srp_callback_parm.user); |
2661 |
srp_callback_parm.user = |
2672 |
srp_callback_parm.user = |
2662 |
SRP_VBASE_get_by_user(srp_callback_parm.vb, |
2673 |
SRP_VBASE_get1_by_user(srp_callback_parm.vb, |
2663 |
srp_callback_parm.login); |
2674 |
srp_callback_parm.login); |
2664 |
if (srp_callback_parm.user) |
2675 |
if (srp_callback_parm.user) |
2665 |
BIO_printf(bio_s_out, "LOOKUP done %s\n", |
2676 |
BIO_printf(bio_s_out, "LOOKUP done %s\n", |
2666 |
srp_callback_parm.user->info); |
2677 |
srp_callback_parm.user->info); |