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; |