diff options
Diffstat (limited to 'src/lib/libssl/s3_lib.c')
| -rw-r--r-- | src/lib/libssl/s3_lib.c | 39 | 
1 files changed, 37 insertions, 2 deletions
diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c index 98eff97131..c7731b3cf4 100644 --- a/src/lib/libssl/s3_lib.c +++ b/src/lib/libssl/s3_lib.c  | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: s3_lib.c,v 1.91 2014/12/16 05:47:28 miod Exp $ */ | 1 | /* $OpenBSD: s3_lib.c,v 1.92 2015/02/06 08:30:23 jsing Exp $ */ | 
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 
| 3 | * All rights reserved. | 3 | * All rights reserved. | 
| 4 | * | 4 | * | 
| @@ -2519,7 +2519,42 @@ ssl3_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp)(void)) | |||
| 2519 | return (1); | 2519 | return (1); | 
| 2520 | } | 2520 | } | 
| 2521 | 2521 | ||
| 2522 | SSL_CIPHER *ssl3_choose_cipher(SSL *s, STACK_OF(SSL_CIPHER) *clnt, | 2522 | /* | 
| 2523 | * This function needs to check if the ciphers required are actually available. | ||
| 2524 | */ | ||
| 2525 | const SSL_CIPHER * | ||
| 2526 | ssl3_get_cipher_by_char(const unsigned char *p) | ||
| 2527 | { | ||
| 2528 | const SSL_CIPHER *cp; | ||
| 2529 | unsigned long id; | ||
| 2530 | SSL_CIPHER c; | ||
| 2531 | |||
| 2532 | id = 0x03000000L | ((unsigned long)p[0] << 8L) | (unsigned long)p[1]; | ||
| 2533 | c.id = id; | ||
| 2534 | cp = OBJ_bsearch_ssl_cipher_id(&c, ssl3_ciphers, SSL3_NUM_CIPHERS); | ||
| 2535 | if (cp == NULL || cp->valid == 0) | ||
| 2536 | return NULL; | ||
| 2537 | else | ||
| 2538 | return cp; | ||
| 2539 | } | ||
| 2540 | |||
| 2541 | int | ||
| 2542 | ssl3_put_cipher_by_char(const SSL_CIPHER *c, unsigned char *p) | ||
| 2543 | { | ||
| 2544 | long l; | ||
| 2545 | |||
| 2546 | if (p != NULL) { | ||
| 2547 | l = c->id; | ||
| 2548 | if ((l & 0xff000000) != 0x03000000) | ||
| 2549 | return (0); | ||
| 2550 | p[0] = ((unsigned char)(l >> 8L)) & 0xFF; | ||
| 2551 | p[1] = ((unsigned char)(l)) & 0xFF; | ||
| 2552 | } | ||
| 2553 | return (2); | ||
| 2554 | } | ||
| 2555 | |||
| 2556 | SSL_CIPHER * | ||
| 2557 | ssl3_choose_cipher(SSL *s, STACK_OF(SSL_CIPHER) *clnt, | ||
| 2523 | STACK_OF(SSL_CIPHER) *srvr) | 2558 | STACK_OF(SSL_CIPHER) *srvr) | 
| 2524 | { | 2559 | { | 
| 2525 | unsigned long alg_k, alg_a, mask_k, mask_a; | 2560 | unsigned long alg_k, alg_a, mask_k, mask_a; | 
