-
-
Notifications
You must be signed in to change notification settings - Fork 30.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for export_keying_material to SSL library #82133
Comments
Add support for the export_keying_material function to the SSL library. Tested with Python 3.7.4 and Python master branch: https://github.com/wingel/cpython/tree/export_keying_material-3.7.4 Is this the correct format for a patch? Should I include the automatically generated clinic changes in my patch or not? What about the "versionadded::" string in the documentation? Should I include a line like that or does it only generate unneccessary conflicts? Anything else I need to do? |
Could you please explain the purpose of the feature and why you want to expose the interface? What's the use case? As this is a new feature, Python 3.7 and 3.8 are out of scope. |
I'm doing an implementation of the NTS protocol for my customer Netnod: https://github.com/Netnod/nts-poc-python NTS is draft RFC on its way to become a standard: https://datatracker.ietf.org/doc/draft-ietf-ntp-using-nts-for-ntp/ NTS requires the export_keying_material functionality as described in RFC5705. Basically it's a part of the TLS standard, is used by 10 existing protocols with more on the way. And I can't implement a NTS key establishment server or client without the function. That's why I added the functionality and verified that it works both with the stable 3.7.4 release and with the master branch of the cpython repository. I tested with 3.7.4 first on my machine because that's the release of Python that comes with Ubuntu and I wanted to have as few differences as as possible compared to the distribution version. I then forward ported the patch to the master branch and verified that my NTS implementation still works with that branch. |
OpenSSL has a function to "SSL_export_keying_material" as described in RFC5705. This functionality is needed to be able to support a bunch of other protocols such as "Network Time Security for the Network Time Protocol" which has now become a proper RFC as RFC8915. There are half a dozen other RFCs which also use this functionality. I have written a patch to add support for this function which can be found on github: https://github.com/wingel/cpython And it is used in my implementation of the NTS procotol which can also be found on github: https://github.com/Netnod/nts-poc-python It would be very nice if mainline Python could support for this function in the future so that I don't have to maintain a patched version of Python for this. |
We're working on the HTTP Transport Auth draft (https://www.ietf.org/archive/id/draft-schinazi-httpbis-transport-auth-05.html) in the IETF that also needs this method. I would really love to see this land, any advice? If it is just a matter of updating the patch for the current Python, I can probably handle that. |
Hi, unfortunately the maintainer of the openssl library in Python doesn't I have kept my patch up to date up to a few weeks ago so unless https://github.com/wingel/cpython/tree/export_keying_material-master Usually there will be conflict due to an automatically generated ./configure --prefix=/opt/python-master python3 Tools/clinic/clinic.py -f Modules/_ssl.c Regards, On Sat, 2022-03-19 at 14:32 +0000, Hans-Christoph Steiner wrote:
|
Neither venting frustration at my expense nor emotional blackmail is going to increase the likeliness, that I will spend my limited personal time to review a patch for a new feature. Feel free to find another core dev who is willing to land and maintain your patch. |
Sorry about the venting, but it is kind of frustrating to spend months My point is mostly that that export_keying_material is starting to be As for the rest of my mail. Since I am trying to keep my patch sort of |
I understand the frustrations here, but this is really not a place to vent, since that only harms everyone's interests. When a core maintainer voices concerns or questions, they need to be addressed. This goes for any project. I'll see if I can contribute to https://bugs.python.org/issue43902, that would also work for exporting keying material. |
Another use case: implementing the upcoming tls-exporter channel binding for testing. In my case I was able to work around the missing API by setting |
To follow this ticket |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: