<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 2 Feb 2017, at 11:17, Paul Moore <<a href="mailto:p.f.moore@gmail.com" class="">p.f.moore@gmail.com</a>> wrote:</div><div class=""><div class=""><br class="">One thing that wasn't clear to me was the backward compatibility<br class="">implications. Will the existing ssl module and its API be retained, or<br class="">will it be modified/deprecated? Will Windows/OSX distributions of<br class="">Python ultimately stop shipping with OpenSSL included? From an end<br class="">user POV, I won't care (high level modules like asyncio, urllib[1],<br class="">http.client etc will be updated to transparently use the new<br class="">infrastructure) so I accept that this is something of an "internal"<br class="">and/or library author concern.<br class=""></div></div></blockquote><div><br class=""></div><div>These are all good questions.</div><div><br class=""></div><div>For the existing ssl module and its API, deprecating it is hard work: it’s used extremely widely, and I don’t think we’d ever remove it. I suspect we’d warn against using it in favour of programming to the new tls API, but we’d keep it in place partly because it is so heavily used today, and partly because it’ll form the basis of the OpenSSL implementation of the abstract API here.</div><div><br class=""></div><div>As to stopping shipping with OpenSSL, that’s unlikely. OpenSSL doesn’t just back the ssl module, it backs hashlib as well (via libcrypto). While it’s potentially possible to replace most of hashlib with constructs from platform-native implementations (CommonCrypto and CryptoNG), that’s a lot of work and hard to do, as the <a href="http://cryptography.io" class="">cryptography.io</a> folks would tell you. So I suspect we’ll end up shipping with both, but the importance of OpenSSL for TLS would drop dramatically (and it would even potentially be possible to link only against libcrypto instead of libssl).</div><br class=""><blockquote type="cite" class=""><div class=""><div class="">[1] urllib wasn't actually a module noted as needing change. Was that<br class="">an omission, or is it simply because it defers the TLS stuff to the<br class="">lower levels like http.client?<br class=""></div></div></blockquote><br class=""></div><div>That was an omission: I forgot to check whether it needed updating. It does. I’ve amended the PEP accordingly.</div><div><br class=""></div><div>Cory</div></body></html>