>________________________________
> From: Andy Polyakov <[email protected]>
>To: [email protected] 
>Sent: Tuesday, June 26, 2012 8:38 AM
>Subject: Re: libintel-accel-1.4
> 
>> http://www.openssl.org/contrib/intel-accel-1.4.tar.gz
>> 
>> 
>> I'm attempting to use the libintel-accel-1.4 ENGINE with my OpenSSL
>> 0.9.8x application.
>> 
>> I'm running into a few snags:
>> 
>> 1) Why does the sha1_md structure in e_intel_accel.c (L268) set the
>> required_pkey_type to EVP_PKEY_NULL_method?
>
>This was fixed. There are two patches at
>http://cvs.openssl.org/rlog?f=openssl-addons/intel-accel/e_intel_accel.c.
>


Thank you for the link.  That closes the first issue.

>> 2) After applying the tls-aead-0.9.8.diff changes to the OpenSSL
>> code, my application seg faults during the handshake phase:
>> 
>> #0 0x28242b24 in EVP_MD_size (md=0x0)
>> 
>> In tls1_setup_key_block (~L484):
>> 
>> num=EVP_CIPHER_key_length(c)+EVP_MD_size(hash)+EVP_CIPHER_iv_length(c);
>> 
>> EVP_MD_size tries to access a NULL pointer (hash).
>> 
>> It was set to NULL by the AEAD code changes in ssl_cipher_get_evp():
>> 
>> ...
>>  (c->algorithms & SSL_ENC_MASK) == SSL_RC4 &&
>>  (c->algorithms & SSL_MAC_MASK) == SSL_MD5 &&
>>  (evp=EVP_get_cipherbyname("RC4-HMAC-MD5")))
>> *enc = evp, *md = NULL;
>> else if (s->ssl_version >= TLS1_VERSION &&
>>  (c->algorithms & SSL_ENC_MASK) == SSL_AES &&
>>  (c->algorithms & SSL_MAC_MASK) == SSL_SHA1 &&
>>  (evp=EVP_get_cipherbyname(
>> c->alg_bits==128?"AES-128-CBC-HMAC-SHA1":
>>  "AES-256-CBC-HMAC-SHA1")))
>> *enc = evp, *md = NULL;
>> return(1);
>> }
>> 
>> I scanned the 1.0.1c code to see how this works there, and it looks like 
>> EVP_MD_size() now checks for NULL before referencing it, but also, the 
>> "num=EVP_CIPHER_key_length..." line above doesn't even call EVP_MD_size 
>> anymore.  It uses a "mac_secret_size" value in the calculation.  That field 
>> does not seem to be present in the 0.9.8 branch.
>> 
>> Are there some other required changes missing from the "tls-aead-0.9.8.diff" 
>> file?
>
>Obviously. Would *md = EVP_md_null() instead of NULL in
>ssl_cipher_get_evp() do the trick...
>


Using EVP_md_null() prevents the seg. fault.  However, now the code generates a 
"Bad Record MAC" alert when a client connects using the "stitched" 
AESNI-CBC-SHA1 cipher suite.  (I assume I would get the same error with the 
"stitched" RC4-HMAC-MD5 cipher suite, but I haven't tried it.)
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [email protected]
Automated List Manager                           [email protected]

Reply via email to