HTTP (curl): Fix build with newer OpenSSL versions
The SSL_METHOD patching hack to get proper OCSP validation for Hotspot 2.0 OSU needs cannot be used with OpenSSL 1.1.0 and newer since the SSL_METHOD structure is not exposed anymore. Fall back to using the incomplete CURLOPT_SSL_VERIFYSTATUS design to fix the build. Signed-off-by: Ben Greear <greearb@candelatech.com>
This commit is contained in:
		
							parent
							
								
									37f487bb41
								
							
						
					
					
						commit
						22d1b2ecdb
					
				
					 1 changed files with 5 additions and 1 deletions
				
			
		|  | @ -1280,6 +1280,7 @@ static int ocsp_resp_cb(SSL *s, void *arg) | |||
| } | ||||
| 
 | ||||
| 
 | ||||
| #if OPENSSL_VERSION_NUMBER < 0x10100000L | ||||
| static SSL_METHOD patch_ssl_method; | ||||
| static const SSL_METHOD *real_ssl_method; | ||||
| 
 | ||||
|  | @ -1296,6 +1297,7 @@ static int curl_patch_ssl_new(SSL *s) | |||
| 
 | ||||
| 	return ret; | ||||
| } | ||||
| #endif /* OpenSSL < 1.1.0 */ | ||||
| 
 | ||||
| #endif /* HAVE_OCSP */ | ||||
| 
 | ||||
|  | @ -1314,6 +1316,7 @@ static CURLcode curl_cb_ssl(CURL *curl, void *sslctx, void *parm) | |||
| 		SSL_CTX_set_tlsext_status_cb(ssl, ocsp_resp_cb); | ||||
| 		SSL_CTX_set_tlsext_status_arg(ssl, ctx); | ||||
| 
 | ||||
| #if OPENSSL_VERSION_NUMBER < 0x10100000L | ||||
| 		/*
 | ||||
| 		 * Use a temporary SSL_METHOD to get a callback on SSL_new() | ||||
| 		 * from libcurl since there is no proper callback registration | ||||
|  | @ -1323,6 +1326,7 @@ static CURLcode curl_cb_ssl(CURL *curl, void *sslctx, void *parm) | |||
| 		patch_ssl_method.ssl_new = curl_patch_ssl_new; | ||||
| 		real_ssl_method = ssl->method; | ||||
| 		ssl->method = &patch_ssl_method; | ||||
| #endif /* OpenSSL < 1.1.0 */ | ||||
| 	} | ||||
| #endif /* HAVE_OCSP */ | ||||
| 
 | ||||
|  | @ -1359,7 +1363,7 @@ static CURL * setup_curl_post(struct http_ctx *ctx, const char *address, | |||
| #ifdef EAP_TLS_OPENSSL | ||||
| 		curl_easy_setopt(curl, CURLOPT_SSL_CTX_FUNCTION, curl_cb_ssl); | ||||
| 		curl_easy_setopt(curl, CURLOPT_SSL_CTX_DATA, ctx); | ||||
| #ifdef OPENSSL_IS_BORINGSSL | ||||
| #if defined(OPENSSL_IS_BORINGSSL) || (OPENSSL_VERSION_NUMBER >= 0x10100000L) | ||||
| 		/* For now, using the CURLOPT_SSL_VERIFYSTATUS option only
 | ||||
| 		 * with BoringSSL since the OpenSSL specific callback hack to | ||||
| 		 * enable OCSP is not available with BoringSSL. The OCSP | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Ben Greear
						Ben Greear