@@ -2119,57 +2119,11 @@ _ssl__SSLSocket_getpeercertchain_impl(PySSLSocket *self, int binary_mode,
2119
2119
return NULL ;
2120
2120
}
2121
2121
#else
2122
- X509 * peer_cert = SSL_get_peer_certificate (self -> ssl );
2123
- if (peer_cert == NULL )
2124
- Py_RETURN_NONE ;
2125
-
2126
- STACK_OF (X509 ) * chain = SSL_get_peer_cert_chain (self -> ssl );
2127
- if (chain == NULL ) {
2128
- X509_free (peer_cert );
2129
- Py_RETURN_NONE ;
2130
- }
2131
- X509_STORE_CTX * store_ctx ;
2132
-
2133
- /* Initialize a store context with store (for root CA certs), the
2134
- * peer's cert and the peer's chain with intermediate CA certs. */
2135
- if ((store_ctx = X509_STORE_CTX_new ()) == NULL ) {
2136
- X509_free (peer_cert );
2137
- _setSSLError (NULL , 0 , __FILE__ , __LINE__ );
2138
- return NULL ;
2139
- }
2140
-
2141
- if (!X509_STORE_CTX_init (store_ctx ,
2142
- SSL_CTX_get_cert_store (self -> ctx -> ctx ),
2143
- peer_cert , chain )) {
2144
- #ifdef SSL_R_CERTIFICATE_VERIFY_FAILED
2145
- long e = ERR_PACK (ERR_LIB_SSL , 0 , SSL_R_CERTIFICATE_VERIFY_FAILED );
2146
- #else
2147
- long e = ERR_PACK (ERR_LIB_SSL , 0 , 134 );
2148
- #endif
2149
- fill_and_set_sslerror (self , PySSLCertVerificationErrorObject , PY_SSL_ERROR_SSL , NULL , __LINE__ , e );
2150
- X509_free (peer_cert );
2151
- X509_STORE_CTX_free (store_ctx );
2152
- goto end ;
2153
- }
2154
- X509_free (peer_cert );
2155
-
2156
- /* Validate peer cert using its intermediate CA certs and the
2157
- * context's root CA certs. */
2158
- if (X509_verify_cert (store_ctx ) <= 0 ) {
2159
- // _setX509StoreContextError(self, store_ctx, __FILE__, __LINE__);
2160
- #ifdef SSL_R_CERTIFICATE_VERIFY_FAILED
2161
- long e = ERR_PACK (ERR_LIB_SSL , 0 , SSL_R_CERTIFICATE_VERIFY_FAILED );
2162
- #else
2163
- long e = ERR_PACK (ERR_LIB_SSL , 0 , 134 );
2164
- #endif
2165
- fill_and_set_sslerror (self , PySSLCertVerificationErrorObject , PY_SSL_ERROR_SSL , NULL , __LINE__ , e );
2166
- X509_STORE_CTX_free (store_ctx );
2167
- goto end ;
2168
- }
2169
-
2170
- /* Get chain from store context */
2171
- peer_chain = X509_STORE_CTX_get1_chain (store_ctx );
2172
- X509_STORE_CTX_free (store_ctx );
2122
+ PyErr_SetString (
2123
+ PyExc_Exception ,
2124
+ "Getting verified certificate chains with SSL_get0_verified_chain"
2125
+ " is only supported by OpenSSL 1.1.0 and later" );
2126
+ return NULL ;
2173
2127
#endif
2174
2128
} else {
2175
2129
peer_chain = SSL_get_peer_cert_chain (self -> ssl );
@@ -2201,11 +2155,6 @@ _ssl__SSLSocket_getpeercertchain_impl(PySSLSocket *self, int binary_mode,
2201
2155
}
2202
2156
2203
2157
end :
2204
- #ifndef OPENSSL_VERSION_1_1
2205
- if (validate && (peer_chain != NULL )) {
2206
- sk_X509_pop_free (peer_chain , X509_free );
2207
- }
2208
- #endif
2209
2158
return retval ;
2210
2159
}
2211
2160
0 commit comments