> On Jun 8, 2017, at 3:57 PM, Steve Dower <steve.do...@python.org> wrote:
> 
> On 08Jun2017 1237, Donald Stufft wrote:
>> The basic yak stak here is:
>> * PEP 543 should be the future, it is a much much better way of handling TLS 
>> than our current ssl module is.
>> * Cory can’t spend his work time on PEP 543 unless he can say it is useful 
>> for requests.
>> * In order for PEP 543 to be useful for requests, he needs a way to provide 
>> a backport for it for Python 2.7.
>>    * This backport *CAN* be OpenSSL only, but needs to be able to provide 
>> the same API.
>> * PEP 543 wants to work with MemoryBIOs instead of sockets, because a 
>> MemoryBio is a much much better way of implementing this problem for a 
>> variety of reasons, and it would be a mistake to use a socket primitive 
>> again.
>> * Indepently, requests also wants to be able to provide the ability for 
>> people to use it with asyncio, however it can’t drop support for Python 2.7 
>> in the quest for doing that. Twisted provides a way forward that lets 
>> requests work on both 2.x and 3.x and integrate with asyncio, but Twisted 
>> requires MemoryBio to do so.
>> * pyOpenSSL *could* be used to provide the MemoryBio needed on 2.7 for both 
>> cases from up above, however, pip cannot depend on a C library that isn’t 
>> part of the standard library - in addition this would break alternative 
>> runtimes like Jython where pyOpenSSL doesn’t work.
> 
> Awesome, this is exactly what I needed to see.
> 
> What if Python 2.7 just exposed the OpenSSL primitives necessary so that 
> ctypes could use them? Is that a viable approach here? Presumably then a 
> MemoryBIO backport could be pure-Python.
> 
> It doesn't help the other *ythons, but unless they have MemoryBIO 
> implementations ready to backport then I can't think of anything that will 
> help them short of a completely new API.
> 


I would have to let Cory answer the question about feasibility here since he’s 
much more familiar with OpenSSL’s API (and even binding something like this 
with ctypes) than I am. The first thing that really stands out to me though is 
it just feels a bit like shuffling deckchairs?

At least I don’t see what adding the new feature of “thing you can use ctypes 
with to get a MemoryBio” does that adding the ssl.MemoryBio feature doesn’t 
other than downsides:

* It creates yet another divergence between 3.x and 2.x that makes it harder to 
maintain ssl and _ssl.
* It’s harder to use for requests/Twisted/etc.
* It’s not already written (Ok this is minor, but still!).

What do you see the benefits of that approach being over just backporting 
ssl.MemoryBio?

—
Donald Stufft



_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to