From: Jouni Malinen Date: Fri, 17 Aug 2012 20:55:14 +0000 (+0300) Subject: Fix EAP-FAST with OpenSSL 1.0.1 X-Git-Tag: hostap_2_0~388 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7f996409e7e5aa0bb066257906e87ab3294d4fd0;p=thirdparty%2Fhostap.git Fix EAP-FAST with OpenSSL 1.0.1 The mechanism to figure out key block size based on ssl->read_hash does not seem to work with OpenSSL 1.0.1, so add an alternative mechanism to figure out the NAC key size that seems to work at least with the current OpenSSL 1.0.1 releases. Signed-hostap: Jouni Malinen intended-for: hostap-1 --- diff --git a/src/crypto/tls_openssl.c b/src/crypto/tls_openssl.c index ddab3a3b6..2c3db4732 100644 --- a/src/crypto/tls_openssl.c +++ b/src/crypto/tls_openssl.c @@ -2832,6 +2832,7 @@ int tls_connection_get_keyblock_size(void *tls_ctx, { const EVP_CIPHER *c; const EVP_MD *h; + int md_size; if (conn == NULL || conn->ssl == NULL || conn->ssl->enc_read_ctx == NULL || @@ -2845,9 +2846,20 @@ int tls_connection_get_keyblock_size(void *tls_ctx, #else h = conn->ssl->read_hash; #endif + if (h) + md_size = EVP_MD_size(h); +#if OPENSSL_VERSION_NUMBER >= 0x10000000L + else if (conn->ssl->s3) + md_size = conn->ssl->s3->tmp.new_mac_secret_size; +#endif + else + return -1; + wpa_printf(MSG_DEBUG, "OpenSSL: keyblock size: key_len=%d MD_size=%d " + "IV_len=%d", EVP_CIPHER_key_length(c), md_size, + EVP_CIPHER_iv_length(c)); return 2 * (EVP_CIPHER_key_length(c) + - EVP_MD_size(h) + + md_size + EVP_CIPHER_iv_length(c)); }