diff options
Diffstat (limited to 'src/lib/libssl/s3_both.c')
-rw-r--r-- | src/lib/libssl/s3_both.c | 41 |
1 files changed, 27 insertions, 14 deletions
diff --git a/src/lib/libssl/s3_both.c b/src/lib/libssl/s3_both.c index 2ecfbb77cb..64d317b7ac 100644 --- a/src/lib/libssl/s3_both.c +++ b/src/lib/libssl/s3_both.c | |||
@@ -108,11 +108,6 @@ | |||
108 | * Hudson (tjh@cryptsoft.com). | 108 | * Hudson (tjh@cryptsoft.com). |
109 | * | 109 | * |
110 | */ | 110 | */ |
111 | /* ==================================================================== | ||
112 | * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. | ||
113 | * ECC cipher suite support in OpenSSL originally developed by | ||
114 | * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. | ||
115 | */ | ||
116 | 111 | ||
117 | #include <limits.h> | 112 | #include <limits.h> |
118 | #include <string.h> | 113 | #include <string.h> |
@@ -197,7 +192,7 @@ int ssl3_get_finished(SSL *s, int a, int b) | |||
197 | * change cipher spec message and is in s->s3->tmp.peer_finish_md | 192 | * change cipher spec message and is in s->s3->tmp.peer_finish_md |
198 | */ | 193 | */ |
199 | 194 | ||
200 | n=s->method->ssl_get_message(s, | 195 | n=ssl3_get_message(s, |
201 | a, | 196 | a, |
202 | b, | 197 | b, |
203 | SSL3_MT_FINISHED, | 198 | SSL3_MT_FINISHED, |
@@ -391,8 +386,8 @@ long ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok) | |||
391 | { | 386 | { |
392 | while (s->init_num < 4) | 387 | while (s->init_num < 4) |
393 | { | 388 | { |
394 | i=s->method->ssl_read_bytes(s,SSL3_RT_HANDSHAKE, | 389 | i=ssl3_read_bytes(s,SSL3_RT_HANDSHAKE,&p[s->init_num], |
395 | &p[s->init_num],4 - s->init_num, 0); | 390 | 4 - s->init_num, 0); |
396 | if (i <= 0) | 391 | if (i <= 0) |
397 | { | 392 | { |
398 | s->rwstate=SSL_READING; | 393 | s->rwstate=SSL_READING; |
@@ -472,7 +467,7 @@ long ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok) | |||
472 | n = s->s3->tmp.message_size - s->init_num; | 467 | n = s->s3->tmp.message_size - s->init_num; |
473 | while (n > 0) | 468 | while (n > 0) |
474 | { | 469 | { |
475 | i=s->method->ssl_read_bytes(s,SSL3_RT_HANDSHAKE,&p[s->init_num],n,0); | 470 | i=ssl3_read_bytes(s,SSL3_RT_HANDSHAKE,&p[s->init_num],n,0); |
476 | if (i <= 0) | 471 | if (i <= 0) |
477 | { | 472 | { |
478 | s->rwstate=SSL_READING; | 473 | s->rwstate=SSL_READING; |
@@ -497,7 +492,7 @@ err: | |||
497 | int ssl_cert_type(X509 *x, EVP_PKEY *pkey) | 492 | int ssl_cert_type(X509 *x, EVP_PKEY *pkey) |
498 | { | 493 | { |
499 | EVP_PKEY *pk; | 494 | EVP_PKEY *pk; |
500 | int ret= -1,i; | 495 | int ret= -1,i,j; |
501 | 496 | ||
502 | if (pkey == NULL) | 497 | if (pkey == NULL) |
503 | pk=X509_get_pubkey(x); | 498 | pk=X509_get_pubkey(x); |
@@ -509,17 +504,35 @@ int ssl_cert_type(X509 *x, EVP_PKEY *pkey) | |||
509 | if (i == EVP_PKEY_RSA) | 504 | if (i == EVP_PKEY_RSA) |
510 | { | 505 | { |
511 | ret=SSL_PKEY_RSA_ENC; | 506 | ret=SSL_PKEY_RSA_ENC; |
507 | if (x != NULL) | ||
508 | { | ||
509 | j=X509_get_ext_count(x); | ||
510 | /* check to see if this is a signing only certificate */ | ||
511 | /* EAY EAY EAY EAY */ | ||
512 | } | ||
512 | } | 513 | } |
513 | else if (i == EVP_PKEY_DSA) | 514 | else if (i == EVP_PKEY_DSA) |
514 | { | 515 | { |
515 | ret=SSL_PKEY_DSA_SIGN; | 516 | ret=SSL_PKEY_DSA_SIGN; |
516 | } | 517 | } |
517 | #ifndef OPENSSL_NO_EC | 518 | else if (i == EVP_PKEY_DH) |
518 | else if (i == EVP_PKEY_EC) | ||
519 | { | 519 | { |
520 | ret = SSL_PKEY_ECC; | 520 | /* if we just have a key, we needs to be guess */ |
521 | |||
522 | if (x == NULL) | ||
523 | ret=SSL_PKEY_DH_DSA; | ||
524 | else | ||
525 | { | ||
526 | j=X509_get_signature_type(x); | ||
527 | if (j == EVP_PKEY_RSA) | ||
528 | ret=SSL_PKEY_DH_RSA; | ||
529 | else if (j== EVP_PKEY_DSA) | ||
530 | ret=SSL_PKEY_DH_DSA; | ||
531 | else ret= -1; | ||
532 | } | ||
521 | } | 533 | } |
522 | #endif | 534 | else |
535 | ret= -1; | ||
523 | 536 | ||
524 | err: | 537 | err: |
525 | if(!pkey) EVP_PKEY_free(pk); | 538 | if(!pkey) EVP_PKEY_free(pk); |