@@ -2133,57 +2133,11 @@ _ssl__SSLSocket_getpeercertchain_impl(PySSLSocket *self, int binary_mode,
2133
2133
return NULL ;
2134
2134
}
2135
2135
#else
2136
- X509 * peer_cert = SSL_get_peer_certificate (self -> ssl );
2137
- if (peer_cert == NULL )
2138
- Py_RETURN_NONE ;
2139
-
2140
- STACK_OF (X509 ) * chain = SSL_get_peer_cert_chain (self -> ssl );
2141
- if (chain == NULL ) {
2142
- X509_free (peer_cert );
2143
- Py_RETURN_NONE ;
2144
- }
2145
- X509_STORE_CTX * store_ctx ;
2146
-
2147
- /* Initialize a store context with store (for root CA certs), the
2148
- * peer's cert and the peer's chain with intermediate CA certs. */
2149
- if ((store_ctx = X509_STORE_CTX_new ()) == NULL ) {
2150
- X509_free (peer_cert );
2151
- _setSSLError (NULL , 0 , __FILE__ , __LINE__ );
2152
- return NULL ;
2153
- }
2154
-
2155
- if (!X509_STORE_CTX_init (store_ctx ,
2156
- SSL_CTX_get_cert_store (self -> ctx -> ctx ),
2157
- peer_cert , chain )) {
2158
- #ifdef SSL_R_CERTIFICATE_VERIFY_FAILED
2159
- long e = ERR_PACK (ERR_LIB_SSL , 0 , SSL_R_CERTIFICATE_VERIFY_FAILED );
2160
- #else
2161
- long e = ERR_PACK (ERR_LIB_SSL , 0 , 134 );
2162
- #endif
2163
- fill_and_set_sslerror (self , PySSLCertVerificationErrorObject , PY_SSL_ERROR_SSL , NULL , __LINE__ , e );
2164
- X509_free (peer_cert );
2165
- X509_STORE_CTX_free (store_ctx );
2166
- goto end ;
2167
- }
2168
- X509_free (peer_cert );
2169
-
2170
- /* Validate peer cert using its intermediate CA certs and the
2171
- * context's root CA certs. */
2172
- if (X509_verify_cert (store_ctx ) <= 0 ) {
2173
- // _setX509StoreContextError(self, store_ctx, __FILE__, __LINE__);
2174
- #ifdef SSL_R_CERTIFICATE_VERIFY_FAILED
2175
- long e = ERR_PACK (ERR_LIB_SSL , 0 , SSL_R_CERTIFICATE_VERIFY_FAILED );
2176
- #else
2177
- long e = ERR_PACK (ERR_LIB_SSL , 0 , 134 );
2178
- #endif
2179
- fill_and_set_sslerror (self , PySSLCertVerificationErrorObject , PY_SSL_ERROR_SSL , NULL , __LINE__ , e );
2180
- X509_STORE_CTX_free (store_ctx );
2181
- goto end ;
2182
- }
2183
-
2184
- /* Get chain from store context */
2185
- peer_chain = X509_STORE_CTX_get1_chain (store_ctx );
2186
- X509_STORE_CTX_free (store_ctx );
2136
+ PyErr_SetString (
2137
+ PyExc_Exception ,
2138
+ "Getting verified certificate chains with SSL_get0_verified_chain"
2139
+ " is only supported by OpenSSL 1.1.0 and later" );
2140
+ return NULL ;
2187
2141
#endif
2188
2142
} else {
2189
2143
peer_chain = SSL_get_peer_cert_chain (self -> ssl );
@@ -2220,11 +2174,6 @@ _ssl__SSLSocket_getpeercertchain_impl(PySSLSocket *self, int binary_mode,
2220
2174
}
2221
2175
2222
2176
end :
2223
- #ifndef OPENSSL_VERSION_1_1
2224
- if (validate && (peer_chain != NULL )) {
2225
- sk_X509_pop_free (peer_chain , X509_free );
2226
- }
2227
- #endif
2228
2177
return retval ;
2229
2178
}
2230
2179
0 commit comments